diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-10-31 11:50:42 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-10-31 11:50:42 +0000 |
| commit | cc7e5865de3e68c1ec2a5a12d40a7925d7b95e2d (patch) | |
| tree | 7b4aa86dc1dfc54e3519fcad26ac6e4f200aeae4 /src/main/java/org/zwobble/couscous/backends/python/PrimitiveMethods.java | |
| parent | 5e01b55caf49ddbed0f9abdf8ca6592303001985 (diff) | |
Implement divide and mod for Python backend
Diffstat (limited to 'src/main/java/org/zwobble/couscous/backends/python/PrimitiveMethods.java')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/backends/python/PrimitiveMethods.java | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/main/java/org/zwobble/couscous/backends/python/PrimitiveMethods.java b/src/main/java/org/zwobble/couscous/backends/python/PrimitiveMethods.java index 1da18f9..5208ff1 100644 --- a/src/main/java/org/zwobble/couscous/backends/python/PrimitiveMethods.java +++ b/src/main/java/org/zwobble/couscous/backends/python/PrimitiveMethods.java @@ -40,8 +40,15 @@ public class PrimitiveMethods { addMethod(methods, "add", "__add__"); addMethod(methods, "subtract", "__sub__"); addMethod(methods, "multiply", "__mul__"); - addMethod(methods, "divide", "__floordiv__"); - addMethod(methods, "mod", "__mod__"); + + methods.put("divide", (receiver, arguments) -> + pythonCall( + internalReference("_div_round_to_zero"), + asList(receiver, arguments.get(0)))); + methods.put("mod", (receiver, arguments) -> + pythonCall( + internalReference("_mod_round_to_zero"), + asList(receiver, arguments.get(0)))); addMethod(methods, "greaterThan", "__gt__"); addMethod(methods, "greaterThanOrEqual", "__ge__"); @@ -51,6 +58,10 @@ public class PrimitiveMethods { INT_METHODS = methods.build(); } + private static PythonExpressionNode internalReference(String name) { + return pythonAttributeAccess(pythonVariableReference("_couscous"), name); + } + private static void addMethod( Builder<String, PrimitiveMethodGenerator> methods, String methodName, |
