EqualityExpr ::= RelationalExpr | EqualityExpr '=' RelationalExpr | EqualityExpr '!=' RelationalExpr
| 9490 | // | EqualityExpr '=' RelationalExpr |
| 9491 | // | EqualityExpr '!=' RelationalExpr |
| 9492 | xpath_ast_node* parse_equality_expression() |
| 9493 | { |
| 9494 | xpath_ast_node* n = parse_relational_expression(); |
| 9495 | |
| 9496 | while (_lexer.current() == lex_equal || _lexer.current() == lex_not_equal) |
| 9497 | { |
| 9498 | lexeme_t l = _lexer.current(); |
| 9499 | |
| 9500 | _lexer.next(); |
| 9501 | |
| 9502 | xpath_ast_node* expr = parse_relational_expression(); |
| 9503 | |
| 9504 | n = new (alloc_node()) xpath_ast_node(l == lex_equal ? ast_op_equal : ast_op_not_equal, xpath_type_boolean, n, expr); |
| 9505 | } |
| 9506 | |
| 9507 | return n; |
| 9508 | } |
| 9509 | |
| 9510 | // AndExpr ::= EqualityExpr | AndExpr 'and' EqualityExpr |
| 9511 | xpath_ast_node* parse_and_expression() |