...
This commit is contained in:
@@ -1,36 +1,36 @@
|
||||
using System.Diagnostics;
|
||||
using NubLang.Syntax.Binding.Node;
|
||||
using NubLang.TypeChecking.Node;
|
||||
|
||||
namespace NubLang.Generation.QBE;
|
||||
|
||||
public partial class QBEGenerator
|
||||
{
|
||||
private void EmitStatement(BoundStatement statement)
|
||||
private void EmitStatement(Statement statement)
|
||||
{
|
||||
switch (statement)
|
||||
{
|
||||
case BoundAssignment assignment:
|
||||
case Assignment assignment:
|
||||
EmitAssignment(assignment);
|
||||
break;
|
||||
case BoundBreak:
|
||||
case Break:
|
||||
EmitBreak();
|
||||
break;
|
||||
case BoundContinue:
|
||||
case Continue:
|
||||
EmitContinue();
|
||||
break;
|
||||
case BoundIf ifStatement:
|
||||
case If ifStatement:
|
||||
EmitIf(ifStatement);
|
||||
break;
|
||||
case BoundReturn @return:
|
||||
case Return @return:
|
||||
EmitReturn(@return);
|
||||
break;
|
||||
case BoundStatementExpression statementExpression:
|
||||
case StatementExpression statementExpression:
|
||||
EmitExpression(statementExpression.Expression);
|
||||
break;
|
||||
case BoundVariableDeclaration variableDeclaration:
|
||||
case VariableDeclaration variableDeclaration:
|
||||
EmitVariableDeclaration(variableDeclaration);
|
||||
break;
|
||||
case BoundWhile whileStatement:
|
||||
case While whileStatement:
|
||||
EmitWhile(whileStatement);
|
||||
break;
|
||||
default:
|
||||
@@ -38,7 +38,7 @@ public partial class QBEGenerator
|
||||
}
|
||||
}
|
||||
|
||||
private void EmitAssignment(BoundAssignment assignment)
|
||||
private void EmitAssignment(Assignment assignment)
|
||||
{
|
||||
var destination = EmitExpression(assignment.Target);
|
||||
Debug.Assert(destination.Kind == ValKind.Pointer);
|
||||
@@ -57,7 +57,7 @@ public partial class QBEGenerator
|
||||
_codeIsReachable = false;
|
||||
}
|
||||
|
||||
private void EmitIf(BoundIf ifStatement)
|
||||
private void EmitIf(If ifStatement)
|
||||
{
|
||||
var trueLabel = LabelName();
|
||||
var falseLabel = LabelName();
|
||||
@@ -81,7 +81,7 @@ public partial class QBEGenerator
|
||||
_writer.WriteLine(endLabel);
|
||||
}
|
||||
|
||||
private void EmitReturn(BoundReturn @return)
|
||||
private void EmitReturn(Return @return)
|
||||
{
|
||||
if (@return.Value.HasValue)
|
||||
{
|
||||
@@ -94,7 +94,7 @@ public partial class QBEGenerator
|
||||
}
|
||||
}
|
||||
|
||||
private void EmitVariableDeclaration(BoundVariableDeclaration variableDeclaration)
|
||||
private void EmitVariableDeclaration(VariableDeclaration variableDeclaration)
|
||||
{
|
||||
var name = $"%{variableDeclaration.Name}";
|
||||
_writer.Indented($"{name} =l alloc8 8");
|
||||
@@ -108,7 +108,7 @@ public partial class QBEGenerator
|
||||
Scope.Declare(variableDeclaration.Name, new Val(name, variableDeclaration.Type, ValKind.Pointer));
|
||||
}
|
||||
|
||||
private void EmitWhile(BoundWhile whileStatement)
|
||||
private void EmitWhile(While whileStatement)
|
||||
{
|
||||
var conditionLabel = LabelName();
|
||||
var iterationLabel = LabelName();
|
||||
|
||||
Reference in New Issue
Block a user