aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-01-16 14:29:40 +0000
committerMichael Williamson <mike@zwobble.org>2016-01-16 14:29:40 +0000
commitee11b2bc0f6bf76a483775bc2c825757ea295c85 (patch)
tree1c98449d81557c120fb23d4487c5ce85fd1cfac9 /src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java
parentc09802a7da260d04809471fd1526a83e488fe3fb (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.java88
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();
- }
- });
- }
}