| 25602 | } |
| 25603 | |
| 25604 | func (p *parser) parseOneOrMoreExpr(expr *oneOrMoreExpr) (any, bool) { |
| 25605 | if p.debug { |
| 25606 | defer p.out(p.in("parseOneOrMoreExpr")) |
| 25607 | } |
| 25608 | |
| 25609 | var vals []any |
| 25610 | |
| 25611 | for { |
| 25612 | p.pushV() |
| 25613 | val, ok := p.parseExprWrap(expr.expr) |
| 25614 | p.popV() |
| 25615 | if !ok { |
| 25616 | if len(vals) == 0 { |
| 25617 | // did not match once, no match |
| 25618 | return nil, false |
| 25619 | } |
| 25620 | return vals, true |
| 25621 | } |
| 25622 | vals = append(vals, val) |
| 25623 | } |
| 25624 | } |
| 25625 | |
| 25626 | func (p *parser) parseRecoveryExpr(recover *recoveryExpr) (any, bool) { |
| 25627 | if p.debug { |