diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-01-16 14:29:40 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-01-16 14:29:40 +0000 |
| commit | ee11b2bc0f6bf76a483775bc2c825757ea295c85 (patch) | |
| tree | 1c98449d81557c120fb23d4487c5ce85fd1cfac9 /src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java | |
| parent | c09802a7da260d04809471fd1526a83e488fe3fb (diff) | |
Split out C# serializer
Diffstat (limited to 'src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java | 88 |
1 files changed, 4 insertions, 84 deletions
diff --git a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java index 3fe1d5e..b588296 100644 --- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java +++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java @@ -4,9 +4,9 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; import com.google.common.io.Resources; import org.zwobble.couscous.Backend; -import org.zwobble.couscous.ast.*; -import org.zwobble.couscous.ast.visitors.ExpressionNodeMapper; -import org.zwobble.couscous.values.PrimitiveValueVisitor; +import org.zwobble.couscous.ast.ClassNode; +import org.zwobble.couscous.ast.MethodNode; +import org.zwobble.couscous.ast.ReturnNode; import java.io.IOException; import java.nio.charset.StandardCharsets; @@ -65,87 +65,7 @@ public class CsharpBackend implements Backend { ReturnNode returnNode = (ReturnNode) method.getBody().get(0); return "public static dynamic " + method.getName() + "() {" + - " return " + compileExpression(returnNode.getValue()) + ";" + + " return " + CsharpSerializer.serialize(returnNode.getValue(), namespace) + ";" + "}"; } - - private String compileExpression(ExpressionNode value) { - return value.accept(new ExpressionNodeMapper<String>() { - @Override - public String visit(LiteralNode literal) { - return literal.getValue().accept(new PrimitiveValueVisitor<String>() { - @Override - public String visitInteger(int value) { - return Integer.toString(value); - } - - @Override - public String visitString(String value) { - // TODO: escaping - return "\"" + value + "\""; - } - - @Override - public String visitBoolean(boolean value) { - return value ? "true" : "false"; - } - - @Override - public String visitUnit() { - throw new UnsupportedOperationException(); - } - - @Override - public String visitType(TypeName value) { - return "typeof(" + namespace + "." + value.getQualifiedName() + ")"; - } - }); - } - - @Override - public String visit(VariableReferenceNode variableReference) { - throw new UnsupportedOperationException(); - } - - @Override - public String visit(ThisReferenceNode reference) { - throw new UnsupportedOperationException(); - } - - @Override - public String visit(AssignmentNode assignment) { - throw new UnsupportedOperationException(); - } - - @Override - public String visit(TernaryConditionalNode ternaryConditional) { - throw new UnsupportedOperationException(); - } - - @Override - public String visit(MethodCallNode methodCall) { - throw new UnsupportedOperationException(); - } - - @Override - public String visit(ConstructorCallNode call) { - throw new UnsupportedOperationException(); - } - - @Override - public String visit(FieldAccessNode fieldAccess) { - throw new UnsupportedOperationException(); - } - - @Override - public String visit(TypeCoercionNode typeCoercion) { - throw new UnsupportedOperationException(); - } - - @Override - public String visit(CastNode cast) { - throw new UnsupportedOperationException(); - } - }); - } } |
