Repository: incubator-asterixdb Updated Branches: refs/heads/master a3d21f6c0 -> 6d57e49f6
http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/6d57e49f/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.html ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.html b/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.html index bbecc21..797ee69 100644 --- a/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.html +++ b/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.html @@ -29,6 +29,7 @@ | <CONNECT: "connect"> | <CORRELATE: "correlate"> | <DATASET: "table"> +| <COLLECTION: "collection"> | <DATAVERSE: "database"> | <DECLARE: "declare"> | <DEFINITION: "definition"> @@ -210,7 +211,8 @@ <TD> <PRE> <DEFAULT,IN_DBL_BRACE> TOKEN : { -<NULL: "null"> +<MISSING: "missing"> +| <NULL: "null"> | <TRUE: "true"> | <FALSE: "false"> } @@ -259,8 +261,8 @@ <TD> <PRE> <DEFAULT,IN_DBL_BRACE> TOKEN : { -<QUOTED_STRING: "\"" (<EscapeQuot> | <EscapeBslash> | <EscapeSlash> | <EscapeBspace> | <EscapeFormf> | <EscapeNl> | <EscapeCr> | <EscapeTab> | ~["\"","\\"])* "\""> -| <STRING_LITERAL: "\'" (<EscapeQuot> | <EscapeApos> | <EscapeBslash> | <EscapeSlash> | <EscapeBspace> | <EscapeFormf> | <EscapeNl> | <EscapeCr> | <EscapeTab> | ~["\'","\\"])* "\'"> +<QUOTED_STRING: "`" (<EscapeQuot> | <EscapeBslash> | <EscapeSlash> | <EscapeBspace> | <EscapeFormf> | <EscapeNl> | <EscapeCr> | <EscapeTab> | ~["`","\\"])* "`"> +| <STRING_LITERAL: "\"" (<EscapeQuot> | <EscapeBslash> | <EscapeSlash> | <EscapeBspace> | <EscapeFormf> | <EscapeNl> | <EscapeCr> | <EscapeTab> | ~["\"","\\"])* "\"" | "\'" (<EscapeApos> | <EscapeBslash> | <EscapeSlash> | <EscapeBspace> | <EscapeFormf> | <EscapeNl> | <EscapeCr> | <EscapeTab> | ~["\'","\\"])* "\'"> | <#EscapeQuot: "\\\""> | <#EscapeApos: "\\\'"> | <#EscapeBslash: "\\\\"> @@ -403,60 +405,60 @@ <TR> <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod21">DatasetSpecification</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE>( <EXTERNAL> <DATASET> <A HREF="#prod30">QualifiedName</A> <LEFTPAREN> <A HREF="#prod27">TypeName</A> <RIGHTPAREN> <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> )? <DATASET> <A HREF="#prod30">QualifiedName</A> <LEFTPAREN> <A HREF="#prod27">TypeName</A> <RIGHTPAREN> ( <WITH> <A HREF="#prod18">Identifier</A> <LEFTPAREN> <A HREF="#prod27">TypeName</A> <RIGHTPAREN> )? <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> +<TD ALIGN=LEFT VALIGN=BASELINE>( <EXTERNAL> <A HREF="#prod30">Dataset</A> <A HREF="#prod31">QualifiedName</A> <LEFTPAREN> <A HREF="#prod27">TypeName</A> <RIGHTPAREN> <A HREF="#prod28">IfNotExists</A> <USING> <A HREF="#prod32">AdapterName</A> <A HREF="#prod33">Configuration</A> ( <ON> <A HREF="#prod18">Identifier</A> )? ( <HINTS> <A HREF="#prod34">Properties</A> )? ( <USING> <COMPACTION> <POLICY> <A HREF="#prod35">CompactionPolicy</A> ( <A HREF="#prod33">Configuration</A> )? )? | ( <INTERNAL> | <TEMPORARY> )? <A HREF="#prod30">Dataset</A> <A HREF="#prod31">QualifiedName</A> <LEFTPAREN> <A HREF="#prod27">TypeName</A> <RIGHTPAREN> ( <WITH> <A HREF="#prod18">Identifier</A> <LEFTPAREN> <A HREF="#prod27">TypeName</A> <RIGHTPAREN> )? <A HREF="#prod28">IfNotExists</A> <A HREF="#prod36">PrimaryKey</A> ( <AUTOGENERATED> )? ( <ON> <A HREF="#prod18">Identifier</A> )? ( <HINTS> <A HR EF="#prod34">Properties</A> )? ( <USING> <COMPACTION> <POLICY> <A HREF="#prod35">CompactionPolicy</A> ( <A HREF="#prod33">Configuration</A> )? )? ( <WITH> <FILTER> <ON> <A HREF="#prod37">NestedField</A> )? )</TD> </TR> <TR> <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod16">RefreshExternalDatasetStatement</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><REFRESH> <EXTERNAL> <DATASET> <A HREF="#prod30">QualifiedName</A></TD> +<TD ALIGN=LEFT VALIGN=BASELINE><REFRESH> <EXTERNAL> <A HREF="#prod30">Dataset</A> <A HREF="#prod31">QualifiedName</A></TD> </TR> <TR> <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod17">RunStatement</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><RUN> <A HREF="#prod18">Identifier</A> <LEFTPAREN> ( <A HREF="#prod18">Identifier</A> ( <COMMA> )? )* <RIGHTPAREN> <FROM> <DATASET> <A HREF="#prod30">QualifiedName</A> <TO> <DATASET> <A HREF="#prod30">QualifiedName</A></TD> +<TD ALIGN=LEFT VALIGN=BASELINE><RUN> <A HREF="#prod18">Identifier</A> <LEFTPAREN> ( <A HREF="#prod18">Identifier</A> ( <COMMA> )? )* <RIGHTPAREN> <FROM> <A HREF="#prod30">Dataset</A> <A HREF="#prod31">QualifiedName</A> <TO> <A HREF="#prod30">Dataset</A> <A HREF="#prod31">QualifiedName</A></TD> </TR> <TR> <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod22">IndexSpecification</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><INDEX> <A HREF="#prod18">Identifier</A> <A HREF="#prod28">IfNotExists</A> <ON> <A HREF="#prod30">QualifiedName</A> <LEFTPAREN> ( <A HREF="#prod37">OpenField</A> ) ( <COMMA> <A HREF="#prod37">OpenField</A> )* <RIGHTPAREN> ( <TYPE> <A HREF="#prod38">IndexType</A> )? ( <ENFORCED> )?</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><INDEX> <A HREF="#prod18">Identifier</A> <A HREF="#prod28">IfNotExists</A> <ON> <A HREF="#prod31">QualifiedName</A> <LEFTPAREN> ( <A HREF="#prod38">OpenField</A> ) ( <COMMA> <A HREF="#prod38">OpenField</A> )* <RIGHTPAREN> ( <TYPE> <A HREF="#prod39">IndexType</A> )? ( <ENFORCED> )?</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod34">CompactionPolicy</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod35">CompactionPolicy</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> <TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod18">Identifier</A></TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod39">FilterField</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod40">FilterField</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> <TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod18">Identifier</A></TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod38">IndexType</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod39">IndexType</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> <TD ALIGN=LEFT VALIGN=BASELINE>( <BTREE> | <RTREE> | <KEYWORD> | <NGRAM> <LEFTPAREN> <INTEGER_LITERAL> <RIGHTPAREN> )</TD> </TR> <TR> <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod23">DataverseSpecification</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><DATAVERSE> <A HREF="#prod18">Identifier</A> <A HREF="#prod28">IfNotExists</A> ( <WITH> <FORMAT> <A HREF="#prod40">QuotedString</A> )?</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><DATAVERSE> <A HREF="#prod18">Identifier</A> <A HREF="#prod28">IfNotExists</A> ( <WITH> <FORMAT> <A HREF="#prod41">ConstantString</A> )?</TD> </TR> <TR> <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod24">FunctionSpecification</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><FUNCTION> <A HREF="#prod41">FunctionName</A> <A HREF="#prod28">IfNotExists</A> <A HREF="#prod42">ParameterList</A> <LEFTBRACE> <A HREF="#prod43">Expression</A> <RIGHTBRACE></TD> +<TD ALIGN=LEFT VALIGN=BASELINE><FUNCTION> <A HREF="#prod42">FunctionName</A> <A HREF="#prod28">IfNotExists</A> <A HREF="#prod43">ParameterList</A> <LEFTBRACE> <A HREF="#prod44">Expression</A> <RIGHTBRACE></TD> </TR> <TR> <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod25">FeedSpecification</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE>( <SECONDARY> <FEED> <A HREF="#prod30">QualifiedName</A> <A HREF="#prod28">IfNotExists</A> <FROM> <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> +<TD ALIGN=LEFT VALIGN=BASELINE>( <SECONDARY> <FEED> <A HREF="#prod31">QualifiedName</A> <A HREF="#prod28">IfNotExists</A> <FROM> <FEED> <A HREF="#prod31">QualifiedName</A> ( <A HREF="#prod45">ApplyFunction</A> )? | ( <PRIMARY> )? <FEED> <A HREF="#prod31">QualifiedName</A> <A HREF="#prod28">IfNotExists</A> <USING> <A HREF="#prod32">AdapterName</A> <A HREF="#prod33">Configuration</A> ( <A HREF="#prod45">ApplyFunction</A> )? )</TD> </TR> <TR> <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod26">FeedPolicySpecification</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE>( <INGESTION> <POLICY> <A HREF="#prod18">Identifier</A> <A HREF="#prod28">IfNotExists</A> <FROM> ( <POLICY> <A HREF="#prod18">Identifier</A> <A HREF="#prod32">Configuration</A> ( <DEFINITION> <A HREF="#prod40">QuotedString</A> )? | <PATH> <A HREF="#prod18">Identifier</A> ( <DEFINITION> <A HREF="#prod40">QuotedString</A> )? ) )</TD> +<TD ALIGN=LEFT VALIGN=BASELINE>( <INGESTION> <POLICY> <A HREF="#prod18">Identifier</A> <A HREF="#prod28">IfNotExists</A> <FROM> ( <POLICY> <A HREF="#prod18">Identifier</A> <A HREF="#prod33">Configuration</A> ( <DEFINITION> <A HREF="#prod41">ConstantString</A> )? | <PATH> <A HREF="#prod18">Identifier</A> ( <DEFINITION> <A HREF="#prod41">ConstantString</A> )? ) )</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod42">ParameterList</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod43">ParameterList</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> <TD ALIGN=LEFT VALIGN=BASELINE><LEFTPAREN> ( <IDENTIFIER> ( <COMMA> <IDENTIFIER> )* )? <RIGHTPAREN></TD> </TR> @@ -466,429 +468,439 @@ <TD ALIGN=LEFT VALIGN=BASELINE>( <IF> ( "not exists" | "NOT EXISTS" ) )?</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod44">ApplyFunction</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod45">ApplyFunction</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><APPLY> <FUNCTION> <A HREF="#prod41">FunctionName</A></TD> +<TD ALIGN=LEFT VALIGN=BASELINE><APPLY> <FUNCTION> <A HREF="#prod42">FunctionName</A></TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod45">GetPolicy</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod46">GetPolicy</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> <TD ALIGN=LEFT VALIGN=BASELINE><USING> <POLICY> <A HREF="#prod18">Identifier</A></TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod46">FunctionSignature</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod47">FunctionSignature</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod41">FunctionName</A> <ATT> <INTEGER_LITERAL></TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod42">FunctionName</A> <ATT> <INTEGER_LITERAL></TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod35">PrimaryKey</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod36">PrimaryKey</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><PRIMARY> <KEY> <A HREF="#prod36">NestedField</A> ( <COMMA> <A HREF="#prod36">NestedField</A> )*</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><PRIMARY> <KEY> <A HREF="#prod37">NestedField</A> ( <COMMA> <A HREF="#prod37">NestedField</A> )*</TD> </TR> <TR> <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod7">DropStatement</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><DROP> ( <DATASET> <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> +<TD ALIGN=LEFT VALIGN=BASELINE><DROP> ( <A HREF="#prod30">Dataset</A> <A HREF="#prod31">QualifiedName</A> <A HREF="#prod48">IfExists</A> | <INDEX> <A HREF="#prod49">DoubleQualifiedName</A> <A HREF="#prod48">IfExists</A> | <NODEGROUP> <A HREF="#prod18">Identifier</A> <A HREF="#prod48">IfExists</A> | <TYPE> <A HREF="#prod27">TypeName</A> <A HREF="#prod48">IfExists</A> | <DATAVERSE> <A HREF="#prod18">Identifier</A> <A HREF="#prod48">IfExists</A> | <FUNCTION> <A HREF="#prod47">FunctionSignature</A> <A HREF="#prod48">IfExists</A> | <FEED> <A HREF="#prod31">QualifiedName</A> <A HREF="#prod48">IfExists</A> )</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod47">IfExists</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod48">IfExists</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> <TD ALIGN=LEFT VALIGN=BASELINE>( <IF> <EXISTS> )?</TD> </TR> <TR> <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod10">InsertStatement</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><INSERT> <INTO> <A HREF="#prod30">QualifiedName</A> <A HREF="#prod15">Query</A></TD> +<TD ALIGN=LEFT VALIGN=BASELINE><INSERT> <INTO> <A HREF="#prod31">QualifiedName</A> <A HREF="#prod15">Query</A></TD> </TR> <TR> <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod11">DeleteStatement</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><DELETE> <A HREF="#prod49">Variable</A> <FROM> <A HREF="#prod30">QualifiedName</A> ( <WHERE> <A HREF="#prod43">Expression</A> )?</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><DELETE> <A HREF="#prod50">Variable</A> <FROM> <A HREF="#prod31">QualifiedName</A> ( <WHERE> <A HREF="#prod44">Expression</A> )?</TD> </TR> <TR> <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod12">UpdateStatement</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><UPDATE> <A HREF="#prod49">Variable</A> <IN> <A HREF="#prod43">Expression</A> <WHERE> <A HREF="#prod43">Expression</A> <LEFTPAREN> ( <A HREF="#prod50">UpdateClause</A> ( <COMMA> <A HREF="#prod50">UpdateClause</A> )* ) <RIGHTPAREN></TD> +<TD ALIGN=LEFT VALIGN=BASELINE><UPDATE> <A HREF="#prod50">Variable</A> <IN> <A HREF="#prod44">Expression</A> <WHERE> <A HREF="#prod44">Expression</A> <LEFTPAREN> ( <A HREF="#prod51">UpdateClause</A> ( <COMMA> <A HREF="#prod51">UpdateClause</A> )* ) <RIGHTPAREN></TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod50">UpdateClause</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod51">UpdateClause</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE>( <SET> <A HREF="#prod43">Expression</A> <EQ> <A HREF="#prod43">Expression</A> | <A HREF="#prod10">InsertStatement</A> | <A HREF="#prod11">DeleteStatement</A> | <A HREF="#prod12">UpdateStatement</A> | <IF> <LEFTPAREN> <A HREF="#prod43">Expression</A> <RIGHTPAREN> <THEN> <A HREF="#prod50">UpdateClause</A> ( <ELSE> <A HREF="#prod50">UpdateClause</A> )? )</TD> +<TD ALIGN=LEFT VALIGN=BASELINE>( <SET> <A HREF="#prod44">Expression</A> <EQ> <A HREF="#prod44">Expression</A> | <A HREF="#prod10">InsertStatement</A> | <A HREF="#prod11">DeleteStatement</A> | <A HREF="#prod12">UpdateStatement</A> | <IF> <LEFTPAREN> <A HREF="#prod44">Expression</A> <RIGHTPAREN> <THEN> <A HREF="#prod51">UpdateClause</A> ( <ELSE> <A HREF="#prod51">UpdateClause</A> )? )</TD> </TR> <TR> <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod9">SetStatement</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><SET> <A HREF="#prod18">Identifier</A> <A HREF="#prod40">QuotedString</A></TD> +<TD ALIGN=LEFT VALIGN=BASELINE><SET> <A HREF="#prod18">Identifier</A> <A HREF="#prod41">ConstantString</A></TD> </TR> <TR> <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod8">WriteStatement</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><WRITE> <OUTPUT> <TO> <A HREF="#prod18">Identifier</A> <COLON> <A HREF="#prod40">QuotedString</A> ( <USING> <A HREF="#prod40">QuotedString</A> )?</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><WRITE> <OUTPUT> <TO> <A HREF="#prod18">Identifier</A> <COLON> <A HREF="#prod41">ConstantString</A> ( <USING> <A HREF="#prod41">ConstantString</A> )?</TD> </TR> <TR> <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod6">LoadStatement</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><LOAD> <DATASET> <A HREF="#prod30">QualifiedName</A> <USING> <A HREF="#prod31">AdapterName</A> <A HREF="#prod32">Configuration</A> ( <PRESORTED> )?</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><LOAD> <A HREF="#prod30">Dataset</A> <A HREF="#prod31">QualifiedName</A> <USING> <A HREF="#prod32">AdapterName</A> <A HREF="#prod33">Configuration</A> ( <PRESORTED> )?</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod31">AdapterName</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod32">AdapterName</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> <TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod18">Identifier</A></TD> </TR> <TR> <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod14">CompactStatement</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><COMPACT> <DATASET> <A HREF="#prod30">QualifiedName</A></TD> +<TD ALIGN=LEFT VALIGN=BASELINE><COMPACT> <A HREF="#prod30">Dataset</A> <A HREF="#prod31">QualifiedName</A></TD> </TR> <TR> <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod13">FeedStatement</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE>( <CONNECT> <FEED> <A HREF="#prod30">QualifiedName</A> <TO> <DATASET> <A HREF="#prod30">QualifiedName</A> ( <A HREF="#prod45">GetPolicy</A> )? | <DISCONNECT> <FEED> <A HREF="#prod30">QualifiedName</A> <FROM> <DATASET> <A HREF="#prod30">QualifiedName</A> )</TD> +<TD ALIGN=LEFT VALIGN=BASELINE>( <CONNECT> <FEED> <A HREF="#prod31">QualifiedName</A> <TO> <A HREF="#prod30">Dataset</A> <A HREF="#prod31">QualifiedName</A> ( <A HREF="#prod46">GetPolicy</A> )? | <DISCONNECT> <FEED> <A HREF="#prod31">QualifiedName</A> <FROM> <A HREF="#prod30">Dataset</A> <A HREF="#prod31">QualifiedName</A> )</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod32">Configuration</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod33">Configuration</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><LEFTPAREN> ( <A HREF="#prod51">KeyValuePair</A> ( <COMMA> <A HREF="#prod51">KeyValuePair</A> )* )? <RIGHTPAREN></TD> +<TD ALIGN=LEFT VALIGN=BASELINE><LEFTPAREN> ( <A HREF="#prod52">KeyValuePair</A> ( <COMMA> <A HREF="#prod52">KeyValuePair</A> )* )? <RIGHTPAREN></TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod51">KeyValuePair</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod52">KeyValuePair</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><LEFTPAREN> <A HREF="#prod40">QuotedString</A> <EQ> <A HREF="#prod40">QuotedString</A> <RIGHTPAREN></TD> +<TD ALIGN=LEFT VALIGN=BASELINE><LEFTPAREN> <A HREF="#prod41">ConstantString</A> <EQ> <A HREF="#prod41">ConstantString</A> <RIGHTPAREN></TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod33">Properties</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod34">Properties</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE>( <LEFTPAREN> <A HREF="#prod52">Property</A> ( <COMMA> <A HREF="#prod52">Property</A> )* <RIGHTPAREN> )?</TD> +<TD ALIGN=LEFT VALIGN=BASELINE>( <LEFTPAREN> <A HREF="#prod53">Property</A> ( <COMMA> <A HREF="#prod53">Property</A> )* <RIGHTPAREN> )?</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod52">Property</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod53">Property</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod18">Identifier</A> <EQ> ( <A HREF="#prod40">QuotedString</A> | <INTEGER_LITERAL> )</TD> +<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod18">Identifier</A> | <A HREF="#prod54">StringLiteral</A> ) <EQ> ( <A HREF="#prod41">ConstantString</A> | <INTEGER_LITERAL> )</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod53">IndexedTypeExpr</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod55">IndexedTypeExpr</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod54">TypeReference</A> | <A HREF="#prod55">OrderedListTypeDef</A> | <A HREF="#prod56">UnorderedListTypeDef</A> )</TD> +<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod56">TypeReference</A> | <A HREF="#prod57">OrderedListTypeDef</A> | <A HREF="#prod58">UnorderedListTypeDef</A> )</TD> </TR> <TR> <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod29">TypeExpr</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<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> +<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod59">RecordTypeDef</A> | <A HREF="#prod56">TypeReference</A> | <A HREF="#prod57">OrderedListTypeDef</A> | <A HREF="#prod58">UnorderedListTypeDef</A> )</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod57">RecordTypeDef</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod59">RecordTypeDef</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE>( <CLOSED> | <OPEN> )? <LEFTBRACE> ( <A HREF="#prod58">RecordField</A> ( <COMMA> <A HREF="#prod58">RecordField</A> )* )? <RIGHTBRACE></TD> +<TD ALIGN=LEFT VALIGN=BASELINE>( <CLOSED> | <OPEN> )? <LEFTBRACE> ( <A HREF="#prod60">RecordField</A> ( <COMMA> <A HREF="#prod60">RecordField</A> )* )? <RIGHTBRACE></TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod58">RecordField</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod60">RecordField</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> <TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod18">Identifier</A> <COLON> <A HREF="#prod29">TypeExpr</A> ( <QUES> )?</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod54">TypeReference</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod56">TypeReference</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> <TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod18">Identifier</A></TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod55">OrderedListTypeDef</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod57">OrderedListTypeDef</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> <TD ALIGN=LEFT VALIGN=BASELINE><LEFTBRACKET> ( <A HREF="#prod29">TypeExpr</A> ) <RIGHTBRACKET></TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod56">UnorderedListTypeDef</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod58">UnorderedListTypeDef</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> <TD ALIGN=LEFT VALIGN=BASELINE><LEFTDBLBRACE> ( <A HREF="#prod29">TypeExpr</A> ) <RIGHTDBLBRACE></TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod41">FunctionName</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod42">FunctionName</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> <TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod18">Identifier</A> ( <DOT> <A HREF="#prod18">Identifier</A> ( <SHARP> <A HREF="#prod18">Identifier</A> )? | <SHARP> <A HREF="#prod18">Identifier</A> )?</TD> </TR> <TR> <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod27">TypeName</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod30">QualifiedName</A></TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod31">QualifiedName</A></TD> </TR> <TR> <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod18">Identifier</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE>( <IDENTIFIER> | <A HREF="#prod40">QuotedString</A> )</TD> +<TD ALIGN=LEFT VALIGN=BASELINE>( <IDENTIFIER> | <A HREF="#prod61">QuotedString</A> )</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod37">OpenField</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod30">Dataset</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod36">NestedField</A> ( <COLON> <A HREF="#prod53">IndexedTypeExpr</A> )?</TD> +<TD ALIGN=LEFT VALIGN=BASELINE>( <DATASET> | <COLLECTION> )</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod36">NestedField</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod38">OpenField</A></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod37">NestedField</A> ( <COLON> <A HREF="#prod55">IndexedTypeExpr</A> )?</TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod37">NestedField</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> <TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod18">Identifier</A> ( <LEFTPAREN> <RIGHTPAREN> )? ( <DOT> <A HREF="#prod18">Identifier</A> )*</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod40">QuotedString</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod41">ConstantString</A></TD> +<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> +<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod61">QuotedString</A> | <A HREF="#prod54">StringLiteral</A> )</TD> +</TR> +<TR> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod61">QuotedString</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> <TD ALIGN=LEFT VALIGN=BASELINE><QUOTED_STRING></TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod59">StringLiteral</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod54">StringLiteral</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> <TD ALIGN=LEFT VALIGN=BASELINE><STRING_LITERAL></TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod30">QualifiedName</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod31">QualifiedName</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> <TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod18">Identifier</A> ( <DOT> <A HREF="#prod18">Identifier</A> )?</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod48">DoubleQualifiedName</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod49">DoubleQualifiedName</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> <TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod18">Identifier</A> <DOT> <A HREF="#prod18">Identifier</A> ( <DOT> <A HREF="#prod18">Identifier</A> )?</TD> </TR> <TR> <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod4">FunctionDeclaration</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><DECLARE> <FUNCTION> <A HREF="#prod18">Identifier</A> <A HREF="#prod42">ParameterList</A> <LEFTBRACE> <A HREF="#prod43">Expression</A> <RIGHTBRACE></TD> +<TD ALIGN=LEFT VALIGN=BASELINE><DECLARE> <FUNCTION> <A HREF="#prod18">Identifier</A> <A HREF="#prod43">ParameterList</A> <LEFTBRACE> <A HREF="#prod44">Expression</A> <RIGHTBRACE></TD> </TR> <TR> <TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod15">Query</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod43">Expression</A> | <A HREF="#prod60">SelectExpression</A> )</TD> +<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod44">Expression</A> | <A HREF="#prod62">SelectExpression</A> )</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod43">Expression</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod44">Expression</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod61">OperatorExpr</A> | <A HREF="#prod62">IfThenElse</A> | <A HREF="#prod63">QuantifiedExpression</A> )</TD> +<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod63">OperatorExpr</A> | <A HREF="#prod64">IfThenElse</A> | <A HREF="#prod65">QuantifiedExpression</A> )</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod61">OperatorExpr</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod63">OperatorExpr</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod64">AndExpr</A> ( <OR> <A HREF="#prod64">AndExpr</A> )*</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod66">AndExpr</A> ( <OR> <A HREF="#prod66">AndExpr</A> )*</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod64">AndExpr</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod66">AndExpr</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod65">RelExpr</A> ( <AND> <A HREF="#prod65">RelExpr</A> )*</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod67">RelExpr</A> ( <AND> <A HREF="#prod67">RelExpr</A> )*</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod65">RelExpr</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod67">RelExpr</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod66">AddExpr</A> ( ( <LT> | <GT> | <LE> | <GE> | <EQ> | <NE> | <SIMILAR> ) <A HREF="#prod66">AddExpr</A> )?</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod68">AddExpr</A> ( ( <LT> | <GT> | <LE> | <GE> | <EQ> | <NE> | <SIMILAR> ) <A HREF="#prod68">AddExpr</A> )?</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod66">AddExpr</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod68">AddExpr</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod67">MultExpr</A> ( ( <PLUS> | <MINUS> ) <A HREF="#prod67">MultExpr</A> )*</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod69">MultExpr</A> ( ( <PLUS> | <MINUS> ) <A HREF="#prod69">MultExpr</A> )*</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod67">MultExpr</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod69">MultExpr</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod68">UnaryExpr</A> ( ( <MUL> | <DIV> | <MOD> | <CARET> | <IDIV> ) <A HREF="#prod68">UnaryExpr</A> )*</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod70">UnaryExpr</A> ( ( <MUL> | <DIV> | <MOD> | <CARET> | <IDIV> ) <A HREF="#prod70">UnaryExpr</A> )*</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod68">UnaryExpr</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod70">UnaryExpr</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE>( ( <PLUS> | <MINUS> ) )? <A HREF="#prod69">ValueExpr</A></TD> +<TD ALIGN=LEFT VALIGN=BASELINE>( ( <PLUS> | <MINUS> ) )? <A HREF="#prod71">ValueExpr</A></TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod69">ValueExpr</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod71">ValueExpr</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod70">PrimaryExpr</A> ( <A HREF="#prod71">Field</A> | <A HREF="#prod72">Index</A> )*</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod72">PrimaryExpr</A> ( <A HREF="#prod73">Field</A> | <A HREF="#prod74">Index</A> )*</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod71">Field</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod73">Field</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> <TD ALIGN=LEFT VALIGN=BASELINE><DOT> <A HREF="#prod18">Identifier</A></TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod72">Index</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod74">Index</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><LEFTBRACKET> ( <A HREF="#prod43">Expression</A> | <QUES> ) <RIGHTBRACKET></TD> +<TD ALIGN=LEFT VALIGN=BASELINE><LEFTBRACKET> ( <A HREF="#prod44">Expression</A> | <QUES> ) <RIGHTBRACKET></TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod70">PrimaryExpr</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod72">PrimaryExpr</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<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> +<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod75">FunctionCallExpr</A> | <A HREF="#prod76">Literal</A> | <A HREF="#prod77">VariableRef</A> | <A HREF="#prod78">ListConstructor</A> | <A HREF="#prod79">RecordConstructor</A> | <A HREF="#prod80">ParenthesizedExpression</A> )</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod74">Literal</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod76">Literal</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod59">StringLiteral</A> | <INTEGER_LITERAL> | <FLOAT_LITERAL> | <DOUBLE_LITERAL> | <NULL> | <TRUE> | <FALSE> )</TD> +<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod54">StringLiteral</A> | <INTEGER_LITERAL> | <FLOAT_LITERAL> | <DOUBLE_LITERAL> | <MISSING> | <NULL> | <TRUE> | <FALSE> )</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod75">VariableRef</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod77">VariableRef</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE>( <IDENTIFIER> | <A HREF="#prod40">QuotedString</A> )</TD> +<TD ALIGN=LEFT VALIGN=BASELINE>( <IDENTIFIER> | <A HREF="#prod61">QuotedString</A> )</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod49">Variable</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod50">Variable</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE>( <IDENTIFIER> | <A HREF="#prod40">QuotedString</A> )</TD> +<TD ALIGN=LEFT VALIGN=BASELINE>( <IDENTIFIER> | <A HREF="#prod61">QuotedString</A> )</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod76">ListConstructor</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod78">ListConstructor</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod79">OrderedListConstructor</A> | <A HREF="#prod80">UnorderedListConstructor</A> )</TD> +<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod81">OrderedListConstructor</A> | <A HREF="#prod82">UnorderedListConstructor</A> )</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod79">OrderedListConstructor</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod81">OrderedListConstructor</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><LEFTBRACKET> <A HREF="#prod81">ExpressionList</A> <RIGHTBRACKET></TD> +<TD ALIGN=LEFT VALIGN=BASELINE><LEFTBRACKET> <A HREF="#prod83">ExpressionList</A> <RIGHTBRACKET></TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod80">UnorderedListConstructor</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod82">UnorderedListConstructor</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><LEFTDBLBRACE> <A HREF="#prod81">ExpressionList</A> <RIGHTDBLBRACE></TD> +<TD ALIGN=LEFT VALIGN=BASELINE><LEFTDBLBRACE> <A HREF="#prod83">ExpressionList</A> <RIGHTDBLBRACE></TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod81">ExpressionList</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod83">ExpressionList</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod43">Expression</A> ( <COMMA> <A HREF="#prod81">ExpressionList</A> )? )? ( <A HREF="#prod82">Comma</A> )?</TD> +<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod44">Expression</A> ( <COMMA> <A HREF="#prod83">ExpressionList</A> )? )? ( <A HREF="#prod84">Comma</A> )?</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod82">Comma</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod84">Comma</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> <TD ALIGN=LEFT VALIGN=BASELINE><COMMA></TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod77">RecordConstructor</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod79">RecordConstructor</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><LEFTBRACE> ( <A HREF="#prod83">FieldBinding</A> ( <COMMA> <A HREF="#prod83">FieldBinding</A> )* )? <RIGHTBRACE></TD> +<TD ALIGN=LEFT VALIGN=BASELINE><LEFTBRACE> ( <A HREF="#prod85">FieldBinding</A> ( <COMMA> <A HREF="#prod85">FieldBinding</A> )* )? <RIGHTBRACE></TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod83">FieldBinding</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod85">FieldBinding</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod43">Expression</A> <COLON> <A HREF="#prod43">Expression</A></TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod44">Expression</A> <COLON> <A HREF="#prod44">Expression</A></TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod73">FunctionCallExpr</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod75">FunctionCallExpr</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod41">FunctionName</A> <LEFTPAREN> ( <A HREF="#prod43">Expression</A> ( <COMMA> <A HREF="#prod43">Expression</A> )* )? <RIGHTPAREN></TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod42">FunctionName</A> <LEFTPAREN> ( <A HREF="#prod44">Expression</A> ( <COMMA> <A HREF="#prod44">Expression</A> )* )? <RIGHTPAREN></TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod78">ParenthesizedExpression</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod80">ParenthesizedExpression</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE>( <LEFTPAREN> <A HREF="#prod43">Expression</A> <RIGHTPAREN> | <A HREF="#prod84">Subquery</A> )</TD> +<TD ALIGN=LEFT VALIGN=BASELINE>( <LEFTPAREN> <A HREF="#prod44">Expression</A> <RIGHTPAREN> | <A HREF="#prod86">Subquery</A> )</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod62">IfThenElse</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod64">IfThenElse</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><IF> <LEFTPAREN> <A HREF="#prod43">Expression</A> <RIGHTPAREN> <THEN> <A HREF="#prod43">Expression</A> <ELSE> <A HREF="#prod43">Expression</A></TD> +<TD ALIGN=LEFT VALIGN=BASELINE><IF> <LEFTPAREN> <A HREF="#prod44">Expression</A> <RIGHTPAREN> <THEN> <A HREF="#prod44">Expression</A> <ELSE> <A HREF="#prod44">Expression</A></TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod60">SelectExpression</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod62">SelectExpression</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<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> +<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod87">LetClause</A> )? <A HREF="#prod88">SelectSetOperation</A> ( <A HREF="#prod89">OrderbyClause</A> )? ( <A HREF="#prod90">LimitClause</A> )?</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod86">SelectSetOperation</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod88">SelectSetOperation</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod89">SelectBlock</A> ( ( <UNION> | <INTERSECT> | <EXCEPT> ) ( <ALL> )? ( <A HREF="#prod89">SelectBlock</A> | <A HREF="#prod84">Subquery</A> ) )*</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod91">SelectBlock</A> ( ( <UNION> | <INTERSECT> | <EXCEPT> ) ( <ALL> )? ( <A HREF="#prod91">SelectBlock</A> | <A HREF="#prod86">Subquery</A> ) )*</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod84">Subquery</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod86">Subquery</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><LEFTPAREN> <A HREF="#prod60">SelectExpression</A> <RIGHTPAREN></TD> +<TD ALIGN=LEFT VALIGN=BASELINE><LEFTPAREN> <A HREF="#prod62">SelectExpression</A> <RIGHTPAREN></TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod89">SelectBlock</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod91">SelectBlock</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<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> +<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod92">SelectClause</A> ( <A HREF="#prod93">FromClause</A> ( <A HREF="#prod87">LetClause</A> )? )? ( <A HREF="#prod94">WhereClause</A> )? ( <A HREF="#prod95">GroupbyClause</A> ( <A HREF="#prod87">LetClause</A> )? ( <A HREF="#prod96">HavingClause</A> )? )? | <A HREF="#prod93">FromClause</A> ( <A HREF="#prod87">LetClause</A> )? ( <A HREF="#prod94">WhereClause</A> )? ( <A HREF="#prod95">GroupbyClause</A> ( <A HREF="#prod87">LetClause</A> )? ( <A HREF="#prod96">HavingClause</A> )? )? <A HREF="#prod92">SelectClause</A> )</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod90">SelectClause</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod92">SelectClause</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><SELECT> ( <ALL> | <DISTINCT> )? ( <A HREF="#prod95">SelectRegular</A> | <A HREF="#prod96">SelectElement</A> )</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><SELECT> ( <ALL> | <DISTINCT> )? ( <A HREF="#prod97">SelectRegular</A> | <A HREF="#prod98">SelectElement</A> )</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod95">SelectRegular</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod97">SelectRegular</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod97">Projection</A> ( <COMMA> <A HREF="#prod97">Projection</A> )*</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod99">Projection</A> ( <COMMA> <A HREF="#prod99">Projection</A> )*</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod96">SelectElement</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod98">SelectElement</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE>( <RAW> | <ELEMENT> | <VALUE> ) <A HREF="#prod43">Expression</A></TD> +<TD ALIGN=LEFT VALIGN=BASELINE>( <RAW> | <ELEMENT> | <VALUE> ) <A HREF="#prod44">Expression</A></TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod97">Projection</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod99">Projection</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod43">Expression</A> ( <AS> )? <A HREF="#prod18">Identifier</A> | <A HREF="#prod43">Expression</A> <DOT> <MUL> | <MUL> )</TD> +<TD ALIGN=LEFT VALIGN=BASELINE>( <A HREF="#prod44">Expression</A> ( <AS> )? <A HREF="#prod18">Identifier</A> | <A HREF="#prod44">Expression</A> <DOT> <MUL> | <MUL> )</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod91">FromClause</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod93">FromClause</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><FROM> <A HREF="#prod98">FromTerm</A> ( <COMMA> <A HREF="#prod98">FromTerm</A> )*</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><FROM> <A HREF="#prod100">FromTerm</A> ( <COMMA> <A HREF="#prod100">FromTerm</A> )*</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod98">FromTerm</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod100">FromTerm</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod43">Expression</A> ( <AS> )? <A HREF="#prod49">Variable</A> ( <AT> <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> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod44">Expression</A> ( <AS> )? <A HREF="#prod50">Variable</A> ( <AT> <A HREF="#prod50">Variable</A> )? ( ( <A HREF="#prod101">JoinType</A> )? ( <A HREF="#prod102">JoinClause</A> | <A HREF="#prod103">NestClause</A> | <A HREF="#prod104">UnnestClause</A> ) )*</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod100">JoinClause</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod102">JoinClause</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><JOIN> <A HREF="#prod43">Expression</A> ( <AS> )? <A HREF="#prod49">Variable</A> ( <AT> <A HREF="#prod49">Variable</A> )? <ON> <A HREF="#prod43">Expression</A></TD> +<TD ALIGN=LEFT VALIGN=BASELINE><JOIN> <A HREF="#prod44">Expression</A> ( <AS> )? <A HREF="#prod50">Variable</A> ( <AT> <A HREF="#prod50">Variable</A> )? <ON> <A HREF="#prod44">Expression</A></TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod101">NestClause</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod103">NestClause</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><NEST> <A HREF="#prod43">Expression</A> ( <AS> )? <A HREF="#prod49">Variable</A> ( <AT> <A HREF="#prod49">Variable</A> )? <ON> <A HREF="#prod43">Expression</A></TD> +<TD ALIGN=LEFT VALIGN=BASELINE><NEST> <A HREF="#prod44">Expression</A> ( <AS> )? <A HREF="#prod50">Variable</A> ( <AT> <A HREF="#prod50">Variable</A> )? <ON> <A HREF="#prod44">Expression</A></TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod102">UnnestClause</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod104">UnnestClause</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE>( <UNNEST> | <CORRELATE> | <FLATTEN> ) <A HREF="#prod43">Expression</A> ( <AS> )? <A HREF="#prod49">Variable</A> ( <AT> <A HREF="#prod49">Variable</A> )?</TD> +<TD ALIGN=LEFT VALIGN=BASELINE>( <UNNEST> | <CORRELATE> | <FLATTEN> ) <A HREF="#prod44">Expression</A> ( <AS> )? <A HREF="#prod50">Variable</A> ( <AT> <A HREF="#prod50">Variable</A> )?</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod99">JoinType</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod101">JoinType</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> <TD ALIGN=LEFT VALIGN=BASELINE>( <INNER> | <LEFT> ( <OUTER> )? )</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod85">LetClause</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod87">LetClause</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE>( ( <LET> | <LETTING> ) <A HREF="#prod103">LetElement</A> ( <COMMA> <A HREF="#prod103">LetElement</A> )* | <WITH> <A HREF="#prod104">WithElement</A> ( <COMMA> <A HREF="#prod104">WithElement</A> )* )</TD> +<TD ALIGN=LEFT VALIGN=BASELINE>( ( <LET> | <LETTING> ) <A HREF="#prod105">LetElement</A> ( <COMMA> <A HREF="#prod105">LetElement</A> )* | <WITH> <A HREF="#prod106">WithElement</A> ( <COMMA> <A HREF="#prod106">WithElement</A> )* )</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod92">WhereClause</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod94">WhereClause</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><WHERE> <A HREF="#prod43">Expression</A></TD> +<TD ALIGN=LEFT VALIGN=BASELINE><WHERE> <A HREF="#prod44">Expression</A></TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod87">OrderbyClause</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod89">OrderbyClause</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><ORDER> <BY> <A HREF="#prod43">Expression</A> ( ( <ASC> ) | ( <DESC> ) )? ( <COMMA> <A HREF="#prod43">Expression</A> ( ( <ASC> ) | ( <DESC> ) )? )*</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><ORDER> <BY> <A HREF="#prod44">Expression</A> ( ( <ASC> ) | ( <DESC> ) )? ( <COMMA> <A HREF="#prod44">Expression</A> ( ( <ASC> ) | ( <DESC> ) )? )*</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod93">GroupbyClause</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod95">GroupbyClause</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><GROUP> <BY> ( <A HREF="#prod43">Expression</A> ( ( <AS> )? <A HREF="#prod49">Variable</A> )? ( <COMMA> <A HREF="#prod43">Expression</A> ( ( <AS> )? <A HREF="#prod49">Variable</A> )? )* ) ( <GROUP> <AS> <A HREF="#prod49">Variable</A> ( <LEFTPAREN> <A HREF="#prod75">VariableRef</A> <AS> <A HREF="#prod18">Identifier</A> ( <COMMA> <A HREF="#prod75">VariableRef</A> <AS> <A HREF="#prod18">Identifier</A> )* <RIGHTPAREN> )? )?</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><GROUP> <BY> ( <A HREF="#prod44">Expression</A> ( ( <AS> )? <A HREF="#prod50">Variable</A> )? ( <COMMA> <A HREF="#prod44">Expression</A> ( ( <AS> )? <A HREF="#prod50">Variable</A> )? )* ) ( <GROUP> <AS> <A HREF="#prod50">Variable</A> ( <LEFTPAREN> <A HREF="#prod77">VariableRef</A> <AS> <A HREF="#prod18">Identifier</A> ( <COMMA> <A HREF="#prod77">VariableRef</A> <AS> <A HREF="#prod18">Identifier</A> )* <RIGHTPAREN> )? )?</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod94">HavingClause</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod96">HavingClause</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><HAVING> <A HREF="#prod43">Expression</A></TD> +<TD ALIGN=LEFT VALIGN=BASELINE><HAVING> <A HREF="#prod44">Expression</A></TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod88">LimitClause</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod90">LimitClause</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><LIMIT> <A HREF="#prod43">Expression</A> ( <OFFSET> <A HREF="#prod43">Expression</A> )?</TD> +<TD ALIGN=LEFT VALIGN=BASELINE><LIMIT> <A HREF="#prod44">Expression</A> ( <OFFSET> <A HREF="#prod44">Expression</A> )?</TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod63">QuantifiedExpression</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod65">QuantifiedExpression</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE>( ( <SOME> ) | ( <EVERY> ) ) <A HREF="#prod49">Variable</A> <IN> <A HREF="#prod43">Expression</A> ( <COMMA> <A HREF="#prod49">Variable</A> <IN> <A HREF="#prod43">Expression</A> )* <SATISFIES> <A HREF="#prod43">Expression</A></TD> +<TD ALIGN=LEFT VALIGN=BASELINE>( ( <SOME> ) | ( <EVERY> ) ) <A HREF="#prod50">Variable</A> <IN> <A HREF="#prod44">Expression</A> ( <COMMA> <A HREF="#prod50">Variable</A> <IN> <A HREF="#prod44">Expression</A> )* <SATISFIES> <A HREF="#prod44">Expression</A></TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod103">LetElement</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod105">LetElement</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod49">Variable</A> <EQ> <A HREF="#prod43">Expression</A></TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod50">Variable</A> <EQ> <A HREF="#prod44">Expression</A></TD> </TR> <TR> -<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod104">WithElement</A></TD> +<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod106">WithElement</A></TD> <TD ALIGN=CENTER VALIGN=BASELINE>::=</TD> -<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod49">Variable</A> <AS> <A HREF="#prod43">Expression</A></TD> +<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod50">Variable</A> <AS> <A HREF="#prod44">Expression</A></TD> </TR> </TABLE> </BODY> http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/6d57e49f/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj ---------------------------------------------------------------------- diff --git a/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj b/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj index c26edc1..fc94d8b 100644 --- a/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj +++ b/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj @@ -646,7 +646,7 @@ CreateDataverseStatement DataverseSpecification() throws ParseException : { <DATAVERSE> dvName = Identifier() ifNotExists = IfNotExists() - ( LOOKAHEAD(1) <WITH> <FORMAT> format = QuotedString() )? + ( LOOKAHEAD(1) <WITH> <FORMAT> format = ConstantString() )? { return new CreateDataverseStatement(new Identifier(dvName), format, ifNotExists); } @@ -731,18 +731,17 @@ CreateFeedPolicyStatement FeedPolicySpecification() throws ParseException: { ( <INGESTION> <POLICY> policyName = Identifier() ifNotExists = IfNotExists() - <FROM> - (<POLICY> basePolicyName = Identifier() properties = Configuration() (<DEFINITION> definition = QuotedString())? + <FROM> + (<POLICY> basePolicyName = Identifier() properties = Configuration() (<DEFINITION> definition = ConstantString())? { cfps = new CreateFeedPolicyStatement(policyName, basePolicyName, properties, definition, ifNotExists); } - | <PATH> sourcePolicyFile = Identifier() (<DEFINITION> definition = QuotedString())? + | <PATH> sourcePolicyFile = Identifier() (<DEFINITION> definition = ConstantString())? { cfps = new CreateFeedPolicyStatement(policyName, sourcePolicyFile, definition, ifNotExists); } - ) - + ) ) { return cfps; @@ -1009,7 +1008,7 @@ Statement SetStatement() throws ParseException: String pv = null; } { - <SET> pn = Identifier() pv = QuotedString() + <SET> pn = Identifier() pv = ConstantString() { return new SetStatement(pn, pv); } @@ -1024,8 +1023,8 @@ Statement WriteStatement() throws ParseException: Pair<Identifier,Identifier> nameComponents = null; } { - <WRITE> <OUTPUT> <TO> nodeName = Identifier() <COLON> fileName = QuotedString() - ( <USING> writerClass = QuotedString() )? + <WRITE> <OUTPUT> <TO> nodeName = Identifier() <COLON> fileName = ConstantString() + ( <USING> writerClass = ConstantString() )? { return new WriteStatement(new Identifier(nodeName), fileName, writerClass); } @@ -1135,7 +1134,7 @@ Pair<String, String> KeyValuePair() throws ParseException: String value; } { - <LEFTPAREN> key = QuotedString() <EQ> value = QuotedString() <RIGHTPAREN> + <LEFTPAREN> key = ConstantString() <EQ> value = ConstantString() <RIGHTPAREN> { return new Pair<String, String>(key, value); } @@ -1163,11 +1162,13 @@ Map<String,String> Properties() throws ParseException: Pair<String, String> Property() throws ParseException: { - String key; - String value; + String key = null; + String value = null; } { - key = Identifier() <EQ> ( value = QuotedString() | <INTEGER_LITERAL> + (key = Identifier() | key = StringLiteral()) + <EQ> + ( value = ConstantString() | <INTEGER_LITERAL> { try { value = "" + Long.valueOf(token.image); @@ -1448,6 +1449,17 @@ Pair<Integer, List<String>> NestedField() throws ParseException: } } +String ConstantString() throws ParseException: +{ + String value = null; +} +{ + (value = QuotedString() | value = StringLiteral()) + { + return value; + } +} + String QuotedString() throws ParseException: { @@ -2896,7 +2908,7 @@ TOKEN : TOKEN : { // backslash u + 4 hex digits escapes are handled in the underlying JavaCharStream - <QUOTED_STRING : "\"" ( + <QUOTED_STRING : "`" ( <EscapeQuot> | <EscapeBslash> | <EscapeSlash> @@ -2905,10 +2917,9 @@ TOKEN : | <EscapeNl> | <EscapeCr> | <EscapeTab> - | ~["\"","\\"])* "\""> - | <STRING_LITERAL : "\'" ( + | ~["`","\\"])* "`"> + | <STRING_LITERAL : ("\"" ( <EscapeQuot> - | <EscapeApos> | <EscapeBslash> | <EscapeSlash> | <EscapeBspace> @@ -2916,7 +2927,17 @@ TOKEN : | <EscapeNl> | <EscapeCr> | <EscapeTab> - | ~["\'","\\"])* "\'"> + | ~["\"","\\"])* "\"") + | ("\'"( + <EscapeApos> + | <EscapeBslash> + | <EscapeSlash> + | <EscapeBspace> + | <EscapeFormf> + | <EscapeNl> + | <EscapeCr> + | <EscapeTab> + | ~["\'","\\"])* "\'")> | < #EscapeQuot: "\\\"" > | < #EscapeApos: "\\\'" > | < #EscapeBslash: "\\\\" >
