...
This commit is contained in:
@@ -68,6 +68,9 @@ public sealed class Generator(List<NodeDefinition> nodes)
|
||||
case NodeStatementVariableDeclaration statement:
|
||||
EmitStatementVariableDeclaration(statement);
|
||||
break;
|
||||
case NodeStatementAssignment statement:
|
||||
EmitStatementAssignment(statement);
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException(nameof(node), node, null);
|
||||
}
|
||||
@@ -87,7 +90,7 @@ public sealed class Generator(List<NodeDefinition> nodes)
|
||||
|
||||
private void EmitStatementFuncCall(NodeStatementFuncCall node)
|
||||
{
|
||||
var name = EmitExpression(node.Func);
|
||||
var name = EmitExpression(node.Target);
|
||||
var parameterValues = node.Parameters.Select(EmitExpression).ToList();
|
||||
writer.WriteLine($"{name}({string.Join(", ", parameterValues)});");
|
||||
}
|
||||
@@ -104,6 +107,13 @@ public sealed class Generator(List<NodeDefinition> nodes)
|
||||
writer.WriteLine($"{CType(statement.Type)} {statement.Name.Ident} = {value};");
|
||||
}
|
||||
|
||||
private void EmitStatementAssignment(NodeStatementAssignment statement)
|
||||
{
|
||||
var target = EmitExpression(statement.Target);
|
||||
var value = EmitExpression(statement.Value);
|
||||
writer.WriteLine($"{target} = {value};");
|
||||
}
|
||||
|
||||
private string EmitExpression(NodeExpression node)
|
||||
{
|
||||
return node switch
|
||||
|
||||
Reference in New Issue
Block a user