()
| 17726 | } |
| 17727 | |
| 17728 | func (p *SQLiteParser) Join_clause() (localctx IJoin_clauseContext) { |
| 17729 | localctx = NewJoin_clauseContext(p, p.GetParserRuleContext(), p.GetState()) |
| 17730 | p.EnterRule(localctx, 86, SQLiteParserRULE_join_clause) |
| 17731 | var _la int |
| 17732 | |
| 17733 | p.EnterOuterAlt(localctx, 1) |
| 17734 | { |
| 17735 | p.SetState(1312) |
| 17736 | p.Table_or_subquery() |
| 17737 | } |
| 17738 | p.SetState(1319) |
| 17739 | p.GetErrorHandler().Sync(p) |
| 17740 | if p.HasError() { |
| 17741 | goto errorExit |
| 17742 | } |
| 17743 | _la = p.GetTokenStream().LA(1) |
| 17744 | |
| 17745 | for _la == SQLiteParserCOMMA || _la == SQLiteParserCROSS_ || ((int64((_la-78)) & ^0x3f) == 0 && ((int64(1)<<(_la-78))&562949971511297) != 0) { |
| 17746 | { |
| 17747 | p.SetState(1313) |
| 17748 | p.Join_operator() |
| 17749 | } |
| 17750 | { |
| 17751 | p.SetState(1314) |
| 17752 | p.Table_or_subquery() |
| 17753 | } |
| 17754 | { |
| 17755 | p.SetState(1315) |
| 17756 | p.Join_constraint() |
| 17757 | } |
| 17758 | |
| 17759 | p.SetState(1321) |
| 17760 | p.GetErrorHandler().Sync(p) |
| 17761 | if p.HasError() { |
| 17762 | goto errorExit |
| 17763 | } |
| 17764 | _la = p.GetTokenStream().LA(1) |
| 17765 | } |
| 17766 | |
| 17767 | errorExit: |
| 17768 | if p.HasError() { |
| 17769 | v := p.GetError() |
| 17770 | localctx.SetException(v) |
| 17771 | p.GetErrorHandler().ReportError(p, v) |
| 17772 | p.GetErrorHandler().Recover(p, v) |
| 17773 | p.SetError(nil) |
| 17774 | } |
| 17775 | p.ExitRule() |
| 17776 | return localctx |
| 17777 | goto errorExit // Trick to prevent compiler error if the label is not used |
| 17778 | } |
| 17779 | |
| 17780 | // ISelect_coreContext is an interface to support dynamic dispatch. |
| 17781 | type ISelect_coreContext interface { |
no test coverage detected