diff options
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java | 4 | ||||
| -rw-r--r-- | src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java | 50 |
2 files changed, 39 insertions, 15 deletions
diff --git a/src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java b/src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java index a50515f..301bb61 100644 --- a/src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java +++ b/src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java @@ -78,6 +78,10 @@ public class SourceCodeWriter { } private void startStatement() { + writeIndentation(); + } + + public void writeIndentation() { builder.append(Strings.repeat(" ", depth * SPACES_PER_INDENT)); } diff --git a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java index f3c946f..680e93f 100644 --- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java +++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java @@ -15,7 +15,8 @@ public class CsharpSerializer implements NodeVisitor { writer2.writeSymbol("{"); }, (writer2) -> { - writer2.writeStatement(() -> writer2.writeSymbol("}")); + writer2.writeIndentation(); + writer2.writeSymbol("}"); } ); CsharpSerializer serializer = new CsharpSerializer(writer); @@ -196,7 +197,24 @@ public class CsharpSerializer implements NodeVisitor { @Override public void visit(IfStatementNode ifStatement) { - throw new UnsupportedOperationException(); + writer.writeStatement(() -> { + writer.writeKeyword("if"); + writer.writeSpace(); + writer.writeSymbol("("); + write(ifStatement.getCondition()); + writer.writeSymbol(")"); + + writer.startBlock(); + writeAll(ifStatement.getTrueBranch()); + writer.endBlock(); + + writer.writeSpace(); + writer.writeKeyword("else"); + + writer.startBlock(); + writeAll(ifStatement.getFalseBranch()); + writer.endBlock(); + }); } @Override @@ -263,24 +281,26 @@ public class CsharpSerializer implements NodeVisitor { @Override public void visit(ClassNode classNode) { - writer.writeKeyword("namespace"); - writer.writeSpace(); - writer.writeIdentifier(classNode.getName().getPackage().get()); - writer.startBlock(); writer.writeStatement(() -> { - writer.writeKeyword("internal"); - writer.writeSpace(); - writer.writeKeyword("class"); + writer.writeKeyword("namespace"); writer.writeSpace(); - writer.writeIdentifier(classNode.getSimpleName()); + writer.writeIdentifier(classNode.getName().getPackage().get()); writer.startBlock(); - writeAll(classNode.getFields()); - writeConstructor(classNode, classNode.getConstructor()); - writeAll(classNode.getMethods()); + writer.writeStatement(() -> { + writer.writeKeyword("internal"); + writer.writeSpace(); + writer.writeKeyword("class"); + writer.writeSpace(); + writer.writeIdentifier(classNode.getSimpleName()); + writer.startBlock(); + writeAll(classNode.getFields()); + writeConstructor(classNode, classNode.getConstructor()); + writeAll(classNode.getMethods()); + writer.endBlock(); + }); + writer.endBlock(); }); - - writer.endBlock(); } private void writeConstructor(ClassNode classNode, ConstructorNode constructor) { |
