rename node -> syntax

This commit is contained in:
nub31
2025-07-06 23:09:54 +02:00
parent 896d1fe1ea
commit eb13b94fa5
15 changed files with 373 additions and 271 deletions

View File

@@ -64,7 +64,7 @@ public static class QBEGenerator
_writer.NewLine();
}
foreach (var funcDef in _syntaxTree.TopLevelNodes.OfType<BoundLocalFuncNode>())
foreach (var funcDef in _syntaxTree.Definitions.OfType<BoundLocalFuncNode>())
{
EmitFuncDefinition(funcDef, LocalFuncName(funcDef), funcDef.Parameters, funcDef.ReturnType, funcDef.Body, funcDef.Exported);
_writer.NewLine();
@@ -766,15 +766,15 @@ public static class QBEGenerator
return new Val(outputName, binaryExpression.Type, ValKind.Direct);
}
private static string EmitBinaryInstructionFor(BinaryExpressionOperator op, NubType type, string left, string right)
private static string EmitBinaryInstructionFor(BoundBinaryOperator op, NubType type, string left, string right)
{
if (op is
BinaryExpressionOperator.Equal or
BinaryExpressionOperator.NotEqual or
BinaryExpressionOperator.GreaterThan or
BinaryExpressionOperator.GreaterThanOrEqual or
BinaryExpressionOperator.LessThan or
BinaryExpressionOperator.LessThanOrEqual)
BoundBinaryOperator.Equal or
BoundBinaryOperator.NotEqual or
BoundBinaryOperator.GreaterThan or
BoundBinaryOperator.GreaterThanOrEqual or
BoundBinaryOperator.LessThan or
BoundBinaryOperator.LessThanOrEqual)
{
char suffix;
@@ -815,12 +815,12 @@ public static class QBEGenerator
throw new NotSupportedException($"Unsupported type '{simpleType}' for binary operator '{op}'");
}
if (op is BinaryExpressionOperator.Equal)
if (op is BoundBinaryOperator.Equal)
{
return "ceq" + suffix;
}
if (op is BinaryExpressionOperator.NotEqual)
if (op is BoundBinaryOperator.NotEqual)
{
return "cne" + suffix;
}
@@ -842,20 +842,20 @@ public static class QBEGenerator
return op switch
{
BinaryExpressionOperator.GreaterThan => 'c' + sign + "gt" + suffix,
BinaryExpressionOperator.GreaterThanOrEqual => 'c' + sign + "ge" + suffix,
BinaryExpressionOperator.LessThan => 'c' + sign + "lt" + suffix,
BinaryExpressionOperator.LessThanOrEqual => 'c' + sign + "le" + suffix,
BoundBinaryOperator.GreaterThan => 'c' + sign + "gt" + suffix,
BoundBinaryOperator.GreaterThanOrEqual => 'c' + sign + "ge" + suffix,
BoundBinaryOperator.LessThan => 'c' + sign + "lt" + suffix,
BoundBinaryOperator.LessThanOrEqual => 'c' + sign + "le" + suffix,
_ => throw new ArgumentOutOfRangeException(nameof(op), op, null)
};
}
return op switch
{
BinaryExpressionOperator.Plus => "add",
BinaryExpressionOperator.Minus => "sub",
BinaryExpressionOperator.Multiply => "mul",
BinaryExpressionOperator.Divide => "div",
BoundBinaryOperator.Plus => "add",
BoundBinaryOperator.Minus => "sub",
BoundBinaryOperator.Multiply => "mul",
BoundBinaryOperator.Divide => "div",
_ => throw new ArgumentOutOfRangeException(nameof(op))
};
}
@@ -994,7 +994,7 @@ public static class QBEGenerator
switch (unaryExpression.Operator)
{
case UnaryExpressionOperator.Negate:
case BoundUnaryOperator.Negate:
{
switch (unaryExpression.Operand.Type)
{
@@ -1014,7 +1014,7 @@ public static class QBEGenerator
break;
}
case UnaryExpressionOperator.Invert:
case BoundUnaryOperator.Invert:
{
switch (unaryExpression.Operand.Type)
{