def get_boolean_expression(self): tok = self.lex.get_next_token() if tok.get_tok_type() == TokenType.EQ_TOK: self.match(tok, TokenType.EQ_TOK) rel_op = RelativeOperator.EQ_OP elif tok.get_tok_type() == TokenType.NE_TOK: self.match(tok, TokenType.NE_TOK) rel_op = RelativeOperator.NE_OP elif tok.get_tok_type() == TokenType.LT_TOK: self.match(tok, TokenType.LT_TOK) rel_op = RelativeOperator.LT_OP elif tok.get_tok_type() == TokenType.GT_TOK: self.match(tok, TokenType.GT_TOK) rel_op = RelativeOperator.GT_OP elif tok.get_tok_type() == TokenType.LE_TOK: self.match(tok, TokenType.LE_TOK) rel_op = RelativeOperator.LE_OP elif tok.get_tok_type() == TokenType.GE_TOK: self.match(tok, TokenType.GE_TOK) rel_op = RelativeOperator.GE_OP else: raise Exceptions.ParserError(Enumerated.RelativeOperator, tok) expr1 = self.get_expression() expr2 = self.get_expression() return Expression.BooleanExpression(rel_op, expr1, expr2)
def Expr(self, p): return Expression.BooleanExpression(p[0])