# HG changeset patch # User Paul Boddie # Date 1361481503 -3600 # Node ID f2afc234c311cf32621a7fcd0745e7d89a8b7be6 # Parent 0abf0d2ef16df5b867e0aab70747dd71d50a7415 Fixed the string representation for binary operators by introducing brackets (and thus explicit precedence). diff -r 0abf0d2ef16d -r f2afc234c311 compiler/ast.py --- a/compiler/ast.py Fri Nov 09 00:36:13 2012 +0100 +++ b/compiler/ast.py Thu Feb 21 22:18:23 2013 +0100 @@ -133,7 +133,7 @@ return "Add((%r, %r))" % (self.left, self.right) def __str__(self): - return "%s + %s" % (self.left, self.right) + return "(%s + %s)" % (self.left, self.right) def visit(self, visitor, *args): return visitor.visitAdd(self, *args) @@ -156,7 +156,7 @@ return "And(%r)" % (self.nodes,) def __str__(self): - return " and ".join(map(str, self.nodes)) + return "(%s)" % " and ".join(map(str, self.nodes)) def visit(self, visitor, *args): return visitor.visitAnd(self, *args) @@ -386,7 +386,7 @@ return "Bitand(%r)" % (self.nodes,) def __str__(self): - return " & ".join(map(str, self.nodes)) + return "(%s)" % " & ".join(map(str, self.nodes)) def visit(self, visitor, *args): return visitor.visitBitand(self, *args) @@ -410,7 +410,7 @@ return "Bitor(%r)" % (self.nodes,) def __str__(self): - return " | ".join(map(str, self.nodes)) + return "(%s)" % " | ".join(map(str, self.nodes)) def visit(self, visitor, *args): return visitor.visitBitor(self, *args) @@ -434,7 +434,7 @@ return "Bitxor(%r)" % (self.nodes,) def __str__(self): - return " ^ ".join(map(str, self.nodes)) + return "(%s)" % " ^ ".join(map(str, self.nodes)) def visit(self, visitor, *args): return visitor.visitBitxor(self, *args) @@ -698,7 +698,7 @@ return "Div((%r, %r))" % (self.left, self.right) def __str__(self): - return "%s / %s" % (self.left, self.right) + return "(%s / %s)" % (self.left, self.right) def visit(self, visitor, *args): return visitor.visitDiv(self, *args) @@ -775,7 +775,7 @@ return "FloorDiv((%r, %r))" % (self.left, self.right) def __str__(self): - return "%s // %s" % (self.left, self.right) + return "(%s // %s)" % (self.left, self.right) def visit(self, visitor, *args): return visitor.visitFloorDiv(self, *args) @@ -1235,7 +1235,7 @@ return "LeftShift((%r, %r))" % (self.left, self.right) def __str__(self): - return "%s << %s" % (self.left, self.right) + return "(%s << %s)" % (self.left, self.right) def visit(self, visitor, *args): return visitor.visitLeftShift(self, *args) @@ -1364,7 +1364,7 @@ return "Mod((%r, %r))" % (self.left, self.right) def __str__(self): - return "%s %% %s" % (self.left, self.right) + return "(%s %% %s)" % (self.left, self.right) def visit(self, visitor, *args): return visitor.visitMod(self, *args) @@ -1413,7 +1413,7 @@ return "Mul((%r, %r))" % (self.left, self.right) def __str__(self): - return "%s * %s" % (self.left, self.right) + return "(%s * %s)" % (self.left, self.right) def visit(self, visitor, *args): return visitor.visitMul(self, *args) @@ -1485,7 +1485,7 @@ return "Or(%r)" % (self.nodes,) def __str__(self): - return " or ".join(map(str, self.nodes)) + return "(%s)" % " or ".join(map(str, self.nodes)) def visit(self, visitor, *args): return visitor.visitOr(self, *args) @@ -1528,7 +1528,7 @@ return "Power((%r, %r))" % (self.left, self.right) def __str__(self): - return "%s ** %s" % (self.left, self.right) + return "(%s ** %s)" % (self.left, self.right) def visit(self, visitor, *args): return visitor.visitPower(self, *args) @@ -1669,7 +1669,7 @@ return "RightShift((%r, %r))" % (self.left, self.right) def __str__(self): - return "%s >> %s" % (self.left, self.right) + return "(%s >> %s)" % (self.left, self.right) def visit(self, visitor, *args): return visitor.visitRightShift(self, *args) @@ -1777,7 +1777,7 @@ return "Sub((%r, %r))" % (self.left, self.right) def __str__(self): - return "%s - %s" % (self.left, self.right) + return "(%s - %s)" % (self.left, self.right) def visit(self, visitor, *args): return visitor.visitSub(self, *args)