(expr any)
| 25281 | } |
| 25282 | |
| 25283 | func (p *parser) parseExprWrap(expr any) (any, bool) { |
| 25284 | var pt savepoint |
| 25285 | |
| 25286 | isLeftRecusion := p.rstack[len(p.rstack)-1].leftRecursive |
| 25287 | if p.memoize && !isLeftRecusion { |
| 25288 | res, ok := p.getMemoized(expr) |
| 25289 | if ok { |
| 25290 | p.restore(res.end) |
| 25291 | return res.v, res.b |
| 25292 | } |
| 25293 | pt = p.pt |
| 25294 | } |
| 25295 | |
| 25296 | val, ok := p.parseExpr(expr) |
| 25297 | |
| 25298 | if p.memoize && !isLeftRecusion { |
| 25299 | p.setMemoized(pt, expr, resultTuple{val, ok, p.pt}) |
| 25300 | } |
| 25301 | return val, ok |
| 25302 | } |
| 25303 | |
| 25304 | func (p *parser) parseExpr(expr any) (any, bool) { |
| 25305 | p.ExprCnt++ |
no test coverage detected