MCPcopy Create free account
hub / github.com/antchfx/xpath / parsePathExpr

Method parsePathExpr

parse.go:332–348  ·  view source on GitHub ↗

PathExpr ::= LocationPath | FilterExpr | FilterExpr '/' RelativeLocationPath | FilterExpr '//' RelativeLocationPath

(n node)

Source from the content-addressed store, hash-verified

330
331// PathExpr ::= LocationPath | FilterExpr | FilterExpr '/' RelativeLocationPath | FilterExpr '//' RelativeLocationPath
332func (p *parser) parsePathExpr(n node) node {
333 var opnd node
334 if isPrimaryExpr(p.r) {
335 opnd = p.parseFilterExpr(n)
336 switch p.r.typ {
337 case itemSlash:
338 p.next()
339 opnd = p.parseRelativeLocationPath(opnd)
340 case itemSlashSlash:
341 p.next()
342 opnd = p.parseRelativeLocationPath(newAxisNode("descendant-or-self", allNode, "", "", "", opnd))
343 }
344 } else {
345 opnd = p.parseLocationPath(nil)
346 }
347 return opnd
348}
349
350// FilterExpr ::= PrimaryExpr | FilterExpr Predicate
351func (p *parser) parseFilterExpr(n node) node {

Callers 1

parseUnionExprMethod · 0.95

Calls 6

parseFilterExprMethod · 0.95
nextMethod · 0.95
parseLocationPathMethod · 0.95
isPrimaryExprFunction · 0.85
newAxisNodeFunction · 0.85

Tested by

no test coverage detected