diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-01-31 18:45:36 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-01-31 18:45:36 +0000 |
| commit | 07f9c22cc9d38da06871d5712608161c5fbac339 (patch) | |
| tree | 7c5592c3c8358197f8a9481f8eb4629d77d394d7 /src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java | |
| parent | f4fb0398bc874e575044c6f32336afd3aac677e0 (diff) | |
Support infix operations in C# backend
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) { |
