MCPcopy Create free account
hub / github.com/brimdata/super / parseRuleWrap

Method parseRuleWrap

compiler/parser/parser.go:25246–25272  ·  view source on GitHub ↗
(rule *rule)

Source from the content-addressed store, hash-verified

25244}
25245
25246func (p *parser) parseRuleWrap(rule *rule) (any, bool) {
25247 if p.debug {
25248 defer p.out(p.in("parseRule " + rule.name))
25249 }
25250 var (
25251 val any
25252 ok bool
25253 startMark = p.pt
25254 )
25255
25256 if p.memoize || rule.leftRecursive {
25257 if rule.leader {
25258 val, ok = p.parseRuleRecursiveLeader(rule)
25259 } else if p.memoize && !rule.leftRecursive {
25260 val, ok = p.parseRuleMemoize(rule)
25261 } else {
25262 val, ok = p.parseRuleRecursiveNoLeader(rule)
25263 }
25264 } else {
25265 val, ok = p.parseRule(rule)
25266 }
25267
25268 if ok && p.debug {
25269 p.printIndent("MATCH", string(p.sliceFrom(startMark)))
25270 }
25271 return val, ok
25272}
25273
25274func (p *parser) parseRule(rule *rule) (any, bool) {
25275 p.rstack = append(p.rstack, rule)

Callers 2

parseMethod · 0.95
parseRuleRefExprMethod · 0.95

Calls 8

outMethod · 0.95
inMethod · 0.95
parseRuleMemoizeMethod · 0.95
parseRuleMethod · 0.95
printIndentMethod · 0.95
sliceFromMethod · 0.95

Tested by

no test coverage detected