parse functions
()
| 197 | // parse functions |
| 198 | |
| 199 | func (p *Parser) parseSequenceExpression() Node { |
| 200 | nodes := []Node{p.parseExpression(0)} |
| 201 | |
| 202 | for p.current.Is(Operator, ";") && p.err == nil { |
| 203 | p.next() |
| 204 | // If a trailing semicolon is present, break out. |
| 205 | if p.current.Is(EOF) { |
| 206 | break |
| 207 | } |
| 208 | nodes = append(nodes, p.parseExpression(0)) |
| 209 | } |
| 210 | |
| 211 | if len(nodes) == 1 { |
| 212 | return nodes[0] |
| 213 | } |
| 214 | |
| 215 | return p.createNode(&SequenceNode{ |
| 216 | Nodes: nodes, |
| 217 | }, nodes[0].Location()) |
| 218 | } |
| 219 | |
| 220 | func (p *Parser) parseExpression(precedence int) Node { |
| 221 | if p.err != nil { |
no test coverage detected