aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
diff options
context:
space:
mode:
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.java18
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) {