From 07f9c22cc9d38da06871d5712608161c5fbac339 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 31 Jan 2016 18:45:36 +0000 Subject: Support infix operations in C# backend --- .../couscous/backends/csharp/CsharpSerializer.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java') 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 arguments) { -- cgit v1.2.3