| 7472 | } |
| 7473 | |
| 7474 | value parser:: |
| 7475 | parse_eval_comp (token& t, type& tt, pattern_mode pmode, bool first) |
| 7476 | { |
| 7477 | // enter: first token of LHS (lexed with enabled attributes) |
| 7478 | // leave: next token after last RHS |
| 7479 | |
| 7480 | // Left-associative: parse in a loop for as long as we can. |
| 7481 | // |
| 7482 | value lhs (parse_eval_value (t, tt, pmode, first)); |
| 7483 | |
| 7484 | while (tt == type::equal || |
| 7485 | tt == type::not_equal || |
| 7486 | tt == type::less || |
| 7487 | tt == type::less_equal || |
| 7488 | tt == type::greater || |
| 7489 | tt == type::greater_equal) |
| 7490 | { |
| 7491 | type op (tt); |
| 7492 | location l (get_location (t)); |
| 7493 | |
| 7494 | next_with_attributes (t, tt); // Recognize attributes before value. |
| 7495 | |
| 7496 | value rhs (parse_eval_value (t, tt, pmode)); |
| 7497 | |
| 7498 | if (pre_parse_) |
| 7499 | continue; |
| 7500 | |
| 7501 | // Store the result as a bool value. |
| 7502 | // |
| 7503 | lhs = value (compare_values (op, lhs, rhs, l)); |
| 7504 | } |
| 7505 | |
| 7506 | return lhs; |
| 7507 | } |
| 7508 | |
| 7509 | value parser:: |
| 7510 | parse_eval_value (token& t, type& tt, pattern_mode pmode, bool first) |
nothing calls this directly
no test coverage detected