...
This commit is contained in:
@@ -71,6 +71,9 @@ public sealed class Generator(List<NodeDefinition> nodes)
|
||||
case NodeStatementAssignment statement:
|
||||
EmitStatementAssignment(statement);
|
||||
break;
|
||||
case NodeStatementIf statement:
|
||||
EmitStatementIf(statement);
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException(nameof(node), node, null);
|
||||
}
|
||||
@@ -114,6 +117,36 @@ public sealed class Generator(List<NodeDefinition> nodes)
|
||||
writer.WriteLine($"{target} = {value};");
|
||||
}
|
||||
|
||||
private void EmitStatementIf(NodeStatementIf statement)
|
||||
{
|
||||
var condition = EmitExpression(statement.Condition);
|
||||
writer.WriteLine($"if ({condition})");
|
||||
writer.WriteLine("{");
|
||||
using (writer.Indent())
|
||||
{
|
||||
EmitStatement(statement.ThenBlock);
|
||||
}
|
||||
|
||||
writer.WriteLine("}");
|
||||
|
||||
if (statement.ElseBlock != null)
|
||||
{
|
||||
writer.Write("else");
|
||||
if (statement.ElseBlock is NodeStatementIf)
|
||||
writer.Write(" ");
|
||||
else
|
||||
writer.WriteLine();
|
||||
|
||||
writer.WriteLine("{");
|
||||
using (writer.Indent())
|
||||
{
|
||||
EmitStatement(statement.ElseBlock);
|
||||
}
|
||||
|
||||
writer.WriteLine("}");
|
||||
}
|
||||
}
|
||||
|
||||
private string EmitExpression(NodeExpression node)
|
||||
{
|
||||
return node switch
|
||||
|
||||
Reference in New Issue
Block a user