UnionExpr ::= PathExpr | UnionExpr '|' PathExpr
(n node)
| 314 | |
| 315 | // UnionExpr ::= PathExpr | UnionExpr '|' PathExpr |
| 316 | func (p *parser) parseUnionExpr(n node) node { |
| 317 | opnd := p.parsePathExpr(n) |
| 318 | Loop: |
| 319 | for { |
| 320 | if p.r.typ != itemUnion { |
| 321 | break Loop |
| 322 | } |
| 323 | p.next() |
| 324 | opnd2 := p.parsePathExpr(n) |
| 325 | // Checking the node type that must be is node set type? |
| 326 | opnd = newOperatorNode("|", opnd, opnd2) |
| 327 | } |
| 328 | return opnd |
| 329 | } |
| 330 | |
| 331 | // PathExpr ::= LocationPath | FilterExpr | FilterExpr '/' RelativeLocationPath | FilterExpr '//' RelativeLocationPath |
| 332 | func (p *parser) parsePathExpr(n node) node { |
no test coverage detected