This commit is contained in:
nub31
2025-07-22 23:20:56 +02:00
parent 62c9d86cda
commit d993581361
26 changed files with 1002 additions and 1003 deletions

View File

@@ -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();