def parse(tokens): from ast.multiplyexpression import MultiplyExpression pos = tokens.getPosition() operation = None expr = MultiplyExpression.parse(tokens) if expr is None: return None while True: peek = tokens.peek() if peek in lexer.AddOperators: tokens.getNext() rhs = MultiplyExpression.parse(tokens) if rhs is None: raise SyntaxError, 'Expected expression, got %r' % tokens.peek() expr = AddExpression(expr, rhs, peek) else: return expr
def testMod(self): tokens = lex("5 % 4") result = MultiplyExpression.parse(tokens) self.failUnless(isinstance(result, MultiplyExpression), repr(result))