aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java4
-rw-r--r--src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java50
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) {