parse with whitespace
| 481 | |
| 482 | // parse with whitespace |
| 483 | virtual bool parse_non_term(_context& con) const override { |
| 484 | // if parsing of the first fails, restore the context and stop |
| 485 | _state st(con); |
| 486 | if (!m_expr->parse_non_term(con)) { |
| 487 | con.restore(st); |
| 488 | return true; |
| 489 | } |
| 490 | |
| 491 | // parse the rest |
| 492 | for (;;) { |
| 493 | _state st(con); |
| 494 | if (!m_expr->parse_non_term(con)) { |
| 495 | con.restore(st); |
| 496 | break; |
| 497 | } |
| 498 | } |
| 499 | |
| 500 | return true; |
| 501 | } |
| 502 | |
| 503 | // parse terminal |
| 504 | virtual bool parse_term(_context& con) const override { |
nothing calls this directly
no test coverage detected