blob: d3670d6bc6e27049203f34da96cc38ac4f6c8165 [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 AQL.jj</TITLE>
5</HEAD>
6<BODY>
7<H1 ALIGN=CENTER>BNF for AQL.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 : {
15&lt;ASC: "asc"&gt;
16| &lt;AT: "at"&gt;
17| &lt;BY: "by"&gt;
18| &lt;DATASET: "dataset"&gt;
19| &lt;DECOR: "decor"&gt;
20| &lt;DESC: "desc"&gt;
21| &lt;DISTINCT: "distinct"&gt;
22| &lt;ELSE: "else"&gt;
23| &lt;EVERY: "every"&gt;
24| &lt;FOR: "for"&gt;
25| &lt;FROM: "from"&gt;
26| &lt;GROUP: "group"&gt;
27| &lt;IF: "if"&gt;
28| &lt;IN: "in"&gt;
29| &lt;LET: "let"&gt;
30| &lt;LIMIT: "limit"&gt;
31| &lt;OFFSET: "offset"&gt;
32| &lt;ORDER: "order"&gt;
33| &lt;RETURN: "return"&gt;
34| &lt;SATISFIES: "satisfies"&gt;
35| &lt;SELECT: "select"&gt;
36| &lt;SOME: "some"&gt;
37| &lt;THEN: "then"&gt;
38| &lt;UNION: "union"&gt;
39| &lt;WHERE: "where"&gt;
40| &lt;WITH: "with"&gt;
41| &lt;KEEPING: "keeping"&gt;
42}
43
44 </PRE>
45 </TD>
46 </TR>
47 <!-- Token -->
48 <TR>
49 <TD>
50 <PRE>
51&lt;DEFAULT,IN_DBL_BRACE&gt; TOKEN : {
52&lt;CARET: "^"&gt;
53| &lt;DIV: "/"&gt;
54| &lt;IDIV: "idiv"&gt;
55| &lt;MINUS: "-"&gt;
56| &lt;MOD: "%"&gt;
57| &lt;MUL: "*"&gt;
58| &lt;PLUS: "+"&gt;
59| &lt;LEFTPAREN: "("&gt;
60| &lt;RIGHTPAREN: ")"&gt;
61| &lt;LEFTBRACKET: "["&gt;
62| &lt;RIGHTBRACKET: "]"&gt;
63| &lt;COLON: ":"&gt;
64| &lt;COMMA: ","&gt;
65| &lt;DOT: "."&gt;
66| &lt;QUES: "?"&gt;
67| &lt;LT: "&lt;"&gt;
68| &lt;GT: "&gt;"&gt;
69| &lt;LE: "&lt;="&gt;
70| &lt;GE: "&gt;="&gt;
71| &lt;EQ: "="&gt;
72| &lt;NE: "!="&gt;
73| &lt;SIMILAR: "~="&gt;
74| &lt;ASSIGN: ":="&gt;
75| &lt;AND: "and"&gt;
76| &lt;OR: "or"&gt;
77}
78
79 </PRE>
80 </TD>
81 </TR>
82 <!-- Token -->
83 <TR>
84 <TD>
85 <PRE>
86&lt;DEFAULT,IN_DBL_BRACE&gt; TOKEN : {
87&lt;LEFTBRACE: "{"&gt; : DEFAULT
88}
89
90 </PRE>
91 </TD>
92 </TR>
93 <!-- Token -->
94 <TR>
95 <TD>
96 <PRE>
97&lt;DEFAULT&gt; TOKEN : {
98&lt;RIGHTBRACE: "}"&gt; : {
99}
100
101 </PRE>
102 </TD>
103 </TR>
104 <!-- Token -->
105 <TR>
106 <TD>
107 <PRE>
108&lt;DEFAULT,IN_DBL_BRACE&gt; TOKEN : {
109&lt;LEFTDBLBRACE: "{{"&gt; : IN_DBL_BRACE
110}
111
112 </PRE>
113 </TD>
114 </TR>
115 <!-- Token -->
116 <TR>
117 <TD>
118 <PRE>
119&lt;IN_DBL_BRACE&gt; TOKEN : {
120&lt;RIGHTDBLBRACE: "}}"&gt; : {
121}
122
123 </PRE>
124 </TD>
125 </TR>
126 <!-- Token -->
127 <TR>
128 <TD>
129 <PRE>
130&lt;DEFAULT,IN_DBL_BRACE&gt; TOKEN : {
131&lt;INTEGER_LITERAL: (&lt;DIGIT&gt;)+&gt;
132}
133
134 </PRE>
135 </TD>
136 </TR>
137 <!-- Token -->
138 <TR>
139 <TD>
140 <PRE>
141&lt;DEFAULT,IN_DBL_BRACE&gt; TOKEN : {
142&lt;NULL: "null"&gt;
143| &lt;TRUE: "true"&gt;
144| &lt;FALSE: "false"&gt;
145}
146
147 </PRE>
148 </TD>
149 </TR>
150 <!-- Token -->
151 <TR>
152 <TD>
153 <PRE>
154&lt;DEFAULT,IN_DBL_BRACE&gt; TOKEN : {
155&lt;#DIGIT: ["0"-"9"]&gt;
156}
157
158 </PRE>
159 </TD>
160 </TR>
161 <!-- Token -->
162 <TR>
163 <TD>
164 <PRE>
165&lt;DEFAULT,IN_DBL_BRACE&gt; TOKEN : {
166&lt;DOUBLE_LITERAL: &lt;DIGITS&gt; | &lt;DIGITS&gt; ("." &lt;DIGITS&gt;)? | "." &lt;DIGITS&gt;&gt;
167| &lt;FLOAT_LITERAL: &lt;DIGITS&gt; ("f" | "F") | &lt;DIGITS&gt; ("." &lt;DIGITS&gt; ("f" | "F"))? | "." &lt;DIGITS&gt; ("f" | "F")&gt;
168| &lt;DIGITS: (&lt;DIGIT&gt;)+&gt;
169}
170
171 </PRE>
172 </TD>
173 </TR>
174 <!-- Token -->
175 <TR>
176 <TD>
177 <PRE>
178&lt;DEFAULT,IN_DBL_BRACE&gt; TOKEN : {
179&lt;#LETTER: ["A"-"Z","a"-"z"]&gt;
180| &lt;SPECIALCHARS: ["$","_","-"]&gt;
181}
182
183 </PRE>
184 </TD>
185 </TR>
186 <!-- Token -->
187 <TR>
188 <TD>
189 <PRE>
190&lt;DEFAULT,IN_DBL_BRACE&gt; TOKEN : {
191&lt;STRING_LITERAL: "\"" (&lt;EscapeQuot&gt; | &lt;EscapeBslash&gt; | &lt;EscapeSlash&gt; | &lt;EscapeBspace&gt; | &lt;EscapeFormf&gt; | &lt;EscapeNl&gt; | &lt;EscapeCr&gt; | &lt;EscapeTab&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;
192| &lt;#EscapeQuot: "\\\""&gt;
193| &lt;#EscapeApos: "\\\'"&gt;
194| &lt;#EscapeBslash: "\\\\"&gt;
195| &lt;#EscapeSlash: "\\/"&gt;
196| &lt;#EscapeBspace: "\\b"&gt;
197| &lt;#EscapeFormf: "\\f"&gt;
198| &lt;#EscapeNl: "\\n"&gt;
199| &lt;#EscapeCr: "\\r"&gt;
200| &lt;#EscapeTab: "\\t"&gt;
201}
202
203 </PRE>
204 </TD>
205 </TR>
206 <!-- Token -->
207 <TR>
208 <TD>
209 <PRE>
210&lt;DEFAULT,IN_DBL_BRACE&gt; TOKEN : {
211&lt;IDENTIFIER: &lt;LETTER&gt; (&lt;LETTER&gt; | &lt;DIGIT&gt; | &lt;SPECIALCHARS&gt;)*&gt;
212}
213
214 </PRE>
215 </TD>
216 </TR>
217 <!-- Token -->
218 <TR>
219 <TD>
220 <PRE>
221&lt;DEFAULT,IN_DBL_BRACE&gt; TOKEN : {
222&lt;VARIABLE: "$" &lt;LETTER&gt; (&lt;LETTER&gt; | &lt;DIGIT&gt; | "_")*&gt;
223}
224
225 </PRE>
226 </TD>
227 </TR>
228 <!-- Token -->
229 <TR>
230 <TD>
231 <PRE>
232&lt;DEFAULT,IN_DBL_BRACE&gt; SKIP : {
233" "
234| "\t"
235| "\r"
236| "\n"
237}
238
239 </PRE>
240 </TD>
241 </TR>
242 <!-- Token -->
243 <TR>
244 <TD>
245 <PRE>
246&lt;DEFAULT,IN_DBL_BRACE&gt; SKIP : {
247&lt;"//" (~["\n"])* "\n"&gt;
248}
249
250 </PRE>
251 </TD>
252 </TR>
253 <!-- Token -->
254 <TR>
255 <TD>
256 <PRE>
257&lt;DEFAULT,IN_DBL_BRACE&gt; SKIP : {
258&lt;"//" (~["\n","\r"])* ("\n" | "\r" | "\r\n")?&gt;
259}
260
261 </PRE>
262 </TD>
263 </TR>
264 <!-- Token -->
265 <TR>
266 <TD>
267 <PRE>
268&lt;DEFAULT,IN_DBL_BRACE&gt; SKIP : {
269"/*" : INSIDE_COMMENT
270}
271
272 </PRE>
273 </TD>
274 </TR>
275 <!-- Token -->
276 <TR>
277 <TD>
278 <PRE>
279&lt;INSIDE_COMMENT&gt; SPECIAL : {
280&lt;"+" (" ")* (~["*"])*&gt;
281}
282
283 </PRE>
284 </TD>
285 </TR>
286 <!-- Token -->
287 <TR>
288 <TD>
289 <PRE>
290&lt;INSIDE_COMMENT&gt; SKIP : {
291"/*" : {
292}
293
294 </PRE>
295 </TD>
296 </TR>
297 <!-- Token -->
298 <TR>
299 <TD>
300 <PRE>
301&lt;INSIDE_COMMENT&gt; SKIP : {
302"*/" : {
303| &lt;~[]&gt;
304}
305
306 </PRE>
307 </TD>
308 </TR>
309</TABLE>
310<H2 ALIGN=CENTER>NON-TERMINALS</H2>
311<TABLE>
312<TR>
313<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod1">Statement</A></TD>
314<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
315<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod2">SingleStatement</A> ( ";" )? )* &lt;EOF&gt;</TD>
316</TR>
317<TR>
318<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod2">SingleStatement</A></TD>
319<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
320<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> | <A HREF="#prod16">RefreshExternalDatasetStatement</A> | <A HREF="#prod17">RunStatement</A> )</TD>
321</TR>
322<TR>
323<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod3">DataverseDeclaration</A></TD>
324<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
325<TD ALIGN=LEFT VALIGN=BASELINE>"use" "dataverse" <A HREF="#prod18">Identifier</A></TD>
326</TR>
327<TR>
328<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod5">CreateStatement</A></TD>
329<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
330<TD ALIGN=LEFT VALIGN=BASELINE>"create" ( <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>
331</TR>
332<TR>
333<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod19">TypeSpecification</A></TD>
334<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
335<TD ALIGN=LEFT VALIGN=BASELINE>"type" <A HREF="#prod27">TypeName</A> <A HREF="#prod28">IfNotExists</A> "as" <A HREF="#prod29">TypeExpr</A></TD>
336</TR>
337<TR>
338<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod20">NodegroupSpecification</A></TD>
339<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
340<TD ALIGN=LEFT VALIGN=BASELINE>"nodegroup" <A HREF="#prod18">Identifier</A> <A HREF="#prod28">IfNotExists</A> "on" <A HREF="#prod18">Identifier</A> ( &lt;COMMA&gt; <A HREF="#prod18">Identifier</A> )*</TD>
341</TR>
342<TR>
343<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod21">DatasetSpecification</A></TD>
344<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
Yingyi Buc9bfe252016-03-01 00:02:40 -0800345<TD ALIGN=LEFT VALIGN=BASELINE>( "external" &lt;DATASET&gt; <A HREF="#prod30">QualifiedName</A> &lt;LEFTPAREN&gt; <A HREF="#prod27">TypeName</A> &lt;RIGHTPAREN&gt; <A HREF="#prod28">IfNotExists</A> "using" <A HREF="#prod31">AdapterName</A> <A HREF="#prod32">Configuration</A> ( "on" <A HREF="#prod18">Identifier</A> )? ( "hints" <A HREF="#prod33">Properties</A> )? ( "using" "compaction" "policy" <A HREF="#prod34">CompactionPolicy</A> ( <A HREF="#prod32">Configuration</A> )? )? | ( "internal" | "temporary" )? &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> ( "autogenerated" )? ( "on" <A HREF="#prod18">Identifier</A> )? ( "hints" <A HREF="#prod33">Properties</A> )? ( "using" "compaction" "policy" <A HREF="#prod34">CompactionPolicy</A> ( <A HREF="#prod32">Configuration</A> )? )? ( "with filter on" <A HREF="#prod36">NestedField</A> )? )</TD>
Yingyi Bu391f09e2015-10-29 13:49:39 -0700346</TR>
347<TR>
348<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod16">RefreshExternalDatasetStatement</A></TD>
349<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
350<TD ALIGN=LEFT VALIGN=BASELINE>"refresh external" &lt;DATASET&gt; <A HREF="#prod30">QualifiedName</A></TD>
351</TR>
352<TR>
353<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod17">RunStatement</A></TD>
354<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
355<TD ALIGN=LEFT VALIGN=BASELINE>"run" <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> "to" &lt;DATASET&gt; <A HREF="#prod30">QualifiedName</A></TD>
356</TR>
357<TR>
358<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod22">IndexSpecification</A></TD>
359<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
360<TD ALIGN=LEFT VALIGN=BASELINE>"index" <A HREF="#prod18">Identifier</A> <A HREF="#prod28">IfNotExists</A> "on" <A HREF="#prod30">QualifiedName</A> &lt;LEFTPAREN&gt; ( <A HREF="#prod37">OpenField</A> ) ( &lt;COMMA&gt; <A HREF="#prod37">OpenField</A> )* &lt;RIGHTPAREN&gt; ( "type" <A HREF="#prod38">IndexType</A> )? ( "enforced" )?</TD>
361</TR>
362<TR>
363<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod34">CompactionPolicy</A></TD>
364<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
365<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod18">Identifier</A></TD>
366</TR>
367<TR>
368<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod39">FilterField</A></TD>
369<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
370<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod18">Identifier</A></TD>
371</TR>
372<TR>
373<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod38">IndexType</A></TD>
374<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
375<TD ALIGN=LEFT VALIGN=BASELINE>( "btree" | "rtree" | "keyword" | "ngram" &lt;LEFTPAREN&gt; &lt;INTEGER_LITERAL&gt; &lt;RIGHTPAREN&gt; )</TD>
376</TR>
377<TR>
378<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod23">DataverseSpecification</A></TD>
379<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
380<TD ALIGN=LEFT VALIGN=BASELINE>"dataverse" <A HREF="#prod18">Identifier</A> <A HREF="#prod28">IfNotExists</A> ( "with format" <A HREF="#prod40">StringLiteral</A> )?</TD>
381</TR>
382<TR>
383<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod24">FunctionSpecification</A></TD>
384<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
385<TD ALIGN=LEFT VALIGN=BASELINE>"function" <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>
386</TR>
387<TR>
388<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod25">FeedSpecification</A></TD>
389<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
390<TD ALIGN=LEFT VALIGN=BASELINE>( "secondary" "feed" <A HREF="#prod30">QualifiedName</A> <A HREF="#prod28">IfNotExists</A> &lt;FROM&gt; "feed" <A HREF="#prod30">QualifiedName</A> ( <A HREF="#prod44">ApplyFunction</A> )? | ( "primary" )? "feed" <A HREF="#prod30">QualifiedName</A> <A HREF="#prod28">IfNotExists</A> "using" <A HREF="#prod31">AdapterName</A> <A HREF="#prod32">Configuration</A> ( <A HREF="#prod44">ApplyFunction</A> )? )</TD>
391</TR>
392<TR>
393<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod26">FeedPolicySpecification</A></TD>
394<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
395<TD ALIGN=LEFT VALIGN=BASELINE>( "ingestion" "policy" <A HREF="#prod18">Identifier</A> <A HREF="#prod28">IfNotExists</A> &lt;FROM&gt; ( "policy" <A HREF="#prod18">Identifier</A> <A HREF="#prod32">Configuration</A> ( "definition" <A HREF="#prod40">StringLiteral</A> )? | "path" <A HREF="#prod18">Identifier</A> ( "definition" <A HREF="#prod40">StringLiteral</A> )? ) )</TD>
396</TR>
397<TR>
398<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod42">ParameterList</A></TD>
399<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
400<TD ALIGN=LEFT VALIGN=BASELINE>&lt;LEFTPAREN&gt; ( &lt;VARIABLE&gt; ( &lt;COMMA&gt; &lt;VARIABLE&gt; )* )? &lt;RIGHTPAREN&gt;</TD>
401</TR>
402<TR>
403<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod28">IfNotExists</A></TD>
404<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
405<TD ALIGN=LEFT VALIGN=BASELINE>( "if not exists" )?</TD>
406</TR>
407<TR>
408<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod44">ApplyFunction</A></TD>
409<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
410<TD ALIGN=LEFT VALIGN=BASELINE>"apply" "function" <A HREF="#prod41">FunctionName</A></TD>
411</TR>
412<TR>
413<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod45">GetPolicy</A></TD>
414<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
415<TD ALIGN=LEFT VALIGN=BASELINE>"using" "policy" <A HREF="#prod18">Identifier</A></TD>
416</TR>
417<TR>
418<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod46">FunctionSignature</A></TD>
419<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
420<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod41">FunctionName</A> "@" &lt;INTEGER_LITERAL&gt;</TD>
421</TR>
422<TR>
423<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod35">PrimaryKey</A></TD>
424<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
425<TD ALIGN=LEFT VALIGN=BASELINE>"primary" "key" <A HREF="#prod36">NestedField</A> ( &lt;COMMA&gt; <A HREF="#prod36">NestedField</A> )*</TD>
426</TR>
427<TR>
428<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod7">DropStatement</A></TD>
429<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
430<TD ALIGN=LEFT VALIGN=BASELINE>"drop" ( &lt;DATASET&gt; <A HREF="#prod30">QualifiedName</A> <A HREF="#prod47">IfExists</A> | "index" <A HREF="#prod48">DoubleQualifiedName</A> <A HREF="#prod47">IfExists</A> | "nodegroup" <A HREF="#prod18">Identifier</A> <A HREF="#prod47">IfExists</A> | "type" <A HREF="#prod27">TypeName</A> <A HREF="#prod47">IfExists</A> | "dataverse" <A HREF="#prod18">Identifier</A> <A HREF="#prod47">IfExists</A> | "function" <A HREF="#prod46">FunctionSignature</A> <A HREF="#prod47">IfExists</A> | "feed" <A HREF="#prod30">QualifiedName</A> <A HREF="#prod47">IfExists</A> )</TD>
431</TR>
432<TR>
433<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod47">IfExists</A></TD>
434<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
435<TD ALIGN=LEFT VALIGN=BASELINE>( &lt;IF&gt; "exists" )?</TD>
436</TR>
437<TR>
438<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod10">InsertStatement</A></TD>
439<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
Yingyi Bub9169b62016-02-26 21:21:49 -0800440<TD ALIGN=LEFT VALIGN=BASELINE>( "insert" | "upsert" ) "into" &lt;DATASET&gt; <A HREF="#prod30">QualifiedName</A> <A HREF="#prod15">Query</A></TD>
Yingyi Bu391f09e2015-10-29 13:49:39 -0700441</TR>
442<TR>
443<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod11">DeleteStatement</A></TD>
444<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
445<TD ALIGN=LEFT VALIGN=BASELINE>"delete" <A HREF="#prod49">Variable</A> &lt;FROM&gt; &lt;DATASET&gt; <A HREF="#prod30">QualifiedName</A> ( &lt;WHERE&gt; <A HREF="#prod43">Expression</A> )?</TD>
446</TR>
447<TR>
448<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod12">UpdateStatement</A></TD>
449<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
450<TD ALIGN=LEFT VALIGN=BASELINE>"update" <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>
451</TR>
452<TR>
453<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod50">UpdateClause</A></TD>
454<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
455<TD ALIGN=LEFT VALIGN=BASELINE>( "set" <A HREF="#prod43">Expression</A> &lt;ASSIGN&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>
456</TR>
457<TR>
458<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod9">SetStatement</A></TD>
459<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
460<TD ALIGN=LEFT VALIGN=BASELINE>"set" <A HREF="#prod18">Identifier</A> <A HREF="#prod40">StringLiteral</A></TD>
461</TR>
462<TR>
463<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod8">WriteStatement</A></TD>
464<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
465<TD ALIGN=LEFT VALIGN=BASELINE>"write" "output" "to" <A HREF="#prod18">Identifier</A> &lt;COLON&gt; <A HREF="#prod40">StringLiteral</A> ( "using" <A HREF="#prod40">StringLiteral</A> )?</TD>
466</TR>
467<TR>
468<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod6">LoadStatement</A></TD>
469<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
470<TD ALIGN=LEFT VALIGN=BASELINE>"load" &lt;DATASET&gt; <A HREF="#prod30">QualifiedName</A> "using" <A HREF="#prod31">AdapterName</A> <A HREF="#prod32">Configuration</A> ( "pre-sorted" )?</TD>
471</TR>
472<TR>
473<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod31">AdapterName</A></TD>
474<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
475<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod18">Identifier</A></TD>
476</TR>
477<TR>
478<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod14">CompactStatement</A></TD>
479<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
480<TD ALIGN=LEFT VALIGN=BASELINE>"compact" &lt;DATASET&gt; <A HREF="#prod30">QualifiedName</A></TD>
481</TR>
482<TR>
483<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod13">FeedStatement</A></TD>
484<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
485<TD ALIGN=LEFT VALIGN=BASELINE>( "connect" "feed" <A HREF="#prod30">QualifiedName</A> "to" &lt;DATASET&gt; <A HREF="#prod30">QualifiedName</A> ( <A HREF="#prod45">GetPolicy</A> )? | "disconnect" "feed" <A HREF="#prod30">QualifiedName</A> &lt;FROM&gt; &lt;DATASET&gt; <A HREF="#prod30">QualifiedName</A> )</TD>
486</TR>
487<TR>
488<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod32">Configuration</A></TD>
489<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
490<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>
491</TR>
492<TR>
493<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod51">KeyValuePair</A></TD>
494<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
495<TD ALIGN=LEFT VALIGN=BASELINE>&lt;LEFTPAREN&gt; <A HREF="#prod40">StringLiteral</A> &lt;EQ&gt; <A HREF="#prod40">StringLiteral</A> &lt;RIGHTPAREN&gt;</TD>
496</TR>
497<TR>
498<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod33">Properties</A></TD>
499<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
500<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>
501</TR>
502<TR>
503<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod52">Property</A></TD>
504<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
505<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod18">Identifier</A> &lt;EQ&gt; ( <A HREF="#prod40">StringLiteral</A> | &lt;INTEGER_LITERAL&gt; )</TD>
506</TR>
507<TR>
508<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod53">IndexedTypeExpr</A></TD>
509<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
510<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod54">TypeReference</A> | <A HREF="#prod55">OrderedListTypeDef</A> | <A HREF="#prod56">UnorderedListTypeDef</A> )</TD>
511</TR>
512<TR>
513<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod29">TypeExpr</A></TD>
514<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
515<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>
516</TR>
517<TR>
518<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod57">RecordTypeDef</A></TD>
519<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
520<TD ALIGN=LEFT VALIGN=BASELINE>( "closed" | "open" )? &lt;LEFTBRACE&gt; ( <A HREF="#prod58">RecordField</A> ( &lt;COMMA&gt; <A HREF="#prod58">RecordField</A> )* )? &lt;RIGHTBRACE&gt;</TD>
521</TR>
522<TR>
523<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod58">RecordField</A></TD>
524<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
525<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod18">Identifier</A> &lt;COLON&gt; <A HREF="#prod29">TypeExpr</A> ( &lt;QUES&gt; )?</TD>
526</TR>
527<TR>
528<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod54">TypeReference</A></TD>
529<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
530<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod18">Identifier</A></TD>
531</TR>
532<TR>
533<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod55">OrderedListTypeDef</A></TD>
534<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
535<TD ALIGN=LEFT VALIGN=BASELINE>&lt;LEFTBRACKET&gt; ( <A HREF="#prod29">TypeExpr</A> ) &lt;RIGHTBRACKET&gt;</TD>
536</TR>
537<TR>
538<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod56">UnorderedListTypeDef</A></TD>
539<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
540<TD ALIGN=LEFT VALIGN=BASELINE>&lt;LEFTDBLBRACE&gt; ( <A HREF="#prod29">TypeExpr</A> ) &lt;RIGHTDBLBRACE&gt;</TD>
541</TR>
542<TR>
543<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod41">FunctionName</A></TD>
544<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
545<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod18">Identifier</A> ( &lt;DOT&gt; <A HREF="#prod18">Identifier</A> ( "#" <A HREF="#prod18">Identifier</A> )? | "#" <A HREF="#prod18">Identifier</A> )?</TD>
546</TR>
547<TR>
548<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod27">TypeName</A></TD>
549<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
550<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod30">QualifiedName</A></TD>
551</TR>
552<TR>
553<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod18">Identifier</A></TD>
554<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
555<TD ALIGN=LEFT VALIGN=BASELINE>( &lt;IDENTIFIER&gt; | <A HREF="#prod40">StringLiteral</A> )</TD>
556</TR>
557<TR>
558<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod37">OpenField</A></TD>
559<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
560<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod36">NestedField</A> ( &lt;COLON&gt; <A HREF="#prod53">IndexedTypeExpr</A> )?</TD>
561</TR>
562<TR>
563<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod36">NestedField</A></TD>
564<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
Yingyi Buc9bfe252016-03-01 00:02:40 -0800565<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 -0700566</TR>
567<TR>
568<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod40">StringLiteral</A></TD>
569<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
570<TD ALIGN=LEFT VALIGN=BASELINE>&lt;STRING_LITERAL&gt;</TD>
571</TR>
572<TR>
573<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod30">QualifiedName</A></TD>
574<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
575<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod18">Identifier</A> ( &lt;DOT&gt; <A HREF="#prod18">Identifier</A> )?</TD>
576</TR>
577<TR>
578<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod48">DoubleQualifiedName</A></TD>
579<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
580<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>
581</TR>
582<TR>
583<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod4">FunctionDeclaration</A></TD>
584<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
585<TD ALIGN=LEFT VALIGN=BASELINE>"declare" "function" <A HREF="#prod18">Identifier</A> <A HREF="#prod42">ParameterList</A> &lt;LEFTBRACE&gt; <A HREF="#prod43">Expression</A> &lt;RIGHTBRACE&gt;</TD>
586</TR>
587<TR>
588<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod15">Query</A></TD>
589<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
590<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod43">Expression</A></TD>
591</TR>
592<TR>
593<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod43">Expression</A></TD>
594<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
595<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod59">OperatorExpr</A> | <A HREF="#prod60">IfThenElse</A> | <A HREF="#prod61">FLWOGR</A> | <A HREF="#prod62">QuantifiedExpression</A> )</TD>
596</TR>
597<TR>
598<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod59">OperatorExpr</A></TD>
599<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
600<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod63">AndExpr</A> ( &lt;OR&gt; <A HREF="#prod63">AndExpr</A> )*</TD>
601</TR>
602<TR>
603<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod63">AndExpr</A></TD>
604<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
605<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod64">RelExpr</A> ( &lt;AND&gt; <A HREF="#prod64">RelExpr</A> )*</TD>
606</TR>
607<TR>
608<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod64">RelExpr</A></TD>
609<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
610<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod65">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="#prod65">AddExpr</A> )?</TD>
611</TR>
612<TR>
613<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod65">AddExpr</A></TD>
614<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
615<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod66">MultExpr</A> ( ( &lt;PLUS&gt; | &lt;MINUS&gt; ) <A HREF="#prod66">MultExpr</A> )*</TD>
616</TR>
617<TR>
618<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod66">MultExpr</A></TD>
619<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
620<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod67">UnionExpr</A> ( ( &lt;MUL&gt; | &lt;DIV&gt; | &lt;MOD&gt; | &lt;CARET&gt; | &lt;IDIV&gt; ) <A HREF="#prod67">UnionExpr</A> )*</TD>
621</TR>
622<TR>
623<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod67">UnionExpr</A></TD>
624<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
625<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod68">UnaryExpr</A> ( &lt;UNION&gt; ( <A HREF="#prod68">UnaryExpr</A> ) )*</TD>
626</TR>
627<TR>
628<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod68">UnaryExpr</A></TD>
629<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
630<TD ALIGN=LEFT VALIGN=BASELINE>( ( &lt;PLUS&gt; | &lt;MINUS&gt; ) )? <A HREF="#prod69">ValueExpr</A></TD>
631</TR>
632<TR>
633<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod69">ValueExpr</A></TD>
634<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
635<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod70">PrimaryExpr</A> ( <A HREF="#prod71">Field</A> | <A HREF="#prod72">Index</A> )*</TD>
636</TR>
637<TR>
638<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod71">Field</A></TD>
639<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
640<TD ALIGN=LEFT VALIGN=BASELINE>&lt;DOT&gt; <A HREF="#prod18">Identifier</A></TD>
641</TR>
642<TR>
643<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod72">Index</A></TD>
644<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
645<TD ALIGN=LEFT VALIGN=BASELINE>&lt;LEFTBRACKET&gt; ( <A HREF="#prod43">Expression</A> | &lt;QUES&gt; ) &lt;RIGHTBRACKET&gt;</TD>
646</TR>
647<TR>
648<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod70">PrimaryExpr</A></TD>
649<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
650<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod73">FunctionCallExpr</A> | <A HREF="#prod74">Literal</A> | <A HREF="#prod75">DatasetAccessExpression</A> | <A HREF="#prod76">VariableRef</A> | <A HREF="#prod77">ListConstructor</A> | <A HREF="#prod78">RecordConstructor</A> | <A HREF="#prod79">ParenthesizedExpression</A> )</TD>
651</TR>
652<TR>
653<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod74">Literal</A></TD>
654<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
655<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod40">StringLiteral</A> | &lt;INTEGER_LITERAL&gt; | &lt;FLOAT_LITERAL&gt; | &lt;DOUBLE_LITERAL&gt; | &lt;NULL&gt; | &lt;TRUE&gt; | &lt;FALSE&gt; )</TD>
656</TR>
657<TR>
658<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod76">VariableRef</A></TD>
659<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
660<TD ALIGN=LEFT VALIGN=BASELINE>&lt;VARIABLE&gt;</TD>
661</TR>
662<TR>
663<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod49">Variable</A></TD>
664<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
665<TD ALIGN=LEFT VALIGN=BASELINE>&lt;VARIABLE&gt;</TD>
666</TR>
667<TR>
668<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod77">ListConstructor</A></TD>
669<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
670<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod80">OrderedListConstructor</A> | <A HREF="#prod81">UnorderedListConstructor</A> )</TD>
671</TR>
672<TR>
673<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod80">OrderedListConstructor</A></TD>
674<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
675<TD ALIGN=LEFT VALIGN=BASELINE>&lt;LEFTBRACKET&gt; <A HREF="#prod82">ExpressionList</A> &lt;RIGHTBRACKET&gt;</TD>
676</TR>
677<TR>
678<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod81">UnorderedListConstructor</A></TD>
679<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
680<TD ALIGN=LEFT VALIGN=BASELINE>&lt;LEFTDBLBRACE&gt; <A HREF="#prod82">ExpressionList</A> &lt;RIGHTDBLBRACE&gt;</TD>
681</TR>
682<TR>
683<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod82">ExpressionList</A></TD>
684<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
685<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod43">Expression</A> ( &lt;COMMA&gt; <A HREF="#prod82">ExpressionList</A> )? )? ( <A HREF="#prod83">Comma</A> )?</TD>
686</TR>
687<TR>
688<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod83">Comma</A></TD>
689<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
690<TD ALIGN=LEFT VALIGN=BASELINE>&lt;COMMA&gt;</TD>
691</TR>
692<TR>
693<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod78">RecordConstructor</A></TD>
694<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
695<TD ALIGN=LEFT VALIGN=BASELINE>&lt;LEFTBRACE&gt; ( <A HREF="#prod84">FieldBinding</A> ( &lt;COMMA&gt; <A HREF="#prod84">FieldBinding</A> )* )? &lt;RIGHTBRACE&gt;</TD>
696</TR>
697<TR>
698<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod84">FieldBinding</A></TD>
699<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
700<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod43">Expression</A> &lt;COLON&gt; <A HREF="#prod43">Expression</A></TD>
701</TR>
702<TR>
703<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod73">FunctionCallExpr</A></TD>
704<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
705<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>
706</TR>
707<TR>
708<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod75">DatasetAccessExpression</A></TD>
709<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
710<TD ALIGN=LEFT VALIGN=BASELINE>&lt;DATASET&gt; ( ( <A HREF="#prod18">Identifier</A> ( &lt;DOT&gt; <A HREF="#prod18">Identifier</A> )? ) | ( &lt;LEFTPAREN&gt; <A HREF="#prod43">Expression</A> &lt;RIGHTPAREN&gt; ) )</TD>
711</TR>
712<TR>
713<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod79">ParenthesizedExpression</A></TD>
714<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
715<TD ALIGN=LEFT VALIGN=BASELINE>&lt;LEFTPAREN&gt; <A HREF="#prod43">Expression</A> &lt;RIGHTPAREN&gt;</TD>
716</TR>
717<TR>
718<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod60">IfThenElse</A></TD>
719<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
720<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>
721</TR>
722<TR>
723<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod61">FLWOGR</A></TD>
724<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
725<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod85">ForClause</A> | <A HREF="#prod86">LetClause</A> ) ( <A HREF="#prod87">Clause</A> )* ( &lt;RETURN&gt; | &lt;SELECT&gt; ) <A HREF="#prod43">Expression</A></TD>
726</TR>
727<TR>
728<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod87">Clause</A></TD>
729<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
730<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod85">ForClause</A> | <A HREF="#prod86">LetClause</A> | <A HREF="#prod88">WhereClause</A> | <A HREF="#prod89">OrderbyClause</A> | <A HREF="#prod90">GroupClause</A> | <A HREF="#prod91">LimitClause</A> | <A HREF="#prod92">DistinctClause</A> )</TD>
731</TR>
732<TR>
733<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod85">ForClause</A></TD>
734<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
735<TD ALIGN=LEFT VALIGN=BASELINE>( &lt;FOR&gt; | &lt;FROM&gt; ) <A HREF="#prod49">Variable</A> ( &lt;AT&gt; <A HREF="#prod49">Variable</A> )? &lt;IN&gt; ( <A HREF="#prod43">Expression</A> )</TD>
736</TR>
737<TR>
738<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod86">LetClause</A></TD>
739<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
740<TD ALIGN=LEFT VALIGN=BASELINE>( &lt;LET&gt; | &lt;WITH&gt; ) <A HREF="#prod49">Variable</A> &lt;ASSIGN&gt; <A HREF="#prod43">Expression</A></TD>
741</TR>
742<TR>
743<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod88">WhereClause</A></TD>
744<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
745<TD ALIGN=LEFT VALIGN=BASELINE>&lt;WHERE&gt; <A HREF="#prod43">Expression</A></TD>
746</TR>
747<TR>
748<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod89">OrderbyClause</A></TD>
749<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
750<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>
751</TR>
752<TR>
753<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod90">GroupClause</A></TD>
754<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
755<TD ALIGN=LEFT VALIGN=BASELINE>&lt;GROUP&gt; &lt;BY&gt; ( <A HREF="#prod49">Variable</A> &lt;ASSIGN&gt; )? <A HREF="#prod43">Expression</A> ( &lt;COMMA&gt; ( <A HREF="#prod49">Variable</A> &lt;ASSIGN&gt; )? <A HREF="#prod43">Expression</A> )* ( &lt;DECOR&gt; <A HREF="#prod49">Variable</A> &lt;ASSIGN&gt; <A HREF="#prod43">Expression</A> ( &lt;COMMA&gt; &lt;DECOR&gt; <A HREF="#prod49">Variable</A> &lt;ASSIGN&gt; <A HREF="#prod43">Expression</A> )* )? ( &lt;WITH&gt; | &lt;KEEPING&gt; ) <A HREF="#prod76">VariableRef</A> ( &lt;COMMA&gt; <A HREF="#prod76">VariableRef</A> )*</TD>
756</TR>
757<TR>
758<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod91">LimitClause</A></TD>
759<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
760<TD ALIGN=LEFT VALIGN=BASELINE>&lt;LIMIT&gt; <A HREF="#prod43">Expression</A> ( &lt;OFFSET&gt; <A HREF="#prod43">Expression</A> )?</TD>
761</TR>
762<TR>
763<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod92">DistinctClause</A></TD>
764<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
765<TD ALIGN=LEFT VALIGN=BASELINE>&lt;DISTINCT&gt; &lt;BY&gt; <A HREF="#prod43">Expression</A> ( &lt;COMMA&gt; <A HREF="#prod43">Expression</A> )*</TD>
766</TR>
767<TR>
768<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod62">QuantifiedExpression</A></TD>
769<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
770<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>
771</TR>
772</TABLE>
773</BODY>
774</HTML>