diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-03-21 08:13:45 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-03-21 08:13:45 +0000 |
| commit | fe113241971cfe87b163a9eb4dc51e9d5e32410e (patch) | |
| tree | f9e435c44020ffbbb9231df79719a4d407ea8000 /src/main/java/org/zwobble/couscous/backends | |
| parent | 22f5765125eea28ae158bab4d9e96ae6472b73d4 (diff) | |
Move standard type definitions into a Types class
Diffstat (limited to 'src/main/java/org/zwobble/couscous/backends')
6 files changed, 28 insertions, 30 deletions
diff --git a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpCodeGenerator.java b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpCodeGenerator.java index dbfb00f..1b64293 100644 --- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpCodeGenerator.java +++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpCodeGenerator.java @@ -5,7 +5,6 @@ import org.zwobble.couscous.ast.*; import org.zwobble.couscous.ast.visitors.NodeTransformer; import org.zwobble.couscous.backends.Names; import org.zwobble.couscous.types.*; -import org.zwobble.couscous.values.*; import java.util.Map; import java.util.Optional; @@ -16,11 +15,11 @@ import static org.zwobble.couscous.util.ExtraLists.eagerMap; public class CsharpCodeGenerator { private final static Map<ScalarType, ScalarType> PRIMITIVES = ImmutableMap.<ScalarType, ScalarType>builder() - .put(IntegerValue.REF, ScalarType.of("int")) - .put(StringValue.REF, ScalarType.of("string")) - .put(BooleanValue.REF, ScalarType.of("bool")) - .put(ObjectValues.CLASS, ScalarType.of("System.Type")) - .put(UnitValue.REF, ScalarType.of("void")) + .put(Types.INT, ScalarType.of("int")) + .put(Types.STRING, ScalarType.of("string")) + .put(Types.BOOLEAN, ScalarType.of("bool")) + .put(Types.CLASS, ScalarType.of("System.Type")) + .put(Types.VOID, ScalarType.of("void")) .build(); private final String namespace; @@ -61,7 +60,7 @@ public class CsharpCodeGenerator { @Override public Type visit(ParameterizedType type) { - if (type.getRawType().equals(ObjectValues.CLASS)) { + if (type.getRawType().equals(Types.CLASS)) { return ScalarType.of("System.Type"); } else { return new ParameterizedType( diff --git a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpPrimitiveMethods.java b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpPrimitiveMethods.java index cb5b027..96f8c00 100644 --- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpPrimitiveMethods.java +++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpPrimitiveMethods.java @@ -3,10 +3,7 @@ package org.zwobble.couscous.backends.csharp; import com.google.common.collect.ImmutableMap; import org.zwobble.couscous.ast.ExpressionNode; import org.zwobble.couscous.types.ScalarType; -import org.zwobble.couscous.values.BooleanValue; -import org.zwobble.couscous.values.IntegerValue; -import org.zwobble.couscous.values.ObjectValues; -import org.zwobble.couscous.values.StringValue; +import org.zwobble.couscous.types.Types; import java.util.List; import java.util.Map; @@ -34,7 +31,7 @@ public class CsharpPrimitiveMethods { receiver, "ToString", list(), - StringValue.REF))); + Types.STRING))); BOXED_INT_METHODS = methods.build(); } @@ -42,7 +39,7 @@ public class CsharpPrimitiveMethods { static { ImmutableMap.Builder<String, PrimitiveMethodGenerator> methods = ImmutableMap.builder(); - methods.put("length", (receiver, arguments) -> fieldAccess(receiver, "Length", IntegerValue.REF)); + methods.put("length", (receiver, arguments) -> fieldAccess(receiver, "Length", Types.INT)); methods.put("substring", (receiver, arguments) -> { ExpressionNode startIndex = arguments.get(0); ExpressionNode endIndex = arguments.get(1); @@ -52,26 +49,26 @@ public class CsharpPrimitiveMethods { receiver, "Substring", list(startIndex, length), - StringValue.REF); + Types.STRING); }); methods.put("toLowerCase", (receiver, arguments) -> methodCall( receiver, "ToLower", list(), - StringValue.REF)); + Types.STRING)); methods.put("equals", (receiver, arguments) -> methodCall( receiver, "Equals", arguments, - StringValue.REF)); + Types.STRING)); STRING_METHODS = methods.build(); } private static final Map<ScalarType, Map<String, PrimitiveMethodGenerator>> METHODS = ImmutableMap.<ScalarType, Map<String, PrimitiveMethodGenerator>>builder() - .put(BooleanValue.REF, BOOLEAN_METHODS) - .put(StringValue.REF, STRING_METHODS) - .put(ObjectValues.BOXED_INT, BOXED_INT_METHODS) + .put(Types.BOOLEAN, BOOLEAN_METHODS) + .put(Types.STRING, STRING_METHODS) + .put(Types.BOXED_INT, BOXED_INT_METHODS) .build(); private static final Map<String, PrimitiveStaticMethodGenerator> STATIC_INT_METHODS = @@ -87,7 +84,7 @@ public class CsharpPrimitiveMethods { private static final Map<ScalarType, Map<String, PrimitiveStaticMethodGenerator>> STATIC_METHODS = ImmutableMap.<ScalarType, Map<String, PrimitiveStaticMethodGenerator>>builder() - .put(ObjectValues.BOXED_INT, STATIC_INT_METHODS) + .put(Types.BOXED_INT, STATIC_INT_METHODS) .build(); public static Optional<PrimitiveMethodGenerator> getPrimitiveMethod(ScalarType type, String methodName) { 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 090a19a..9b168ef 100644 --- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java +++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java @@ -6,7 +6,6 @@ import org.zwobble.couscous.backends.SourceCodeWriter; import org.zwobble.couscous.types.*; import org.zwobble.couscous.util.Action; import org.zwobble.couscous.values.PrimitiveValue; -import org.zwobble.couscous.values.UnitValue; import java.util.List; @@ -181,7 +180,7 @@ public class CsharpSerializer implements NodeVisitor { public void visit(ReturnNode returnNode) { writer.writeStatement(() -> { writer.writeKeyword("return"); - if (!returnNode.getValue().getType().equals(UnitValue.REF)) { + if (!returnNode.getValue().getType().equals(Types.VOID)) { writer.writeSpace(); write(returnNode.getValue()); } diff --git a/src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java b/src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java index 9e0a0b9..5b1691b 100644 --- a/src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java +++ b/src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java @@ -13,6 +13,7 @@ import org.zwobble.couscous.ast.visitors.NodeMapperWithDefault; import org.zwobble.couscous.ast.visitors.StatementNodeMapper; import org.zwobble.couscous.backends.Names; import org.zwobble.couscous.backends.python.ast.*; +import org.zwobble.couscous.types.Types; import org.zwobble.couscous.values.*; import java.util.*; @@ -113,7 +114,7 @@ public class PythonCodeGenerator { @Override public Stream<ScalarType> visit(TypeCoercionNode typeCoercion) { if (isIntegerBox(typeCoercion)) { - return Stream.of(ObjectValues.BOXED_INT); + return Stream.of(Types.BOXED_INT); } else { return Stream.empty(); } @@ -312,7 +313,7 @@ public class PythonCodeGenerator { if (isIntegerBox(typeCoercion)) { // TODO: perform this replacement at the start so that we don't split the import handling and actual expression return visit(ConstructorCallNode.constructorCall( - ObjectValues.BOXED_INT, + Types.BOXED_INT, list(typeCoercion.getExpression()))); } else if (isIntegerUnbox(typeCoercion)) { return pythonAttributeAccess(value, "_value"); @@ -353,7 +354,7 @@ public class PythonCodeGenerator { } private static boolean isInteger(Type type) { - return type.equals(IntegerValue.REF) || type.equals(ObjectValues.BOXED_INT); + return type.equals(Types.INT) || type.equals(Types.BOXED_INT); } private static PythonVariableReferenceNode typeReference(Type className) { diff --git a/src/main/java/org/zwobble/couscous/backends/python/PythonPrimitiveMethods.java b/src/main/java/org/zwobble/couscous/backends/python/PythonPrimitiveMethods.java index a290c54..40c794e 100644 --- a/src/main/java/org/zwobble/couscous/backends/python/PythonPrimitiveMethods.java +++ b/src/main/java/org/zwobble/couscous/backends/python/PythonPrimitiveMethods.java @@ -7,6 +7,7 @@ import org.zwobble.couscous.types.ScalarType; import org.zwobble.couscous.backends.python.ast.PythonBinaryOperation; import org.zwobble.couscous.backends.python.ast.PythonExpressionNode; import org.zwobble.couscous.backends.python.ast.PythonNotNode; +import org.zwobble.couscous.types.Types; import org.zwobble.couscous.values.*; import java.util.List; @@ -112,10 +113,10 @@ public class PythonPrimitiveMethods { private static final Map<ScalarType, Map<String, PrimitiveMethodGenerator>> METHODS = ImmutableMap.<ScalarType, Map<String, PrimitiveMethodGenerator>>builder() - .put(StringValue.REF, STRING_METHODS) - .put(BooleanValue.REF, BOOLEAN_METHODS) - .put(IntegerValue.REF, INT_METHODS) - .put(ObjectValues.BOXED_INT, INT_METHODS) + .put(Types.STRING, STRING_METHODS) + .put(Types.BOOLEAN, BOOLEAN_METHODS) + .put(Types.INT, INT_METHODS) + .put(Types.BOXED_INT, INT_METHODS) .build(); private static final Map<String, PrimitiveStaticMethodGenerator> INTERNAL_METHODS = @@ -135,7 +136,7 @@ public class PythonPrimitiveMethods { private static final Map<ScalarType, Map<String, PrimitiveStaticMethodGenerator>> STATIC_METHODS = ImmutableMap.<ScalarType, Map<String, PrimitiveStaticMethodGenerator>>builder() .put(InternalCouscousValue.REF, INTERNAL_METHODS) - .put(ObjectValues.BOXED_INT, BOXED_INT_STATIC_METHODS) + .put(Types.BOXED_INT, BOXED_INT_STATIC_METHODS) .build(); public static Optional<PrimitiveMethodGenerator> getPrimitiveMethod(ScalarType type, String methodName) { diff --git a/src/main/java/org/zwobble/couscous/backends/python/PythonSerializer.java b/src/main/java/org/zwobble/couscous/backends/python/PythonSerializer.java index 7732a87..89711a2 100644 --- a/src/main/java/org/zwobble/couscous/backends/python/PythonSerializer.java +++ b/src/main/java/org/zwobble/couscous/backends/python/PythonSerializer.java @@ -13,6 +13,7 @@ public class PythonSerializer implements PythonNodeVisitor { ); PythonSerializer serializer = new PythonSerializer(writer); serializer.write(node); + System.out.println(writer.asString()); return writer.asString(); } |
