| 2442 | } |
| 2443 | |
| 2444 | func (p *parser) selectStmt() *SelectStmt { |
| 2445 | if trace { |
| 2446 | defer p.trace("selectStmt")() |
| 2447 | } |
| 2448 | |
| 2449 | s := new(SelectStmt) |
| 2450 | s.pos = p.pos() |
| 2451 | |
| 2452 | p.want(_Select) |
| 2453 | p.async(func() { |
| 2454 | if !p.got(_Lbrace) { |
| 2455 | p.syntaxError("missing { after select clause") |
| 2456 | p.advance(_Case, _Default, _Rbrace) |
| 2457 | } |
| 2458 | for p.tok != _EOF && p.tok != _Rbrace { |
| 2459 | s.Body = append(s.Body, p.commClause()) |
| 2460 | } |
| 2461 | s.Rbrace = p.pos() |
| 2462 | p.want(_Rbrace) |
| 2463 | }) |
| 2464 | |
| 2465 | return s |
| 2466 | } |
| 2467 | |
| 2468 | func (p *parser) caseClause() *CaseClause { |
| 2469 | if trace { |