diff --git a/codegen.py b/codegen.py index 113d9be..1bbbf06 100644 --- a/codegen.py +++ b/codegen.py @@ -145,8 +145,8 @@ def visit_Assert(self, node): self.write('assert ') self.visit(node.test) if node.msg is not None: - self.write(', ') - self.visit(node.msg) + self.write(', ') + self.visit(node.msg) def visit_Assign(self, node): self.newline(node) @@ -414,19 +414,19 @@ def visit_Tuple(self, node): self.visit(item) self.write(idx and ')' or ',)') - def sequence_visit(left, right): - def visit(self, node): - self.write(left) - for idx, item in enumerate(node.elts): - if idx: - self.write(', ') - self.visit(item) - self.write(right) - return visit + def __sequence_visit(self, left, right, node): + self.write(left) + for idx, item in enumerate(node.elts): + if idx: + self.write(', ') + self.visit(item) + self.write(right) + + def visit_List(self, node): + self.__sequence_visit('[', ']', node) - visit_List = sequence_visit('[', ']') - visit_Set = sequence_visit('{', '}') - del sequence_visit + def visit_Set(self, node): + self.__sequence_visit('{', '}', node) def visit_Dict(self, node): self.write('{') @@ -439,9 +439,11 @@ def visit_Dict(self, node): self.write('}') def visit_BinOp(self, node): + self.write('(') self.visit(node.left) self.write(' %s ' % BINOP_SYMBOLS[type(node.op)]) self.visit(node.right) + self.write(')') def visit_BoolOp(self, node): self.write('(') @@ -504,19 +506,21 @@ def visit_Lambda(self, node): def visit_Ellipsis(self, node): self.write('Ellipsis') - def generator_visit(left, right): - def visit(self, node): - self.write(left) - self.visit(node.elt) - for comprehension in node.generators: - self.visit(comprehension) - self.write(right) - return visit - - visit_ListComp = generator_visit('[', ']') - visit_GeneratorExp = generator_visit('(', ')') - visit_SetComp = generator_visit('{', '}') - del generator_visit + def __generator_visit(self, left, right, node): + self.write(left) + self.visit(node.elt) + for comprehension in node.generators: + self.visit(comprehension) + self.write(right) + + def visit_ListComp(self, node): + self.__generator_visit('[', ']', node) + + def visit_GeneratorExp(self, node): + self.__generator_visit('(', ')', node) + + def visit_SetComp(self, node): + self.__generator_visit('{', '}', node) def visit_DictComp(self, node): self.write('{')