def parse(tokens): position = tokens.peek().position if tokens.peek() != '(': return None tokens.expect('(') childExpression = LogicalExpression.parse(tokens) if childExpression is None: raise error.SyntaxError(position, 'Expected expression, got %r' % tokens.peek()) if tokens.peek() != ')': raise error.SyntaxError, "Expected ')', got %r" % tokens.peek() tokens.getNext() return ParenthExpression(childExpression)
def testBadParse(self): tokens = lex("1 and ") self.failUnlessRaises( error.SyntaxError, lambda: LogicalExpression.parse(tokens) )
def testParseOr(self): le = LogicalExpression.parse(lex("1 or 1")) self.failUnless(isinstance(le, LogicalExpression))