(expr any)
| 25302 | } |
| 25303 | |
| 25304 | func (p *parser) parseExpr(expr any) (any, bool) { |
| 25305 | p.ExprCnt++ |
| 25306 | if p.ExprCnt > p.maxExprCnt { |
| 25307 | panic(errMaxExprCnt) |
| 25308 | } |
| 25309 | |
| 25310 | var val any |
| 25311 | var ok bool |
| 25312 | switch expr := expr.(type) { |
| 25313 | case *actionExpr: |
| 25314 | val, ok = p.parseActionExpr(expr) |
| 25315 | case *andCodeExpr: |
| 25316 | val, ok = p.parseAndCodeExpr(expr) |
| 25317 | case *andExpr: |
| 25318 | val, ok = p.parseAndExpr(expr) |
| 25319 | case *anyMatcher: |
| 25320 | val, ok = p.parseAnyMatcher(expr) |
| 25321 | case *charClassMatcher: |
| 25322 | val, ok = p.parseCharClassMatcher(expr) |
| 25323 | case *choiceExpr: |
| 25324 | val, ok = p.parseChoiceExpr(expr) |
| 25325 | case *labeledExpr: |
| 25326 | val, ok = p.parseLabeledExpr(expr) |
| 25327 | case *litMatcher: |
| 25328 | val, ok = p.parseLitMatcher(expr) |
| 25329 | case *notCodeExpr: |
| 25330 | val, ok = p.parseNotCodeExpr(expr) |
| 25331 | case *notExpr: |
| 25332 | val, ok = p.parseNotExpr(expr) |
| 25333 | case *oneOrMoreExpr: |
| 25334 | val, ok = p.parseOneOrMoreExpr(expr) |
| 25335 | case *recoveryExpr: |
| 25336 | val, ok = p.parseRecoveryExpr(expr) |
| 25337 | case *ruleRefExpr: |
| 25338 | val, ok = p.parseRuleRefExpr(expr) |
| 25339 | case *seqExpr: |
| 25340 | val, ok = p.parseSeqExpr(expr) |
| 25341 | case *stateCodeExpr: |
| 25342 | val, ok = p.parseStateCodeExpr(expr) |
| 25343 | case *throwExpr: |
| 25344 | val, ok = p.parseThrowExpr(expr) |
| 25345 | case *zeroOrMoreExpr: |
| 25346 | val, ok = p.parseZeroOrMoreExpr(expr) |
| 25347 | case *zeroOrOneExpr: |
| 25348 | val, ok = p.parseZeroOrOneExpr(expr) |
| 25349 | default: |
| 25350 | panic(fmt.Sprintf("unknown expression type %T", expr)) |
| 25351 | } |
| 25352 | return val, ok |
| 25353 | } |
| 25354 | |
| 25355 | func (p *parser) parseActionExpr(act *actionExpr) (any, bool) { |
| 25356 | if p.debug { |
no test coverage detected