diff options
Diffstat (limited to 'src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java | 18 |
1 files changed, 15 insertions, 3 deletions
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 6f20310..9913d8b 100644 --- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java +++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java @@ -121,9 +121,21 @@ public class CsharpSerializer implements NodeVisitor { @Override public void visit(OperationNode operation) { - // TODO: distinguish operator types (prefix, infix) - writer.writeSymbol(operation.getOperator().getSymbol()); - write(operation.getArguments().get(0)); + switch (operation.getOperatorType()) { + case PREFIX: + writer.writeSymbol(operation.getOperator().getSymbol()); + write(operation.getArguments().get(0)); + return; + case INFIX: + write(operation.getArguments().get(0)); + writer.writeSpace(); + writer.writeSymbol(operation.getOperator().getSymbol()); + writer.writeSpace(); + write(operation.getArguments().get(1)); + return; + default: + throw new RuntimeException("Unhandled operator type: " + operation.getOperatorType()); + } } private void writeArguments(List<? extends ExpressionNode> arguments) { |
