xref: /plugin/combo/ComboStrap/PageSqlParser/PageSqlParser.php (revision 37748cd8654635afbeca80942126742f0f4cc346)
1*37748cd8SNickeau<?php
2*37748cd8SNickeau
3*37748cd8SNickeau/*
4*37748cd8SNickeau * Generated from D:/dokuwiki/lib/plugins/combo/grammar\PageSql.g4 by ANTLR 4.9.1
5*37748cd8SNickeau */
6*37748cd8SNickeau
7*37748cd8SNickeaunamespace ComboStrap\PageSqlParser {
8*37748cd8SNickeau	use Antlr\Antlr4\Runtime\Atn\ATN;
9*37748cd8SNickeau	use Antlr\Antlr4\Runtime\Atn\ATNDeserializer;
10*37748cd8SNickeau	use Antlr\Antlr4\Runtime\Atn\ParserATNSimulator;
11*37748cd8SNickeau	use Antlr\Antlr4\Runtime\Dfa\DFA;
12*37748cd8SNickeau	use Antlr\Antlr4\Runtime\Error\Exceptions\FailedPredicateException;
13*37748cd8SNickeau	use Antlr\Antlr4\Runtime\Error\Exceptions\NoViableAltException;
14*37748cd8SNickeau	use Antlr\Antlr4\Runtime\PredictionContexts\PredictionContextCache;
15*37748cd8SNickeau	use Antlr\Antlr4\Runtime\Error\Exceptions\RecognitionException;
16*37748cd8SNickeau	use Antlr\Antlr4\Runtime\RuleContext;
17*37748cd8SNickeau	use Antlr\Antlr4\Runtime\Token;
18*37748cd8SNickeau	use Antlr\Antlr4\Runtime\TokenStream;
19*37748cd8SNickeau	use Antlr\Antlr4\Runtime\Vocabulary;
20*37748cd8SNickeau	use Antlr\Antlr4\Runtime\VocabularyImpl;
21*37748cd8SNickeau	use Antlr\Antlr4\Runtime\RuntimeMetaData;
22*37748cd8SNickeau	use Antlr\Antlr4\Runtime\Parser;
23*37748cd8SNickeau
24*37748cd8SNickeau	final class PageSqlParser extends Parser
25*37748cd8SNickeau	{
26*37748cd8SNickeau		public const SCOL = 1, DOT = 2, LPAREN = 3, RPAREN = 4, LSQUARE = 5, RSQUARE = 6,
27*37748cd8SNickeau               LCURLY = 7, RCURLY = 8, COMMA = 9, BITWISEXOR = 10, DOLLAR = 11,
28*37748cd8SNickeau               EQUAL = 12, STAR = 13, PLUS = 14, MINUS = 15, TILDE = 16,
29*37748cd8SNickeau               PIPE2 = 17, DIV = 18, MOD = 19, LT2 = 20, GT2 = 21, AMP = 22,
30*37748cd8SNickeau               PIPE = 23, QUESTION = 24, LESS_THAN = 25, LESS_THAN_OR_EQUAL = 26,
31*37748cd8SNickeau               GREATER_THAN = 27, GREATER_THAN_OR_EQUAL = 28, EQ = 29, NOT_EQUAL = 30,
32*37748cd8SNickeau               NOT_EQ2 = 31, AND = 32, AS = 33, ASC = 34, BETWEEN = 35,
33*37748cd8SNickeau               BY = 36, DESC = 37, ESCAPE = 38, FALSE = 39, FROM = 40, GLOB = 41,
34*37748cd8SNickeau               IN = 42, IS = 43, ISNULL = 44, LIKE = 45, LIMIT = 46, NOT = 47,
35*37748cd8SNickeau               NOTNULL = 48, NOW = 49, NULL = 50, OR = 51, ORDER = 52, SELECT = 53,
36*37748cd8SNickeau               TRUE = 54, WHERE = 55, RANDOM = 56, DATE = 57, DATETIME = 58,
37*37748cd8SNickeau               PAGES = 59, BACKLINKS = 60, StringLiteral = 61, CharSetLiteral = 62,
38*37748cd8SNickeau               IntegralLiteral = 63, Number = 64, NumberLiteral = 65, ByteLengthLiteral = 66,
39*37748cd8SNickeau               SqlName = 67, SPACES = 68;
40*37748cd8SNickeau
41*37748cd8SNickeau		public const RULE_functionNames = 0, RULE_tableNames = 1, RULE_sqlNames = 2,
42*37748cd8SNickeau               RULE_column = 3, RULE_pattern = 4, RULE_expression = 5, RULE_predicate = 6,
43*37748cd8SNickeau               RULE_columns = 7, RULE_predicates = 8, RULE_tables = 9, RULE_limit = 10,
44*37748cd8SNickeau               RULE_orderBys = 11, RULE_orderByDef = 12, RULE_pageSql = 13;
45*37748cd8SNickeau
46*37748cd8SNickeau		/**
47*37748cd8SNickeau		 * @var array<string>
48*37748cd8SNickeau		 */
49*37748cd8SNickeau		public const RULE_NAMES = [
50*37748cd8SNickeau			'functionNames', 'tableNames', 'sqlNames', 'column', 'pattern', 'expression',
51*37748cd8SNickeau			'predicate', 'columns', 'predicates', 'tables', 'limit', 'orderBys',
52*37748cd8SNickeau			'orderByDef', 'pageSql'
53*37748cd8SNickeau		];
54*37748cd8SNickeau
55*37748cd8SNickeau		/**
56*37748cd8SNickeau		 * @var array<string|null>
57*37748cd8SNickeau		 */
58*37748cd8SNickeau		private const LITERAL_NAMES = [
59*37748cd8SNickeau		    null, "';'", "'.'", "'('", "')'", "'['", "']'", "'{'", "'}'", "','",
60*37748cd8SNickeau		    "'^'", "'\$'", "'='", "'*'", "'+'", "'-'", "'~'", "'||'", "'/'", "'%'",
61*37748cd8SNickeau		    "'<<'", "'>>'", "'&'", "'|'", "'?'", "'<'", "'<='", "'>'", "'>='",
62*37748cd8SNickeau		    "'=='", "'!='", "'<>'"
63*37748cd8SNickeau		];
64*37748cd8SNickeau
65*37748cd8SNickeau		/**
66*37748cd8SNickeau		 * @var array<string>
67*37748cd8SNickeau		 */
68*37748cd8SNickeau		private const SYMBOLIC_NAMES = [
69*37748cd8SNickeau		    null, "SCOL", "DOT", "LPAREN", "RPAREN", "LSQUARE", "RSQUARE", "LCURLY",
70*37748cd8SNickeau		    "RCURLY", "COMMA", "BITWISEXOR", "DOLLAR", "EQUAL", "STAR", "PLUS",
71*37748cd8SNickeau		    "MINUS", "TILDE", "PIPE2", "DIV", "MOD", "LT2", "GT2", "AMP", "PIPE",
72*37748cd8SNickeau		    "QUESTION", "LESS_THAN", "LESS_THAN_OR_EQUAL", "GREATER_THAN", "GREATER_THAN_OR_EQUAL",
73*37748cd8SNickeau		    "EQ", "NOT_EQUAL", "NOT_EQ2", "AND", "AS", "ASC", "BETWEEN", "BY",
74*37748cd8SNickeau		    "DESC", "ESCAPE", "FALSE", "FROM", "GLOB", "IN", "IS", "ISNULL", "LIKE",
75*37748cd8SNickeau		    "LIMIT", "NOT", "NOTNULL", "NOW", "NULL", "OR", "ORDER", "SELECT",
76*37748cd8SNickeau		    "TRUE", "WHERE", "RANDOM", "DATE", "DATETIME", "PAGES", "BACKLINKS",
77*37748cd8SNickeau		    "StringLiteral", "CharSetLiteral", "IntegralLiteral", "Number", "NumberLiteral",
78*37748cd8SNickeau		    "ByteLengthLiteral", "SqlName", "SPACES"
79*37748cd8SNickeau		];
80*37748cd8SNickeau
81*37748cd8SNickeau		/**
82*37748cd8SNickeau		 * @var string
83*37748cd8SNickeau		 */
84*37748cd8SNickeau		private const SERIALIZED_ATN =
85*37748cd8SNickeau			"\u{3}\u{608B}\u{A72A}\u{8133}\u{B9ED}\u{417C}\u{3BE7}\u{7786}\u{5964}" .
86*37748cd8SNickeau		    "\u{3}\u{46}\u{A4}\u{4}\u{2}\u{9}\u{2}\u{4}\u{3}\u{9}\u{3}\u{4}\u{4}" .
87*37748cd8SNickeau		    "\u{9}\u{4}\u{4}\u{5}\u{9}\u{5}\u{4}\u{6}\u{9}\u{6}\u{4}\u{7}\u{9}" .
88*37748cd8SNickeau		    "\u{7}\u{4}\u{8}\u{9}\u{8}\u{4}\u{9}\u{9}\u{9}\u{4}\u{A}\u{9}\u{A}" .
89*37748cd8SNickeau		    "\u{4}\u{B}\u{9}\u{B}\u{4}\u{C}\u{9}\u{C}\u{4}\u{D}\u{9}\u{D}\u{4}" .
90*37748cd8SNickeau		    "\u{E}\u{9}\u{E}\u{4}\u{F}\u{9}\u{F}\u{3}\u{2}\u{3}\u{2}\u{3}\u{3}" .
91*37748cd8SNickeau		    "\u{3}\u{3}\u{3}\u{4}\u{3}\u{4}\u{3}\u{5}\u{3}\u{5}\u{3}\u{5}\u{5}" .
92*37748cd8SNickeau		    "\u{5}\u{28}\u{A}\u{5}\u{3}\u{5}\u{3}\u{5}\u{3}\u{5}\u{5}\u{5}\u{2D}" .
93*37748cd8SNickeau		    "\u{A}\u{5}\u{5}\u{5}\u{2F}\u{A}\u{5}\u{3}\u{6}\u{3}\u{6}\u{3}\u{7}" .
94*37748cd8SNickeau		    "\u{3}\u{7}\u{3}\u{7}\u{3}\u{7}\u{5}\u{7}\u{37}\u{A}\u{7}\u{3}\u{7}" .
95*37748cd8SNickeau		    "\u{3}\u{7}\u{7}\u{7}\u{3B}\u{A}\u{7}\u{C}\u{7}\u{E}\u{7}\u{3E}\u{B}" .
96*37748cd8SNickeau		    "\u{7}\u{3}\u{7}\u{3}\u{7}\u{5}\u{7}\u{42}\u{A}\u{7}\u{3}\u{8}\u{3}" .
97*37748cd8SNickeau		    "\u{8}\u{3}\u{8}\u{3}\u{8}\u{5}\u{8}\u{48}\u{A}\u{8}\u{3}\u{8}\u{3}" .
98*37748cd8SNickeau		    "\u{8}\u{3}\u{8}\u{3}\u{8}\u{5}\u{8}\u{4E}\u{A}\u{8}\u{3}\u{8}\u{3}" .
99*37748cd8SNickeau		    "\u{8}\u{5}\u{8}\u{52}\u{A}\u{8}\u{3}\u{8}\u{5}\u{8}\u{55}\u{A}\u{8}" .
100*37748cd8SNickeau		    "\u{3}\u{8}\u{3}\u{8}\u{3}\u{8}\u{3}\u{8}\u{3}\u{8}\u{3}\u{8}\u{5}" .
101*37748cd8SNickeau		    "\u{8}\u{5D}\u{A}\u{8}\u{3}\u{8}\u{3}\u{8}\u{3}\u{8}\u{3}\u{8}\u{3}" .
102*37748cd8SNickeau		    "\u{8}\u{7}\u{8}\u{64}\u{A}\u{8}\u{C}\u{8}\u{E}\u{8}\u{67}\u{B}\u{8}" .
103*37748cd8SNickeau		    "\u{5}\u{8}\u{69}\u{A}\u{8}\u{3}\u{8}\u{5}\u{8}\u{6C}\u{A}\u{8}\u{3}" .
104*37748cd8SNickeau		    "\u{9}\u{3}\u{9}\u{3}\u{9}\u{7}\u{9}\u{71}\u{A}\u{9}\u{C}\u{9}\u{E}" .
105*37748cd8SNickeau		    "\u{9}\u{74}\u{B}\u{9}\u{3}\u{A}\u{3}\u{A}\u{3}\u{A}\u{3}\u{A}\u{7}" .
106*37748cd8SNickeau		    "\u{A}\u{7A}\u{A}\u{A}\u{C}\u{A}\u{E}\u{A}\u{7D}\u{B}\u{A}\u{3}\u{B}" .
107*37748cd8SNickeau		    "\u{3}\u{B}\u{3}\u{B}\u{3}\u{C}\u{3}\u{C}\u{3}\u{C}\u{3}\u{D}\u{3}" .
108*37748cd8SNickeau		    "\u{D}\u{3}\u{D}\u{3}\u{D}\u{3}\u{D}\u{7}\u{D}\u{8A}\u{A}\u{D}\u{C}" .
109*37748cd8SNickeau		    "\u{D}\u{E}\u{D}\u{8D}\u{B}\u{D}\u{3}\u{E}\u{3}\u{E}\u{5}\u{E}\u{91}" .
110*37748cd8SNickeau		    "\u{A}\u{E}\u{3}\u{F}\u{3}\u{F}\u{5}\u{F}\u{95}\u{A}\u{F}\u{3}\u{F}" .
111*37748cd8SNickeau		    "\u{3}\u{F}\u{5}\u{F}\u{99}\u{A}\u{F}\u{3}\u{F}\u{5}\u{F}\u{9C}\u{A}" .
112*37748cd8SNickeau		    "\u{F}\u{3}\u{F}\u{5}\u{F}\u{9F}\u{A}\u{F}\u{3}\u{F}\u{5}\u{F}\u{A2}" .
113*37748cd8SNickeau		    "\u{A}\u{F}\u{3}\u{F}\u{2}\u{2}\u{10}\u{2}\u{4}\u{6}\u{8}\u{A}\u{C}" .
114*37748cd8SNickeau		    "\u{E}\u{10}\u{12}\u{14}\u{16}\u{18}\u{1A}\u{1C}\u{2}\u{9}\u{3}\u{2}" .
115*37748cd8SNickeau		    "\u{3B}\u{3C}\u{4}\u{2}\u{42}\u{42}\u{45}\u{45}\u{4}\u{2}\u{3F}\u{3F}" .
116*37748cd8SNickeau		    "\u{43}\u{43}\u{5}\u{2}\u{3F}\u{3F}\u{42}\u{43}\u{45}\u{45}\u{5}\u{2}" .
117*37748cd8SNickeau		    "\u{E}\u{E}\u{1B}\u{1E}\u{20}\u{20}\u{4}\u{2}\u{22}\u{22}\u{35}\u{35}" .
118*37748cd8SNickeau		    "\u{4}\u{2}\u{24}\u{24}\u{27}\u{27}\u{2}\u{AE}\u{2}\u{1E}\u{3}\u{2}" .
119*37748cd8SNickeau		    "\u{2}\u{2}\u{4}\u{20}\u{3}\u{2}\u{2}\u{2}\u{6}\u{22}\u{3}\u{2}\u{2}" .
120*37748cd8SNickeau		    "\u{2}\u{8}\u{24}\u{3}\u{2}\u{2}\u{2}\u{A}\u{30}\u{3}\u{2}\u{2}\u{2}" .
121*37748cd8SNickeau		    "\u{C}\u{41}\u{3}\u{2}\u{2}\u{2}\u{E}\u{43}\u{3}\u{2}\u{2}\u{2}\u{10}" .
122*37748cd8SNickeau		    "\u{6D}\u{3}\u{2}\u{2}\u{2}\u{12}\u{75}\u{3}\u{2}\u{2}\u{2}\u{14}\u{7E}" .
123*37748cd8SNickeau		    "\u{3}\u{2}\u{2}\u{2}\u{16}\u{81}\u{3}\u{2}\u{2}\u{2}\u{18}\u{84}\u{3}" .
124*37748cd8SNickeau		    "\u{2}\u{2}\u{2}\u{1A}\u{8E}\u{3}\u{2}\u{2}\u{2}\u{1C}\u{92}\u{3}\u{2}" .
125*37748cd8SNickeau		    "\u{2}\u{2}\u{1E}\u{1F}\u{9}\u{2}\u{2}\u{2}\u{1F}\u{3}\u{3}\u{2}\u{2}" .
126*37748cd8SNickeau		    "\u{2}\u{20}\u{21}\u{9}\u{2}\u{2}\u{2}\u{21}\u{5}\u{3}\u{2}\u{2}\u{2}" .
127*37748cd8SNickeau		    "\u{22}\u{23}\u{9}\u{3}\u{2}\u{2}\u{23}\u{7}\u{3}\u{2}\u{2}\u{2}\u{24}" .
128*37748cd8SNickeau		    "\u{27}\u{5}\u{6}\u{4}\u{2}\u{25}\u{26}\u{7}\u{4}\u{2}\u{2}\u{26}\u{28}" .
129*37748cd8SNickeau		    "\u{5}\u{6}\u{4}\u{2}\u{27}\u{25}\u{3}\u{2}\u{2}\u{2}\u{27}\u{28}\u{3}" .
130*37748cd8SNickeau		    "\u{2}\u{2}\u{2}\u{28}\u{2E}\u{3}\u{2}\u{2}\u{2}\u{29}\u{2C}\u{7}\u{23}" .
131*37748cd8SNickeau		    "\u{2}\u{2}\u{2A}\u{2D}\u{5}\u{6}\u{4}\u{2}\u{2B}\u{2D}\u{7}\u{3F}" .
132*37748cd8SNickeau		    "\u{2}\u{2}\u{2C}\u{2A}\u{3}\u{2}\u{2}\u{2}\u{2C}\u{2B}\u{3}\u{2}\u{2}" .
133*37748cd8SNickeau		    "\u{2}\u{2D}\u{2F}\u{3}\u{2}\u{2}\u{2}\u{2E}\u{29}\u{3}\u{2}\u{2}\u{2}" .
134*37748cd8SNickeau		    "\u{2E}\u{2F}\u{3}\u{2}\u{2}\u{2}\u{2F}\u{9}\u{3}\u{2}\u{2}\u{2}\u{30}" .
135*37748cd8SNickeau		    "\u{31}\u{9}\u{4}\u{2}\u{2}\u{31}\u{B}\u{3}\u{2}\u{2}\u{2}\u{32}\u{42}" .
136*37748cd8SNickeau		    "\u{9}\u{5}\u{2}\u{2}\u{33}\u{34}\u{5}\u{2}\u{2}\u{2}\u{34}\u{36}\u{7}" .
137*37748cd8SNickeau		    "\u{5}\u{2}\u{2}\u{35}\u{37}\u{5}\u{C}\u{7}\u{2}\u{36}\u{35}\u{3}\u{2}" .
138*37748cd8SNickeau		    "\u{2}\u{2}\u{36}\u{37}\u{3}\u{2}\u{2}\u{2}\u{37}\u{3C}\u{3}\u{2}\u{2}" .
139*37748cd8SNickeau		    "\u{2}\u{38}\u{39}\u{7}\u{B}\u{2}\u{2}\u{39}\u{3B}\u{5}\u{C}\u{7}\u{2}" .
140*37748cd8SNickeau		    "\u{3A}\u{38}\u{3}\u{2}\u{2}\u{2}\u{3B}\u{3E}\u{3}\u{2}\u{2}\u{2}\u{3C}" .
141*37748cd8SNickeau		    "\u{3A}\u{3}\u{2}\u{2}\u{2}\u{3C}\u{3D}\u{3}\u{2}\u{2}\u{2}\u{3D}\u{3F}" .
142*37748cd8SNickeau		    "\u{3}\u{2}\u{2}\u{2}\u{3E}\u{3C}\u{3}\u{2}\u{2}\u{2}\u{3F}\u{40}\u{7}" .
143*37748cd8SNickeau		    "\u{6}\u{2}\u{2}\u{40}\u{42}\u{3}\u{2}\u{2}\u{2}\u{41}\u{32}\u{3}\u{2}" .
144*37748cd8SNickeau		    "\u{2}\u{2}\u{41}\u{33}\u{3}\u{2}\u{2}\u{2}\u{42}\u{D}\u{3}\u{2}\u{2}" .
145*37748cd8SNickeau		    "\u{2}\u{43}\u{6B}\u{5}\u{6}\u{4}\u{2}\u{44}\u{45}\u{9}\u{6}\u{2}\u{2}" .
146*37748cd8SNickeau		    "\u{45}\u{6C}\u{5}\u{C}\u{7}\u{2}\u{46}\u{48}\u{7}\u{31}\u{2}\u{2}" .
147*37748cd8SNickeau		    "\u{47}\u{46}\u{3}\u{2}\u{2}\u{2}\u{47}\u{48}\u{3}\u{2}\u{2}\u{2}\u{48}" .
148*37748cd8SNickeau		    "\u{49}\u{3}\u{2}\u{2}\u{2}\u{49}\u{4A}\u{7}\u{2F}\u{2}\u{2}\u{4A}" .
149*37748cd8SNickeau		    "\u{4D}\u{5}\u{A}\u{6}\u{2}\u{4B}\u{4C}\u{7}\u{28}\u{2}\u{2}\u{4C}" .
150*37748cd8SNickeau		    "\u{4E}\u{7}\u{3F}\u{2}\u{2}\u{4D}\u{4B}\u{3}\u{2}\u{2}\u{2}\u{4D}" .
151*37748cd8SNickeau		    "\u{4E}\u{3}\u{2}\u{2}\u{2}\u{4E}\u{52}\u{3}\u{2}\u{2}\u{2}\u{4F}\u{50}" .
152*37748cd8SNickeau		    "\u{7}\u{2B}\u{2}\u{2}\u{50}\u{52}\u{5}\u{A}\u{6}\u{2}\u{51}\u{47}" .
153*37748cd8SNickeau		    "\u{3}\u{2}\u{2}\u{2}\u{51}\u{4F}\u{3}\u{2}\u{2}\u{2}\u{52}\u{6C}\u{3}" .
154*37748cd8SNickeau		    "\u{2}\u{2}\u{2}\u{53}\u{55}\u{7}\u{31}\u{2}\u{2}\u{54}\u{53}\u{3}" .
155*37748cd8SNickeau		    "\u{2}\u{2}\u{2}\u{54}\u{55}\u{3}\u{2}\u{2}\u{2}\u{55}\u{56}\u{3}\u{2}" .
156*37748cd8SNickeau		    "\u{2}\u{2}\u{56}\u{57}\u{7}\u{25}\u{2}\u{2}\u{57}\u{58}\u{5}\u{C}" .
157*37748cd8SNickeau		    "\u{7}\u{2}\u{58}\u{59}\u{7}\u{22}\u{2}\u{2}\u{59}\u{5A}\u{5}\u{C}" .
158*37748cd8SNickeau		    "\u{7}\u{2}\u{5A}\u{6C}\u{3}\u{2}\u{2}\u{2}\u{5B}\u{5D}\u{7}\u{31}" .
159*37748cd8SNickeau		    "\u{2}\u{2}\u{5C}\u{5B}\u{3}\u{2}\u{2}\u{2}\u{5C}\u{5D}\u{3}\u{2}\u{2}" .
160*37748cd8SNickeau		    "\u{2}\u{5D}\u{5E}\u{3}\u{2}\u{2}\u{2}\u{5E}\u{5F}\u{7}\u{2C}\u{2}" .
161*37748cd8SNickeau		    "\u{2}\u{5F}\u{68}\u{7}\u{5}\u{2}\u{2}\u{60}\u{65}\u{5}\u{C}\u{7}\u{2}" .
162*37748cd8SNickeau		    "\u{61}\u{62}\u{7}\u{B}\u{2}\u{2}\u{62}\u{64}\u{5}\u{C}\u{7}\u{2}\u{63}" .
163*37748cd8SNickeau		    "\u{61}\u{3}\u{2}\u{2}\u{2}\u{64}\u{67}\u{3}\u{2}\u{2}\u{2}\u{65}\u{63}" .
164*37748cd8SNickeau		    "\u{3}\u{2}\u{2}\u{2}\u{65}\u{66}\u{3}\u{2}\u{2}\u{2}\u{66}\u{69}\u{3}" .
165*37748cd8SNickeau		    "\u{2}\u{2}\u{2}\u{67}\u{65}\u{3}\u{2}\u{2}\u{2}\u{68}\u{60}\u{3}\u{2}" .
166*37748cd8SNickeau		    "\u{2}\u{2}\u{68}\u{69}\u{3}\u{2}\u{2}\u{2}\u{69}\u{6A}\u{3}\u{2}\u{2}" .
167*37748cd8SNickeau		    "\u{2}\u{6A}\u{6C}\u{7}\u{6}\u{2}\u{2}\u{6B}\u{44}\u{3}\u{2}\u{2}\u{2}" .
168*37748cd8SNickeau		    "\u{6B}\u{51}\u{3}\u{2}\u{2}\u{2}\u{6B}\u{54}\u{3}\u{2}\u{2}\u{2}\u{6B}" .
169*37748cd8SNickeau		    "\u{5C}\u{3}\u{2}\u{2}\u{2}\u{6C}\u{F}\u{3}\u{2}\u{2}\u{2}\u{6D}\u{72}" .
170*37748cd8SNickeau		    "\u{5}\u{8}\u{5}\u{2}\u{6E}\u{6F}\u{7}\u{B}\u{2}\u{2}\u{6F}\u{71}\u{5}" .
171*37748cd8SNickeau		    "\u{8}\u{5}\u{2}\u{70}\u{6E}\u{3}\u{2}\u{2}\u{2}\u{71}\u{74}\u{3}\u{2}" .
172*37748cd8SNickeau		    "\u{2}\u{2}\u{72}\u{70}\u{3}\u{2}\u{2}\u{2}\u{72}\u{73}\u{3}\u{2}\u{2}" .
173*37748cd8SNickeau		    "\u{2}\u{73}\u{11}\u{3}\u{2}\u{2}\u{2}\u{74}\u{72}\u{3}\u{2}\u{2}\u{2}" .
174*37748cd8SNickeau		    "\u{75}\u{76}\u{7}\u{39}\u{2}\u{2}\u{76}\u{7B}\u{5}\u{E}\u{8}\u{2}" .
175*37748cd8SNickeau		    "\u{77}\u{78}\u{9}\u{7}\u{2}\u{2}\u{78}\u{7A}\u{5}\u{E}\u{8}\u{2}\u{79}" .
176*37748cd8SNickeau		    "\u{77}\u{3}\u{2}\u{2}\u{2}\u{7A}\u{7D}\u{3}\u{2}\u{2}\u{2}\u{7B}\u{79}" .
177*37748cd8SNickeau		    "\u{3}\u{2}\u{2}\u{2}\u{7B}\u{7C}\u{3}\u{2}\u{2}\u{2}\u{7C}\u{13}\u{3}" .
178*37748cd8SNickeau		    "\u{2}\u{2}\u{2}\u{7D}\u{7B}\u{3}\u{2}\u{2}\u{2}\u{7E}\u{7F}\u{7}\u{2A}" .
179*37748cd8SNickeau		    "\u{2}\u{2}\u{7F}\u{80}\u{5}\u{4}\u{3}\u{2}\u{80}\u{15}\u{3}\u{2}\u{2}" .
180*37748cd8SNickeau		    "\u{2}\u{81}\u{82}\u{7}\u{30}\u{2}\u{2}\u{82}\u{83}\u{7}\u{42}\u{2}" .
181*37748cd8SNickeau		    "\u{2}\u{83}\u{17}\u{3}\u{2}\u{2}\u{2}\u{84}\u{85}\u{7}\u{36}\u{2}" .
182*37748cd8SNickeau		    "\u{2}\u{85}\u{86}\u{7}\u{26}\u{2}\u{2}\u{86}\u{8B}\u{5}\u{1A}\u{E}" .
183*37748cd8SNickeau		    "\u{2}\u{87}\u{88}\u{7}\u{B}\u{2}\u{2}\u{88}\u{8A}\u{5}\u{1A}\u{E}" .
184*37748cd8SNickeau		    "\u{2}\u{89}\u{87}\u{3}\u{2}\u{2}\u{2}\u{8A}\u{8D}\u{3}\u{2}\u{2}\u{2}" .
185*37748cd8SNickeau		    "\u{8B}\u{89}\u{3}\u{2}\u{2}\u{2}\u{8B}\u{8C}\u{3}\u{2}\u{2}\u{2}\u{8C}" .
186*37748cd8SNickeau		    "\u{19}\u{3}\u{2}\u{2}\u{2}\u{8D}\u{8B}\u{3}\u{2}\u{2}\u{2}\u{8E}\u{90}" .
187*37748cd8SNickeau		    "\u{7}\u{45}\u{2}\u{2}\u{8F}\u{91}\u{9}\u{8}\u{2}\u{2}\u{90}\u{8F}" .
188*37748cd8SNickeau		    "\u{3}\u{2}\u{2}\u{2}\u{90}\u{91}\u{3}\u{2}\u{2}\u{2}\u{91}\u{1B}\u{3}" .
189*37748cd8SNickeau		    "\u{2}\u{2}\u{2}\u{92}\u{94}\u{7}\u{37}\u{2}\u{2}\u{93}\u{95}\u{7}" .
190*37748cd8SNickeau		    "\u{3A}\u{2}\u{2}\u{94}\u{93}\u{3}\u{2}\u{2}\u{2}\u{94}\u{95}\u{3}" .
191*37748cd8SNickeau		    "\u{2}\u{2}\u{2}\u{95}\u{96}\u{3}\u{2}\u{2}\u{2}\u{96}\u{98}\u{5}\u{10}" .
192*37748cd8SNickeau		    "\u{9}\u{2}\u{97}\u{99}\u{5}\u{14}\u{B}\u{2}\u{98}\u{97}\u{3}\u{2}" .
193*37748cd8SNickeau		    "\u{2}\u{2}\u{98}\u{99}\u{3}\u{2}\u{2}\u{2}\u{99}\u{9B}\u{3}\u{2}\u{2}" .
194*37748cd8SNickeau		    "\u{2}\u{9A}\u{9C}\u{5}\u{12}\u{A}\u{2}\u{9B}\u{9A}\u{3}\u{2}\u{2}" .
195*37748cd8SNickeau		    "\u{2}\u{9B}\u{9C}\u{3}\u{2}\u{2}\u{2}\u{9C}\u{9E}\u{3}\u{2}\u{2}\u{2}" .
196*37748cd8SNickeau		    "\u{9D}\u{9F}\u{5}\u{18}\u{D}\u{2}\u{9E}\u{9D}\u{3}\u{2}\u{2}\u{2}" .
197*37748cd8SNickeau		    "\u{9E}\u{9F}\u{3}\u{2}\u{2}\u{2}\u{9F}\u{A1}\u{3}\u{2}\u{2}\u{2}\u{A0}" .
198*37748cd8SNickeau		    "\u{A2}\u{5}\u{16}\u{C}\u{2}\u{A1}\u{A0}\u{3}\u{2}\u{2}\u{2}\u{A1}" .
199*37748cd8SNickeau		    "\u{A2}\u{3}\u{2}\u{2}\u{2}\u{A2}\u{1D}\u{3}\u{2}\u{2}\u{2}\u{19}\u{27}" .
200*37748cd8SNickeau		    "\u{2C}\u{2E}\u{36}\u{3C}\u{41}\u{47}\u{4D}\u{51}\u{54}\u{5C}\u{65}" .
201*37748cd8SNickeau		    "\u{68}\u{6B}\u{72}\u{7B}\u{8B}\u{90}\u{94}\u{98}\u{9B}\u{9E}\u{A1}";
202*37748cd8SNickeau
203*37748cd8SNickeau		protected static $atn;
204*37748cd8SNickeau		protected static $decisionToDFA;
205*37748cd8SNickeau		protected static $sharedContextCache;
206*37748cd8SNickeau
207*37748cd8SNickeau		public function __construct(TokenStream $input)
208*37748cd8SNickeau		{
209*37748cd8SNickeau			parent::__construct($input);
210*37748cd8SNickeau
211*37748cd8SNickeau			self::initialize();
212*37748cd8SNickeau
213*37748cd8SNickeau			$this->interp = new ParserATNSimulator($this, self::$atn, self::$decisionToDFA, self::$sharedContextCache);
214*37748cd8SNickeau		}
215*37748cd8SNickeau
216*37748cd8SNickeau		private static function initialize() : void
217*37748cd8SNickeau		{
218*37748cd8SNickeau			if (self::$atn !== null) {
219*37748cd8SNickeau				return;
220*37748cd8SNickeau			}
221*37748cd8SNickeau
222*37748cd8SNickeau			RuntimeMetaData::checkVersion('4.9.1', RuntimeMetaData::VERSION);
223*37748cd8SNickeau
224*37748cd8SNickeau			$atn = (new ATNDeserializer())->deserialize(self::SERIALIZED_ATN);
225*37748cd8SNickeau
226*37748cd8SNickeau			$decisionToDFA = [];
227*37748cd8SNickeau			for ($i = 0, $count = $atn->getNumberOfDecisions(); $i < $count; $i++) {
228*37748cd8SNickeau				$decisionToDFA[] = new DFA($atn->getDecisionState($i), $i);
229*37748cd8SNickeau			}
230*37748cd8SNickeau
231*37748cd8SNickeau			self::$atn = $atn;
232*37748cd8SNickeau			self::$decisionToDFA = $decisionToDFA;
233*37748cd8SNickeau			self::$sharedContextCache = new PredictionContextCache();
234*37748cd8SNickeau		}
235*37748cd8SNickeau
236*37748cd8SNickeau		public function getGrammarFileName() : string
237*37748cd8SNickeau		{
238*37748cd8SNickeau			return "PageSql.g4";
239*37748cd8SNickeau		}
240*37748cd8SNickeau
241*37748cd8SNickeau		public function getRuleNames() : array
242*37748cd8SNickeau		{
243*37748cd8SNickeau			return self::RULE_NAMES;
244*37748cd8SNickeau		}
245*37748cd8SNickeau
246*37748cd8SNickeau		public function getSerializedATN() : string
247*37748cd8SNickeau		{
248*37748cd8SNickeau			return self::SERIALIZED_ATN;
249*37748cd8SNickeau		}
250*37748cd8SNickeau
251*37748cd8SNickeau		public function getATN() : ATN
252*37748cd8SNickeau		{
253*37748cd8SNickeau			return self::$atn;
254*37748cd8SNickeau		}
255*37748cd8SNickeau
256*37748cd8SNickeau		public function getVocabulary() : Vocabulary
257*37748cd8SNickeau        {
258*37748cd8SNickeau            static $vocabulary;
259*37748cd8SNickeau
260*37748cd8SNickeau			return $vocabulary = $vocabulary ?? new VocabularyImpl(self::LITERAL_NAMES, self::SYMBOLIC_NAMES);
261*37748cd8SNickeau        }
262*37748cd8SNickeau
263*37748cd8SNickeau		/**
264*37748cd8SNickeau		 * @throws RecognitionException
265*37748cd8SNickeau		 */
266*37748cd8SNickeau		public function functionNames() : Context\FunctionNamesContext
267*37748cd8SNickeau		{
268*37748cd8SNickeau		    $localContext = new Context\FunctionNamesContext($this->ctx, $this->getState());
269*37748cd8SNickeau
270*37748cd8SNickeau		    $this->enterRule($localContext, 0, self::RULE_functionNames);
271*37748cd8SNickeau
272*37748cd8SNickeau		    try {
273*37748cd8SNickeau		        $this->enterOuterAlt($localContext, 1);
274*37748cd8SNickeau		        $this->setState(28);
275*37748cd8SNickeau
276*37748cd8SNickeau		        $_la = $this->input->LA(1);
277*37748cd8SNickeau
278*37748cd8SNickeau		        if (!($_la === self::DATE || $_la === self::DATETIME)) {
279*37748cd8SNickeau		        $this->errorHandler->recoverInline($this);
280*37748cd8SNickeau		        } else {
281*37748cd8SNickeau		        	if ($this->input->LA(1) === Token::EOF) {
282*37748cd8SNickeau		        	    $this->matchedEOF = true;
283*37748cd8SNickeau		            }
284*37748cd8SNickeau
285*37748cd8SNickeau		        	$this->errorHandler->reportMatch($this);
286*37748cd8SNickeau		        	$this->consume();
287*37748cd8SNickeau		        }
288*37748cd8SNickeau		    } catch (RecognitionException $exception) {
289*37748cd8SNickeau		        $localContext->exception = $exception;
290*37748cd8SNickeau		        $this->errorHandler->reportError($this, $exception);
291*37748cd8SNickeau		        $this->errorHandler->recover($this, $exception);
292*37748cd8SNickeau		    } finally {
293*37748cd8SNickeau		        $this->exitRule();
294*37748cd8SNickeau		    }
295*37748cd8SNickeau
296*37748cd8SNickeau		    return $localContext;
297*37748cd8SNickeau		}
298*37748cd8SNickeau
299*37748cd8SNickeau		/**
300*37748cd8SNickeau		 * @throws RecognitionException
301*37748cd8SNickeau		 */
302*37748cd8SNickeau		public function tableNames() : Context\TableNamesContext
303*37748cd8SNickeau		{
304*37748cd8SNickeau		    $localContext = new Context\TableNamesContext($this->ctx, $this->getState());
305*37748cd8SNickeau
306*37748cd8SNickeau		    $this->enterRule($localContext, 2, self::RULE_tableNames);
307*37748cd8SNickeau
308*37748cd8SNickeau		    try {
309*37748cd8SNickeau		        $this->enterOuterAlt($localContext, 1);
310*37748cd8SNickeau		        $this->setState(30);
311*37748cd8SNickeau
312*37748cd8SNickeau		        $_la = $this->input->LA(1);
313*37748cd8SNickeau
314*37748cd8SNickeau		        if (!($_la === self::DATE || $_la === self::DATETIME)) {
315*37748cd8SNickeau		        $this->errorHandler->recoverInline($this);
316*37748cd8SNickeau		        } else {
317*37748cd8SNickeau		        	if ($this->input->LA(1) === Token::EOF) {
318*37748cd8SNickeau		        	    $this->matchedEOF = true;
319*37748cd8SNickeau		            }
320*37748cd8SNickeau
321*37748cd8SNickeau		        	$this->errorHandler->reportMatch($this);
322*37748cd8SNickeau		        	$this->consume();
323*37748cd8SNickeau		        }
324*37748cd8SNickeau		    } catch (RecognitionException $exception) {
325*37748cd8SNickeau		        $localContext->exception = $exception;
326*37748cd8SNickeau		        $this->errorHandler->reportError($this, $exception);
327*37748cd8SNickeau		        $this->errorHandler->recover($this, $exception);
328*37748cd8SNickeau		    } finally {
329*37748cd8SNickeau		        $this->exitRule();
330*37748cd8SNickeau		    }
331*37748cd8SNickeau
332*37748cd8SNickeau		    return $localContext;
333*37748cd8SNickeau		}
334*37748cd8SNickeau
335*37748cd8SNickeau		/**
336*37748cd8SNickeau		 * @throws RecognitionException
337*37748cd8SNickeau		 */
338*37748cd8SNickeau		public function sqlNames() : Context\SqlNamesContext
339*37748cd8SNickeau		{
340*37748cd8SNickeau		    $localContext = new Context\SqlNamesContext($this->ctx, $this->getState());
341*37748cd8SNickeau
342*37748cd8SNickeau		    $this->enterRule($localContext, 4, self::RULE_sqlNames);
343*37748cd8SNickeau
344*37748cd8SNickeau		    try {
345*37748cd8SNickeau		        $this->enterOuterAlt($localContext, 1);
346*37748cd8SNickeau		        $this->setState(32);
347*37748cd8SNickeau
348*37748cd8SNickeau		        $_la = $this->input->LA(1);
349*37748cd8SNickeau
350*37748cd8SNickeau		        if (!($_la === self::Number || $_la === self::SqlName)) {
351*37748cd8SNickeau		        $this->errorHandler->recoverInline($this);
352*37748cd8SNickeau		        } else {
353*37748cd8SNickeau		        	if ($this->input->LA(1) === Token::EOF) {
354*37748cd8SNickeau		        	    $this->matchedEOF = true;
355*37748cd8SNickeau		            }
356*37748cd8SNickeau
357*37748cd8SNickeau		        	$this->errorHandler->reportMatch($this);
358*37748cd8SNickeau		        	$this->consume();
359*37748cd8SNickeau		        }
360*37748cd8SNickeau		    } catch (RecognitionException $exception) {
361*37748cd8SNickeau		        $localContext->exception = $exception;
362*37748cd8SNickeau		        $this->errorHandler->reportError($this, $exception);
363*37748cd8SNickeau		        $this->errorHandler->recover($this, $exception);
364*37748cd8SNickeau		    } finally {
365*37748cd8SNickeau		        $this->exitRule();
366*37748cd8SNickeau		    }
367*37748cd8SNickeau
368*37748cd8SNickeau		    return $localContext;
369*37748cd8SNickeau		}
370*37748cd8SNickeau
371*37748cd8SNickeau		/**
372*37748cd8SNickeau		 * @throws RecognitionException
373*37748cd8SNickeau		 */
374*37748cd8SNickeau		public function column() : Context\ColumnContext
375*37748cd8SNickeau		{
376*37748cd8SNickeau		    $localContext = new Context\ColumnContext($this->ctx, $this->getState());
377*37748cd8SNickeau
378*37748cd8SNickeau		    $this->enterRule($localContext, 6, self::RULE_column);
379*37748cd8SNickeau
380*37748cd8SNickeau		    try {
381*37748cd8SNickeau		        $this->enterOuterAlt($localContext, 1);
382*37748cd8SNickeau		        $this->setState(34);
383*37748cd8SNickeau		        $this->sqlNames();
384*37748cd8SNickeau		        $this->setState(37);
385*37748cd8SNickeau		        $this->errorHandler->sync($this);
386*37748cd8SNickeau		        $_la = $this->input->LA(1);
387*37748cd8SNickeau
388*37748cd8SNickeau		        if ($_la === self::DOT) {
389*37748cd8SNickeau		        	$this->setState(35);
390*37748cd8SNickeau		        	$this->match(self::DOT);
391*37748cd8SNickeau		        	$this->setState(36);
392*37748cd8SNickeau		        	$this->sqlNames();
393*37748cd8SNickeau		        }
394*37748cd8SNickeau		        $this->setState(44);
395*37748cd8SNickeau		        $this->errorHandler->sync($this);
396*37748cd8SNickeau		        $_la = $this->input->LA(1);
397*37748cd8SNickeau
398*37748cd8SNickeau		        if ($_la === self::AS) {
399*37748cd8SNickeau		        	$this->setState(39);
400*37748cd8SNickeau		        	$this->match(self::AS);
401*37748cd8SNickeau		        	$this->setState(42);
402*37748cd8SNickeau		        	$this->errorHandler->sync($this);
403*37748cd8SNickeau
404*37748cd8SNickeau		        	switch ($this->input->LA(1)) {
405*37748cd8SNickeau		        	    case self::Number:
406*37748cd8SNickeau		        	    case self::SqlName:
407*37748cd8SNickeau		        	    	$this->setState(40);
408*37748cd8SNickeau		        	    	$this->sqlNames();
409*37748cd8SNickeau		        	    	break;
410*37748cd8SNickeau
411*37748cd8SNickeau		        	    case self::StringLiteral:
412*37748cd8SNickeau		        	    	$this->setState(41);
413*37748cd8SNickeau		        	    	$this->match(self::StringLiteral);
414*37748cd8SNickeau		        	    	break;
415*37748cd8SNickeau
416*37748cd8SNickeau		        	default:
417*37748cd8SNickeau		        		throw new NoViableAltException($this);
418*37748cd8SNickeau		        	}
419*37748cd8SNickeau		        }
420*37748cd8SNickeau		    } catch (RecognitionException $exception) {
421*37748cd8SNickeau		        $localContext->exception = $exception;
422*37748cd8SNickeau		        $this->errorHandler->reportError($this, $exception);
423*37748cd8SNickeau		        $this->errorHandler->recover($this, $exception);
424*37748cd8SNickeau		    } finally {
425*37748cd8SNickeau		        $this->exitRule();
426*37748cd8SNickeau		    }
427*37748cd8SNickeau
428*37748cd8SNickeau		    return $localContext;
429*37748cd8SNickeau		}
430*37748cd8SNickeau
431*37748cd8SNickeau		/**
432*37748cd8SNickeau		 * @throws RecognitionException
433*37748cd8SNickeau		 */
434*37748cd8SNickeau		public function pattern() : Context\PatternContext
435*37748cd8SNickeau		{
436*37748cd8SNickeau		    $localContext = new Context\PatternContext($this->ctx, $this->getState());
437*37748cd8SNickeau
438*37748cd8SNickeau		    $this->enterRule($localContext, 8, self::RULE_pattern);
439*37748cd8SNickeau
440*37748cd8SNickeau		    try {
441*37748cd8SNickeau		        $this->enterOuterAlt($localContext, 1);
442*37748cd8SNickeau		        $this->setState(46);
443*37748cd8SNickeau
444*37748cd8SNickeau		        $_la = $this->input->LA(1);
445*37748cd8SNickeau
446*37748cd8SNickeau		        if (!($_la === self::StringLiteral || $_la === self::NumberLiteral)) {
447*37748cd8SNickeau		        $this->errorHandler->recoverInline($this);
448*37748cd8SNickeau		        } else {
449*37748cd8SNickeau		        	if ($this->input->LA(1) === Token::EOF) {
450*37748cd8SNickeau		        	    $this->matchedEOF = true;
451*37748cd8SNickeau		            }
452*37748cd8SNickeau
453*37748cd8SNickeau		        	$this->errorHandler->reportMatch($this);
454*37748cd8SNickeau		        	$this->consume();
455*37748cd8SNickeau		        }
456*37748cd8SNickeau		    } catch (RecognitionException $exception) {
457*37748cd8SNickeau		        $localContext->exception = $exception;
458*37748cd8SNickeau		        $this->errorHandler->reportError($this, $exception);
459*37748cd8SNickeau		        $this->errorHandler->recover($this, $exception);
460*37748cd8SNickeau		    } finally {
461*37748cd8SNickeau		        $this->exitRule();
462*37748cd8SNickeau		    }
463*37748cd8SNickeau
464*37748cd8SNickeau		    return $localContext;
465*37748cd8SNickeau		}
466*37748cd8SNickeau
467*37748cd8SNickeau		/**
468*37748cd8SNickeau		 * @throws RecognitionException
469*37748cd8SNickeau		 */
470*37748cd8SNickeau		public function expression() : Context\ExpressionContext
471*37748cd8SNickeau		{
472*37748cd8SNickeau		    $localContext = new Context\ExpressionContext($this->ctx, $this->getState());
473*37748cd8SNickeau
474*37748cd8SNickeau		    $this->enterRule($localContext, 10, self::RULE_expression);
475*37748cd8SNickeau
476*37748cd8SNickeau		    try {
477*37748cd8SNickeau		        $this->setState(63);
478*37748cd8SNickeau		        $this->errorHandler->sync($this);
479*37748cd8SNickeau
480*37748cd8SNickeau		        switch ($this->input->LA(1)) {
481*37748cd8SNickeau		            case self::StringLiteral:
482*37748cd8SNickeau		            case self::Number:
483*37748cd8SNickeau		            case self::NumberLiteral:
484*37748cd8SNickeau		            case self::SqlName:
485*37748cd8SNickeau		            	$this->enterOuterAlt($localContext, 1);
486*37748cd8SNickeau		            	$this->setState(48);
487*37748cd8SNickeau
488*37748cd8SNickeau		            	$_la = $this->input->LA(1);
489*37748cd8SNickeau
490*37748cd8SNickeau		            	if (!((((($_la - 61)) & ~0x3f) === 0 && ((1 << ($_la - 61)) & ((1 << (self::StringLiteral - 61)) | (1 << (self::Number - 61)) | (1 << (self::NumberLiteral - 61)) | (1 << (self::SqlName - 61)))) !== 0))) {
491*37748cd8SNickeau		            	$this->errorHandler->recoverInline($this);
492*37748cd8SNickeau		            	} else {
493*37748cd8SNickeau		            		if ($this->input->LA(1) === Token::EOF) {
494*37748cd8SNickeau		            		    $this->matchedEOF = true;
495*37748cd8SNickeau		            	    }
496*37748cd8SNickeau
497*37748cd8SNickeau		            		$this->errorHandler->reportMatch($this);
498*37748cd8SNickeau		            		$this->consume();
499*37748cd8SNickeau		            	}
500*37748cd8SNickeau		            	break;
501*37748cd8SNickeau
502*37748cd8SNickeau		            case self::DATE:
503*37748cd8SNickeau		            case self::DATETIME:
504*37748cd8SNickeau		            	$this->enterOuterAlt($localContext, 2);
505*37748cd8SNickeau		            	$this->setState(49);
506*37748cd8SNickeau		            	$this->functionNames();
507*37748cd8SNickeau		            	$this->setState(50);
508*37748cd8SNickeau		            	$this->match(self::LPAREN);
509*37748cd8SNickeau		            	$this->setState(52);
510*37748cd8SNickeau		            	$this->errorHandler->sync($this);
511*37748cd8SNickeau		            	$_la = $this->input->LA(1);
512*37748cd8SNickeau
513*37748cd8SNickeau		            	if ((((($_la - 57)) & ~0x3f) === 0 && ((1 << ($_la - 57)) & ((1 << (self::DATE - 57)) | (1 << (self::DATETIME - 57)) | (1 << (self::StringLiteral - 57)) | (1 << (self::Number - 57)) | (1 << (self::NumberLiteral - 57)) | (1 << (self::SqlName - 57)))) !== 0)) {
514*37748cd8SNickeau		            		$this->setState(51);
515*37748cd8SNickeau		            		$this->expression();
516*37748cd8SNickeau		            	}
517*37748cd8SNickeau		            	$this->setState(58);
518*37748cd8SNickeau		            	$this->errorHandler->sync($this);
519*37748cd8SNickeau
520*37748cd8SNickeau		            	$_la = $this->input->LA(1);
521*37748cd8SNickeau		            	while ($_la === self::COMMA) {
522*37748cd8SNickeau		            		$this->setState(54);
523*37748cd8SNickeau		            		$this->match(self::COMMA);
524*37748cd8SNickeau		            		$this->setState(55);
525*37748cd8SNickeau		            		$this->expression();
526*37748cd8SNickeau		            		$this->setState(60);
527*37748cd8SNickeau		            		$this->errorHandler->sync($this);
528*37748cd8SNickeau		            		$_la = $this->input->LA(1);
529*37748cd8SNickeau		            	}
530*37748cd8SNickeau		            	$this->setState(61);
531*37748cd8SNickeau		            	$this->match(self::RPAREN);
532*37748cd8SNickeau		            	break;
533*37748cd8SNickeau
534*37748cd8SNickeau		        default:
535*37748cd8SNickeau		        	throw new NoViableAltException($this);
536*37748cd8SNickeau		        }
537*37748cd8SNickeau		    } catch (RecognitionException $exception) {
538*37748cd8SNickeau		        $localContext->exception = $exception;
539*37748cd8SNickeau		        $this->errorHandler->reportError($this, $exception);
540*37748cd8SNickeau		        $this->errorHandler->recover($this, $exception);
541*37748cd8SNickeau		    } finally {
542*37748cd8SNickeau		        $this->exitRule();
543*37748cd8SNickeau		    }
544*37748cd8SNickeau
545*37748cd8SNickeau		    return $localContext;
546*37748cd8SNickeau		}
547*37748cd8SNickeau
548*37748cd8SNickeau		/**
549*37748cd8SNickeau		 * @throws RecognitionException
550*37748cd8SNickeau		 */
551*37748cd8SNickeau		public function predicate() : Context\PredicateContext
552*37748cd8SNickeau		{
553*37748cd8SNickeau		    $localContext = new Context\PredicateContext($this->ctx, $this->getState());
554*37748cd8SNickeau
555*37748cd8SNickeau		    $this->enterRule($localContext, 12, self::RULE_predicate);
556*37748cd8SNickeau
557*37748cd8SNickeau		    try {
558*37748cd8SNickeau		        $this->enterOuterAlt($localContext, 1);
559*37748cd8SNickeau		        $this->setState(65);
560*37748cd8SNickeau		        $this->sqlNames();
561*37748cd8SNickeau		        $this->setState(105);
562*37748cd8SNickeau		        $this->errorHandler->sync($this);
563*37748cd8SNickeau
564*37748cd8SNickeau		        switch ($this->getInterpreter()->adaptivePredict($this->input, 13, $this->ctx)) {
565*37748cd8SNickeau		        	case 1:
566*37748cd8SNickeau		        	    $this->setState(66);
567*37748cd8SNickeau
568*37748cd8SNickeau		        	    $_la = $this->input->LA(1);
569*37748cd8SNickeau
570*37748cd8SNickeau		        	    if (!(((($_la) & ~0x3f) === 0 && ((1 << $_la) & ((1 << self::EQUAL) | (1 << self::LESS_THAN) | (1 << self::LESS_THAN_OR_EQUAL) | (1 << self::GREATER_THAN) | (1 << self::GREATER_THAN_OR_EQUAL) | (1 << self::NOT_EQUAL))) !== 0))) {
571*37748cd8SNickeau		        	    $this->errorHandler->recoverInline($this);
572*37748cd8SNickeau		        	    } else {
573*37748cd8SNickeau		        	    	if ($this->input->LA(1) === Token::EOF) {
574*37748cd8SNickeau		        	    	    $this->matchedEOF = true;
575*37748cd8SNickeau		        	        }
576*37748cd8SNickeau
577*37748cd8SNickeau		        	    	$this->errorHandler->reportMatch($this);
578*37748cd8SNickeau		        	    	$this->consume();
579*37748cd8SNickeau		        	    }
580*37748cd8SNickeau		        	    $this->setState(67);
581*37748cd8SNickeau		        	    $this->expression();
582*37748cd8SNickeau		        	break;
583*37748cd8SNickeau
584*37748cd8SNickeau		        	case 2:
585*37748cd8SNickeau		        	    $this->setState(79);
586*37748cd8SNickeau		        	    $this->errorHandler->sync($this);
587*37748cd8SNickeau
588*37748cd8SNickeau		        	    switch ($this->input->LA(1)) {
589*37748cd8SNickeau		        	        case self::LIKE:
590*37748cd8SNickeau		        	        case self::NOT:
591*37748cd8SNickeau		        	        	$this->setState(69);
592*37748cd8SNickeau		        	        	$this->errorHandler->sync($this);
593*37748cd8SNickeau		        	        	$_la = $this->input->LA(1);
594*37748cd8SNickeau
595*37748cd8SNickeau		        	        	if ($_la === self::NOT) {
596*37748cd8SNickeau		        	        		$this->setState(68);
597*37748cd8SNickeau		        	        		$this->match(self::NOT);
598*37748cd8SNickeau		        	        	}
599*37748cd8SNickeau
600*37748cd8SNickeau		        	        	$this->setState(71);
601*37748cd8SNickeau		        	        	$this->match(self::LIKE);
602*37748cd8SNickeau		        	        	$this->setState(72);
603*37748cd8SNickeau		        	        	$this->pattern();
604*37748cd8SNickeau		        	        	$this->setState(75);
605*37748cd8SNickeau		        	        	$this->errorHandler->sync($this);
606*37748cd8SNickeau		        	        	$_la = $this->input->LA(1);
607*37748cd8SNickeau
608*37748cd8SNickeau		        	        	if ($_la === self::ESCAPE) {
609*37748cd8SNickeau		        	        		$this->setState(73);
610*37748cd8SNickeau		        	        		$this->match(self::ESCAPE);
611*37748cd8SNickeau		        	        		$this->setState(74);
612*37748cd8SNickeau		        	        		$this->match(self::StringLiteral);
613*37748cd8SNickeau		        	        	}
614*37748cd8SNickeau		        	        	break;
615*37748cd8SNickeau
616*37748cd8SNickeau		        	        case self::GLOB:
617*37748cd8SNickeau		        	        	$this->setState(77);
618*37748cd8SNickeau		        	        	$this->match(self::GLOB);
619*37748cd8SNickeau		        	        	$this->setState(78);
620*37748cd8SNickeau		        	        	$this->pattern();
621*37748cd8SNickeau		        	        	break;
622*37748cd8SNickeau
623*37748cd8SNickeau		        	    default:
624*37748cd8SNickeau		        	    	throw new NoViableAltException($this);
625*37748cd8SNickeau		        	    }
626*37748cd8SNickeau		        	break;
627*37748cd8SNickeau
628*37748cd8SNickeau		        	case 3:
629*37748cd8SNickeau		        	    $this->setState(82);
630*37748cd8SNickeau		        	    $this->errorHandler->sync($this);
631*37748cd8SNickeau		        	    $_la = $this->input->LA(1);
632*37748cd8SNickeau
633*37748cd8SNickeau		        	    if ($_la === self::NOT) {
634*37748cd8SNickeau		        	    	$this->setState(81);
635*37748cd8SNickeau		        	    	$this->match(self::NOT);
636*37748cd8SNickeau		        	    }
637*37748cd8SNickeau		        	    $this->setState(84);
638*37748cd8SNickeau		        	    $this->match(self::BETWEEN);
639*37748cd8SNickeau		        	    $this->setState(85);
640*37748cd8SNickeau		        	    $this->expression();
641*37748cd8SNickeau		        	    $this->setState(86);
642*37748cd8SNickeau		        	    $this->match(self::AND);
643*37748cd8SNickeau		        	    $this->setState(87);
644*37748cd8SNickeau		        	    $this->expression();
645*37748cd8SNickeau		        	break;
646*37748cd8SNickeau
647*37748cd8SNickeau		        	case 4:
648*37748cd8SNickeau		        	    $this->setState(90);
649*37748cd8SNickeau		        	    $this->errorHandler->sync($this);
650*37748cd8SNickeau		        	    $_la = $this->input->LA(1);
651*37748cd8SNickeau
652*37748cd8SNickeau		        	    if ($_la === self::NOT) {
653*37748cd8SNickeau		        	    	$this->setState(89);
654*37748cd8SNickeau		        	    	$this->match(self::NOT);
655*37748cd8SNickeau		        	    }
656*37748cd8SNickeau		        	    $this->setState(92);
657*37748cd8SNickeau		        	    $this->match(self::IN);
658*37748cd8SNickeau		        	    $this->setState(93);
659*37748cd8SNickeau		        	    $this->match(self::LPAREN);
660*37748cd8SNickeau		        	    $this->setState(102);
661*37748cd8SNickeau		        	    $this->errorHandler->sync($this);
662*37748cd8SNickeau		        	    $_la = $this->input->LA(1);
663*37748cd8SNickeau
664*37748cd8SNickeau		        	    if ((((($_la - 57)) & ~0x3f) === 0 && ((1 << ($_la - 57)) & ((1 << (self::DATE - 57)) | (1 << (self::DATETIME - 57)) | (1 << (self::StringLiteral - 57)) | (1 << (self::Number - 57)) | (1 << (self::NumberLiteral - 57)) | (1 << (self::SqlName - 57)))) !== 0)) {
665*37748cd8SNickeau		        	    	$this->setState(94);
666*37748cd8SNickeau		        	    	$this->expression();
667*37748cd8SNickeau		        	    	$this->setState(99);
668*37748cd8SNickeau		        	    	$this->errorHandler->sync($this);
669*37748cd8SNickeau
670*37748cd8SNickeau		        	    	$_la = $this->input->LA(1);
671*37748cd8SNickeau		        	    	while ($_la === self::COMMA) {
672*37748cd8SNickeau		        	    		$this->setState(95);
673*37748cd8SNickeau		        	    		$this->match(self::COMMA);
674*37748cd8SNickeau		        	    		$this->setState(96);
675*37748cd8SNickeau		        	    		$this->expression();
676*37748cd8SNickeau		        	    		$this->setState(101);
677*37748cd8SNickeau		        	    		$this->errorHandler->sync($this);
678*37748cd8SNickeau		        	    		$_la = $this->input->LA(1);
679*37748cd8SNickeau		        	    	}
680*37748cd8SNickeau		        	    }
681*37748cd8SNickeau		        	    $this->setState(104);
682*37748cd8SNickeau		        	    $this->match(self::RPAREN);
683*37748cd8SNickeau		        	break;
684*37748cd8SNickeau		        }
685*37748cd8SNickeau		    } catch (RecognitionException $exception) {
686*37748cd8SNickeau		        $localContext->exception = $exception;
687*37748cd8SNickeau		        $this->errorHandler->reportError($this, $exception);
688*37748cd8SNickeau		        $this->errorHandler->recover($this, $exception);
689*37748cd8SNickeau		    } finally {
690*37748cd8SNickeau		        $this->exitRule();
691*37748cd8SNickeau		    }
692*37748cd8SNickeau
693*37748cd8SNickeau		    return $localContext;
694*37748cd8SNickeau		}
695*37748cd8SNickeau
696*37748cd8SNickeau		/**
697*37748cd8SNickeau		 * @throws RecognitionException
698*37748cd8SNickeau		 */
699*37748cd8SNickeau		public function columns() : Context\ColumnsContext
700*37748cd8SNickeau		{
701*37748cd8SNickeau		    $localContext = new Context\ColumnsContext($this->ctx, $this->getState());
702*37748cd8SNickeau
703*37748cd8SNickeau		    $this->enterRule($localContext, 14, self::RULE_columns);
704*37748cd8SNickeau
705*37748cd8SNickeau		    try {
706*37748cd8SNickeau		        $this->enterOuterAlt($localContext, 1);
707*37748cd8SNickeau		        $this->setState(107);
708*37748cd8SNickeau		        $this->column();
709*37748cd8SNickeau		        $this->setState(112);
710*37748cd8SNickeau		        $this->errorHandler->sync($this);
711*37748cd8SNickeau
712*37748cd8SNickeau		        $_la = $this->input->LA(1);
713*37748cd8SNickeau		        while ($_la === self::COMMA) {
714*37748cd8SNickeau		        	$this->setState(108);
715*37748cd8SNickeau		        	$this->match(self::COMMA);
716*37748cd8SNickeau		        	$this->setState(109);
717*37748cd8SNickeau		        	$this->column();
718*37748cd8SNickeau		        	$this->setState(114);
719*37748cd8SNickeau		        	$this->errorHandler->sync($this);
720*37748cd8SNickeau		        	$_la = $this->input->LA(1);
721*37748cd8SNickeau		        }
722*37748cd8SNickeau		    } catch (RecognitionException $exception) {
723*37748cd8SNickeau		        $localContext->exception = $exception;
724*37748cd8SNickeau		        $this->errorHandler->reportError($this, $exception);
725*37748cd8SNickeau		        $this->errorHandler->recover($this, $exception);
726*37748cd8SNickeau		    } finally {
727*37748cd8SNickeau		        $this->exitRule();
728*37748cd8SNickeau		    }
729*37748cd8SNickeau
730*37748cd8SNickeau		    return $localContext;
731*37748cd8SNickeau		}
732*37748cd8SNickeau
733*37748cd8SNickeau		/**
734*37748cd8SNickeau		 * @throws RecognitionException
735*37748cd8SNickeau		 */
736*37748cd8SNickeau		public function predicates() : Context\PredicatesContext
737*37748cd8SNickeau		{
738*37748cd8SNickeau		    $localContext = new Context\PredicatesContext($this->ctx, $this->getState());
739*37748cd8SNickeau
740*37748cd8SNickeau		    $this->enterRule($localContext, 16, self::RULE_predicates);
741*37748cd8SNickeau
742*37748cd8SNickeau		    try {
743*37748cd8SNickeau		        $this->enterOuterAlt($localContext, 1);
744*37748cd8SNickeau		        $this->setState(115);
745*37748cd8SNickeau		        $this->match(self::WHERE);
746*37748cd8SNickeau		        $this->setState(116);
747*37748cd8SNickeau		        $this->predicate();
748*37748cd8SNickeau		        $this->setState(121);
749*37748cd8SNickeau		        $this->errorHandler->sync($this);
750*37748cd8SNickeau
751*37748cd8SNickeau		        $_la = $this->input->LA(1);
752*37748cd8SNickeau		        while ($_la === self::AND || $_la === self::OR) {
753*37748cd8SNickeau		        	$this->setState(117);
754*37748cd8SNickeau
755*37748cd8SNickeau		        	$_la = $this->input->LA(1);
756*37748cd8SNickeau
757*37748cd8SNickeau		        	if (!($_la === self::AND || $_la === self::OR)) {
758*37748cd8SNickeau		        	$this->errorHandler->recoverInline($this);
759*37748cd8SNickeau		        	} else {
760*37748cd8SNickeau		        		if ($this->input->LA(1) === Token::EOF) {
761*37748cd8SNickeau		        		    $this->matchedEOF = true;
762*37748cd8SNickeau		        	    }
763*37748cd8SNickeau
764*37748cd8SNickeau		        		$this->errorHandler->reportMatch($this);
765*37748cd8SNickeau		        		$this->consume();
766*37748cd8SNickeau		        	}
767*37748cd8SNickeau		        	$this->setState(118);
768*37748cd8SNickeau		        	$this->predicate();
769*37748cd8SNickeau		        	$this->setState(123);
770*37748cd8SNickeau		        	$this->errorHandler->sync($this);
771*37748cd8SNickeau		        	$_la = $this->input->LA(1);
772*37748cd8SNickeau		        }
773*37748cd8SNickeau		    } catch (RecognitionException $exception) {
774*37748cd8SNickeau		        $localContext->exception = $exception;
775*37748cd8SNickeau		        $this->errorHandler->reportError($this, $exception);
776*37748cd8SNickeau		        $this->errorHandler->recover($this, $exception);
777*37748cd8SNickeau		    } finally {
778*37748cd8SNickeau		        $this->exitRule();
779*37748cd8SNickeau		    }
780*37748cd8SNickeau
781*37748cd8SNickeau		    return $localContext;
782*37748cd8SNickeau		}
783*37748cd8SNickeau
784*37748cd8SNickeau		/**
785*37748cd8SNickeau		 * @throws RecognitionException
786*37748cd8SNickeau		 */
787*37748cd8SNickeau		public function tables() : Context\TablesContext
788*37748cd8SNickeau		{
789*37748cd8SNickeau		    $localContext = new Context\TablesContext($this->ctx, $this->getState());
790*37748cd8SNickeau
791*37748cd8SNickeau		    $this->enterRule($localContext, 18, self::RULE_tables);
792*37748cd8SNickeau
793*37748cd8SNickeau		    try {
794*37748cd8SNickeau		        $this->enterOuterAlt($localContext, 1);
795*37748cd8SNickeau		        $this->setState(124);
796*37748cd8SNickeau		        $this->match(self::FROM);
797*37748cd8SNickeau		        $this->setState(125);
798*37748cd8SNickeau		        $this->tableNames();
799*37748cd8SNickeau		    } catch (RecognitionException $exception) {
800*37748cd8SNickeau		        $localContext->exception = $exception;
801*37748cd8SNickeau		        $this->errorHandler->reportError($this, $exception);
802*37748cd8SNickeau		        $this->errorHandler->recover($this, $exception);
803*37748cd8SNickeau		    } finally {
804*37748cd8SNickeau		        $this->exitRule();
805*37748cd8SNickeau		    }
806*37748cd8SNickeau
807*37748cd8SNickeau		    return $localContext;
808*37748cd8SNickeau		}
809*37748cd8SNickeau
810*37748cd8SNickeau		/**
811*37748cd8SNickeau		 * @throws RecognitionException
812*37748cd8SNickeau		 */
813*37748cd8SNickeau		public function limit() : Context\LimitContext
814*37748cd8SNickeau		{
815*37748cd8SNickeau		    $localContext = new Context\LimitContext($this->ctx, $this->getState());
816*37748cd8SNickeau
817*37748cd8SNickeau		    $this->enterRule($localContext, 20, self::RULE_limit);
818*37748cd8SNickeau
819*37748cd8SNickeau		    try {
820*37748cd8SNickeau		        $this->enterOuterAlt($localContext, 1);
821*37748cd8SNickeau		        $this->setState(127);
822*37748cd8SNickeau		        $this->match(self::LIMIT);
823*37748cd8SNickeau		        $this->setState(128);
824*37748cd8SNickeau		        $this->match(self::Number);
825*37748cd8SNickeau		    } catch (RecognitionException $exception) {
826*37748cd8SNickeau		        $localContext->exception = $exception;
827*37748cd8SNickeau		        $this->errorHandler->reportError($this, $exception);
828*37748cd8SNickeau		        $this->errorHandler->recover($this, $exception);
829*37748cd8SNickeau		    } finally {
830*37748cd8SNickeau		        $this->exitRule();
831*37748cd8SNickeau		    }
832*37748cd8SNickeau
833*37748cd8SNickeau		    return $localContext;
834*37748cd8SNickeau		}
835*37748cd8SNickeau
836*37748cd8SNickeau		/**
837*37748cd8SNickeau		 * @throws RecognitionException
838*37748cd8SNickeau		 */
839*37748cd8SNickeau		public function orderBys() : Context\OrderBysContext
840*37748cd8SNickeau		{
841*37748cd8SNickeau		    $localContext = new Context\OrderBysContext($this->ctx, $this->getState());
842*37748cd8SNickeau
843*37748cd8SNickeau		    $this->enterRule($localContext, 22, self::RULE_orderBys);
844*37748cd8SNickeau
845*37748cd8SNickeau		    try {
846*37748cd8SNickeau		        $this->enterOuterAlt($localContext, 1);
847*37748cd8SNickeau		        $this->setState(130);
848*37748cd8SNickeau		        $this->match(self::ORDER);
849*37748cd8SNickeau		        $this->setState(131);
850*37748cd8SNickeau		        $this->match(self::BY);
851*37748cd8SNickeau		        $this->setState(132);
852*37748cd8SNickeau		        $this->orderByDef();
853*37748cd8SNickeau		        $this->setState(137);
854*37748cd8SNickeau		        $this->errorHandler->sync($this);
855*37748cd8SNickeau
856*37748cd8SNickeau		        $_la = $this->input->LA(1);
857*37748cd8SNickeau		        while ($_la === self::COMMA) {
858*37748cd8SNickeau		        	$this->setState(133);
859*37748cd8SNickeau		        	$this->match(self::COMMA);
860*37748cd8SNickeau		        	$this->setState(134);
861*37748cd8SNickeau		        	$this->orderByDef();
862*37748cd8SNickeau		        	$this->setState(139);
863*37748cd8SNickeau		        	$this->errorHandler->sync($this);
864*37748cd8SNickeau		        	$_la = $this->input->LA(1);
865*37748cd8SNickeau		        }
866*37748cd8SNickeau		    } catch (RecognitionException $exception) {
867*37748cd8SNickeau		        $localContext->exception = $exception;
868*37748cd8SNickeau		        $this->errorHandler->reportError($this, $exception);
869*37748cd8SNickeau		        $this->errorHandler->recover($this, $exception);
870*37748cd8SNickeau		    } finally {
871*37748cd8SNickeau		        $this->exitRule();
872*37748cd8SNickeau		    }
873*37748cd8SNickeau
874*37748cd8SNickeau		    return $localContext;
875*37748cd8SNickeau		}
876*37748cd8SNickeau
877*37748cd8SNickeau		/**
878*37748cd8SNickeau		 * @throws RecognitionException
879*37748cd8SNickeau		 */
880*37748cd8SNickeau		public function orderByDef() : Context\OrderByDefContext
881*37748cd8SNickeau		{
882*37748cd8SNickeau		    $localContext = new Context\OrderByDefContext($this->ctx, $this->getState());
883*37748cd8SNickeau
884*37748cd8SNickeau		    $this->enterRule($localContext, 24, self::RULE_orderByDef);
885*37748cd8SNickeau
886*37748cd8SNickeau		    try {
887*37748cd8SNickeau		        $this->enterOuterAlt($localContext, 1);
888*37748cd8SNickeau		        $this->setState(140);
889*37748cd8SNickeau		        $this->match(self::SqlName);
890*37748cd8SNickeau		        $this->setState(142);
891*37748cd8SNickeau		        $this->errorHandler->sync($this);
892*37748cd8SNickeau		        $_la = $this->input->LA(1);
893*37748cd8SNickeau
894*37748cd8SNickeau		        if ($_la === self::ASC || $_la === self::DESC) {
895*37748cd8SNickeau		        	$this->setState(141);
896*37748cd8SNickeau
897*37748cd8SNickeau		        	$_la = $this->input->LA(1);
898*37748cd8SNickeau
899*37748cd8SNickeau		        	if (!($_la === self::ASC || $_la === self::DESC)) {
900*37748cd8SNickeau		        	$this->errorHandler->recoverInline($this);
901*37748cd8SNickeau		        	} else {
902*37748cd8SNickeau		        		if ($this->input->LA(1) === Token::EOF) {
903*37748cd8SNickeau		        		    $this->matchedEOF = true;
904*37748cd8SNickeau		        	    }
905*37748cd8SNickeau
906*37748cd8SNickeau		        		$this->errorHandler->reportMatch($this);
907*37748cd8SNickeau		        		$this->consume();
908*37748cd8SNickeau		        	}
909*37748cd8SNickeau		        }
910*37748cd8SNickeau		    } catch (RecognitionException $exception) {
911*37748cd8SNickeau		        $localContext->exception = $exception;
912*37748cd8SNickeau		        $this->errorHandler->reportError($this, $exception);
913*37748cd8SNickeau		        $this->errorHandler->recover($this, $exception);
914*37748cd8SNickeau		    } finally {
915*37748cd8SNickeau		        $this->exitRule();
916*37748cd8SNickeau		    }
917*37748cd8SNickeau
918*37748cd8SNickeau		    return $localContext;
919*37748cd8SNickeau		}
920*37748cd8SNickeau
921*37748cd8SNickeau		/**
922*37748cd8SNickeau		 * @throws RecognitionException
923*37748cd8SNickeau		 */
924*37748cd8SNickeau		public function pageSql() : Context\PageSqlContext
925*37748cd8SNickeau		{
926*37748cd8SNickeau		    $localContext = new Context\PageSqlContext($this->ctx, $this->getState());
927*37748cd8SNickeau
928*37748cd8SNickeau		    $this->enterRule($localContext, 26, self::RULE_pageSql);
929*37748cd8SNickeau
930*37748cd8SNickeau		    try {
931*37748cd8SNickeau		        $this->enterOuterAlt($localContext, 1);
932*37748cd8SNickeau		        $this->setState(144);
933*37748cd8SNickeau		        $this->match(self::SELECT);
934*37748cd8SNickeau		        $this->setState(146);
935*37748cd8SNickeau		        $this->errorHandler->sync($this);
936*37748cd8SNickeau		        $_la = $this->input->LA(1);
937*37748cd8SNickeau
938*37748cd8SNickeau		        if ($_la === self::RANDOM) {
939*37748cd8SNickeau		        	$this->setState(145);
940*37748cd8SNickeau		        	$this->match(self::RANDOM);
941*37748cd8SNickeau		        }
942*37748cd8SNickeau		        $this->setState(148);
943*37748cd8SNickeau		        $this->columns();
944*37748cd8SNickeau		        $this->setState(150);
945*37748cd8SNickeau		        $this->errorHandler->sync($this);
946*37748cd8SNickeau		        $_la = $this->input->LA(1);
947*37748cd8SNickeau
948*37748cd8SNickeau		        if ($_la === self::FROM) {
949*37748cd8SNickeau		        	$this->setState(149);
950*37748cd8SNickeau		        	$this->tables();
951*37748cd8SNickeau		        }
952*37748cd8SNickeau		        $this->setState(153);
953*37748cd8SNickeau		        $this->errorHandler->sync($this);
954*37748cd8SNickeau		        $_la = $this->input->LA(1);
955*37748cd8SNickeau
956*37748cd8SNickeau		        if ($_la === self::WHERE) {
957*37748cd8SNickeau		        	$this->setState(152);
958*37748cd8SNickeau		        	$this->predicates();
959*37748cd8SNickeau		        }
960*37748cd8SNickeau		        $this->setState(156);
961*37748cd8SNickeau		        $this->errorHandler->sync($this);
962*37748cd8SNickeau		        $_la = $this->input->LA(1);
963*37748cd8SNickeau
964*37748cd8SNickeau		        if ($_la === self::ORDER) {
965*37748cd8SNickeau		        	$this->setState(155);
966*37748cd8SNickeau		        	$this->orderBys();
967*37748cd8SNickeau		        }
968*37748cd8SNickeau		        $this->setState(159);
969*37748cd8SNickeau		        $this->errorHandler->sync($this);
970*37748cd8SNickeau		        $_la = $this->input->LA(1);
971*37748cd8SNickeau
972*37748cd8SNickeau		        if ($_la === self::LIMIT) {
973*37748cd8SNickeau		        	$this->setState(158);
974*37748cd8SNickeau		        	$this->limit();
975*37748cd8SNickeau		        }
976*37748cd8SNickeau		    } catch (RecognitionException $exception) {
977*37748cd8SNickeau		        $localContext->exception = $exception;
978*37748cd8SNickeau		        $this->errorHandler->reportError($this, $exception);
979*37748cd8SNickeau		        $this->errorHandler->recover($this, $exception);
980*37748cd8SNickeau		    } finally {
981*37748cd8SNickeau		        $this->exitRule();
982*37748cd8SNickeau		    }
983*37748cd8SNickeau
984*37748cd8SNickeau		    return $localContext;
985*37748cd8SNickeau		}
986*37748cd8SNickeau	}
987*37748cd8SNickeau}
988*37748cd8SNickeau
989*37748cd8SNickeaunamespace ComboStrap\PageSqlParser\Context {
990*37748cd8SNickeau	use Antlr\Antlr4\Runtime\ParserRuleContext;
991*37748cd8SNickeau	use Antlr\Antlr4\Runtime\Token;
992*37748cd8SNickeau	use Antlr\Antlr4\Runtime\Tree\ParseTreeVisitor;
993*37748cd8SNickeau	use Antlr\Antlr4\Runtime\Tree\TerminalNode;
994*37748cd8SNickeau	use Antlr\Antlr4\Runtime\Tree\ParseTreeListener;
995*37748cd8SNickeau	use ComboStrap\PageSqlParser\PageSqlParser;
996*37748cd8SNickeau	use ComboStrap\PageSqlParser\PageSqlVisitor;
997*37748cd8SNickeau	use ComboStrap\PageSqlParser\PageSqlListener;
998*37748cd8SNickeau
999*37748cd8SNickeau	class FunctionNamesContext extends ParserRuleContext
1000*37748cd8SNickeau	{
1001*37748cd8SNickeau		public function __construct(?ParserRuleContext $parent, ?int $invokingState = null)
1002*37748cd8SNickeau		{
1003*37748cd8SNickeau			parent::__construct($parent, $invokingState);
1004*37748cd8SNickeau		}
1005*37748cd8SNickeau
1006*37748cd8SNickeau		public function getRuleIndex() : int
1007*37748cd8SNickeau		{
1008*37748cd8SNickeau		    return PageSqlParser::RULE_functionNames;
1009*37748cd8SNickeau	    }
1010*37748cd8SNickeau
1011*37748cd8SNickeau	    public function DATE() : ?TerminalNode
1012*37748cd8SNickeau	    {
1013*37748cd8SNickeau	        return $this->getToken(PageSqlParser::DATE, 0);
1014*37748cd8SNickeau	    }
1015*37748cd8SNickeau
1016*37748cd8SNickeau	    public function DATETIME() : ?TerminalNode
1017*37748cd8SNickeau	    {
1018*37748cd8SNickeau	        return $this->getToken(PageSqlParser::DATETIME, 0);
1019*37748cd8SNickeau	    }
1020*37748cd8SNickeau
1021*37748cd8SNickeau		public function enterRule(ParseTreeListener $listener) : void
1022*37748cd8SNickeau		{
1023*37748cd8SNickeau			if ($listener instanceof PageSqlListener) {
1024*37748cd8SNickeau			    $listener->enterFunctionNames($this);
1025*37748cd8SNickeau		    }
1026*37748cd8SNickeau		}
1027*37748cd8SNickeau
1028*37748cd8SNickeau		public function exitRule(ParseTreeListener $listener) : void
1029*37748cd8SNickeau		{
1030*37748cd8SNickeau			if ($listener instanceof PageSqlListener) {
1031*37748cd8SNickeau			    $listener->exitFunctionNames($this);
1032*37748cd8SNickeau		    }
1033*37748cd8SNickeau		}
1034*37748cd8SNickeau
1035*37748cd8SNickeau		public function accept(ParseTreeVisitor $visitor)
1036*37748cd8SNickeau		{
1037*37748cd8SNickeau			if ($visitor instanceof PageSqlVisitor) {
1038*37748cd8SNickeau			    return $visitor->visitFunctionNames($this);
1039*37748cd8SNickeau		    }
1040*37748cd8SNickeau
1041*37748cd8SNickeau			return $visitor->visitChildren($this);
1042*37748cd8SNickeau		}
1043*37748cd8SNickeau	}
1044*37748cd8SNickeau
1045*37748cd8SNickeau	class TableNamesContext extends ParserRuleContext
1046*37748cd8SNickeau	{
1047*37748cd8SNickeau		public function __construct(?ParserRuleContext $parent, ?int $invokingState = null)
1048*37748cd8SNickeau		{
1049*37748cd8SNickeau			parent::__construct($parent, $invokingState);
1050*37748cd8SNickeau		}
1051*37748cd8SNickeau
1052*37748cd8SNickeau		public function getRuleIndex() : int
1053*37748cd8SNickeau		{
1054*37748cd8SNickeau		    return PageSqlParser::RULE_tableNames;
1055*37748cd8SNickeau	    }
1056*37748cd8SNickeau
1057*37748cd8SNickeau	    public function DATE() : ?TerminalNode
1058*37748cd8SNickeau	    {
1059*37748cd8SNickeau	        return $this->getToken(PageSqlParser::DATE, 0);
1060*37748cd8SNickeau	    }
1061*37748cd8SNickeau
1062*37748cd8SNickeau	    public function DATETIME() : ?TerminalNode
1063*37748cd8SNickeau	    {
1064*37748cd8SNickeau	        return $this->getToken(PageSqlParser::DATETIME, 0);
1065*37748cd8SNickeau	    }
1066*37748cd8SNickeau
1067*37748cd8SNickeau		public function enterRule(ParseTreeListener $listener) : void
1068*37748cd8SNickeau		{
1069*37748cd8SNickeau			if ($listener instanceof PageSqlListener) {
1070*37748cd8SNickeau			    $listener->enterTableNames($this);
1071*37748cd8SNickeau		    }
1072*37748cd8SNickeau		}
1073*37748cd8SNickeau
1074*37748cd8SNickeau		public function exitRule(ParseTreeListener $listener) : void
1075*37748cd8SNickeau		{
1076*37748cd8SNickeau			if ($listener instanceof PageSqlListener) {
1077*37748cd8SNickeau			    $listener->exitTableNames($this);
1078*37748cd8SNickeau		    }
1079*37748cd8SNickeau		}
1080*37748cd8SNickeau
1081*37748cd8SNickeau		public function accept(ParseTreeVisitor $visitor)
1082*37748cd8SNickeau		{
1083*37748cd8SNickeau			if ($visitor instanceof PageSqlVisitor) {
1084*37748cd8SNickeau			    return $visitor->visitTableNames($this);
1085*37748cd8SNickeau		    }
1086*37748cd8SNickeau
1087*37748cd8SNickeau			return $visitor->visitChildren($this);
1088*37748cd8SNickeau		}
1089*37748cd8SNickeau	}
1090*37748cd8SNickeau
1091*37748cd8SNickeau	class SqlNamesContext extends ParserRuleContext
1092*37748cd8SNickeau	{
1093*37748cd8SNickeau		public function __construct(?ParserRuleContext $parent, ?int $invokingState = null)
1094*37748cd8SNickeau		{
1095*37748cd8SNickeau			parent::__construct($parent, $invokingState);
1096*37748cd8SNickeau		}
1097*37748cd8SNickeau
1098*37748cd8SNickeau		public function getRuleIndex() : int
1099*37748cd8SNickeau		{
1100*37748cd8SNickeau		    return PageSqlParser::RULE_sqlNames;
1101*37748cd8SNickeau	    }
1102*37748cd8SNickeau
1103*37748cd8SNickeau	    public function SqlName() : ?TerminalNode
1104*37748cd8SNickeau	    {
1105*37748cd8SNickeau	        return $this->getToken(PageSqlParser::SqlName, 0);
1106*37748cd8SNickeau	    }
1107*37748cd8SNickeau
1108*37748cd8SNickeau	    public function Number() : ?TerminalNode
1109*37748cd8SNickeau	    {
1110*37748cd8SNickeau	        return $this->getToken(PageSqlParser::Number, 0);
1111*37748cd8SNickeau	    }
1112*37748cd8SNickeau
1113*37748cd8SNickeau		public function enterRule(ParseTreeListener $listener) : void
1114*37748cd8SNickeau		{
1115*37748cd8SNickeau			if ($listener instanceof PageSqlListener) {
1116*37748cd8SNickeau			    $listener->enterSqlNames($this);
1117*37748cd8SNickeau		    }
1118*37748cd8SNickeau		}
1119*37748cd8SNickeau
1120*37748cd8SNickeau		public function exitRule(ParseTreeListener $listener) : void
1121*37748cd8SNickeau		{
1122*37748cd8SNickeau			if ($listener instanceof PageSqlListener) {
1123*37748cd8SNickeau			    $listener->exitSqlNames($this);
1124*37748cd8SNickeau		    }
1125*37748cd8SNickeau		}
1126*37748cd8SNickeau
1127*37748cd8SNickeau		public function accept(ParseTreeVisitor $visitor)
1128*37748cd8SNickeau		{
1129*37748cd8SNickeau			if ($visitor instanceof PageSqlVisitor) {
1130*37748cd8SNickeau			    return $visitor->visitSqlNames($this);
1131*37748cd8SNickeau		    }
1132*37748cd8SNickeau
1133*37748cd8SNickeau			return $visitor->visitChildren($this);
1134*37748cd8SNickeau		}
1135*37748cd8SNickeau	}
1136*37748cd8SNickeau
1137*37748cd8SNickeau	class ColumnContext extends ParserRuleContext
1138*37748cd8SNickeau	{
1139*37748cd8SNickeau		public function __construct(?ParserRuleContext $parent, ?int $invokingState = null)
1140*37748cd8SNickeau		{
1141*37748cd8SNickeau			parent::__construct($parent, $invokingState);
1142*37748cd8SNickeau		}
1143*37748cd8SNickeau
1144*37748cd8SNickeau		public function getRuleIndex() : int
1145*37748cd8SNickeau		{
1146*37748cd8SNickeau		    return PageSqlParser::RULE_column;
1147*37748cd8SNickeau	    }
1148*37748cd8SNickeau
1149*37748cd8SNickeau	    /**
1150*37748cd8SNickeau	     * @return array<SqlNamesContext>|SqlNamesContext|null
1151*37748cd8SNickeau	     */
1152*37748cd8SNickeau	    public function sqlNames(?int $index = null)
1153*37748cd8SNickeau	    {
1154*37748cd8SNickeau	    	if ($index === null) {
1155*37748cd8SNickeau	    		return $this->getTypedRuleContexts(SqlNamesContext::class);
1156*37748cd8SNickeau	    	}
1157*37748cd8SNickeau
1158*37748cd8SNickeau	        return $this->getTypedRuleContext(SqlNamesContext::class, $index);
1159*37748cd8SNickeau	    }
1160*37748cd8SNickeau
1161*37748cd8SNickeau	    public function DOT() : ?TerminalNode
1162*37748cd8SNickeau	    {
1163*37748cd8SNickeau	        return $this->getToken(PageSqlParser::DOT, 0);
1164*37748cd8SNickeau	    }
1165*37748cd8SNickeau
1166*37748cd8SNickeau	    public function AS() : ?TerminalNode
1167*37748cd8SNickeau	    {
1168*37748cd8SNickeau	        return $this->getToken(PageSqlParser::AS, 0);
1169*37748cd8SNickeau	    }
1170*37748cd8SNickeau
1171*37748cd8SNickeau	    public function StringLiteral() : ?TerminalNode
1172*37748cd8SNickeau	    {
1173*37748cd8SNickeau	        return $this->getToken(PageSqlParser::StringLiteral, 0);
1174*37748cd8SNickeau	    }
1175*37748cd8SNickeau
1176*37748cd8SNickeau		public function enterRule(ParseTreeListener $listener) : void
1177*37748cd8SNickeau		{
1178*37748cd8SNickeau			if ($listener instanceof PageSqlListener) {
1179*37748cd8SNickeau			    $listener->enterColumn($this);
1180*37748cd8SNickeau		    }
1181*37748cd8SNickeau		}
1182*37748cd8SNickeau
1183*37748cd8SNickeau		public function exitRule(ParseTreeListener $listener) : void
1184*37748cd8SNickeau		{
1185*37748cd8SNickeau			if ($listener instanceof PageSqlListener) {
1186*37748cd8SNickeau			    $listener->exitColumn($this);
1187*37748cd8SNickeau		    }
1188*37748cd8SNickeau		}
1189*37748cd8SNickeau
1190*37748cd8SNickeau		public function accept(ParseTreeVisitor $visitor)
1191*37748cd8SNickeau		{
1192*37748cd8SNickeau			if ($visitor instanceof PageSqlVisitor) {
1193*37748cd8SNickeau			    return $visitor->visitColumn($this);
1194*37748cd8SNickeau		    }
1195*37748cd8SNickeau
1196*37748cd8SNickeau			return $visitor->visitChildren($this);
1197*37748cd8SNickeau		}
1198*37748cd8SNickeau	}
1199*37748cd8SNickeau
1200*37748cd8SNickeau	class PatternContext extends ParserRuleContext
1201*37748cd8SNickeau	{
1202*37748cd8SNickeau		public function __construct(?ParserRuleContext $parent, ?int $invokingState = null)
1203*37748cd8SNickeau		{
1204*37748cd8SNickeau			parent::__construct($parent, $invokingState);
1205*37748cd8SNickeau		}
1206*37748cd8SNickeau
1207*37748cd8SNickeau		public function getRuleIndex() : int
1208*37748cd8SNickeau		{
1209*37748cd8SNickeau		    return PageSqlParser::RULE_pattern;
1210*37748cd8SNickeau	    }
1211*37748cd8SNickeau
1212*37748cd8SNickeau	    public function StringLiteral() : ?TerminalNode
1213*37748cd8SNickeau	    {
1214*37748cd8SNickeau	        return $this->getToken(PageSqlParser::StringLiteral, 0);
1215*37748cd8SNickeau	    }
1216*37748cd8SNickeau
1217*37748cd8SNickeau	    public function NumberLiteral() : ?TerminalNode
1218*37748cd8SNickeau	    {
1219*37748cd8SNickeau	        return $this->getToken(PageSqlParser::NumberLiteral, 0);
1220*37748cd8SNickeau	    }
1221*37748cd8SNickeau
1222*37748cd8SNickeau		public function enterRule(ParseTreeListener $listener) : void
1223*37748cd8SNickeau		{
1224*37748cd8SNickeau			if ($listener instanceof PageSqlListener) {
1225*37748cd8SNickeau			    $listener->enterPattern($this);
1226*37748cd8SNickeau		    }
1227*37748cd8SNickeau		}
1228*37748cd8SNickeau
1229*37748cd8SNickeau		public function exitRule(ParseTreeListener $listener) : void
1230*37748cd8SNickeau		{
1231*37748cd8SNickeau			if ($listener instanceof PageSqlListener) {
1232*37748cd8SNickeau			    $listener->exitPattern($this);
1233*37748cd8SNickeau		    }
1234*37748cd8SNickeau		}
1235*37748cd8SNickeau
1236*37748cd8SNickeau		public function accept(ParseTreeVisitor $visitor)
1237*37748cd8SNickeau		{
1238*37748cd8SNickeau			if ($visitor instanceof PageSqlVisitor) {
1239*37748cd8SNickeau			    return $visitor->visitPattern($this);
1240*37748cd8SNickeau		    }
1241*37748cd8SNickeau
1242*37748cd8SNickeau			return $visitor->visitChildren($this);
1243*37748cd8SNickeau		}
1244*37748cd8SNickeau	}
1245*37748cd8SNickeau
1246*37748cd8SNickeau	class ExpressionContext extends ParserRuleContext
1247*37748cd8SNickeau	{
1248*37748cd8SNickeau		public function __construct(?ParserRuleContext $parent, ?int $invokingState = null)
1249*37748cd8SNickeau		{
1250*37748cd8SNickeau			parent::__construct($parent, $invokingState);
1251*37748cd8SNickeau		}
1252*37748cd8SNickeau
1253*37748cd8SNickeau		public function getRuleIndex() : int
1254*37748cd8SNickeau		{
1255*37748cd8SNickeau		    return PageSqlParser::RULE_expression;
1256*37748cd8SNickeau	    }
1257*37748cd8SNickeau
1258*37748cd8SNickeau	    public function SqlName() : ?TerminalNode
1259*37748cd8SNickeau	    {
1260*37748cd8SNickeau	        return $this->getToken(PageSqlParser::SqlName, 0);
1261*37748cd8SNickeau	    }
1262*37748cd8SNickeau
1263*37748cd8SNickeau	    public function StringLiteral() : ?TerminalNode
1264*37748cd8SNickeau	    {
1265*37748cd8SNickeau	        return $this->getToken(PageSqlParser::StringLiteral, 0);
1266*37748cd8SNickeau	    }
1267*37748cd8SNickeau
1268*37748cd8SNickeau	    public function NumberLiteral() : ?TerminalNode
1269*37748cd8SNickeau	    {
1270*37748cd8SNickeau	        return $this->getToken(PageSqlParser::NumberLiteral, 0);
1271*37748cd8SNickeau	    }
1272*37748cd8SNickeau
1273*37748cd8SNickeau	    public function Number() : ?TerminalNode
1274*37748cd8SNickeau	    {
1275*37748cd8SNickeau	        return $this->getToken(PageSqlParser::Number, 0);
1276*37748cd8SNickeau	    }
1277*37748cd8SNickeau
1278*37748cd8SNickeau	    public function functionNames() : ?FunctionNamesContext
1279*37748cd8SNickeau	    {
1280*37748cd8SNickeau	    	return $this->getTypedRuleContext(FunctionNamesContext::class, 0);
1281*37748cd8SNickeau	    }
1282*37748cd8SNickeau
1283*37748cd8SNickeau	    public function LPAREN() : ?TerminalNode
1284*37748cd8SNickeau	    {
1285*37748cd8SNickeau	        return $this->getToken(PageSqlParser::LPAREN, 0);
1286*37748cd8SNickeau	    }
1287*37748cd8SNickeau
1288*37748cd8SNickeau	    public function RPAREN() : ?TerminalNode
1289*37748cd8SNickeau	    {
1290*37748cd8SNickeau	        return $this->getToken(PageSqlParser::RPAREN, 0);
1291*37748cd8SNickeau	    }
1292*37748cd8SNickeau
1293*37748cd8SNickeau	    /**
1294*37748cd8SNickeau	     * @return array<ExpressionContext>|ExpressionContext|null
1295*37748cd8SNickeau	     */
1296*37748cd8SNickeau	    public function expression(?int $index = null)
1297*37748cd8SNickeau	    {
1298*37748cd8SNickeau	    	if ($index === null) {
1299*37748cd8SNickeau	    		return $this->getTypedRuleContexts(ExpressionContext::class);
1300*37748cd8SNickeau	    	}
1301*37748cd8SNickeau
1302*37748cd8SNickeau	        return $this->getTypedRuleContext(ExpressionContext::class, $index);
1303*37748cd8SNickeau	    }
1304*37748cd8SNickeau
1305*37748cd8SNickeau	    /**
1306*37748cd8SNickeau	     * @return array<TerminalNode>|TerminalNode|null
1307*37748cd8SNickeau	     */
1308*37748cd8SNickeau	    public function COMMA(?int $index = null)
1309*37748cd8SNickeau	    {
1310*37748cd8SNickeau	    	if ($index === null) {
1311*37748cd8SNickeau	    		return $this->getTokens(PageSqlParser::COMMA);
1312*37748cd8SNickeau	    	}
1313*37748cd8SNickeau
1314*37748cd8SNickeau	        return $this->getToken(PageSqlParser::COMMA, $index);
1315*37748cd8SNickeau	    }
1316*37748cd8SNickeau
1317*37748cd8SNickeau		public function enterRule(ParseTreeListener $listener) : void
1318*37748cd8SNickeau		{
1319*37748cd8SNickeau			if ($listener instanceof PageSqlListener) {
1320*37748cd8SNickeau			    $listener->enterExpression($this);
1321*37748cd8SNickeau		    }
1322*37748cd8SNickeau		}
1323*37748cd8SNickeau
1324*37748cd8SNickeau		public function exitRule(ParseTreeListener $listener) : void
1325*37748cd8SNickeau		{
1326*37748cd8SNickeau			if ($listener instanceof PageSqlListener) {
1327*37748cd8SNickeau			    $listener->exitExpression($this);
1328*37748cd8SNickeau		    }
1329*37748cd8SNickeau		}
1330*37748cd8SNickeau
1331*37748cd8SNickeau		public function accept(ParseTreeVisitor $visitor)
1332*37748cd8SNickeau		{
1333*37748cd8SNickeau			if ($visitor instanceof PageSqlVisitor) {
1334*37748cd8SNickeau			    return $visitor->visitExpression($this);
1335*37748cd8SNickeau		    }
1336*37748cd8SNickeau
1337*37748cd8SNickeau			return $visitor->visitChildren($this);
1338*37748cd8SNickeau		}
1339*37748cd8SNickeau	}
1340*37748cd8SNickeau
1341*37748cd8SNickeau	class PredicateContext extends ParserRuleContext
1342*37748cd8SNickeau	{
1343*37748cd8SNickeau		public function __construct(?ParserRuleContext $parent, ?int $invokingState = null)
1344*37748cd8SNickeau		{
1345*37748cd8SNickeau			parent::__construct($parent, $invokingState);
1346*37748cd8SNickeau		}
1347*37748cd8SNickeau
1348*37748cd8SNickeau		public function getRuleIndex() : int
1349*37748cd8SNickeau		{
1350*37748cd8SNickeau		    return PageSqlParser::RULE_predicate;
1351*37748cd8SNickeau	    }
1352*37748cd8SNickeau
1353*37748cd8SNickeau	    public function sqlNames() : ?SqlNamesContext
1354*37748cd8SNickeau	    {
1355*37748cd8SNickeau	    	return $this->getTypedRuleContext(SqlNamesContext::class, 0);
1356*37748cd8SNickeau	    }
1357*37748cd8SNickeau
1358*37748cd8SNickeau	    /**
1359*37748cd8SNickeau	     * @return array<ExpressionContext>|ExpressionContext|null
1360*37748cd8SNickeau	     */
1361*37748cd8SNickeau	    public function expression(?int $index = null)
1362*37748cd8SNickeau	    {
1363*37748cd8SNickeau	    	if ($index === null) {
1364*37748cd8SNickeau	    		return $this->getTypedRuleContexts(ExpressionContext::class);
1365*37748cd8SNickeau	    	}
1366*37748cd8SNickeau
1367*37748cd8SNickeau	        return $this->getTypedRuleContext(ExpressionContext::class, $index);
1368*37748cd8SNickeau	    }
1369*37748cd8SNickeau
1370*37748cd8SNickeau	    public function BETWEEN() : ?TerminalNode
1371*37748cd8SNickeau	    {
1372*37748cd8SNickeau	        return $this->getToken(PageSqlParser::BETWEEN, 0);
1373*37748cd8SNickeau	    }
1374*37748cd8SNickeau
1375*37748cd8SNickeau	    public function AND() : ?TerminalNode
1376*37748cd8SNickeau	    {
1377*37748cd8SNickeau	        return $this->getToken(PageSqlParser::AND, 0);
1378*37748cd8SNickeau	    }
1379*37748cd8SNickeau
1380*37748cd8SNickeau	    public function IN() : ?TerminalNode
1381*37748cd8SNickeau	    {
1382*37748cd8SNickeau	        return $this->getToken(PageSqlParser::IN, 0);
1383*37748cd8SNickeau	    }
1384*37748cd8SNickeau
1385*37748cd8SNickeau	    public function LPAREN() : ?TerminalNode
1386*37748cd8SNickeau	    {
1387*37748cd8SNickeau	        return $this->getToken(PageSqlParser::LPAREN, 0);
1388*37748cd8SNickeau	    }
1389*37748cd8SNickeau
1390*37748cd8SNickeau	    public function RPAREN() : ?TerminalNode
1391*37748cd8SNickeau	    {
1392*37748cd8SNickeau	        return $this->getToken(PageSqlParser::RPAREN, 0);
1393*37748cd8SNickeau	    }
1394*37748cd8SNickeau
1395*37748cd8SNickeau	    public function LESS_THAN() : ?TerminalNode
1396*37748cd8SNickeau	    {
1397*37748cd8SNickeau	        return $this->getToken(PageSqlParser::LESS_THAN, 0);
1398*37748cd8SNickeau	    }
1399*37748cd8SNickeau
1400*37748cd8SNickeau	    public function LESS_THAN_OR_EQUAL() : ?TerminalNode
1401*37748cd8SNickeau	    {
1402*37748cd8SNickeau	        return $this->getToken(PageSqlParser::LESS_THAN_OR_EQUAL, 0);
1403*37748cd8SNickeau	    }
1404*37748cd8SNickeau
1405*37748cd8SNickeau	    public function GREATER_THAN() : ?TerminalNode
1406*37748cd8SNickeau	    {
1407*37748cd8SNickeau	        return $this->getToken(PageSqlParser::GREATER_THAN, 0);
1408*37748cd8SNickeau	    }
1409*37748cd8SNickeau
1410*37748cd8SNickeau	    public function GREATER_THAN_OR_EQUAL() : ?TerminalNode
1411*37748cd8SNickeau	    {
1412*37748cd8SNickeau	        return $this->getToken(PageSqlParser::GREATER_THAN_OR_EQUAL, 0);
1413*37748cd8SNickeau	    }
1414*37748cd8SNickeau
1415*37748cd8SNickeau	    public function NOT_EQUAL() : ?TerminalNode
1416*37748cd8SNickeau	    {
1417*37748cd8SNickeau	        return $this->getToken(PageSqlParser::NOT_EQUAL, 0);
1418*37748cd8SNickeau	    }
1419*37748cd8SNickeau
1420*37748cd8SNickeau	    public function EQUAL() : ?TerminalNode
1421*37748cd8SNickeau	    {
1422*37748cd8SNickeau	        return $this->getToken(PageSqlParser::EQUAL, 0);
1423*37748cd8SNickeau	    }
1424*37748cd8SNickeau
1425*37748cd8SNickeau	    public function LIKE() : ?TerminalNode
1426*37748cd8SNickeau	    {
1427*37748cd8SNickeau	        return $this->getToken(PageSqlParser::LIKE, 0);
1428*37748cd8SNickeau	    }
1429*37748cd8SNickeau
1430*37748cd8SNickeau	    public function pattern() : ?PatternContext
1431*37748cd8SNickeau	    {
1432*37748cd8SNickeau	    	return $this->getTypedRuleContext(PatternContext::class, 0);
1433*37748cd8SNickeau	    }
1434*37748cd8SNickeau
1435*37748cd8SNickeau	    public function GLOB() : ?TerminalNode
1436*37748cd8SNickeau	    {
1437*37748cd8SNickeau	        return $this->getToken(PageSqlParser::GLOB, 0);
1438*37748cd8SNickeau	    }
1439*37748cd8SNickeau
1440*37748cd8SNickeau	    public function NOT() : ?TerminalNode
1441*37748cd8SNickeau	    {
1442*37748cd8SNickeau	        return $this->getToken(PageSqlParser::NOT, 0);
1443*37748cd8SNickeau	    }
1444*37748cd8SNickeau
1445*37748cd8SNickeau	    public function ESCAPE() : ?TerminalNode
1446*37748cd8SNickeau	    {
1447*37748cd8SNickeau	        return $this->getToken(PageSqlParser::ESCAPE, 0);
1448*37748cd8SNickeau	    }
1449*37748cd8SNickeau
1450*37748cd8SNickeau	    public function StringLiteral() : ?TerminalNode
1451*37748cd8SNickeau	    {
1452*37748cd8SNickeau	        return $this->getToken(PageSqlParser::StringLiteral, 0);
1453*37748cd8SNickeau	    }
1454*37748cd8SNickeau
1455*37748cd8SNickeau	    /**
1456*37748cd8SNickeau	     * @return array<TerminalNode>|TerminalNode|null
1457*37748cd8SNickeau	     */
1458*37748cd8SNickeau	    public function COMMA(?int $index = null)
1459*37748cd8SNickeau	    {
1460*37748cd8SNickeau	    	if ($index === null) {
1461*37748cd8SNickeau	    		return $this->getTokens(PageSqlParser::COMMA);
1462*37748cd8SNickeau	    	}
1463*37748cd8SNickeau
1464*37748cd8SNickeau	        return $this->getToken(PageSqlParser::COMMA, $index);
1465*37748cd8SNickeau	    }
1466*37748cd8SNickeau
1467*37748cd8SNickeau		public function enterRule(ParseTreeListener $listener) : void
1468*37748cd8SNickeau		{
1469*37748cd8SNickeau			if ($listener instanceof PageSqlListener) {
1470*37748cd8SNickeau			    $listener->enterPredicate($this);
1471*37748cd8SNickeau		    }
1472*37748cd8SNickeau		}
1473*37748cd8SNickeau
1474*37748cd8SNickeau		public function exitRule(ParseTreeListener $listener) : void
1475*37748cd8SNickeau		{
1476*37748cd8SNickeau			if ($listener instanceof PageSqlListener) {
1477*37748cd8SNickeau			    $listener->exitPredicate($this);
1478*37748cd8SNickeau		    }
1479*37748cd8SNickeau		}
1480*37748cd8SNickeau
1481*37748cd8SNickeau		public function accept(ParseTreeVisitor $visitor)
1482*37748cd8SNickeau		{
1483*37748cd8SNickeau			if ($visitor instanceof PageSqlVisitor) {
1484*37748cd8SNickeau			    return $visitor->visitPredicate($this);
1485*37748cd8SNickeau		    }
1486*37748cd8SNickeau
1487*37748cd8SNickeau			return $visitor->visitChildren($this);
1488*37748cd8SNickeau		}
1489*37748cd8SNickeau	}
1490*37748cd8SNickeau
1491*37748cd8SNickeau	class ColumnsContext extends ParserRuleContext
1492*37748cd8SNickeau	{
1493*37748cd8SNickeau		public function __construct(?ParserRuleContext $parent, ?int $invokingState = null)
1494*37748cd8SNickeau		{
1495*37748cd8SNickeau			parent::__construct($parent, $invokingState);
1496*37748cd8SNickeau		}
1497*37748cd8SNickeau
1498*37748cd8SNickeau		public function getRuleIndex() : int
1499*37748cd8SNickeau		{
1500*37748cd8SNickeau		    return PageSqlParser::RULE_columns;
1501*37748cd8SNickeau	    }
1502*37748cd8SNickeau
1503*37748cd8SNickeau	    /**
1504*37748cd8SNickeau	     * @return array<ColumnContext>|ColumnContext|null
1505*37748cd8SNickeau	     */
1506*37748cd8SNickeau	    public function column(?int $index = null)
1507*37748cd8SNickeau	    {
1508*37748cd8SNickeau	    	if ($index === null) {
1509*37748cd8SNickeau	    		return $this->getTypedRuleContexts(ColumnContext::class);
1510*37748cd8SNickeau	    	}
1511*37748cd8SNickeau
1512*37748cd8SNickeau	        return $this->getTypedRuleContext(ColumnContext::class, $index);
1513*37748cd8SNickeau	    }
1514*37748cd8SNickeau
1515*37748cd8SNickeau	    /**
1516*37748cd8SNickeau	     * @return array<TerminalNode>|TerminalNode|null
1517*37748cd8SNickeau	     */
1518*37748cd8SNickeau	    public function COMMA(?int $index = null)
1519*37748cd8SNickeau	    {
1520*37748cd8SNickeau	    	if ($index === null) {
1521*37748cd8SNickeau	    		return $this->getTokens(PageSqlParser::COMMA);
1522*37748cd8SNickeau	    	}
1523*37748cd8SNickeau
1524*37748cd8SNickeau	        return $this->getToken(PageSqlParser::COMMA, $index);
1525*37748cd8SNickeau	    }
1526*37748cd8SNickeau
1527*37748cd8SNickeau		public function enterRule(ParseTreeListener $listener) : void
1528*37748cd8SNickeau		{
1529*37748cd8SNickeau			if ($listener instanceof PageSqlListener) {
1530*37748cd8SNickeau			    $listener->enterColumns($this);
1531*37748cd8SNickeau		    }
1532*37748cd8SNickeau		}
1533*37748cd8SNickeau
1534*37748cd8SNickeau		public function exitRule(ParseTreeListener $listener) : void
1535*37748cd8SNickeau		{
1536*37748cd8SNickeau			if ($listener instanceof PageSqlListener) {
1537*37748cd8SNickeau			    $listener->exitColumns($this);
1538*37748cd8SNickeau		    }
1539*37748cd8SNickeau		}
1540*37748cd8SNickeau
1541*37748cd8SNickeau		public function accept(ParseTreeVisitor $visitor)
1542*37748cd8SNickeau		{
1543*37748cd8SNickeau			if ($visitor instanceof PageSqlVisitor) {
1544*37748cd8SNickeau			    return $visitor->visitColumns($this);
1545*37748cd8SNickeau		    }
1546*37748cd8SNickeau
1547*37748cd8SNickeau			return $visitor->visitChildren($this);
1548*37748cd8SNickeau		}
1549*37748cd8SNickeau	}
1550*37748cd8SNickeau
1551*37748cd8SNickeau	class PredicatesContext extends ParserRuleContext
1552*37748cd8SNickeau	{
1553*37748cd8SNickeau		public function __construct(?ParserRuleContext $parent, ?int $invokingState = null)
1554*37748cd8SNickeau		{
1555*37748cd8SNickeau			parent::__construct($parent, $invokingState);
1556*37748cd8SNickeau		}
1557*37748cd8SNickeau
1558*37748cd8SNickeau		public function getRuleIndex() : int
1559*37748cd8SNickeau		{
1560*37748cd8SNickeau		    return PageSqlParser::RULE_predicates;
1561*37748cd8SNickeau	    }
1562*37748cd8SNickeau
1563*37748cd8SNickeau	    public function WHERE() : ?TerminalNode
1564*37748cd8SNickeau	    {
1565*37748cd8SNickeau	        return $this->getToken(PageSqlParser::WHERE, 0);
1566*37748cd8SNickeau	    }
1567*37748cd8SNickeau
1568*37748cd8SNickeau	    /**
1569*37748cd8SNickeau	     * @return array<PredicateContext>|PredicateContext|null
1570*37748cd8SNickeau	     */
1571*37748cd8SNickeau	    public function predicate(?int $index = null)
1572*37748cd8SNickeau	    {
1573*37748cd8SNickeau	    	if ($index === null) {
1574*37748cd8SNickeau	    		return $this->getTypedRuleContexts(PredicateContext::class);
1575*37748cd8SNickeau	    	}
1576*37748cd8SNickeau
1577*37748cd8SNickeau	        return $this->getTypedRuleContext(PredicateContext::class, $index);
1578*37748cd8SNickeau	    }
1579*37748cd8SNickeau
1580*37748cd8SNickeau	    /**
1581*37748cd8SNickeau	     * @return array<TerminalNode>|TerminalNode|null
1582*37748cd8SNickeau	     */
1583*37748cd8SNickeau	    public function AND(?int $index = null)
1584*37748cd8SNickeau	    {
1585*37748cd8SNickeau	    	if ($index === null) {
1586*37748cd8SNickeau	    		return $this->getTokens(PageSqlParser::AND);
1587*37748cd8SNickeau	    	}
1588*37748cd8SNickeau
1589*37748cd8SNickeau	        return $this->getToken(PageSqlParser::AND, $index);
1590*37748cd8SNickeau	    }
1591*37748cd8SNickeau
1592*37748cd8SNickeau	    /**
1593*37748cd8SNickeau	     * @return array<TerminalNode>|TerminalNode|null
1594*37748cd8SNickeau	     */
1595*37748cd8SNickeau	    public function OR(?int $index = null)
1596*37748cd8SNickeau	    {
1597*37748cd8SNickeau	    	if ($index === null) {
1598*37748cd8SNickeau	    		return $this->getTokens(PageSqlParser::OR);
1599*37748cd8SNickeau	    	}
1600*37748cd8SNickeau
1601*37748cd8SNickeau	        return $this->getToken(PageSqlParser::OR, $index);
1602*37748cd8SNickeau	    }
1603*37748cd8SNickeau
1604*37748cd8SNickeau		public function enterRule(ParseTreeListener $listener) : void
1605*37748cd8SNickeau		{
1606*37748cd8SNickeau			if ($listener instanceof PageSqlListener) {
1607*37748cd8SNickeau			    $listener->enterPredicates($this);
1608*37748cd8SNickeau		    }
1609*37748cd8SNickeau		}
1610*37748cd8SNickeau
1611*37748cd8SNickeau		public function exitRule(ParseTreeListener $listener) : void
1612*37748cd8SNickeau		{
1613*37748cd8SNickeau			if ($listener instanceof PageSqlListener) {
1614*37748cd8SNickeau			    $listener->exitPredicates($this);
1615*37748cd8SNickeau		    }
1616*37748cd8SNickeau		}
1617*37748cd8SNickeau
1618*37748cd8SNickeau		public function accept(ParseTreeVisitor $visitor)
1619*37748cd8SNickeau		{
1620*37748cd8SNickeau			if ($visitor instanceof PageSqlVisitor) {
1621*37748cd8SNickeau			    return $visitor->visitPredicates($this);
1622*37748cd8SNickeau		    }
1623*37748cd8SNickeau
1624*37748cd8SNickeau			return $visitor->visitChildren($this);
1625*37748cd8SNickeau		}
1626*37748cd8SNickeau	}
1627*37748cd8SNickeau
1628*37748cd8SNickeau	class TablesContext extends ParserRuleContext
1629*37748cd8SNickeau	{
1630*37748cd8SNickeau		public function __construct(?ParserRuleContext $parent, ?int $invokingState = null)
1631*37748cd8SNickeau		{
1632*37748cd8SNickeau			parent::__construct($parent, $invokingState);
1633*37748cd8SNickeau		}
1634*37748cd8SNickeau
1635*37748cd8SNickeau		public function getRuleIndex() : int
1636*37748cd8SNickeau		{
1637*37748cd8SNickeau		    return PageSqlParser::RULE_tables;
1638*37748cd8SNickeau	    }
1639*37748cd8SNickeau
1640*37748cd8SNickeau	    public function FROM() : ?TerminalNode
1641*37748cd8SNickeau	    {
1642*37748cd8SNickeau	        return $this->getToken(PageSqlParser::FROM, 0);
1643*37748cd8SNickeau	    }
1644*37748cd8SNickeau
1645*37748cd8SNickeau	    public function tableNames() : ?TableNamesContext
1646*37748cd8SNickeau	    {
1647*37748cd8SNickeau	    	return $this->getTypedRuleContext(TableNamesContext::class, 0);
1648*37748cd8SNickeau	    }
1649*37748cd8SNickeau
1650*37748cd8SNickeau		public function enterRule(ParseTreeListener $listener) : void
1651*37748cd8SNickeau		{
1652*37748cd8SNickeau			if ($listener instanceof PageSqlListener) {
1653*37748cd8SNickeau			    $listener->enterTables($this);
1654*37748cd8SNickeau		    }
1655*37748cd8SNickeau		}
1656*37748cd8SNickeau
1657*37748cd8SNickeau		public function exitRule(ParseTreeListener $listener) : void
1658*37748cd8SNickeau		{
1659*37748cd8SNickeau			if ($listener instanceof PageSqlListener) {
1660*37748cd8SNickeau			    $listener->exitTables($this);
1661*37748cd8SNickeau		    }
1662*37748cd8SNickeau		}
1663*37748cd8SNickeau
1664*37748cd8SNickeau		public function accept(ParseTreeVisitor $visitor)
1665*37748cd8SNickeau		{
1666*37748cd8SNickeau			if ($visitor instanceof PageSqlVisitor) {
1667*37748cd8SNickeau			    return $visitor->visitTables($this);
1668*37748cd8SNickeau		    }
1669*37748cd8SNickeau
1670*37748cd8SNickeau			return $visitor->visitChildren($this);
1671*37748cd8SNickeau		}
1672*37748cd8SNickeau	}
1673*37748cd8SNickeau
1674*37748cd8SNickeau	class LimitContext extends ParserRuleContext
1675*37748cd8SNickeau	{
1676*37748cd8SNickeau		public function __construct(?ParserRuleContext $parent, ?int $invokingState = null)
1677*37748cd8SNickeau		{
1678*37748cd8SNickeau			parent::__construct($parent, $invokingState);
1679*37748cd8SNickeau		}
1680*37748cd8SNickeau
1681*37748cd8SNickeau		public function getRuleIndex() : int
1682*37748cd8SNickeau		{
1683*37748cd8SNickeau		    return PageSqlParser::RULE_limit;
1684*37748cd8SNickeau	    }
1685*37748cd8SNickeau
1686*37748cd8SNickeau	    public function LIMIT() : ?TerminalNode
1687*37748cd8SNickeau	    {
1688*37748cd8SNickeau	        return $this->getToken(PageSqlParser::LIMIT, 0);
1689*37748cd8SNickeau	    }
1690*37748cd8SNickeau
1691*37748cd8SNickeau	    public function Number() : ?TerminalNode
1692*37748cd8SNickeau	    {
1693*37748cd8SNickeau	        return $this->getToken(PageSqlParser::Number, 0);
1694*37748cd8SNickeau	    }
1695*37748cd8SNickeau
1696*37748cd8SNickeau		public function enterRule(ParseTreeListener $listener) : void
1697*37748cd8SNickeau		{
1698*37748cd8SNickeau			if ($listener instanceof PageSqlListener) {
1699*37748cd8SNickeau			    $listener->enterLimit($this);
1700*37748cd8SNickeau		    }
1701*37748cd8SNickeau		}
1702*37748cd8SNickeau
1703*37748cd8SNickeau		public function exitRule(ParseTreeListener $listener) : void
1704*37748cd8SNickeau		{
1705*37748cd8SNickeau			if ($listener instanceof PageSqlListener) {
1706*37748cd8SNickeau			    $listener->exitLimit($this);
1707*37748cd8SNickeau		    }
1708*37748cd8SNickeau		}
1709*37748cd8SNickeau
1710*37748cd8SNickeau		public function accept(ParseTreeVisitor $visitor)
1711*37748cd8SNickeau		{
1712*37748cd8SNickeau			if ($visitor instanceof PageSqlVisitor) {
1713*37748cd8SNickeau			    return $visitor->visitLimit($this);
1714*37748cd8SNickeau		    }
1715*37748cd8SNickeau
1716*37748cd8SNickeau			return $visitor->visitChildren($this);
1717*37748cd8SNickeau		}
1718*37748cd8SNickeau	}
1719*37748cd8SNickeau
1720*37748cd8SNickeau	class OrderBysContext extends ParserRuleContext
1721*37748cd8SNickeau	{
1722*37748cd8SNickeau		public function __construct(?ParserRuleContext $parent, ?int $invokingState = null)
1723*37748cd8SNickeau		{
1724*37748cd8SNickeau			parent::__construct($parent, $invokingState);
1725*37748cd8SNickeau		}
1726*37748cd8SNickeau
1727*37748cd8SNickeau		public function getRuleIndex() : int
1728*37748cd8SNickeau		{
1729*37748cd8SNickeau		    return PageSqlParser::RULE_orderBys;
1730*37748cd8SNickeau	    }
1731*37748cd8SNickeau
1732*37748cd8SNickeau	    public function ORDER() : ?TerminalNode
1733*37748cd8SNickeau	    {
1734*37748cd8SNickeau	        return $this->getToken(PageSqlParser::ORDER, 0);
1735*37748cd8SNickeau	    }
1736*37748cd8SNickeau
1737*37748cd8SNickeau	    public function BY() : ?TerminalNode
1738*37748cd8SNickeau	    {
1739*37748cd8SNickeau	        return $this->getToken(PageSqlParser::BY, 0);
1740*37748cd8SNickeau	    }
1741*37748cd8SNickeau
1742*37748cd8SNickeau	    /**
1743*37748cd8SNickeau	     * @return array<OrderByDefContext>|OrderByDefContext|null
1744*37748cd8SNickeau	     */
1745*37748cd8SNickeau	    public function orderByDef(?int $index = null)
1746*37748cd8SNickeau	    {
1747*37748cd8SNickeau	    	if ($index === null) {
1748*37748cd8SNickeau	    		return $this->getTypedRuleContexts(OrderByDefContext::class);
1749*37748cd8SNickeau	    	}
1750*37748cd8SNickeau
1751*37748cd8SNickeau	        return $this->getTypedRuleContext(OrderByDefContext::class, $index);
1752*37748cd8SNickeau	    }
1753*37748cd8SNickeau
1754*37748cd8SNickeau	    /**
1755*37748cd8SNickeau	     * @return array<TerminalNode>|TerminalNode|null
1756*37748cd8SNickeau	     */
1757*37748cd8SNickeau	    public function COMMA(?int $index = null)
1758*37748cd8SNickeau	    {
1759*37748cd8SNickeau	    	if ($index === null) {
1760*37748cd8SNickeau	    		return $this->getTokens(PageSqlParser::COMMA);
1761*37748cd8SNickeau	    	}
1762*37748cd8SNickeau
1763*37748cd8SNickeau	        return $this->getToken(PageSqlParser::COMMA, $index);
1764*37748cd8SNickeau	    }
1765*37748cd8SNickeau
1766*37748cd8SNickeau		public function enterRule(ParseTreeListener $listener) : void
1767*37748cd8SNickeau		{
1768*37748cd8SNickeau			if ($listener instanceof PageSqlListener) {
1769*37748cd8SNickeau			    $listener->enterOrderBys($this);
1770*37748cd8SNickeau		    }
1771*37748cd8SNickeau		}
1772*37748cd8SNickeau
1773*37748cd8SNickeau		public function exitRule(ParseTreeListener $listener) : void
1774*37748cd8SNickeau		{
1775*37748cd8SNickeau			if ($listener instanceof PageSqlListener) {
1776*37748cd8SNickeau			    $listener->exitOrderBys($this);
1777*37748cd8SNickeau		    }
1778*37748cd8SNickeau		}
1779*37748cd8SNickeau
1780*37748cd8SNickeau		public function accept(ParseTreeVisitor $visitor)
1781*37748cd8SNickeau		{
1782*37748cd8SNickeau			if ($visitor instanceof PageSqlVisitor) {
1783*37748cd8SNickeau			    return $visitor->visitOrderBys($this);
1784*37748cd8SNickeau		    }
1785*37748cd8SNickeau
1786*37748cd8SNickeau			return $visitor->visitChildren($this);
1787*37748cd8SNickeau		}
1788*37748cd8SNickeau	}
1789*37748cd8SNickeau
1790*37748cd8SNickeau	class OrderByDefContext extends ParserRuleContext
1791*37748cd8SNickeau	{
1792*37748cd8SNickeau		public function __construct(?ParserRuleContext $parent, ?int $invokingState = null)
1793*37748cd8SNickeau		{
1794*37748cd8SNickeau			parent::__construct($parent, $invokingState);
1795*37748cd8SNickeau		}
1796*37748cd8SNickeau
1797*37748cd8SNickeau		public function getRuleIndex() : int
1798*37748cd8SNickeau		{
1799*37748cd8SNickeau		    return PageSqlParser::RULE_orderByDef;
1800*37748cd8SNickeau	    }
1801*37748cd8SNickeau
1802*37748cd8SNickeau	    public function SqlName() : ?TerminalNode
1803*37748cd8SNickeau	    {
1804*37748cd8SNickeau	        return $this->getToken(PageSqlParser::SqlName, 0);
1805*37748cd8SNickeau	    }
1806*37748cd8SNickeau
1807*37748cd8SNickeau	    public function ASC() : ?TerminalNode
1808*37748cd8SNickeau	    {
1809*37748cd8SNickeau	        return $this->getToken(PageSqlParser::ASC, 0);
1810*37748cd8SNickeau	    }
1811*37748cd8SNickeau
1812*37748cd8SNickeau	    public function DESC() : ?TerminalNode
1813*37748cd8SNickeau	    {
1814*37748cd8SNickeau	        return $this->getToken(PageSqlParser::DESC, 0);
1815*37748cd8SNickeau	    }
1816*37748cd8SNickeau
1817*37748cd8SNickeau		public function enterRule(ParseTreeListener $listener) : void
1818*37748cd8SNickeau		{
1819*37748cd8SNickeau			if ($listener instanceof PageSqlListener) {
1820*37748cd8SNickeau			    $listener->enterOrderByDef($this);
1821*37748cd8SNickeau		    }
1822*37748cd8SNickeau		}
1823*37748cd8SNickeau
1824*37748cd8SNickeau		public function exitRule(ParseTreeListener $listener) : void
1825*37748cd8SNickeau		{
1826*37748cd8SNickeau			if ($listener instanceof PageSqlListener) {
1827*37748cd8SNickeau			    $listener->exitOrderByDef($this);
1828*37748cd8SNickeau		    }
1829*37748cd8SNickeau		}
1830*37748cd8SNickeau
1831*37748cd8SNickeau		public function accept(ParseTreeVisitor $visitor)
1832*37748cd8SNickeau		{
1833*37748cd8SNickeau			if ($visitor instanceof PageSqlVisitor) {
1834*37748cd8SNickeau			    return $visitor->visitOrderByDef($this);
1835*37748cd8SNickeau		    }
1836*37748cd8SNickeau
1837*37748cd8SNickeau			return $visitor->visitChildren($this);
1838*37748cd8SNickeau		}
1839*37748cd8SNickeau	}
1840*37748cd8SNickeau
1841*37748cd8SNickeau	class PageSqlContext extends ParserRuleContext
1842*37748cd8SNickeau	{
1843*37748cd8SNickeau		public function __construct(?ParserRuleContext $parent, ?int $invokingState = null)
1844*37748cd8SNickeau		{
1845*37748cd8SNickeau			parent::__construct($parent, $invokingState);
1846*37748cd8SNickeau		}
1847*37748cd8SNickeau
1848*37748cd8SNickeau		public function getRuleIndex() : int
1849*37748cd8SNickeau		{
1850*37748cd8SNickeau		    return PageSqlParser::RULE_pageSql;
1851*37748cd8SNickeau	    }
1852*37748cd8SNickeau
1853*37748cd8SNickeau	    public function SELECT() : ?TerminalNode
1854*37748cd8SNickeau	    {
1855*37748cd8SNickeau	        return $this->getToken(PageSqlParser::SELECT, 0);
1856*37748cd8SNickeau	    }
1857*37748cd8SNickeau
1858*37748cd8SNickeau	    public function columns() : ?ColumnsContext
1859*37748cd8SNickeau	    {
1860*37748cd8SNickeau	    	return $this->getTypedRuleContext(ColumnsContext::class, 0);
1861*37748cd8SNickeau	    }
1862*37748cd8SNickeau
1863*37748cd8SNickeau	    public function RANDOM() : ?TerminalNode
1864*37748cd8SNickeau	    {
1865*37748cd8SNickeau	        return $this->getToken(PageSqlParser::RANDOM, 0);
1866*37748cd8SNickeau	    }
1867*37748cd8SNickeau
1868*37748cd8SNickeau	    public function tables() : ?TablesContext
1869*37748cd8SNickeau	    {
1870*37748cd8SNickeau	    	return $this->getTypedRuleContext(TablesContext::class, 0);
1871*37748cd8SNickeau	    }
1872*37748cd8SNickeau
1873*37748cd8SNickeau	    public function predicates() : ?PredicatesContext
1874*37748cd8SNickeau	    {
1875*37748cd8SNickeau	    	return $this->getTypedRuleContext(PredicatesContext::class, 0);
1876*37748cd8SNickeau	    }
1877*37748cd8SNickeau
1878*37748cd8SNickeau	    public function orderBys() : ?OrderBysContext
1879*37748cd8SNickeau	    {
1880*37748cd8SNickeau	    	return $this->getTypedRuleContext(OrderBysContext::class, 0);
1881*37748cd8SNickeau	    }
1882*37748cd8SNickeau
1883*37748cd8SNickeau	    public function limit() : ?LimitContext
1884*37748cd8SNickeau	    {
1885*37748cd8SNickeau	    	return $this->getTypedRuleContext(LimitContext::class, 0);
1886*37748cd8SNickeau	    }
1887*37748cd8SNickeau
1888*37748cd8SNickeau		public function enterRule(ParseTreeListener $listener) : void
1889*37748cd8SNickeau		{
1890*37748cd8SNickeau			if ($listener instanceof PageSqlListener) {
1891*37748cd8SNickeau			    $listener->enterPageSql($this);
1892*37748cd8SNickeau		    }
1893*37748cd8SNickeau		}
1894*37748cd8SNickeau
1895*37748cd8SNickeau		public function exitRule(ParseTreeListener $listener) : void
1896*37748cd8SNickeau		{
1897*37748cd8SNickeau			if ($listener instanceof PageSqlListener) {
1898*37748cd8SNickeau			    $listener->exitPageSql($this);
1899*37748cd8SNickeau		    }
1900*37748cd8SNickeau		}
1901*37748cd8SNickeau
1902*37748cd8SNickeau		public function accept(ParseTreeVisitor $visitor)
1903*37748cd8SNickeau		{
1904*37748cd8SNickeau			if ($visitor instanceof PageSqlVisitor) {
1905*37748cd8SNickeau			    return $visitor->visitPageSql($this);
1906*37748cd8SNickeau		    }
1907*37748cd8SNickeau
1908*37748cd8SNickeau			return $visitor->visitChildren($this);
1909*37748cd8SNickeau		}
1910*37748cd8SNickeau	}
1911*37748cd8SNickeau}