blob: ebe79262d75d0693fd1ef47c9e3707d881093563 [file] [log] [blame]
Yingyi Bu391f09e2015-10-29 13:49:39 -07001<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
2<HTML>
3<HEAD>
4<TITLE>BNF for SQLPP.jj</TITLE>
5</HEAD>
6<BODY>
7<H1 ALIGN=CENTER>BNF for SQLPP.jj</H1>
8<H2 ALIGN=CENTER>TOKENS</H2>
9<TABLE>
10 <!-- Token -->
11 <TR>
12 <TD>
13 <PRE>
14&lt;DEFAULT,IN_DBL_BRACE&gt; TOKEN [IGNORE_CASE] : {
15&lt;ALL: "all"&gt;
16| &lt;AND: "and"&gt;
17| &lt;APPLY: "apply"&gt;
18| &lt;AS: "as"&gt;
19| &lt;ASC: "asc"&gt;
20| &lt;AT: "at"&gt;
21| &lt;AUTOGENERATED: "autogenerated"&gt;
22| &lt;BTREE: "btree"&gt;
23| &lt;BY: "by"&gt;
24| &lt;CASE: "case"&gt;
25| &lt;CLOSED: "closed"&gt;
26| &lt;CREATE: "create"&gt;
27| &lt;COMPACTION: "compaction"&gt;
28| &lt;COMPACT: "compact"&gt;
29| &lt;CONNECT: "connect"&gt;
30| &lt;CORRELATE: "correlate"&gt;
31| &lt;DATASET: "table"&gt;
32| &lt;DATAVERSE: "database"&gt;
33| &lt;DECLARE: "declare"&gt;
34| &lt;DEFINITION: "definition"&gt;
35| &lt;DELETE: "delete"&gt;
36| &lt;DESC: "desc"&gt;
37| &lt;DISCONNECT: "disconnect"&gt;
38| &lt;DISTINCT: "distinct"&gt;
39| &lt;DROP: "drop"&gt;
40| &lt;ELEMENT: "element"&gt;
41| &lt;ELSE: "else"&gt;
42| &lt;ENFORCED: "enforced"&gt;
43| &lt;EVERY: "every"&gt;
44| &lt;EXCEPT: "except"&gt;
45| &lt;EXISTS: "exists"&gt;
46| &lt;EXTERNAL: "external"&gt;
47| &lt;FEED: "feed"&gt;
48| &lt;FILTER: "filter"&gt;
49| &lt;FLATTEN: "flatten"&gt;
50| &lt;FOR: "for"&gt;
51| &lt;FORMAT: "format"&gt;
52| &lt;FROM: "from"&gt;
53| &lt;FULL: "full"&gt;
54| &lt;FUNCTION: "function"&gt;
55| &lt;GROUP: "group"&gt;
56| &lt;HAVING: "having"&gt;
57| &lt;HINTS: "hints"&gt;
58| &lt;IF: "if"&gt;
59| &lt;INTO: "into"&gt;
60| &lt;IN: "in"&gt;
61| &lt;INDEX: "index"&gt;
62| &lt;INGESTION: "ingestion"&gt;
63| &lt;INNER: "inner"&gt;
64| &lt;INSERT: "insert"&gt;
65| &lt;INTERNAL: "internal"&gt;
66| &lt;INTERSECT: "intersect"&gt;
67| &lt;JOIN: "join"&gt;
68| &lt;KEYWORD: "keyword"&gt;
69| &lt;KEY: "key"&gt;
70| &lt;LEFT: "left"&gt;
71| &lt;LETTING: "letting"&gt;
72| &lt;LET: "let"&gt;
73| &lt;LIMIT: "limit"&gt;
74| &lt;LOAD: "load"&gt;
75| &lt;NEST: "nest"&gt;
76| &lt;NODEGROUP: "nodegroup"&gt;
77| &lt;NGRAM: "ngram"&gt;
78| &lt;OFFSET: "offset"&gt;
79| &lt;ON: "on"&gt;
80| &lt;OPEN: "open"&gt;
81| &lt;OR: "or"&gt;
82| &lt;ORDER: "order"&gt;
83| &lt;OUTER: "outer"&gt;
84| &lt;OUTPUT: "output"&gt;
85| &lt;PATH: "path"&gt;
86| &lt;POLICY: "policy"&gt;
87| &lt;PRESORTED: "pre-sorted"&gt;
88| &lt;PRIMARY: "primary"&gt;
89| &lt;RAW: "raw"&gt;
90| &lt;REFRESH: "refresh"&gt;
91| &lt;RETURN: "return"&gt;
92| &lt;RTREE: "rtree"&gt;
93| &lt;RUN: "run"&gt;
94| &lt;SATISFIES: "satisfies"&gt;
95| &lt;SECONDARY: "secondary"&gt;
96| &lt;SELECT: "select"&gt;
97| &lt;SET: "set"&gt;
98| &lt;SOME: "some"&gt;
99| &lt;TEMPORARY: "temporary"&gt;
100| &lt;THEN: "then"&gt;
101| &lt;TYPE: "type"&gt;
102| &lt;TO: "to"&gt;
103| &lt;UNION: "union"&gt;
104| &lt;UNNEST: "unnest"&gt;
105| &lt;VALUE: "value"&gt;
106| &lt;WHEN: "when"&gt;
107| &lt;WHERE: "where"&gt;
108| &lt;WITH: "with"&gt;
109| &lt;WRITE: "write"&gt;
110| &lt;UPDATE: "update"&gt;
111| &lt;USE: "use"&gt;
112| &lt;USING: "using"&gt;
113}
114
115 </PRE>
116 </TD>
117 </TR>
118 <!-- Token -->
119 <TR>
120 <TD>
121 <PRE>
122&lt;DEFAULT,IN_DBL_BRACE&gt; TOKEN : {
123&lt;CARET: "^"&gt;
124| &lt;DIV: "/"&gt;
125| &lt;IDIV: "idiv"&gt;
126| &lt;MINUS: "-"&gt;
127| &lt;MOD: "%"&gt;
128| &lt;MUL: "*"&gt;
129| &lt;PLUS: "+"&gt;
130| &lt;LEFTPAREN: "("&gt;
131| &lt;RIGHTPAREN: ")"&gt;
132| &lt;LEFTBRACKET: "["&gt;
133| &lt;RIGHTBRACKET: "]"&gt;
134| &lt;ATT: "@"&gt;
135| &lt;COLON: ":"&gt;
136| &lt;COMMA: ","&gt;
137| &lt;DOT: "."&gt;
138| &lt;QUES: "?"&gt;
139| &lt;SEMICOLON: ";"&gt;
140| &lt;SHARP: "#"&gt;
141| &lt;LT: "&lt;"&gt;
142| &lt;GT: "&gt;"&gt;
143| &lt;LE: "&lt;="&gt;
144| &lt;GE: "&gt;="&gt;
145| &lt;EQ: "="&gt;
146| &lt;NE: "!="&gt;
147| &lt;SIMILAR: "~="&gt;
148}
149
150 </PRE>
151 </TD>
152 </TR>
153 <!-- Token -->
154 <TR>
155 <TD>
156 <PRE>
157&lt;DEFAULT,IN_DBL_BRACE&gt; TOKEN : {
158&lt;LEFTBRACE: "{"&gt; : DEFAULT
159}
160
161 </PRE>
162 </TD>
163 </TR>
164 <!-- Token -->
165 <TR>
166 <TD>
167 <PRE>
168&lt;DEFAULT&gt; TOKEN : {
169&lt;RIGHTBRACE: "}"&gt; : {
170}
171
172 </PRE>
173 </TD>
174 </TR>
175 <!-- Token -->
176 <TR>
177 <TD>
178 <PRE>
179&lt;DEFAULT,IN_DBL_BRACE&gt; TOKEN : {
180&lt;LEFTDBLBRACE: "{{"&gt; : IN_DBL_BRACE
181}
182
183 </PRE>
184 </TD>
185 </TR>
186 <!-- Token -->
187 <TR>
188 <TD>
189 <PRE>
190&lt;IN_DBL_BRACE&gt; TOKEN : {
191&lt;RIGHTDBLBRACE: "}}"&gt; : {
192}
193
194 </PRE>
195 </TD>
196 </TR>
197 <!-- Token -->
198 <TR>
199 <TD>
200 <PRE>
201&lt;DEFAULT,IN_DBL_BRACE&gt; TOKEN : {
202&lt;INTEGER_LITERAL: (&lt;DIGIT&gt;)+&gt;
203}
204
205 </PRE>
206 </TD>
207 </TR>
208 <!-- Token -->
209 <TR>
210 <TD>
211 <PRE>
212&lt;DEFAULT,IN_DBL_BRACE&gt; TOKEN : {
213&lt;NULL: "null"&gt;
214| &lt;TRUE: "true"&gt;
215| &lt;FALSE: "false"&gt;
216}
217
218 </PRE>
219 </TD>
220 </TR>
221 <!-- Token -->
222 <TR>
223 <TD>
224 <PRE>
225&lt;DEFAULT,IN_DBL_BRACE&gt; TOKEN : {
226&lt;#DIGIT: ["0"-"9"]&gt;
227}
228
229 </PRE>
230 </TD>
231 </TR>
232 <!-- Token -->
233 <TR>
234 <TD>
235 <PRE>
236&lt;DEFAULT,IN_DBL_BRACE&gt; TOKEN : {
237&lt;DOUBLE_LITERAL: &lt;DIGITS&gt; | &lt;DIGITS&gt; ("." &lt;DIGITS&gt;)? | "." &lt;DIGITS&gt;&gt;
238| &lt;FLOAT_LITERAL: &lt;DIGITS&gt; ("f" | "F") | &lt;DIGITS&gt; ("." &lt;DIGITS&gt; ("f" | "F"))? | "." &lt;DIGITS&gt; ("f" | "F")&gt;
239| &lt;DIGITS: (&lt;DIGIT&gt;)+&gt;
240}
241
242 </PRE>
243 </TD>
244 </TR>
245 <!-- Token -->
246 <TR>
247 <TD>
248 <PRE>
249&lt;DEFAULT,IN_DBL_BRACE&gt; TOKEN : {
250&lt;#LETTER: ["A"-"Z","a"-"z"]&gt;
251| &lt;SPECIALCHARS: ["$","_"]&gt;
252}
253
254 </PRE>
255 </TD>
256 </TR>
257 <!-- Token -->
258 <TR>
259 <TD>
260 <PRE>
261&lt;DEFAULT,IN_DBL_BRACE&gt; TOKEN : {
262&lt;QUOTED_STRING: "\"" (&lt;EscapeQuot&gt; | &lt;EscapeBslash&gt; | &lt;EscapeSlash&gt; | &lt;EscapeBspace&gt; | &lt;EscapeFormf&gt; | &lt;EscapeNl&gt; | &lt;EscapeCr&gt; | &lt;EscapeTab&gt; | ~["\"","\\"])* "\""&gt;
263| &lt;STRING_LITERAL: "\'" (&lt;EscapeQuot&gt; | &lt;EscapeApos&gt; | &lt;EscapeBslash&gt; | &lt;EscapeSlash&gt; | &lt;EscapeBspace&gt; | &lt;EscapeFormf&gt; | &lt;EscapeNl&gt; | &lt;EscapeCr&gt; | &lt;EscapeTab&gt; | ~["\'","\\"])* "\'"&gt;
264| &lt;#EscapeQuot: "\\\""&gt;
265| &lt;#EscapeApos: "\\\'"&gt;
266| &lt;#EscapeBslash: "\\\\"&gt;
267| &lt;#EscapeSlash: "\\/"&gt;
268| &lt;#EscapeBspace: "\\b"&gt;
269| &lt;#EscapeFormf: "\\f"&gt;
270| &lt;#EscapeNl: "\\n"&gt;
271| &lt;#EscapeCr: "\\r"&gt;
272| &lt;#EscapeTab: "\\t"&gt;
273}
274
275 </PRE>
276 </TD>
277 </TR>
278 <!-- Token -->
279 <TR>
280 <TD>
281 <PRE>
282&lt;DEFAULT,IN_DBL_BRACE&gt; TOKEN : {
283&lt;IDENTIFIER: &lt;LETTER&gt; (&lt;LETTER&gt; | &lt;DIGIT&gt; | &lt;SPECIALCHARS&gt;)*&gt;
284}
285
286 </PRE>
287 </TD>
288 </TR>
289 <!-- Token -->
290 <TR>
291 <TD>
292 <PRE>
293&lt;DEFAULT,IN_DBL_BRACE&gt; SKIP : {
294" "
295| "\t"
296| "\r"
297| "\n"
298}
299
300 </PRE>
301 </TD>
302 </TR>
303 <!-- Token -->
304 <TR>
305 <TD>
306 <PRE>
307&lt;DEFAULT,IN_DBL_BRACE&gt; SKIP : {
308&lt;"//" (~["\n"])* "\n"&gt;
309}
310
311 </PRE>
312 </TD>
313 </TR>
314 <!-- Token -->
315 <TR>
316 <TD>
317 <PRE>
318&lt;DEFAULT,IN_DBL_BRACE&gt; SKIP : {
319&lt;"//" (~["\n","\r"])* ("\n" | "\r" | "\r\n")?&gt;
320}
321
322 </PRE>
323 </TD>
324 </TR>
325 <!-- Token -->
326 <TR>
327 <TD>
328 <PRE>
329&lt;DEFAULT,IN_DBL_BRACE&gt; SKIP : {
330"/*" : INSIDE_COMMENT
331}
332
333 </PRE>
334 </TD>
335 </TR>
336 <!-- Token -->
337 <TR>
338 <TD>
339 <PRE>
340&lt;INSIDE_COMMENT&gt; SPECIAL : {
341&lt;"+" (" ")* (~["*"])*&gt;
342}
343
344 </PRE>
345 </TD>
346 </TR>
347 <!-- Token -->
348 <TR>
349 <TD>
350 <PRE>
351&lt;INSIDE_COMMENT&gt; SKIP : {
352"/*" : {
353}
354
355 </PRE>
356 </TD>
357 </TR>
358 <!-- Token -->
359 <TR>
360 <TD>
361 <PRE>
362&lt;INSIDE_COMMENT&gt; SKIP : {
363"*/" : {
364| &lt;~[]&gt;
365}
366
367 </PRE>
368 </TD>
369 </TR>
370</TABLE>
371<H2 ALIGN=CENTER>NON-TERMINALS</H2>
372<TABLE>
373<TR>
374<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod1">Statement</A></TD>
375<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
376<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod2">SingleStatement</A> ( &lt;SEMICOLON&gt; )* )* &lt;EOF&gt;</TD>
377</TR>
378<TR>
379<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod2">SingleStatement</A></TD>
380<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
381<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod3">DataverseDeclaration</A> | <A HREF="#prod4">FunctionDeclaration</A> | <A HREF="#prod5">CreateStatement</A> | <A HREF="#prod6">LoadStatement</A> | <A HREF="#prod7">DropStatement</A> | <A HREF="#prod8">WriteStatement</A> | <A HREF="#prod9">SetStatement</A> | <A HREF="#prod10">InsertStatement</A> | <A HREF="#prod11">DeleteStatement</A> | <A HREF="#prod12">UpdateStatement</A> | <A HREF="#prod13">FeedStatement</A> | <A HREF="#prod14">CompactStatement</A> | <A HREF="#prod15">Query</A> &lt;SEMICOLON&gt; | <A HREF="#prod16">RefreshExternalDatasetStatement</A> | <A HREF="#prod17">RunStatement</A> )</TD>
382</TR>
383<TR>
384<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod3">DataverseDeclaration</A></TD>
385<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
386<TD ALIGN=LEFT VALIGN=BASELINE>&lt;USE&gt; <A HREF="#prod18">Identifier</A></TD>
387</TR>
388<TR>
389<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod5">CreateStatement</A></TD>
390<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
391<TD ALIGN=LEFT VALIGN=BASELINE>&lt;CREATE&gt; ( <A HREF="#prod19">TypeSpecification</A> | <A HREF="#prod20">NodegroupSpecification</A> | <A HREF="#prod21">DatasetSpecification</A> | <A HREF="#prod22">IndexSpecification</A> | <A HREF="#prod23">DataverseSpecification</A> | <A HREF="#prod24">FunctionSpecification</A> | <A HREF="#prod25">FeedSpecification</A> | <A HREF="#prod26">FeedPolicySpecification</A> )</TD>
392</TR>
393<TR>
394<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod19">TypeSpecification</A></TD>
395<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
396<TD ALIGN=LEFT VALIGN=BASELINE>&lt;TYPE&gt; <A HREF="#prod27">TypeName</A> <A HREF="#prod28">IfNotExists</A> &lt;AS&gt; <A HREF="#prod29">TypeExpr</A></TD>
397</TR>
398<TR>
399<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod20">NodegroupSpecification</A></TD>
400<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
401<TD ALIGN=LEFT VALIGN=BASELINE>&lt;NODEGROUP&gt; <A HREF="#prod18">Identifier</A> <A HREF="#prod28">IfNotExists</A> &lt;ON&gt; <A HREF="#prod18">Identifier</A> ( &lt;COMMA&gt; <A HREF="#prod18">Identifier</A> )*</TD>
402</TR>
403<TR>
404<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod21">DatasetSpecification</A></TD>
405<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
Yingyi Buc9bfe252016-03-01 00:02:40 -0800406<TD ALIGN=LEFT VALIGN=BASELINE>( &lt;EXTERNAL&gt; &lt;DATASET&gt; <A HREF="#prod30">QualifiedName</A> &lt;LEFTPAREN&gt; <A HREF="#prod27">TypeName</A> &lt;RIGHTPAREN&gt; <A HREF="#prod28">IfNotExists</A> &lt;USING&gt; <A HREF="#prod31">AdapterName</A> <A HREF="#prod32">Configuration</A> ( &lt;ON&gt; <A HREF="#prod18">Identifier</A> )? ( &lt;HINTS&gt; <A HREF="#prod33">Properties</A> )? ( &lt;USING&gt; &lt;COMPACTION&gt; &lt;POLICY&gt; <A HREF="#prod34">CompactionPolicy</A> ( <A HREF="#prod32">Configuration</A> )? )? | ( &lt;INTERNAL&gt; | &lt;TEMPORARY&gt; )? &lt;DATASET&gt; <A HREF="#prod30">QualifiedName</A> &lt;LEFTPAREN&gt; <A HREF="#prod27">TypeName</A> &lt;RIGHTPAREN&gt; ( &lt;WITH&gt; <A HREF="#prod18">Identifier</A> &lt;LEFTPAREN&gt; <A HREF="#prod27">TypeName</A> &lt;RIGHTPAREN&gt; )? <A HREF="#prod28">IfNotExists</A> <A HREF="#prod35">PrimaryKey</A> ( &lt;AUTOGENERATED&gt; )? ( &lt;ON&gt; <A HREF="#prod18">Identifier</A> )? ( &lt;HINTS&gt; <A HREF="#prod33">Properties</A> )? ( &lt;USING&gt; &lt;COMPACTION&gt; &lt;POLICY&gt; <A HREF="#prod34">CompactionPolicy</A> ( <A HREF="#prod32">Configuration</A> )? )? ( &lt;WITH&gt; &lt;FILTER&gt; &lt;ON&gt; <A HREF="#prod36">NestedField</A> )? )</TD>
Yingyi Bu391f09e2015-10-29 13:49:39 -0700407</TR>
408<TR>
409<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod16">RefreshExternalDatasetStatement</A></TD>
410<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
411<TD ALIGN=LEFT VALIGN=BASELINE>&lt;REFRESH&gt; &lt;EXTERNAL&gt; &lt;DATASET&gt; <A HREF="#prod30">QualifiedName</A></TD>
412</TR>
413<TR>
414<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod17">RunStatement</A></TD>
415<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
416<TD ALIGN=LEFT VALIGN=BASELINE>&lt;RUN&gt; <A HREF="#prod18">Identifier</A> &lt;LEFTPAREN&gt; ( <A HREF="#prod18">Identifier</A> ( &lt;COMMA&gt; )? )* &lt;RIGHTPAREN&gt; &lt;FROM&gt; &lt;DATASET&gt; <A HREF="#prod30">QualifiedName</A> &lt;TO&gt; &lt;DATASET&gt; <A HREF="#prod30">QualifiedName</A></TD>
417</TR>
418<TR>
419<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod22">IndexSpecification</A></TD>
420<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
421<TD ALIGN=LEFT VALIGN=BASELINE>&lt;INDEX&gt; <A HREF="#prod18">Identifier</A> <A HREF="#prod28">IfNotExists</A> &lt;ON&gt; <A HREF="#prod30">QualifiedName</A> &lt;LEFTPAREN&gt; ( <A HREF="#prod37">OpenField</A> ) ( &lt;COMMA&gt; <A HREF="#prod37">OpenField</A> )* &lt;RIGHTPAREN&gt; ( &lt;TYPE&gt; <A HREF="#prod38">IndexType</A> )? ( &lt;ENFORCED&gt; )?</TD>
422</TR>
423<TR>
424<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod34">CompactionPolicy</A></TD>
425<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
426<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod18">Identifier</A></TD>
427</TR>
428<TR>
429<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod39">FilterField</A></TD>
430<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
431<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod18">Identifier</A></TD>
432</TR>
433<TR>
434<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod38">IndexType</A></TD>
435<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
436<TD ALIGN=LEFT VALIGN=BASELINE>( &lt;BTREE&gt; | &lt;RTREE&gt; | &lt;KEYWORD&gt; | &lt;NGRAM&gt; &lt;LEFTPAREN&gt; &lt;INTEGER_LITERAL&gt; &lt;RIGHTPAREN&gt; )</TD>
437</TR>
438<TR>
439<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod23">DataverseSpecification</A></TD>
440<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
441<TD ALIGN=LEFT VALIGN=BASELINE>&lt;DATAVERSE&gt; <A HREF="#prod18">Identifier</A> <A HREF="#prod28">IfNotExists</A> ( &lt;WITH&gt; &lt;FORMAT&gt; <A HREF="#prod40">QuotedString</A> )?</TD>
442</TR>
443<TR>
444<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod24">FunctionSpecification</A></TD>
445<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
446<TD ALIGN=LEFT VALIGN=BASELINE>&lt;FUNCTION&gt; <A HREF="#prod41">FunctionName</A> <A HREF="#prod28">IfNotExists</A> <A HREF="#prod42">ParameterList</A> &lt;LEFTBRACE&gt; <A HREF="#prod43">Expression</A> &lt;RIGHTBRACE&gt;</TD>
447</TR>
448<TR>
449<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod25">FeedSpecification</A></TD>
450<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
451<TD ALIGN=LEFT VALIGN=BASELINE>( &lt;SECONDARY&gt; &lt;FEED&gt; <A HREF="#prod30">QualifiedName</A> <A HREF="#prod28">IfNotExists</A> &lt;FROM&gt; &lt;FEED&gt; <A HREF="#prod30">QualifiedName</A> ( <A HREF="#prod44">ApplyFunction</A> )? | ( &lt;PRIMARY&gt; )? &lt;FEED&gt; <A HREF="#prod30">QualifiedName</A> <A HREF="#prod28">IfNotExists</A> &lt;USING&gt; <A HREF="#prod31">AdapterName</A> <A HREF="#prod32">Configuration</A> ( <A HREF="#prod44">ApplyFunction</A> )? )</TD>
452</TR>
453<TR>
454<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod26">FeedPolicySpecification</A></TD>
455<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
456<TD ALIGN=LEFT VALIGN=BASELINE>( &lt;INGESTION&gt; &lt;POLICY&gt; <A HREF="#prod18">Identifier</A> <A HREF="#prod28">IfNotExists</A> &lt;FROM&gt; ( &lt;POLICY&gt; <A HREF="#prod18">Identifier</A> <A HREF="#prod32">Configuration</A> ( &lt;DEFINITION&gt; <A HREF="#prod40">QuotedString</A> )? | &lt;PATH&gt; <A HREF="#prod18">Identifier</A> ( &lt;DEFINITION&gt; <A HREF="#prod40">QuotedString</A> )? ) )</TD>
457</TR>
458<TR>
459<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod42">ParameterList</A></TD>
460<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
461<TD ALIGN=LEFT VALIGN=BASELINE>&lt;LEFTPAREN&gt; ( &lt;IDENTIFIER&gt; ( &lt;COMMA&gt; &lt;IDENTIFIER&gt; )* )? &lt;RIGHTPAREN&gt;</TD>
462</TR>
463<TR>
464<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod28">IfNotExists</A></TD>
465<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
466<TD ALIGN=LEFT VALIGN=BASELINE>( &lt;IF&gt; ( "not exists" | "NOT EXISTS" ) )?</TD>
467</TR>
468<TR>
469<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod44">ApplyFunction</A></TD>
470<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
471<TD ALIGN=LEFT VALIGN=BASELINE>&lt;APPLY&gt; &lt;FUNCTION&gt; <A HREF="#prod41">FunctionName</A></TD>
472</TR>
473<TR>
474<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod45">GetPolicy</A></TD>
475<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
476<TD ALIGN=LEFT VALIGN=BASELINE>&lt;USING&gt; &lt;POLICY&gt; <A HREF="#prod18">Identifier</A></TD>
477</TR>
478<TR>
479<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod46">FunctionSignature</A></TD>
480<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
481<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod41">FunctionName</A> &lt;ATT&gt; &lt;INTEGER_LITERAL&gt;</TD>
482</TR>
483<TR>
484<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod35">PrimaryKey</A></TD>
485<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
486<TD ALIGN=LEFT VALIGN=BASELINE>&lt;PRIMARY&gt; &lt;KEY&gt; <A HREF="#prod36">NestedField</A> ( &lt;COMMA&gt; <A HREF="#prod36">NestedField</A> )*</TD>
487</TR>
488<TR>
489<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod7">DropStatement</A></TD>
490<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
491<TD ALIGN=LEFT VALIGN=BASELINE>&lt;DROP&gt; ( &lt;DATASET&gt; <A HREF="#prod30">QualifiedName</A> <A HREF="#prod47">IfExists</A> | &lt;INDEX&gt; <A HREF="#prod48">DoubleQualifiedName</A> <A HREF="#prod47">IfExists</A> | &lt;NODEGROUP&gt; <A HREF="#prod18">Identifier</A> <A HREF="#prod47">IfExists</A> | &lt;TYPE&gt; <A HREF="#prod27">TypeName</A> <A HREF="#prod47">IfExists</A> | &lt;DATAVERSE&gt; <A HREF="#prod18">Identifier</A> <A HREF="#prod47">IfExists</A> | &lt;FUNCTION&gt; <A HREF="#prod46">FunctionSignature</A> <A HREF="#prod47">IfExists</A> | &lt;FEED&gt; <A HREF="#prod30">QualifiedName</A> <A HREF="#prod47">IfExists</A> )</TD>
492</TR>
493<TR>
494<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod47">IfExists</A></TD>
495<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
496<TD ALIGN=LEFT VALIGN=BASELINE>( &lt;IF&gt; &lt;EXISTS&gt; )?</TD>
497</TR>
498<TR>
499<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod10">InsertStatement</A></TD>
500<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
501<TD ALIGN=LEFT VALIGN=BASELINE>&lt;INSERT&gt; &lt;INTO&gt; <A HREF="#prod30">QualifiedName</A> <A HREF="#prod15">Query</A></TD>
502</TR>
503<TR>
504<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod11">DeleteStatement</A></TD>
505<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
506<TD ALIGN=LEFT VALIGN=BASELINE>&lt;DELETE&gt; <A HREF="#prod49">Variable</A> &lt;FROM&gt; <A HREF="#prod30">QualifiedName</A> ( &lt;WHERE&gt; <A HREF="#prod43">Expression</A> )?</TD>
507</TR>
508<TR>
509<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod12">UpdateStatement</A></TD>
510<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
511<TD ALIGN=LEFT VALIGN=BASELINE>&lt;UPDATE&gt; <A HREF="#prod49">Variable</A> &lt;IN&gt; <A HREF="#prod43">Expression</A> &lt;WHERE&gt; <A HREF="#prod43">Expression</A> &lt;LEFTPAREN&gt; ( <A HREF="#prod50">UpdateClause</A> ( &lt;COMMA&gt; <A HREF="#prod50">UpdateClause</A> )* ) &lt;RIGHTPAREN&gt;</TD>
512</TR>
513<TR>
514<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod50">UpdateClause</A></TD>
515<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
516<TD ALIGN=LEFT VALIGN=BASELINE>( &lt;SET&gt; <A HREF="#prod43">Expression</A> &lt;EQ&gt; <A HREF="#prod43">Expression</A> | <A HREF="#prod10">InsertStatement</A> | <A HREF="#prod11">DeleteStatement</A> | <A HREF="#prod12">UpdateStatement</A> | &lt;IF&gt; &lt;LEFTPAREN&gt; <A HREF="#prod43">Expression</A> &lt;RIGHTPAREN&gt; &lt;THEN&gt; <A HREF="#prod50">UpdateClause</A> ( &lt;ELSE&gt; <A HREF="#prod50">UpdateClause</A> )? )</TD>
517</TR>
518<TR>
519<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod9">SetStatement</A></TD>
520<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
521<TD ALIGN=LEFT VALIGN=BASELINE>&lt;SET&gt; <A HREF="#prod18">Identifier</A> <A HREF="#prod40">QuotedString</A></TD>
522</TR>
523<TR>
524<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod8">WriteStatement</A></TD>
525<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
526<TD ALIGN=LEFT VALIGN=BASELINE>&lt;WRITE&gt; &lt;OUTPUT&gt; &lt;TO&gt; <A HREF="#prod18">Identifier</A> &lt;COLON&gt; <A HREF="#prod40">QuotedString</A> ( &lt;USING&gt; <A HREF="#prod40">QuotedString</A> )?</TD>
527</TR>
528<TR>
529<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod6">LoadStatement</A></TD>
530<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
531<TD ALIGN=LEFT VALIGN=BASELINE>&lt;LOAD&gt; &lt;DATASET&gt; <A HREF="#prod30">QualifiedName</A> &lt;USING&gt; <A HREF="#prod31">AdapterName</A> <A HREF="#prod32">Configuration</A> ( &lt;PRESORTED&gt; )?</TD>
532</TR>
533<TR>
534<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod31">AdapterName</A></TD>
535<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
536<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod18">Identifier</A></TD>
537</TR>
538<TR>
539<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod14">CompactStatement</A></TD>
540<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
541<TD ALIGN=LEFT VALIGN=BASELINE>&lt;COMPACT&gt; &lt;DATASET&gt; <A HREF="#prod30">QualifiedName</A></TD>
542</TR>
543<TR>
544<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod13">FeedStatement</A></TD>
545<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
546<TD ALIGN=LEFT VALIGN=BASELINE>( &lt;CONNECT&gt; &lt;FEED&gt; <A HREF="#prod30">QualifiedName</A> &lt;TO&gt; &lt;DATASET&gt; <A HREF="#prod30">QualifiedName</A> ( <A HREF="#prod45">GetPolicy</A> )? | &lt;DISCONNECT&gt; &lt;FEED&gt; <A HREF="#prod30">QualifiedName</A> &lt;FROM&gt; &lt;DATASET&gt; <A HREF="#prod30">QualifiedName</A> )</TD>
547</TR>
548<TR>
549<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod32">Configuration</A></TD>
550<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
551<TD ALIGN=LEFT VALIGN=BASELINE>&lt;LEFTPAREN&gt; ( <A HREF="#prod51">KeyValuePair</A> ( &lt;COMMA&gt; <A HREF="#prod51">KeyValuePair</A> )* )? &lt;RIGHTPAREN&gt;</TD>
552</TR>
553<TR>
554<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod51">KeyValuePair</A></TD>
555<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
556<TD ALIGN=LEFT VALIGN=BASELINE>&lt;LEFTPAREN&gt; <A HREF="#prod40">QuotedString</A> &lt;EQ&gt; <A HREF="#prod40">QuotedString</A> &lt;RIGHTPAREN&gt;</TD>
557</TR>
558<TR>
559<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod33">Properties</A></TD>
560<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
561<TD ALIGN=LEFT VALIGN=BASELINE>( &lt;LEFTPAREN&gt; <A HREF="#prod52">Property</A> ( &lt;COMMA&gt; <A HREF="#prod52">Property</A> )* &lt;RIGHTPAREN&gt; )?</TD>
562</TR>
563<TR>
564<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod52">Property</A></TD>
565<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
566<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod18">Identifier</A> &lt;EQ&gt; ( <A HREF="#prod40">QuotedString</A> | &lt;INTEGER_LITERAL&gt; )</TD>
567</TR>
568<TR>
569<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod53">IndexedTypeExpr</A></TD>
570<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
571<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod54">TypeReference</A> | <A HREF="#prod55">OrderedListTypeDef</A> | <A HREF="#prod56">UnorderedListTypeDef</A> )</TD>
572</TR>
573<TR>
574<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod29">TypeExpr</A></TD>
575<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
576<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod57">RecordTypeDef</A> | <A HREF="#prod54">TypeReference</A> | <A HREF="#prod55">OrderedListTypeDef</A> | <A HREF="#prod56">UnorderedListTypeDef</A> )</TD>
577</TR>
578<TR>
579<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod57">RecordTypeDef</A></TD>
580<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
581<TD ALIGN=LEFT VALIGN=BASELINE>( &lt;CLOSED&gt; | &lt;OPEN&gt; )? &lt;LEFTBRACE&gt; ( <A HREF="#prod58">RecordField</A> ( &lt;COMMA&gt; <A HREF="#prod58">RecordField</A> )* )? &lt;RIGHTBRACE&gt;</TD>
582</TR>
583<TR>
584<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod58">RecordField</A></TD>
585<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
586<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod18">Identifier</A> &lt;COLON&gt; <A HREF="#prod29">TypeExpr</A> ( &lt;QUES&gt; )?</TD>
587</TR>
588<TR>
589<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod54">TypeReference</A></TD>
590<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
591<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod18">Identifier</A></TD>
592</TR>
593<TR>
594<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod55">OrderedListTypeDef</A></TD>
595<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
596<TD ALIGN=LEFT VALIGN=BASELINE>&lt;LEFTBRACKET&gt; ( <A HREF="#prod29">TypeExpr</A> ) &lt;RIGHTBRACKET&gt;</TD>
597</TR>
598<TR>
599<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod56">UnorderedListTypeDef</A></TD>
600<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
601<TD ALIGN=LEFT VALIGN=BASELINE>&lt;LEFTDBLBRACE&gt; ( <A HREF="#prod29">TypeExpr</A> ) &lt;RIGHTDBLBRACE&gt;</TD>
602</TR>
603<TR>
604<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod41">FunctionName</A></TD>
605<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
606<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod18">Identifier</A> ( &lt;DOT&gt; <A HREF="#prod18">Identifier</A> ( &lt;SHARP&gt; <A HREF="#prod18">Identifier</A> )? | &lt;SHARP&gt; <A HREF="#prod18">Identifier</A> )?</TD>
607</TR>
608<TR>
609<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod27">TypeName</A></TD>
610<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
611<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod30">QualifiedName</A></TD>
612</TR>
613<TR>
614<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod18">Identifier</A></TD>
615<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
616<TD ALIGN=LEFT VALIGN=BASELINE>( &lt;IDENTIFIER&gt; | <A HREF="#prod40">QuotedString</A> )</TD>
617</TR>
618<TR>
619<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod37">OpenField</A></TD>
620<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
621<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod36">NestedField</A> ( &lt;COLON&gt; <A HREF="#prod53">IndexedTypeExpr</A> )?</TD>
622</TR>
623<TR>
624<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod36">NestedField</A></TD>
625<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
Yingyi Buc9bfe252016-03-01 00:02:40 -0800626<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod18">Identifier</A> ( &lt;LEFTPAREN&gt; &lt;RIGHTPAREN&gt; )? ( &lt;DOT&gt; <A HREF="#prod18">Identifier</A> )*</TD>
Yingyi Bu391f09e2015-10-29 13:49:39 -0700627</TR>
628<TR>
629<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod40">QuotedString</A></TD>
630<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
631<TD ALIGN=LEFT VALIGN=BASELINE>&lt;QUOTED_STRING&gt;</TD>
632</TR>
633<TR>
634<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod59">StringLiteral</A></TD>
635<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
636<TD ALIGN=LEFT VALIGN=BASELINE>&lt;STRING_LITERAL&gt;</TD>
637</TR>
638<TR>
639<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod30">QualifiedName</A></TD>
640<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
641<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod18">Identifier</A> ( &lt;DOT&gt; <A HREF="#prod18">Identifier</A> )?</TD>
642</TR>
643<TR>
644<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod48">DoubleQualifiedName</A></TD>
645<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
646<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod18">Identifier</A> &lt;DOT&gt; <A HREF="#prod18">Identifier</A> ( &lt;DOT&gt; <A HREF="#prod18">Identifier</A> )?</TD>
647</TR>
648<TR>
649<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod4">FunctionDeclaration</A></TD>
650<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
651<TD ALIGN=LEFT VALIGN=BASELINE>&lt;DECLARE&gt; &lt;FUNCTION&gt; <A HREF="#prod18">Identifier</A> <A HREF="#prod42">ParameterList</A> &lt;LEFTBRACE&gt; <A HREF="#prod43">Expression</A> &lt;RIGHTBRACE&gt;</TD>
652</TR>
653<TR>
654<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod15">Query</A></TD>
655<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
656<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod43">Expression</A> | <A HREF="#prod60">SelectExpression</A> )</TD>
657</TR>
658<TR>
659<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod43">Expression</A></TD>
660<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
661<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod61">OperatorExpr</A> | <A HREF="#prod62">IfThenElse</A> | <A HREF="#prod63">QuantifiedExpression</A> )</TD>
662</TR>
663<TR>
664<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod61">OperatorExpr</A></TD>
665<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
666<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod64">AndExpr</A> ( &lt;OR&gt; <A HREF="#prod64">AndExpr</A> )*</TD>
667</TR>
668<TR>
669<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod64">AndExpr</A></TD>
670<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
671<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod65">RelExpr</A> ( &lt;AND&gt; <A HREF="#prod65">RelExpr</A> )*</TD>
672</TR>
673<TR>
674<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod65">RelExpr</A></TD>
675<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
676<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod66">AddExpr</A> ( ( &lt;LT&gt; | &lt;GT&gt; | &lt;LE&gt; | &lt;GE&gt; | &lt;EQ&gt; | &lt;NE&gt; | &lt;SIMILAR&gt; ) <A HREF="#prod66">AddExpr</A> )?</TD>
677</TR>
678<TR>
679<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod66">AddExpr</A></TD>
680<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
681<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod67">MultExpr</A> ( ( &lt;PLUS&gt; | &lt;MINUS&gt; ) <A HREF="#prod67">MultExpr</A> )*</TD>
682</TR>
683<TR>
684<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod67">MultExpr</A></TD>
685<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
686<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod68">UnaryExpr</A> ( ( &lt;MUL&gt; | &lt;DIV&gt; | &lt;MOD&gt; | &lt;CARET&gt; | &lt;IDIV&gt; ) <A HREF="#prod68">UnaryExpr</A> )*</TD>
687</TR>
688<TR>
689<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod68">UnaryExpr</A></TD>
690<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
691<TD ALIGN=LEFT VALIGN=BASELINE>( ( &lt;PLUS&gt; | &lt;MINUS&gt; ) )? <A HREF="#prod69">ValueExpr</A></TD>
692</TR>
693<TR>
694<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod69">ValueExpr</A></TD>
695<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
696<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod70">PrimaryExpr</A> ( <A HREF="#prod71">Field</A> | <A HREF="#prod72">Index</A> )*</TD>
697</TR>
698<TR>
699<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod71">Field</A></TD>
700<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
701<TD ALIGN=LEFT VALIGN=BASELINE>&lt;DOT&gt; <A HREF="#prod18">Identifier</A></TD>
702</TR>
703<TR>
704<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod72">Index</A></TD>
705<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
706<TD ALIGN=LEFT VALIGN=BASELINE>&lt;LEFTBRACKET&gt; ( <A HREF="#prod43">Expression</A> | &lt;QUES&gt; ) &lt;RIGHTBRACKET&gt;</TD>
707</TR>
708<TR>
709<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod70">PrimaryExpr</A></TD>
710<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
711<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod73">FunctionCallExpr</A> | <A HREF="#prod74">Literal</A> | <A HREF="#prod75">VariableRef</A> | <A HREF="#prod76">ListConstructor</A> | <A HREF="#prod77">RecordConstructor</A> | <A HREF="#prod78">ParenthesizedExpression</A> )</TD>
712</TR>
713<TR>
714<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod74">Literal</A></TD>
715<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
716<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod59">StringLiteral</A> | &lt;INTEGER_LITERAL&gt; | &lt;FLOAT_LITERAL&gt; | &lt;DOUBLE_LITERAL&gt; | &lt;NULL&gt; | &lt;TRUE&gt; | &lt;FALSE&gt; )</TD>
717</TR>
718<TR>
719<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod75">VariableRef</A></TD>
720<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
721<TD ALIGN=LEFT VALIGN=BASELINE>( &lt;IDENTIFIER&gt; | <A HREF="#prod40">QuotedString</A> )</TD>
722</TR>
723<TR>
724<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod49">Variable</A></TD>
725<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
726<TD ALIGN=LEFT VALIGN=BASELINE>( &lt;IDENTIFIER&gt; | <A HREF="#prod40">QuotedString</A> )</TD>
727</TR>
728<TR>
729<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod76">ListConstructor</A></TD>
730<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
731<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod79">OrderedListConstructor</A> | <A HREF="#prod80">UnorderedListConstructor</A> )</TD>
732</TR>
733<TR>
734<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod79">OrderedListConstructor</A></TD>
735<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
736<TD ALIGN=LEFT VALIGN=BASELINE>&lt;LEFTBRACKET&gt; <A HREF="#prod81">ExpressionList</A> &lt;RIGHTBRACKET&gt;</TD>
737</TR>
738<TR>
739<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod80">UnorderedListConstructor</A></TD>
740<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
741<TD ALIGN=LEFT VALIGN=BASELINE>&lt;LEFTDBLBRACE&gt; <A HREF="#prod81">ExpressionList</A> &lt;RIGHTDBLBRACE&gt;</TD>
742</TR>
743<TR>
744<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod81">ExpressionList</A></TD>
745<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
746<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod43">Expression</A> ( &lt;COMMA&gt; <A HREF="#prod81">ExpressionList</A> )? )? ( <A HREF="#prod82">Comma</A> )?</TD>
747</TR>
748<TR>
749<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod82">Comma</A></TD>
750<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
751<TD ALIGN=LEFT VALIGN=BASELINE>&lt;COMMA&gt;</TD>
752</TR>
753<TR>
754<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod77">RecordConstructor</A></TD>
755<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
756<TD ALIGN=LEFT VALIGN=BASELINE>&lt;LEFTBRACE&gt; ( <A HREF="#prod83">FieldBinding</A> ( &lt;COMMA&gt; <A HREF="#prod83">FieldBinding</A> )* )? &lt;RIGHTBRACE&gt;</TD>
757</TR>
758<TR>
759<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod83">FieldBinding</A></TD>
760<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
761<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod43">Expression</A> &lt;COLON&gt; <A HREF="#prod43">Expression</A></TD>
762</TR>
763<TR>
764<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod73">FunctionCallExpr</A></TD>
765<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
766<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod41">FunctionName</A> &lt;LEFTPAREN&gt; ( <A HREF="#prod43">Expression</A> ( &lt;COMMA&gt; <A HREF="#prod43">Expression</A> )* )? &lt;RIGHTPAREN&gt;</TD>
767</TR>
768<TR>
769<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod78">ParenthesizedExpression</A></TD>
770<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
771<TD ALIGN=LEFT VALIGN=BASELINE>( &lt;LEFTPAREN&gt; <A HREF="#prod43">Expression</A> &lt;RIGHTPAREN&gt; | <A HREF="#prod84">Subquery</A> )</TD>
772</TR>
773<TR>
774<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod62">IfThenElse</A></TD>
775<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
776<TD ALIGN=LEFT VALIGN=BASELINE>&lt;IF&gt; &lt;LEFTPAREN&gt; <A HREF="#prod43">Expression</A> &lt;RIGHTPAREN&gt; &lt;THEN&gt; <A HREF="#prod43">Expression</A> &lt;ELSE&gt; <A HREF="#prod43">Expression</A></TD>
777</TR>
778<TR>
779<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod60">SelectExpression</A></TD>
780<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
781<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod85">LetClause</A> )? <A HREF="#prod86">SelectSetOperation</A> ( <A HREF="#prod87">OrderbyClause</A> )? ( <A HREF="#prod88">LimitClause</A> )?</TD>
782</TR>
783<TR>
784<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod86">SelectSetOperation</A></TD>
785<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
786<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod89">SelectBlock</A> ( ( &lt;UNION&gt; | &lt;INTERSECT&gt; | &lt;EXCEPT&gt; ) ( &lt;ALL&gt; )? ( <A HREF="#prod89">SelectBlock</A> | <A HREF="#prod84">Subquery</A> ) )*</TD>
787</TR>
788<TR>
789<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod84">Subquery</A></TD>
790<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
791<TD ALIGN=LEFT VALIGN=BASELINE>&lt;LEFTPAREN&gt; <A HREF="#prod60">SelectExpression</A> &lt;RIGHTPAREN&gt;</TD>
792</TR>
793<TR>
794<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod89">SelectBlock</A></TD>
795<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
796<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod90">SelectClause</A> ( <A HREF="#prod91">FromClause</A> ( <A HREF="#prod85">LetClause</A> )? )? ( <A HREF="#prod92">WhereClause</A> )? ( <A HREF="#prod93">GroupbyClause</A> ( <A HREF="#prod85">LetClause</A> )? ( <A HREF="#prod94">HavingClause</A> )? )? | <A HREF="#prod91">FromClause</A> ( <A HREF="#prod85">LetClause</A> )? ( <A HREF="#prod92">WhereClause</A> )? ( <A HREF="#prod93">GroupbyClause</A> ( <A HREF="#prod85">LetClause</A> )? ( <A HREF="#prod94">HavingClause</A> )? )? <A HREF="#prod90">SelectClause</A> )</TD>
797</TR>
798<TR>
799<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod90">SelectClause</A></TD>
800<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
801<TD ALIGN=LEFT VALIGN=BASELINE>&lt;SELECT&gt; ( &lt;ALL&gt; | &lt;DISTINCT&gt; )? ( <A HREF="#prod95">SelectRegular</A> | <A HREF="#prod96">SelectElement</A> )</TD>
802</TR>
803<TR>
804<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod95">SelectRegular</A></TD>
805<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
806<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod97">Projection</A> ( &lt;COMMA&gt; <A HREF="#prod97">Projection</A> )*</TD>
807</TR>
808<TR>
809<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod96">SelectElement</A></TD>
810<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
811<TD ALIGN=LEFT VALIGN=BASELINE>( &lt;RAW&gt; | &lt;ELEMENT&gt; | &lt;VALUE&gt; ) <A HREF="#prod43">Expression</A></TD>
812</TR>
813<TR>
814<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod97">Projection</A></TD>
815<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
816<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod43">Expression</A> ( &lt;AS&gt; )? <A HREF="#prod18">Identifier</A> | <A HREF="#prod43">Expression</A> &lt;DOT&gt; &lt;MUL&gt; | &lt;MUL&gt; )</TD>
817</TR>
818<TR>
819<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod91">FromClause</A></TD>
820<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
821<TD ALIGN=LEFT VALIGN=BASELINE>&lt;FROM&gt; <A HREF="#prod98">FromTerm</A> ( &lt;COMMA&gt; <A HREF="#prod98">FromTerm</A> )*</TD>
822</TR>
823<TR>
824<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod98">FromTerm</A></TD>
825<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
826<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod43">Expression</A> ( &lt;AS&gt; )? <A HREF="#prod49">Variable</A> ( &lt;AT&gt; <A HREF="#prod49">Variable</A> )? ( ( <A HREF="#prod99">JoinType</A> )? ( <A HREF="#prod100">JoinClause</A> | <A HREF="#prod101">NestClause</A> | <A HREF="#prod102">UnnestClause</A> ) )*</TD>
827</TR>
828<TR>
829<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod100">JoinClause</A></TD>
830<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
831<TD ALIGN=LEFT VALIGN=BASELINE>&lt;JOIN&gt; <A HREF="#prod43">Expression</A> ( &lt;AS&gt; )? <A HREF="#prod49">Variable</A> ( &lt;AT&gt; <A HREF="#prod49">Variable</A> )? &lt;ON&gt; <A HREF="#prod43">Expression</A></TD>
832</TR>
833<TR>
834<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod101">NestClause</A></TD>
835<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
836<TD ALIGN=LEFT VALIGN=BASELINE>&lt;NEST&gt; <A HREF="#prod43">Expression</A> ( &lt;AS&gt; )? <A HREF="#prod49">Variable</A> ( &lt;AT&gt; <A HREF="#prod49">Variable</A> )? &lt;ON&gt; <A HREF="#prod43">Expression</A></TD>
837</TR>
838<TR>
839<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod102">UnnestClause</A></TD>
840<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
841<TD ALIGN=LEFT VALIGN=BASELINE>( &lt;UNNEST&gt; | &lt;CORRELATE&gt; | &lt;FLATTEN&gt; ) <A HREF="#prod43">Expression</A> ( &lt;AS&gt; )? <A HREF="#prod49">Variable</A> ( &lt;AT&gt; <A HREF="#prod49">Variable</A> )?</TD>
842</TR>
843<TR>
844<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod99">JoinType</A></TD>
845<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
846<TD ALIGN=LEFT VALIGN=BASELINE>( &lt;INNER&gt; | &lt;LEFT&gt; ( &lt;OUTER&gt; )? )</TD>
847</TR>
848<TR>
849<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod85">LetClause</A></TD>
850<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
851<TD ALIGN=LEFT VALIGN=BASELINE>( ( &lt;LET&gt; | &lt;LETTING&gt; ) <A HREF="#prod103">LetElement</A> ( &lt;COMMA&gt; <A HREF="#prod103">LetElement</A> )* | &lt;WITH&gt; <A HREF="#prod104">WithElement</A> ( &lt;COMMA&gt; <A HREF="#prod104">WithElement</A> )* )</TD>
852</TR>
853<TR>
854<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod92">WhereClause</A></TD>
855<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
856<TD ALIGN=LEFT VALIGN=BASELINE>&lt;WHERE&gt; <A HREF="#prod43">Expression</A></TD>
857</TR>
858<TR>
859<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod87">OrderbyClause</A></TD>
860<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
861<TD ALIGN=LEFT VALIGN=BASELINE>&lt;ORDER&gt; &lt;BY&gt; <A HREF="#prod43">Expression</A> ( ( &lt;ASC&gt; ) | ( &lt;DESC&gt; ) )? ( &lt;COMMA&gt; <A HREF="#prod43">Expression</A> ( ( &lt;ASC&gt; ) | ( &lt;DESC&gt; ) )? )*</TD>
862</TR>
863<TR>
864<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod93">GroupbyClause</A></TD>
865<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
866<TD ALIGN=LEFT VALIGN=BASELINE>&lt;GROUP&gt; &lt;BY&gt; ( <A HREF="#prod43">Expression</A> ( ( &lt;AS&gt; )? <A HREF="#prod49">Variable</A> )? ( &lt;COMMA&gt; <A HREF="#prod43">Expression</A> ( ( &lt;AS&gt; )? <A HREF="#prod49">Variable</A> )? )* )</TD>
867</TR>
868<TR>
869<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod94">HavingClause</A></TD>
870<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
871<TD ALIGN=LEFT VALIGN=BASELINE>&lt;HAVING&gt; <A HREF="#prod43">Expression</A></TD>
872</TR>
873<TR>
874<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod88">LimitClause</A></TD>
875<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
876<TD ALIGN=LEFT VALIGN=BASELINE>&lt;LIMIT&gt; <A HREF="#prod43">Expression</A> ( &lt;OFFSET&gt; <A HREF="#prod43">Expression</A> )?</TD>
877</TR>
878<TR>
879<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod63">QuantifiedExpression</A></TD>
880<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
881<TD ALIGN=LEFT VALIGN=BASELINE>( ( &lt;SOME&gt; ) | ( &lt;EVERY&gt; ) ) <A HREF="#prod49">Variable</A> &lt;IN&gt; <A HREF="#prod43">Expression</A> ( &lt;COMMA&gt; <A HREF="#prod49">Variable</A> &lt;IN&gt; <A HREF="#prod43">Expression</A> )* &lt;SATISFIES&gt; <A HREF="#prod43">Expression</A></TD>
882</TR>
883<TR>
884<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod103">LetElement</A></TD>
885<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
886<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod49">Variable</A> &lt;EQ&gt; <A HREF="#prod43">Expression</A></TD>
887</TR>
888<TR>
889<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod104">WithElement</A></TD>
890<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
891<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod49">Variable</A> &lt;AS&gt; <A HREF="#prod43">Expression</A></TD>
892</TR>
893</TABLE>
894</BODY>
895</HTML>