(act *actionExpr)
| 25353 | } |
| 25354 | |
| 25355 | func (p *parser) parseActionExpr(act *actionExpr) (any, bool) { |
| 25356 | if p.debug { |
| 25357 | defer p.out(p.in("parseActionExpr")) |
| 25358 | } |
| 25359 | |
| 25360 | start := p.pt |
| 25361 | val, ok := p.parseExprWrap(act.expr) |
| 25362 | if ok { |
| 25363 | p.cur.pos = start.position |
| 25364 | p.cur.text = p.sliceFrom(start) |
| 25365 | state := p.cloneState() |
| 25366 | actVal, err := act.run(p) |
| 25367 | if err != nil { |
| 25368 | p.addErrAt(err, start.position, []string{}) |
| 25369 | } |
| 25370 | p.restoreState(state) |
| 25371 | |
| 25372 | val = actVal |
| 25373 | } |
| 25374 | if ok && p.debug { |
| 25375 | p.printIndent("MATCH", string(p.sliceFrom(start))) |
| 25376 | } |
| 25377 | return val, ok |
| 25378 | } |
| 25379 | |
| 25380 | func (p *parser) parseAndCodeExpr(and *andCodeExpr) (any, bool) { |
| 25381 | if p.debug { |
no test coverage detected