From e4ab2ec9653999bcbeb49f91b23c1c53dc2c1220 Mon Sep 17 00:00:00 2001 From: Minh Le Date: Tue, 30 Mar 2021 10:40:43 -0700 Subject: [PATCH 01/15] modify the sql dom --- .../CosmosQueryExecutionContextFactory.cs | 5 ++ .../src/SqlObjects/SqlLikeScalarExpression.cs | 81 +++++++++++++++++++ .../Visitors/SqlObjectEqualityVisitor.cs | 30 +++++++ .../SqlObjects/Visitors/SqlObjectHasher.cs | 23 +++++- .../Visitors/SqlObjectObfuscator.cs | 11 ++- .../Visitors/SqlObjectTextSerializer.cs | 25 ++++++ .../SqlObjects/Visitors/SqlObjectVisitor.cs | 3 +- .../SqlObjectVisitor{TArg,TOutput}.cs | 2 + .../Visitors/SqlObjectVisitor{TResult}.cs | 3 +- .../Visitors/SqlScalarExpressionVisitor.cs | 1 + ...qlScalarExpressionVisitor{TArg,TOutput}.cs | 1 + .../SqlScalarExpressionVisitor{TResult}.cs | 1 + 12 files changed, 179 insertions(+), 7 deletions(-) create mode 100644 Microsoft.Azure.Cosmos/src/SqlObjects/SqlLikeScalarExpression.cs diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Pipeline/CosmosQueryExecutionContextFactory.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Pipeline/CosmosQueryExecutionContextFactory.cs index 5e8113b92a..fe6f271e93 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Pipeline/CosmosQueryExecutionContextFactory.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Pipeline/CosmosQueryExecutionContextFactory.cs @@ -771,6 +771,11 @@ public override bool Visit(SqlParameterRefScalarExpression scalarExpression) { return false; } + + public override bool Visit(SqlLikeScalarExpression scalarExpression) + { + throw new NotImplementedException(); + } } } } diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/SqlLikeScalarExpression.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/SqlLikeScalarExpression.cs new file mode 100644 index 0000000000..f439264be3 --- /dev/null +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/SqlLikeScalarExpression.cs @@ -0,0 +1,81 @@ +//------------------------------------------------------------ +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------ +namespace Microsoft.Azure.Cosmos.SqlObjects +{ + using System; + using System.Collections.Immutable; + using System.Linq; + using System.Text; + using Microsoft.Azure.Cosmos.SqlObjects.Visitors; + +#if INTERNAL +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +#pragma warning disable SA1600 // Elements should be documented + public +#else + internal +#endif + + sealed class SqlLikeScalarExpression : SqlScalarExpression + { + private SqlLikeScalarExpression( + SqlScalarExpression expression, + SqlScalarExpression pattern, + bool not, + SqlStringLiteral escapeSequence = null) + { + this.Expression = expression ?? throw new ArgumentNullException(nameof(expression)); + this.Pattern = pattern ?? throw new ArgumentNullException(nameof(pattern)); + this.Not = not; + this.EscapeSequence = escapeSequence; + } + + public SqlScalarExpression Expression { get; } + + public SqlScalarExpression Pattern { get; } + + public bool Not { get; } + + public SqlStringLiteral EscapeSequence { get; } + + public static SqlLikeScalarExpression Create( + SqlScalarExpression expression, + SqlScalarExpression pattern, + bool not, + SqlStringLiteral escapeSequence = null) + { + return new SqlLikeScalarExpression(expression, pattern, not, escapeSequence); + } + + public override void Accept(SqlObjectVisitor visitor) + { + visitor.Visit(this); + } + + public override TResult Accept(SqlObjectVisitor visitor) + { + return visitor.Visit(this); + } + + public override TResult Accept(SqlObjectVisitor visitor, T input) + { + return visitor.Visit(this, input); + } + + public override void Accept(SqlScalarExpressionVisitor visitor) + { + visitor.Visit(this); + } + + public override TResult Accept(SqlScalarExpressionVisitor visitor) + { + return visitor.Visit(this); + } + + public override TResult Accept(SqlScalarExpressionVisitor visitor, T input) + { + return visitor.Visit(this, input); + } + } +} diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectEqualityVisitor.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectEqualityVisitor.cs index f84bfefcbb..5a4bd72d63 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectEqualityVisitor.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectEqualityVisitor.cs @@ -371,6 +371,36 @@ public override bool Visit(SqlJoinCollectionExpression first, SqlObject secondAs return true; } + public override bool Visit(SqlLikeScalarExpression first, SqlObject secondAsObject) + { + if (!(secondAsObject is SqlLikeScalarExpression second)) + { + return false; + } + + if (!Equals(first.Expression, second.Expression)) + { + return false; + } + + if (!Equals(first.Pattern, second.Pattern)) + { + return false; + } + + if (!Equals(first.Not, second.Not)) + { + return false; + } + + if (!Equals(first.EscapeSequence, second.EscapeSequence)) + { + return false; + } + + return true; + } + public override bool Visit(SqlLimitSpec first, SqlObject secondAsObject) { if (!(secondAsObject is SqlLimitSpec second)) diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectHasher.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectHasher.cs index e2c3bf161c..a5f11d45c3 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectHasher.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectHasher.cs @@ -34,6 +34,7 @@ internal sealed class SqlObjectHasher : SqlObjectVisitor private const int SqlInScalarExpressionHashCode = 1439386783; private const int SqlInScalarExpressionNotHashCode = -1131398119; private const int SqlJoinCollectionExpressionHashCode = 1000382226; + private const int SqlLikeScalarExpressionHashCode = 317861; private const int SqlLimitSpecHashCode = 92601316; private const int SqlLiteralScalarExpressionHashCode = -158339101; private const int SqlMemberIndexerScalarExpressionHashCode = 1589675618; @@ -281,6 +282,14 @@ public override int Visit(SqlInScalarExpression sqlInScalarExpression) return hashCode; } + public override int Visit(SqlJoinCollectionExpression sqlJoinCollectionExpression) + { + int hashCode = SqlJoinCollectionExpressionHashCode; + hashCode = CombineHashes(hashCode, sqlJoinCollectionExpression.Left.Accept(this)); + hashCode = CombineHashes(hashCode, sqlJoinCollectionExpression.Right.Accept(this)); + return hashCode; + } + public override int Visit(SqlLimitSpec sqlObject) { int hashCode = SqlLimitSpecHashCode; @@ -288,11 +297,17 @@ public override int Visit(SqlLimitSpec sqlObject) return hashCode; } - public override int Visit(SqlJoinCollectionExpression sqlJoinCollectionExpression) + public override int Visit(SqlLikeScalarExpression sqlLikeScalarExpression) { - int hashCode = SqlJoinCollectionExpressionHashCode; - hashCode = CombineHashes(hashCode, sqlJoinCollectionExpression.Left.Accept(this)); - hashCode = CombineHashes(hashCode, sqlJoinCollectionExpression.Right.Accept(this)); + int hashCode = SqlLikeScalarExpressionHashCode; + hashCode = CombineHashes(hashCode, sqlLikeScalarExpression.Expression.Accept(this)); + hashCode = CombineHashes(hashCode, sqlLikeScalarExpression.Not ? 1 : 0); + hashCode = CombineHashes(hashCode, sqlLikeScalarExpression.Pattern.Accept(this)); + if (sqlLikeScalarExpression.EscapeSequence != null) + { + hashCode = CombineHashes(hashCode, sqlLikeScalarExpression.EscapeSequence.Accept(this)); + } + return hashCode; } diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectObfuscator.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectObfuscator.cs index f9b245a1d1..89ee784702 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectObfuscator.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectObfuscator.cs @@ -184,6 +184,15 @@ public override SqlObject Visit(SqlJoinCollectionExpression sqlJoinCollectionExp sqlJoinCollectionExpression.Right.Accept(this) as SqlCollectionExpression); } + public override SqlObject Visit(SqlLikeScalarExpression sqlLikeScalarExpression) + { + return SqlLikeScalarExpression.Create( + sqlLikeScalarExpression.Expression.Accept(this) as SqlScalarExpression, + sqlLikeScalarExpression.Pattern.Accept(this) as SqlScalarExpression, + sqlLikeScalarExpression.Not, + sqlLikeScalarExpression.EscapeSequence?.Accept(this) as SqlStringLiteral); + } + public override SqlObject Visit(SqlLimitSpec sqlObject) { return SqlLimitSpec.Create(SqlNumberLiteral.Create(0)); @@ -450,7 +459,7 @@ private string GetObfuscatedString(string value, string prefix, ref int sequence { if (!this.obfuscatedStrings.TryGetValue(value, out obfuscatedString)) { - int sequenceNumber = ++sequence; + int sequenceNumber = ++sequence; // is this necessary? obfuscatedString = value.Length < 10 ? $"{prefix}{sequence}" : $"{prefix}{sequence}__{value.Length}"; this.obfuscatedStrings.Add(value, obfuscatedString); } diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectTextSerializer.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectTextSerializer.cs index bb293ed188..63e3a22325 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectTextSerializer.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectTextSerializer.cs @@ -282,6 +282,31 @@ public override void Visit(SqlLimitSpec sqlObject) sqlObject.LimitExpression.Accept(this); } + public override void Visit(SqlLikeScalarExpression sqlObject) + { + this.writer.Write("("); // why? + + sqlObject.Expression.Accept(this); + + if (sqlObject.Not) + { + this.writer.Write(" NOT "); + } + + this.writer.Write(" LIKE "); + + sqlObject.Pattern.Accept(this); + + if (sqlObject.EscapeSequence != null) + { + this.writer.Write(" ESCAPE "); + + sqlObject.EscapeSequence.Accept(this); + } + + this.writer.Write(")"); + } + public override void Visit(SqlLiteralScalarExpression sqlLiteralScalarExpression) { sqlLiteralScalarExpression.Literal.Accept(this); diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectVisitor.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectVisitor.cs index 2a86bb799c..ada48254b6 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectVisitor.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectVisitor.cs @@ -30,8 +30,9 @@ abstract class SqlObjectVisitor public abstract void Visit(SqlIdentifierPathExpression sqlObject); public abstract void Visit(SqlInputPathCollection sqlObject); public abstract void Visit(SqlInScalarExpression sqlObject); - public abstract void Visit(SqlLimitSpec sqlObject); public abstract void Visit(SqlJoinCollectionExpression sqlObject); + public abstract void Visit(SqlLikeScalarExpression sqlObject); + public abstract void Visit(SqlLimitSpec sqlObject); public abstract void Visit(SqlLiteralScalarExpression sqlObject); public abstract void Visit(SqlMemberIndexerScalarExpression sqlObject); public abstract void Visit(SqlNullLiteral sqlObject); diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectVisitor{TArg,TOutput}.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectVisitor{TArg,TOutput}.cs index 845e5a77e7..54497927b8 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectVisitor{TArg,TOutput}.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectVisitor{TArg,TOutput}.cs @@ -31,6 +31,8 @@ abstract class SqlObjectVisitor public abstract TOutput Visit(SqlInputPathCollection sqlObject, TArg input); public abstract TOutput Visit(SqlInScalarExpression sqlObject, TArg input); public abstract TOutput Visit(SqlJoinCollectionExpression sqlObject, TArg input); + public abstract TOutput Visit(SqlLikeScalarExpression sqlObject, TArg input); + public abstract TOutput Visit(SqlLimitSpec sqlObject, TArg input); public abstract TOutput Visit(SqlLiteralScalarExpression sqlObject, TArg input); public abstract TOutput Visit(SqlMemberIndexerScalarExpression sqlObject, TArg input); diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectVisitor{TResult}.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectVisitor{TResult}.cs index 67c4c12e0a..08d8b7ef10 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectVisitor{TResult}.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectVisitor{TResult}.cs @@ -29,9 +29,10 @@ abstract class SqlObjectVisitor public abstract TResult Visit(SqlIdentifier sqlObject); public abstract TResult Visit(SqlIdentifierPathExpression sqlObject); public abstract TResult Visit(SqlInputPathCollection sqlObject); + public abstract TResult Visit(SqlJoinCollectionExpression sqlObject); + public abstract TResult Visit(SqlLikeScalarExpression sqlObject); public abstract TResult Visit(SqlInScalarExpression sqlObject); public abstract TResult Visit(SqlLimitSpec sqlObject); - public abstract TResult Visit(SqlJoinCollectionExpression sqlObject); public abstract TResult Visit(SqlLiteralScalarExpression sqlObject); public abstract TResult Visit(SqlMemberIndexerScalarExpression sqlObject); public abstract TResult Visit(SqlNullLiteral sqlObject); diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlScalarExpressionVisitor.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlScalarExpressionVisitor.cs index 3bc6a333cd..1e1770403b 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlScalarExpressionVisitor.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlScalarExpressionVisitor.cs @@ -21,6 +21,7 @@ abstract class SqlScalarExpressionVisitor public abstract void Visit(SqlExistsScalarExpression scalarExpression); public abstract void Visit(SqlFunctionCallScalarExpression scalarExpression); public abstract void Visit(SqlInScalarExpression scalarExpression); + public abstract void Visit(SqlLikeScalarExpression scalarExpression); public abstract void Visit(SqlLiteralScalarExpression scalarExpression); public abstract void Visit(SqlMemberIndexerScalarExpression scalarExpression); public abstract void Visit(SqlObjectCreateScalarExpression scalarExpression); diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlScalarExpressionVisitor{TArg,TOutput}.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlScalarExpressionVisitor{TArg,TOutput}.cs index a8615bb2c9..3862aaab40 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlScalarExpressionVisitor{TArg,TOutput}.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlScalarExpressionVisitor{TArg,TOutput}.cs @@ -22,6 +22,7 @@ abstract class SqlScalarExpressionVisitor public abstract TOutput Visit(SqlExistsScalarExpression scalarExpression, TArg input); public abstract TOutput Visit(SqlFunctionCallScalarExpression scalarExpression, TArg input); public abstract TOutput Visit(SqlInScalarExpression scalarExpression, TArg input); + public abstract TOutput Visit(SqlLikeScalarExpression scalarExpression, TArg input); public abstract TOutput Visit(SqlLiteralScalarExpression scalarExpression, TArg input); public abstract TOutput Visit(SqlMemberIndexerScalarExpression scalarExpression, TArg input); public abstract TOutput Visit(SqlObjectCreateScalarExpression scalarExpression, TArg input); diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlScalarExpressionVisitor{TResult}.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlScalarExpressionVisitor{TResult}.cs index 5f4971b5de..1ca9150582 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlScalarExpressionVisitor{TResult}.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlScalarExpressionVisitor{TResult}.cs @@ -22,6 +22,7 @@ abstract class SqlScalarExpressionVisitor public abstract TResult Visit(SqlExistsScalarExpression scalarExpression); public abstract TResult Visit(SqlFunctionCallScalarExpression scalarExpression); public abstract TResult Visit(SqlInScalarExpression scalarExpression); + public abstract TResult Visit(SqlLikeScalarExpression scalarExpression); public abstract TResult Visit(SqlLiteralScalarExpression scalarExpression); public abstract TResult Visit(SqlMemberIndexerScalarExpression scalarExpression); public abstract TResult Visit(SqlObjectCreateScalarExpression scalarExpression); From b25895a7e7a5f97a6397926996ce7cc1b6de274d Mon Sep 17 00:00:00 2001 From: Minh Le Date: Tue, 30 Mar 2021 13:25:25 -0700 Subject: [PATCH 02/15] Update the CST file --- .../src/Query/Core/Parser/CstToAstVisitor.cs | 24 + .../src/Query/Core/Parser/sql.g4 | 15 +- .../src/Query/Core/Parser/sqlBaseVisitor.cs | 1301 +-- .../src/Query/Core/Parser/sqlLexer.cs | 1116 +-- .../src/Query/Core/Parser/sqlParser.cs | 8260 ++++++++--------- .../SqlFunctionCallScalarExpression.cs | 980 +- 6 files changed, 5681 insertions(+), 6015 deletions(-) diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs index 2a8292322b..a8baf912df 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs @@ -594,6 +594,30 @@ public override SqlObject VisitIn_scalar_expression([NotNull] sqlParser.In_scala return SqlInScalarExpression.Create(needle, not, searchList.ToImmutableArray()); } + public override SqlObject VisitLike_scalar_expression([NotNull] sqlParser.Like_scalar_expressionContext context) + { + Contract.Requires(context != null); + + SqlScalarExpression expression = (SqlScalarExpression)this.Visit(context.binary_scalar_expression()[0]); + SqlScalarExpression pattern = (SqlScalarExpression)this.Visit(context.binary_scalar_expression()[1]); + bool not = context.K_NOT() != null; + SqlStringLiteral escapeSequence = (SqlStringLiteral)this.Visit(context.opt_escape()); + return SqlLikeScalarExpression.Create(expression, pattern, not, escapeSequence); + } + + public override SqlObject VisitOpt_escape([NotNull] sqlParser.Opt_escapeContext context) { + Contract.Requires(context != null); + + if (context.K_ESCAPE() == null) + { + return null; + } + else + { + return (SqlStringLiteral)this.Visit(context.STRING_LITERAL()); + } + } + public override SqlObject VisitLiteralScalarExpression([NotNull] sqlParser.LiteralScalarExpressionContext context) { Contract.Requires(context != null); diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sql.g4 b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sql.g4 index 734d09ec6a..913e2ce80c 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sql.g4 +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sql.g4 @@ -88,12 +88,22 @@ scalar_expression logical_scalar_expression : binary_scalar_expression | in_scalar_expression + | like_scalar_expression ; in_scalar_expression : binary_scalar_expression K_NOT? K_IN '(' scalar_expression_list ')' ; +like_scalar_expression + : binary_scalar_expression K_NOT? K_LIKE binary_scalar_expression opt_escape + ; + +opt_escape + : + | K_ESCAPE STRING_LITERAL + ; + binary_scalar_expression : unary_scalar_expression | binary_scalar_expression multiplicative_operator binary_scalar_expression @@ -184,12 +194,14 @@ K_BETWEEN : B E T W E E N; K_BY : B Y; K_DESC : D E S C; K_DISTINCT : D I S T I N C T; +K_ESCAPE: E S C A P E; K_EXISTS : E X I S T S; K_FALSE : 'false'; K_FROM : F R O M; K_GROUP : G R O U P; K_IN : I N ; K_JOIN : J O I N; +K_LIKE : L I K E; K_LIMIT : L I M I T; K_NOT : N O T; K_NULL : 'null'; @@ -248,8 +260,7 @@ fragment SAFECODEPOINT ; IDENTIFIER - : - | [a-zA-Z_][a-zA-Z_]*DIGIT* + : [a-zA-Z_][a-zA-Z_]*DIGIT* ; PARAMETER diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlBaseVisitor.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlBaseVisitor.cs index 77e8f21c3c..39a8b29a8f 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlBaseVisitor.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlBaseVisitor.cs @@ -1,4 +1,4 @@ -//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ // // This code was generated by a tool. // ANTLR Version: 4.7.2 @@ -8,7 +8,7 @@ // //------------------------------------------------------------------------------ -// Generated from C:\CosmosSQLANTLR\CosmosSqlAntlr\CosmosSqlAntlr\sql.g4 by ANTLR 4.7.2 +// Generated from sql.g4 by ANTLR 4.7.2 // Unreachable code detected #pragma warning disable 0162 @@ -21,6 +21,9 @@ using Antlr4.Runtime.Misc; using Antlr4.Runtime.Tree; +using IToken = Antlr4.Runtime.IToken; +using ParserRuleContext = Antlr4.Runtime.ParserRuleContext; + /// /// This class provides an empty implementation of , /// which can be extended to create a visitor which only needs to handle a subset @@ -28,641 +31,661 @@ /// /// The return type of the visit operation. [System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.7.2")] -internal partial class sqlBaseVisitor : AbstractParseTreeVisitor, IsqlVisitor -{ - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitProgram([NotNull] sqlParser.ProgramContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitSql_query([NotNull] sqlParser.Sql_queryContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitSelect_clause([NotNull] sqlParser.Select_clauseContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitTop_spec([NotNull] sqlParser.Top_specContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitSelection([NotNull] sqlParser.SelectionContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitSelect_star_spec([NotNull] sqlParser.Select_star_specContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitSelect_value_spec([NotNull] sqlParser.Select_value_specContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitSelect_list_spec([NotNull] sqlParser.Select_list_specContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitSelect_item([NotNull] sqlParser.Select_itemContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitFrom_clause([NotNull] sqlParser.From_clauseContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by the JoinCollectionExpression - /// labeled alternative in . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitJoinCollectionExpression([NotNull] sqlParser.JoinCollectionExpressionContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by the AliasedCollectionExpression - /// labeled alternative in . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitAliasedCollectionExpression([NotNull] sqlParser.AliasedCollectionExpressionContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by the ArrayIteratorCollectionExpression - /// labeled alternative in . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitArrayIteratorCollectionExpression([NotNull] sqlParser.ArrayIteratorCollectionExpressionContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by the InputPathCollection - /// labeled alternative in . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitInputPathCollection([NotNull] sqlParser.InputPathCollectionContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by the SubqueryCollection - /// labeled alternative in . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitSubqueryCollection([NotNull] sqlParser.SubqueryCollectionContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by the StringPathExpression - /// labeled alternative in . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitStringPathExpression([NotNull] sqlParser.StringPathExpressionContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by the EpsilonPathExpression - /// labeled alternative in . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitEpsilonPathExpression([NotNull] sqlParser.EpsilonPathExpressionContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by the IdentifierPathExpression - /// labeled alternative in . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitIdentifierPathExpression([NotNull] sqlParser.IdentifierPathExpressionContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by the NumberPathExpression - /// labeled alternative in . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitNumberPathExpression([NotNull] sqlParser.NumberPathExpressionContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitWhere_clause([NotNull] sqlParser.Where_clauseContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitGroup_by_clause([NotNull] sqlParser.Group_by_clauseContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitOrder_by_clause([NotNull] sqlParser.Order_by_clauseContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitOrder_by_items([NotNull] sqlParser.Order_by_itemsContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitOrder_by_item([NotNull] sqlParser.Order_by_itemContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitSort_order([NotNull] sqlParser.Sort_orderContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitOffset_limit_clause([NotNull] sqlParser.Offset_limit_clauseContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitOffset_count([NotNull] sqlParser.Offset_countContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitLimit_count([NotNull] sqlParser.Limit_countContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by the LogicalScalarExpression - /// labeled alternative in . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitLogicalScalarExpression([NotNull] sqlParser.LogicalScalarExpressionContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by the ConditionalScalarExpression - /// labeled alternative in . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitConditionalScalarExpression([NotNull] sqlParser.ConditionalScalarExpressionContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by the CoalesceScalarExpression - /// labeled alternative in . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitCoalesceScalarExpression([NotNull] sqlParser.CoalesceScalarExpressionContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by the BetweenScalarExpression - /// labeled alternative in . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitBetweenScalarExpression([NotNull] sqlParser.BetweenScalarExpressionContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitLogical_scalar_expression([NotNull] sqlParser.Logical_scalar_expressionContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitIn_scalar_expression([NotNull] sqlParser.In_scalar_expressionContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitBinary_scalar_expression([NotNull] sqlParser.Binary_scalar_expressionContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitMultiplicative_operator([NotNull] sqlParser.Multiplicative_operatorContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitAdditive_operator([NotNull] sqlParser.Additive_operatorContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitRelational_operator([NotNull] sqlParser.Relational_operatorContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitEquality_operator([NotNull] sqlParser.Equality_operatorContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitBitwise_and_operator([NotNull] sqlParser.Bitwise_and_operatorContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitBitwise_exclusive_or_operator([NotNull] sqlParser.Bitwise_exclusive_or_operatorContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitBitwise_inclusive_or_operator([NotNull] sqlParser.Bitwise_inclusive_or_operatorContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitString_concat_operator([NotNull] sqlParser.String_concat_operatorContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitUnary_scalar_expression([NotNull] sqlParser.Unary_scalar_expressionContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitUnary_operator([NotNull] sqlParser.Unary_operatorContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by the SubqueryScalarExpression - /// labeled alternative in . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitSubqueryScalarExpression([NotNull] sqlParser.SubqueryScalarExpressionContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by the PropertyRefScalarExpressionBase - /// labeled alternative in . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitPropertyRefScalarExpressionBase([NotNull] sqlParser.PropertyRefScalarExpressionBaseContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by the FunctionCallScalarExpression - /// labeled alternative in . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitFunctionCallScalarExpression([NotNull] sqlParser.FunctionCallScalarExpressionContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by the LiteralScalarExpression - /// labeled alternative in . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitLiteralScalarExpression([NotNull] sqlParser.LiteralScalarExpressionContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by the ObjectCreateScalarExpression - /// labeled alternative in . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitObjectCreateScalarExpression([NotNull] sqlParser.ObjectCreateScalarExpressionContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by the ParenthesizedScalarExperession - /// labeled alternative in . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitParenthesizedScalarExperession([NotNull] sqlParser.ParenthesizedScalarExperessionContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by the ParameterRefScalarExpression - /// labeled alternative in . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitParameterRefScalarExpression([NotNull] sqlParser.ParameterRefScalarExpressionContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by the ArrayCreateScalarExpression - /// labeled alternative in . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitArrayCreateScalarExpression([NotNull] sqlParser.ArrayCreateScalarExpressionContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by the ExistsScalarExpression - /// labeled alternative in . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitExistsScalarExpression([NotNull] sqlParser.ExistsScalarExpressionContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by the ArrayScalarExpression - /// labeled alternative in . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitArrayScalarExpression([NotNull] sqlParser.ArrayScalarExpressionContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by the MemberIndexerScalarExpression - /// labeled alternative in . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitMemberIndexerScalarExpression([NotNull] sqlParser.MemberIndexerScalarExpressionContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by the PropertyRefScalarExpressionRecursive - /// labeled alternative in . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitPropertyRefScalarExpressionRecursive([NotNull] sqlParser.PropertyRefScalarExpressionRecursiveContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitScalar_expression_list([NotNull] sqlParser.Scalar_expression_listContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitObject_property_list([NotNull] sqlParser.Object_property_listContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitObject_property([NotNull] sqlParser.Object_propertyContext context) { return VisitChildren(context); } - /// - /// Visit a parse tree produced by . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitLiteral([NotNull] sqlParser.LiteralContext context) { return VisitChildren(context); } +[System.CLSCompliant(false)] +public partial class sqlBaseVisitor : AbstractParseTreeVisitor, IsqlVisitor { + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitProgram([NotNull] sqlParser.ProgramContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSql_query([NotNull] sqlParser.Sql_queryContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSelect_clause([NotNull] sqlParser.Select_clauseContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitTop_spec([NotNull] sqlParser.Top_specContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSelection([NotNull] sqlParser.SelectionContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSelect_star_spec([NotNull] sqlParser.Select_star_specContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSelect_value_spec([NotNull] sqlParser.Select_value_specContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSelect_list_spec([NotNull] sqlParser.Select_list_specContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSelect_item([NotNull] sqlParser.Select_itemContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitFrom_clause([NotNull] sqlParser.From_clauseContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the JoinCollectionExpression + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitJoinCollectionExpression([NotNull] sqlParser.JoinCollectionExpressionContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the AliasedCollectionExpression + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitAliasedCollectionExpression([NotNull] sqlParser.AliasedCollectionExpressionContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the ArrayIteratorCollectionExpression + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitArrayIteratorCollectionExpression([NotNull] sqlParser.ArrayIteratorCollectionExpressionContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the InputPathCollection + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitInputPathCollection([NotNull] sqlParser.InputPathCollectionContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the SubqueryCollection + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSubqueryCollection([NotNull] sqlParser.SubqueryCollectionContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the StringPathExpression + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitStringPathExpression([NotNull] sqlParser.StringPathExpressionContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the EpsilonPathExpression + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitEpsilonPathExpression([NotNull] sqlParser.EpsilonPathExpressionContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the IdentifierPathExpression + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitIdentifierPathExpression([NotNull] sqlParser.IdentifierPathExpressionContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the NumberPathExpression + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitNumberPathExpression([NotNull] sqlParser.NumberPathExpressionContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitWhere_clause([NotNull] sqlParser.Where_clauseContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitGroup_by_clause([NotNull] sqlParser.Group_by_clauseContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitOrder_by_clause([NotNull] sqlParser.Order_by_clauseContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitOrder_by_items([NotNull] sqlParser.Order_by_itemsContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitOrder_by_item([NotNull] sqlParser.Order_by_itemContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSort_order([NotNull] sqlParser.Sort_orderContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitOffset_limit_clause([NotNull] sqlParser.Offset_limit_clauseContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitOffset_count([NotNull] sqlParser.Offset_countContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitLimit_count([NotNull] sqlParser.Limit_countContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the LogicalScalarExpression + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitLogicalScalarExpression([NotNull] sqlParser.LogicalScalarExpressionContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the ConditionalScalarExpression + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitConditionalScalarExpression([NotNull] sqlParser.ConditionalScalarExpressionContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the CoalesceScalarExpression + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitCoalesceScalarExpression([NotNull] sqlParser.CoalesceScalarExpressionContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the BetweenScalarExpression + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitBetweenScalarExpression([NotNull] sqlParser.BetweenScalarExpressionContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitLogical_scalar_expression([NotNull] sqlParser.Logical_scalar_expressionContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitIn_scalar_expression([NotNull] sqlParser.In_scalar_expressionContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitLike_scalar_expression([NotNull] sqlParser.Like_scalar_expressionContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitOpt_escape([NotNull] sqlParser.Opt_escapeContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitBinary_scalar_expression([NotNull] sqlParser.Binary_scalar_expressionContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitMultiplicative_operator([NotNull] sqlParser.Multiplicative_operatorContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitAdditive_operator([NotNull] sqlParser.Additive_operatorContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitRelational_operator([NotNull] sqlParser.Relational_operatorContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitEquality_operator([NotNull] sqlParser.Equality_operatorContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitBitwise_and_operator([NotNull] sqlParser.Bitwise_and_operatorContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitBitwise_exclusive_or_operator([NotNull] sqlParser.Bitwise_exclusive_or_operatorContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitBitwise_inclusive_or_operator([NotNull] sqlParser.Bitwise_inclusive_or_operatorContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitString_concat_operator([NotNull] sqlParser.String_concat_operatorContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitUnary_scalar_expression([NotNull] sqlParser.Unary_scalar_expressionContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitUnary_operator([NotNull] sqlParser.Unary_operatorContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the SubqueryScalarExpression + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitSubqueryScalarExpression([NotNull] sqlParser.SubqueryScalarExpressionContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the PropertyRefScalarExpressionBase + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitPropertyRefScalarExpressionBase([NotNull] sqlParser.PropertyRefScalarExpressionBaseContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the FunctionCallScalarExpression + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitFunctionCallScalarExpression([NotNull] sqlParser.FunctionCallScalarExpressionContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the LiteralScalarExpression + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitLiteralScalarExpression([NotNull] sqlParser.LiteralScalarExpressionContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the ObjectCreateScalarExpression + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitObjectCreateScalarExpression([NotNull] sqlParser.ObjectCreateScalarExpressionContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the ParenthesizedScalarExperession + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitParenthesizedScalarExperession([NotNull] sqlParser.ParenthesizedScalarExperessionContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the ParameterRefScalarExpression + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitParameterRefScalarExpression([NotNull] sqlParser.ParameterRefScalarExpressionContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the ArrayCreateScalarExpression + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitArrayCreateScalarExpression([NotNull] sqlParser.ArrayCreateScalarExpressionContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the ExistsScalarExpression + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitExistsScalarExpression([NotNull] sqlParser.ExistsScalarExpressionContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the ArrayScalarExpression + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitArrayScalarExpression([NotNull] sqlParser.ArrayScalarExpressionContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the MemberIndexerScalarExpression + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitMemberIndexerScalarExpression([NotNull] sqlParser.MemberIndexerScalarExpressionContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by the PropertyRefScalarExpressionRecursive + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitPropertyRefScalarExpressionRecursive([NotNull] sqlParser.PropertyRefScalarExpressionRecursiveContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitScalar_expression_list([NotNull] sqlParser.Scalar_expression_listContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitObject_property_list([NotNull] sqlParser.Object_property_listContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitObject_property([NotNull] sqlParser.Object_propertyContext context) { return VisitChildren(context); } + /// + /// Visit a parse tree produced by . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitLiteral([NotNull] sqlParser.LiteralContext context) { return VisitChildren(context); } } diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlLexer.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlLexer.cs index cee9043d0d..8242da6e47 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlLexer.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlLexer.cs @@ -1,4 +1,4 @@ -//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ // // This code was generated by a tool. // ANTLR Version: 4.7.2 @@ -8,7 +8,7 @@ // //------------------------------------------------------------------------------ -// Generated from C:\CosmosSQLANTLR\CosmosSqlAntlr\CosmosSqlAntlr\sql.g4 by ANTLR 4.7.2 +// Generated from sql.g4 by ANTLR 4.7.2 // Unreachable code detected #pragma warning disable 0162 @@ -21,577 +21,587 @@ using System; using System.IO; +using System.Text; using Antlr4.Runtime; using Antlr4.Runtime.Atn; using Antlr4.Runtime.Misc; using DFA = Antlr4.Runtime.Dfa.DFA; [System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.7.2")] -internal partial class sqlLexer : Lexer -{ - protected static DFA[] decisionToDFA; - protected static PredictionContextCache sharedContextCache = new PredictionContextCache(); - public const int - T__0 = 1, T__1 = 2, T__2 = 3, T__3 = 4, T__4 = 5, T__5 = 6, T__6 = 7, T__7 = 8, T__8 = 9, - T__9 = 10, T__10 = 11, T__11 = 12, T__12 = 13, T__13 = 14, T__14 = 15, T__15 = 16, T__16 = 17, - T__17 = 18, T__18 = 19, T__19 = 20, T__20 = 21, T__21 = 22, T__22 = 23, T__23 = 24, - T__24 = 25, T__25 = 26, T__26 = 27, K_AND = 28, K_ARRAY = 29, K_AS = 30, K_ASC = 31, - K_BETWEEN = 32, K_BY = 33, K_DESC = 34, K_DISTINCT = 35, K_EXISTS = 36, K_FALSE = 37, - K_FROM = 38, K_GROUP = 39, K_IN = 40, K_JOIN = 41, K_LIMIT = 42, K_NOT = 43, K_NULL = 44, - K_OFFSET = 45, K_OR = 46, K_ORDER = 47, K_SELECT = 48, K_TOP = 49, K_TRUE = 50, K_UDF = 51, - K_UNDEFINED = 52, K_VALUE = 53, K_WHERE = 54, WS = 55, NUMERIC_LITERAL = 56, STRING_LITERAL = 57, - IDENTIFIER = 58, PARAMETER = 59; - public static string[] channelNames = { - "DEFAULT_TOKEN_CHANNEL", "HIDDEN" - }; +[System.CLSCompliant(false)] +public partial class sqlLexer : Lexer { + protected static DFA[] decisionToDFA; + protected static PredictionContextCache sharedContextCache = new PredictionContextCache(); + public const int + T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, T__6=7, T__7=8, T__8=9, + T__9=10, T__10=11, T__11=12, T__12=13, T__13=14, T__14=15, T__15=16, T__16=17, + T__17=18, T__18=19, T__19=20, T__20=21, T__21=22, T__22=23, T__23=24, + T__24=25, T__25=26, T__26=27, K_AND=28, K_ARRAY=29, K_AS=30, K_ASC=31, + K_BETWEEN=32, K_BY=33, K_DESC=34, K_DISTINCT=35, K_ESCAPE=36, K_EXISTS=37, + K_FALSE=38, K_FROM=39, K_GROUP=40, K_IN=41, K_JOIN=42, K_LIKE=43, K_LIMIT=44, + K_NOT=45, K_NULL=46, K_OFFSET=47, K_OR=48, K_ORDER=49, K_SELECT=50, K_TOP=51, + K_TRUE=52, K_UDF=53, K_UNDEFINED=54, K_VALUE=55, K_WHERE=56, WS=57, NUMERIC_LITERAL=58, + STRING_LITERAL=59, IDENTIFIER=60, PARAMETER=61; + public static string[] channelNames = { + "DEFAULT_TOKEN_CHANNEL", "HIDDEN" + }; - public static string[] modeNames = { - "DEFAULT_MODE" - }; + public static string[] modeNames = { + "DEFAULT_MODE" + }; - public static readonly string[] ruleNames = { - "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8", - "T__9", "T__10", "T__11", "T__12", "T__13", "T__14", "T__15", "T__16", - "T__17", "T__18", "T__19", "T__20", "T__21", "T__22", "T__23", "T__24", - "T__25", "T__26", "K_AND", "K_ARRAY", "K_AS", "K_ASC", "K_BETWEEN", "K_BY", - "K_DESC", "K_DISTINCT", "K_EXISTS", "K_FALSE", "K_FROM", "K_GROUP", "K_IN", - "K_JOIN", "K_LIMIT", "K_NOT", "K_NULL", "K_OFFSET", "K_OR", "K_ORDER", - "K_SELECT", "K_TOP", "K_TRUE", "K_UDF", "K_UNDEFINED", "K_VALUE", "K_WHERE", - "WS", "NUMERIC_LITERAL", "STRING_LITERAL", "ESC", "UNICODE", "HEX", "SAFECODEPOINT", - "IDENTIFIER", "PARAMETER", "DIGIT", "A", "B", "C", "D", "E", "F", "G", - "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", - "V", "W", "X", "Y", "Z" - }; + public static readonly string[] ruleNames = { + "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8", + "T__9", "T__10", "T__11", "T__12", "T__13", "T__14", "T__15", "T__16", + "T__17", "T__18", "T__19", "T__20", "T__21", "T__22", "T__23", "T__24", + "T__25", "T__26", "K_AND", "K_ARRAY", "K_AS", "K_ASC", "K_BETWEEN", "K_BY", + "K_DESC", "K_DISTINCT", "K_ESCAPE", "K_EXISTS", "K_FALSE", "K_FROM", "K_GROUP", + "K_IN", "K_JOIN", "K_LIKE", "K_LIMIT", "K_NOT", "K_NULL", "K_OFFSET", + "K_OR", "K_ORDER", "K_SELECT", "K_TOP", "K_TRUE", "K_UDF", "K_UNDEFINED", + "K_VALUE", "K_WHERE", "WS", "NUMERIC_LITERAL", "STRING_LITERAL", "ESC", + "UNICODE", "HEX", "SAFECODEPOINT", "IDENTIFIER", "PARAMETER", "DIGIT", + "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", + "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" + }; - public sqlLexer(ICharStream input) - : this(input, Console.Out, Console.Error) { } + public sqlLexer(ICharStream input) + : this(input, Console.Out, Console.Error) { } - public sqlLexer(ICharStream input, TextWriter output, TextWriter errorOutput) - : base(input, output, errorOutput) - { - Interpreter = new LexerATNSimulator(this, _ATN, decisionToDFA, sharedContextCache); - } + public sqlLexer(ICharStream input, TextWriter output, TextWriter errorOutput) + : base(input, output, errorOutput) + { + Interpreter = new LexerATNSimulator(this, _ATN, decisionToDFA, sharedContextCache); + } - private static readonly string[] _LiteralNames = { - null, "'*'", "','", "'('", "')'", "'.'", "'['", "']'", "'?'", "':'", "'??'", - "'/'", "'%'", "'+'", "'-'", "'<'", "'>'", "'>='", "'<='", "'='", "'!='", - "'&'", "'^'", "'|'", "'||'", "'~'", "'{'", "'}'", null, null, null, null, - null, null, null, null, null, "'false'", null, null, null, null, null, - null, "'null'", null, null, null, null, null, "'true'", null, "'undefined'" - }; - private static readonly string[] _SymbolicNames = { - null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, "K_AND", "K_ARRAY", "K_AS", "K_ASC", "K_BETWEEN", - "K_BY", "K_DESC", "K_DISTINCT", "K_EXISTS", "K_FALSE", "K_FROM", "K_GROUP", - "K_IN", "K_JOIN", "K_LIMIT", "K_NOT", "K_NULL", "K_OFFSET", "K_OR", "K_ORDER", - "K_SELECT", "K_TOP", "K_TRUE", "K_UDF", "K_UNDEFINED", "K_VALUE", "K_WHERE", - "WS", "NUMERIC_LITERAL", "STRING_LITERAL", "IDENTIFIER", "PARAMETER" - }; - public static readonly IVocabulary DefaultVocabulary = new Vocabulary(_LiteralNames, _SymbolicNames); + private static readonly string[] _LiteralNames = { + null, "'*'", "','", "'('", "')'", "'.'", "'['", "']'", "'?'", "':'", "'??'", + "'/'", "'%'", "'+'", "'-'", "'<'", "'>'", "'>='", "'<='", "'='", "'!='", + "'&'", "'^'", "'|'", "'||'", "'~'", "'{'", "'}'", null, null, null, null, + null, null, null, null, null, null, "'false'", null, null, null, null, + null, null, null, "'null'", null, null, null, null, null, "'true'", null, + "'undefined'" + }; + private static readonly string[] _SymbolicNames = { + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, "K_AND", "K_ARRAY", "K_AS", "K_ASC", "K_BETWEEN", + "K_BY", "K_DESC", "K_DISTINCT", "K_ESCAPE", "K_EXISTS", "K_FALSE", "K_FROM", + "K_GROUP", "K_IN", "K_JOIN", "K_LIKE", "K_LIMIT", "K_NOT", "K_NULL", "K_OFFSET", + "K_OR", "K_ORDER", "K_SELECT", "K_TOP", "K_TRUE", "K_UDF", "K_UNDEFINED", + "K_VALUE", "K_WHERE", "WS", "NUMERIC_LITERAL", "STRING_LITERAL", "IDENTIFIER", + "PARAMETER" + }; + public static readonly IVocabulary DefaultVocabulary = new Vocabulary(_LiteralNames, _SymbolicNames); - [NotNull] - public override IVocabulary Vocabulary - { - get - { - return DefaultVocabulary; - } - } + [NotNull] + public override IVocabulary Vocabulary + { + get + { + return DefaultVocabulary; + } + } - public override string GrammarFileName { get { return "sql.g4"; } } + public override string GrammarFileName { get { return "sql.g4"; } } - public override string[] RuleNames { get { return ruleNames; } } + public override string[] RuleNames { get { return ruleNames; } } - public override string[] ChannelNames { get { return channelNames; } } + public override string[] ChannelNames { get { return channelNames; } } - public override string[] ModeNames { get { return modeNames; } } + public override string[] ModeNames { get { return modeNames; } } - public override string SerializedAtn { get { return new string(_serializedATN); } } + public override string SerializedAtn { get { return new string(_serializedATN); } } - static sqlLexer() - { - decisionToDFA = new DFA[_ATN.NumberOfDecisions]; - for (int i = 0; i < _ATN.NumberOfDecisions; i++) - { - decisionToDFA[i] = new DFA(_ATN.GetDecisionState(i), i); - } - } - private static char[] _serializedATN = { - '\x3', '\x608B', '\xA72A', '\x8133', '\xB9ED', '\x417C', '\x3BE7', '\x7786', - '\x5964', '\x2', '=', '\x22A', '\b', '\x1', '\x4', '\x2', '\t', '\x2', - '\x4', '\x3', '\t', '\x3', '\x4', '\x4', '\t', '\x4', '\x4', '\x5', '\t', - '\x5', '\x4', '\x6', '\t', '\x6', '\x4', '\a', '\t', '\a', '\x4', '\b', - '\t', '\b', '\x4', '\t', '\t', '\t', '\x4', '\n', '\t', '\n', '\x4', '\v', - '\t', '\v', '\x4', '\f', '\t', '\f', '\x4', '\r', '\t', '\r', '\x4', '\xE', - '\t', '\xE', '\x4', '\xF', '\t', '\xF', '\x4', '\x10', '\t', '\x10', '\x4', - '\x11', '\t', '\x11', '\x4', '\x12', '\t', '\x12', '\x4', '\x13', '\t', - '\x13', '\x4', '\x14', '\t', '\x14', '\x4', '\x15', '\t', '\x15', '\x4', - '\x16', '\t', '\x16', '\x4', '\x17', '\t', '\x17', '\x4', '\x18', '\t', - '\x18', '\x4', '\x19', '\t', '\x19', '\x4', '\x1A', '\t', '\x1A', '\x4', - '\x1B', '\t', '\x1B', '\x4', '\x1C', '\t', '\x1C', '\x4', '\x1D', '\t', - '\x1D', '\x4', '\x1E', '\t', '\x1E', '\x4', '\x1F', '\t', '\x1F', '\x4', - ' ', '\t', ' ', '\x4', '!', '\t', '!', '\x4', '\"', '\t', '\"', '\x4', - '#', '\t', '#', '\x4', '$', '\t', '$', '\x4', '%', '\t', '%', '\x4', '&', - '\t', '&', '\x4', '\'', '\t', '\'', '\x4', '(', '\t', '(', '\x4', ')', - '\t', ')', '\x4', '*', '\t', '*', '\x4', '+', '\t', '+', '\x4', ',', '\t', - ',', '\x4', '-', '\t', '-', '\x4', '.', '\t', '.', '\x4', '/', '\t', '/', - '\x4', '\x30', '\t', '\x30', '\x4', '\x31', '\t', '\x31', '\x4', '\x32', - '\t', '\x32', '\x4', '\x33', '\t', '\x33', '\x4', '\x34', '\t', '\x34', - '\x4', '\x35', '\t', '\x35', '\x4', '\x36', '\t', '\x36', '\x4', '\x37', - '\t', '\x37', '\x4', '\x38', '\t', '\x38', '\x4', '\x39', '\t', '\x39', - '\x4', ':', '\t', ':', '\x4', ';', '\t', ';', '\x4', '<', '\t', '<', '\x4', - '=', '\t', '=', '\x4', '>', '\t', '>', '\x4', '?', '\t', '?', '\x4', '@', - '\t', '@', '\x4', '\x41', '\t', '\x41', '\x4', '\x42', '\t', '\x42', '\x4', - '\x43', '\t', '\x43', '\x4', '\x44', '\t', '\x44', '\x4', '\x45', '\t', - '\x45', '\x4', '\x46', '\t', '\x46', '\x4', 'G', '\t', 'G', '\x4', 'H', - '\t', 'H', '\x4', 'I', '\t', 'I', '\x4', 'J', '\t', 'J', '\x4', 'K', '\t', - 'K', '\x4', 'L', '\t', 'L', '\x4', 'M', '\t', 'M', '\x4', 'N', '\t', 'N', - '\x4', 'O', '\t', 'O', '\x4', 'P', '\t', 'P', '\x4', 'Q', '\t', 'Q', '\x4', - 'R', '\t', 'R', '\x4', 'S', '\t', 'S', '\x4', 'T', '\t', 'T', '\x4', 'U', - '\t', 'U', '\x4', 'V', '\t', 'V', '\x4', 'W', '\t', 'W', '\x4', 'X', '\t', - 'X', '\x4', 'Y', '\t', 'Y', '\x4', 'Z', '\t', 'Z', '\x4', '[', '\t', '[', - '\x3', '\x2', '\x3', '\x2', '\x3', '\x3', '\x3', '\x3', '\x3', '\x4', - '\x3', '\x4', '\x3', '\x5', '\x3', '\x5', '\x3', '\x6', '\x3', '\x6', - '\x3', '\a', '\x3', '\a', '\x3', '\b', '\x3', '\b', '\x3', '\t', '\x3', - '\t', '\x3', '\n', '\x3', '\n', '\x3', '\v', '\x3', '\v', '\x3', '\v', - '\x3', '\f', '\x3', '\f', '\x3', '\r', '\x3', '\r', '\x3', '\xE', '\x3', - '\xE', '\x3', '\xF', '\x3', '\xF', '\x3', '\x10', '\x3', '\x10', '\x3', - '\x11', '\x3', '\x11', '\x3', '\x12', '\x3', '\x12', '\x3', '\x12', '\x3', - '\x13', '\x3', '\x13', '\x3', '\x13', '\x3', '\x14', '\x3', '\x14', '\x3', - '\x15', '\x3', '\x15', '\x3', '\x15', '\x3', '\x16', '\x3', '\x16', '\x3', - '\x17', '\x3', '\x17', '\x3', '\x18', '\x3', '\x18', '\x3', '\x19', '\x3', - '\x19', '\x3', '\x19', '\x3', '\x1A', '\x3', '\x1A', '\x3', '\x1B', '\x3', - '\x1B', '\x3', '\x1C', '\x3', '\x1C', '\x3', '\x1D', '\x3', '\x1D', '\x3', - '\x1D', '\x3', '\x1D', '\x3', '\x1E', '\x3', '\x1E', '\x3', '\x1E', '\x3', - '\x1E', '\x3', '\x1E', '\x3', '\x1E', '\x3', '\x1F', '\x3', '\x1F', '\x3', - '\x1F', '\x3', ' ', '\x3', ' ', '\x3', ' ', '\x3', ' ', '\x3', '!', '\x3', - '!', '\x3', '!', '\x3', '!', '\x3', '!', '\x3', '!', '\x3', '!', '\x3', - '!', '\x3', '\"', '\x3', '\"', '\x3', '\"', '\x3', '#', '\x3', '#', '\x3', - '#', '\x3', '#', '\x3', '#', '\x3', '$', '\x3', '$', '\x3', '$', '\x3', - '$', '\x3', '$', '\x3', '$', '\x3', '$', '\x3', '$', '\x3', '$', '\x3', - '%', '\x3', '%', '\x3', '%', '\x3', '%', '\x3', '%', '\x3', '%', '\x3', - '%', '\x3', '&', '\x3', '&', '\x3', '&', '\x3', '&', '\x3', '&', '\x3', - '&', '\x3', '\'', '\x3', '\'', '\x3', '\'', '\x3', '\'', '\x3', '\'', - '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', - '\x3', ')', '\x3', ')', '\x3', ')', '\x3', '*', '\x3', '*', '\x3', '*', - '\x3', '*', '\x3', '*', '\x3', '+', '\x3', '+', '\x3', '+', '\x3', '+', - '\x3', '+', '\x3', '+', '\x3', ',', '\x3', ',', '\x3', ',', '\x3', ',', - '\x3', '-', '\x3', '-', '\x3', '-', '\x3', '-', '\x3', '-', '\x3', '.', - '\x3', '.', '\x3', '.', '\x3', '.', '\x3', '.', '\x3', '.', '\x3', '.', - '\x3', '/', '\x3', '/', '\x3', '/', '\x3', '\x30', '\x3', '\x30', '\x3', - '\x30', '\x3', '\x30', '\x3', '\x30', '\x3', '\x30', '\x3', '\x31', '\x3', - '\x31', '\x3', '\x31', '\x3', '\x31', '\x3', '\x31', '\x3', '\x31', '\x3', - '\x31', '\x3', '\x32', '\x3', '\x32', '\x3', '\x32', '\x3', '\x32', '\x3', - '\x33', '\x3', '\x33', '\x3', '\x33', '\x3', '\x33', '\x3', '\x33', '\x3', - '\x34', '\x3', '\x34', '\x3', '\x34', '\x3', '\x34', '\x3', '\x35', '\x3', - '\x35', '\x3', '\x35', '\x3', '\x35', '\x3', '\x35', '\x3', '\x35', '\x3', - '\x35', '\x3', '\x35', '\x3', '\x35', '\x3', '\x35', '\x3', '\x36', '\x3', - '\x36', '\x3', '\x36', '\x3', '\x36', '\x3', '\x36', '\x3', '\x36', '\x3', - '\x37', '\x3', '\x37', '\x3', '\x37', '\x3', '\x37', '\x3', '\x37', '\x3', - '\x37', '\x3', '\x38', '\x6', '\x38', '\x187', '\n', '\x38', '\r', '\x38', - '\xE', '\x38', '\x188', '\x3', '\x38', '\x3', '\x38', '\x3', '\x39', '\x5', - '\x39', '\x18E', '\n', '\x39', '\x3', '\x39', '\x6', '\x39', '\x191', - '\n', '\x39', '\r', '\x39', '\xE', '\x39', '\x192', '\x3', '\x39', '\x3', - '\x39', '\a', '\x39', '\x197', '\n', '\x39', '\f', '\x39', '\xE', '\x39', - '\x19A', '\v', '\x39', '\x5', '\x39', '\x19C', '\n', '\x39', '\x3', '\x39', - '\x3', '\x39', '\x5', '\x39', '\x1A0', '\n', '\x39', '\x3', '\x39', '\x6', - '\x39', '\x1A3', '\n', '\x39', '\r', '\x39', '\xE', '\x39', '\x1A4', '\x5', - '\x39', '\x1A7', '\n', '\x39', '\x3', '\x39', '\x5', '\x39', '\x1AA', - '\n', '\x39', '\x3', '\x39', '\x3', '\x39', '\x6', '\x39', '\x1AE', '\n', - '\x39', '\r', '\x39', '\xE', '\x39', '\x1AF', '\x3', '\x39', '\x3', '\x39', - '\x5', '\x39', '\x1B4', '\n', '\x39', '\x3', '\x39', '\x6', '\x39', '\x1B7', - '\n', '\x39', '\r', '\x39', '\xE', '\x39', '\x1B8', '\x5', '\x39', '\x1BB', - '\n', '\x39', '\x5', '\x39', '\x1BD', '\n', '\x39', '\x3', ':', '\x3', - ':', '\x3', ':', '\a', ':', '\x1C2', '\n', ':', '\f', ':', '\xE', ':', - '\x1C5', '\v', ':', '\x3', ':', '\x3', ':', '\x3', ':', '\x3', ':', '\a', - ':', '\x1CB', '\n', ':', '\f', ':', '\xE', ':', '\x1CE', '\v', ':', '\x3', - ':', '\x5', ':', '\x1D1', '\n', ':', '\x3', ';', '\x3', ';', '\x3', ';', - '\x5', ';', '\x1D6', '\n', ';', '\x3', '<', '\x3', '<', '\x3', '<', '\x3', - '<', '\x3', '<', '\x3', '<', '\x3', '=', '\x3', '=', '\x3', '>', '\x3', - '>', '\x3', '?', '\x3', '?', '\x3', '?', '\a', '?', '\x1E5', '\n', '?', - '\f', '?', '\xE', '?', '\x1E8', '\v', '?', '\x3', '?', '\a', '?', '\x1EB', - '\n', '?', '\f', '?', '\xE', '?', '\x1EE', '\v', '?', '\x5', '?', '\x1F0', - '\n', '?', '\x3', '@', '\x3', '@', '\x3', '@', '\x3', '\x41', '\x3', '\x41', - '\x3', '\x42', '\x3', '\x42', '\x3', '\x43', '\x3', '\x43', '\x3', '\x44', - '\x3', '\x44', '\x3', '\x45', '\x3', '\x45', '\x3', '\x46', '\x3', '\x46', - '\x3', 'G', '\x3', 'G', '\x3', 'H', '\x3', 'H', '\x3', 'I', '\x3', 'I', - '\x3', 'J', '\x3', 'J', '\x3', 'K', '\x3', 'K', '\x3', 'L', '\x3', 'L', - '\x3', 'M', '\x3', 'M', '\x3', 'N', '\x3', 'N', '\x3', 'O', '\x3', 'O', - '\x3', 'P', '\x3', 'P', '\x3', 'Q', '\x3', 'Q', '\x3', 'R', '\x3', 'R', - '\x3', 'S', '\x3', 'S', '\x3', 'T', '\x3', 'T', '\x3', 'U', '\x3', 'U', - '\x3', 'V', '\x3', 'V', '\x3', 'W', '\x3', 'W', '\x3', 'X', '\x3', 'X', - '\x3', 'Y', '\x3', 'Y', '\x3', 'Z', '\x3', 'Z', '\x3', '[', '\x3', '[', - '\x2', '\x2', '\\', '\x3', '\x3', '\x5', '\x4', '\a', '\x5', '\t', '\x6', - '\v', '\a', '\r', '\b', '\xF', '\t', '\x11', '\n', '\x13', '\v', '\x15', - '\f', '\x17', '\r', '\x19', '\xE', '\x1B', '\xF', '\x1D', '\x10', '\x1F', - '\x11', '!', '\x12', '#', '\x13', '%', '\x14', '\'', '\x15', ')', '\x16', - '+', '\x17', '-', '\x18', '/', '\x19', '\x31', '\x1A', '\x33', '\x1B', - '\x35', '\x1C', '\x37', '\x1D', '\x39', '\x1E', ';', '\x1F', '=', ' ', - '?', '!', '\x41', '\"', '\x43', '#', '\x45', '$', 'G', '%', 'I', '&', - 'K', '\'', 'M', '(', 'O', ')', 'Q', '*', 'S', '+', 'U', ',', 'W', '-', - 'Y', '.', '[', '/', ']', '\x30', '_', '\x31', '\x61', '\x32', '\x63', - '\x33', '\x65', '\x34', 'g', '\x35', 'i', '\x36', 'k', '\x37', 'm', '\x38', - 'o', '\x39', 'q', ':', 's', ';', 'u', '\x2', 'w', '\x2', 'y', '\x2', '{', - '\x2', '}', '<', '\x7F', '=', '\x81', '\x2', '\x83', '\x2', '\x85', '\x2', - '\x87', '\x2', '\x89', '\x2', '\x8B', '\x2', '\x8D', '\x2', '\x8F', '\x2', - '\x91', '\x2', '\x93', '\x2', '\x95', '\x2', '\x97', '\x2', '\x99', '\x2', - '\x9B', '\x2', '\x9D', '\x2', '\x9F', '\x2', '\xA1', '\x2', '\xA3', '\x2', - '\xA5', '\x2', '\xA7', '\x2', '\xA9', '\x2', '\xAB', '\x2', '\xAD', '\x2', - '\xAF', '\x2', '\xB1', '\x2', '\xB3', '\x2', '\xB5', '\x2', '\x3', '\x2', - '#', '\x5', '\x2', '\v', '\f', '\xF', '\xF', '\"', '\"', '\x4', '\x2', - '-', '-', '/', '/', '\n', '\x2', '$', '$', '\x31', '\x31', '^', '^', '\x64', - '\x64', 'h', 'h', 'p', 'p', 't', 't', 'v', 'v', '\x5', '\x2', '\x32', - ';', '\x43', 'H', '\x63', 'h', '\x5', '\x2', '\x2', '!', '$', '$', '^', - '^', '\x5', '\x2', '\x43', '\\', '\x61', '\x61', '\x63', '|', '\x3', '\x2', - '\x32', ';', '\x4', '\x2', '\x43', '\x43', '\x63', '\x63', '\x4', '\x2', - '\x44', '\x44', '\x64', '\x64', '\x4', '\x2', '\x45', '\x45', '\x65', - '\x65', '\x4', '\x2', '\x46', '\x46', '\x66', '\x66', '\x4', '\x2', 'G', - 'G', 'g', 'g', '\x4', '\x2', 'H', 'H', 'h', 'h', '\x4', '\x2', 'I', 'I', - 'i', 'i', '\x4', '\x2', 'J', 'J', 'j', 'j', '\x4', '\x2', 'K', 'K', 'k', - 'k', '\x4', '\x2', 'L', 'L', 'l', 'l', '\x4', '\x2', 'M', 'M', 'm', 'm', - '\x4', '\x2', 'N', 'N', 'n', 'n', '\x4', '\x2', 'O', 'O', 'o', 'o', '\x4', - '\x2', 'P', 'P', 'p', 'p', '\x4', '\x2', 'Q', 'Q', 'q', 'q', '\x4', '\x2', - 'R', 'R', 'r', 'r', '\x4', '\x2', 'S', 'S', 's', 's', '\x4', '\x2', 'T', - 'T', 't', 't', '\x4', '\x2', 'U', 'U', 'u', 'u', '\x4', '\x2', 'V', 'V', - 'v', 'v', '\x4', '\x2', 'W', 'W', 'w', 'w', '\x4', '\x2', 'X', 'X', 'x', - 'x', '\x4', '\x2', 'Y', 'Y', 'y', 'y', '\x4', '\x2', 'Z', 'Z', 'z', 'z', - '\x4', '\x2', '[', '[', '{', '{', '\x4', '\x2', '\\', '\\', '|', '|', - '\x2', '\x221', '\x2', '\x3', '\x3', '\x2', '\x2', '\x2', '\x2', '\x5', - '\x3', '\x2', '\x2', '\x2', '\x2', '\a', '\x3', '\x2', '\x2', '\x2', '\x2', - '\t', '\x3', '\x2', '\x2', '\x2', '\x2', '\v', '\x3', '\x2', '\x2', '\x2', - '\x2', '\r', '\x3', '\x2', '\x2', '\x2', '\x2', '\xF', '\x3', '\x2', '\x2', - '\x2', '\x2', '\x11', '\x3', '\x2', '\x2', '\x2', '\x2', '\x13', '\x3', - '\x2', '\x2', '\x2', '\x2', '\x15', '\x3', '\x2', '\x2', '\x2', '\x2', - '\x17', '\x3', '\x2', '\x2', '\x2', '\x2', '\x19', '\x3', '\x2', '\x2', - '\x2', '\x2', '\x1B', '\x3', '\x2', '\x2', '\x2', '\x2', '\x1D', '\x3', - '\x2', '\x2', '\x2', '\x2', '\x1F', '\x3', '\x2', '\x2', '\x2', '\x2', - '!', '\x3', '\x2', '\x2', '\x2', '\x2', '#', '\x3', '\x2', '\x2', '\x2', - '\x2', '%', '\x3', '\x2', '\x2', '\x2', '\x2', '\'', '\x3', '\x2', '\x2', - '\x2', '\x2', ')', '\x3', '\x2', '\x2', '\x2', '\x2', '+', '\x3', '\x2', - '\x2', '\x2', '\x2', '-', '\x3', '\x2', '\x2', '\x2', '\x2', '/', '\x3', - '\x2', '\x2', '\x2', '\x2', '\x31', '\x3', '\x2', '\x2', '\x2', '\x2', - '\x33', '\x3', '\x2', '\x2', '\x2', '\x2', '\x35', '\x3', '\x2', '\x2', - '\x2', '\x2', '\x37', '\x3', '\x2', '\x2', '\x2', '\x2', '\x39', '\x3', - '\x2', '\x2', '\x2', '\x2', ';', '\x3', '\x2', '\x2', '\x2', '\x2', '=', - '\x3', '\x2', '\x2', '\x2', '\x2', '?', '\x3', '\x2', '\x2', '\x2', '\x2', - '\x41', '\x3', '\x2', '\x2', '\x2', '\x2', '\x43', '\x3', '\x2', '\x2', - '\x2', '\x2', '\x45', '\x3', '\x2', '\x2', '\x2', '\x2', 'G', '\x3', '\x2', - '\x2', '\x2', '\x2', 'I', '\x3', '\x2', '\x2', '\x2', '\x2', 'K', '\x3', - '\x2', '\x2', '\x2', '\x2', 'M', '\x3', '\x2', '\x2', '\x2', '\x2', 'O', - '\x3', '\x2', '\x2', '\x2', '\x2', 'Q', '\x3', '\x2', '\x2', '\x2', '\x2', - 'S', '\x3', '\x2', '\x2', '\x2', '\x2', 'U', '\x3', '\x2', '\x2', '\x2', - '\x2', 'W', '\x3', '\x2', '\x2', '\x2', '\x2', 'Y', '\x3', '\x2', '\x2', - '\x2', '\x2', '[', '\x3', '\x2', '\x2', '\x2', '\x2', ']', '\x3', '\x2', - '\x2', '\x2', '\x2', '_', '\x3', '\x2', '\x2', '\x2', '\x2', '\x61', '\x3', - '\x2', '\x2', '\x2', '\x2', '\x63', '\x3', '\x2', '\x2', '\x2', '\x2', - '\x65', '\x3', '\x2', '\x2', '\x2', '\x2', 'g', '\x3', '\x2', '\x2', '\x2', - '\x2', 'i', '\x3', '\x2', '\x2', '\x2', '\x2', 'k', '\x3', '\x2', '\x2', - '\x2', '\x2', 'm', '\x3', '\x2', '\x2', '\x2', '\x2', 'o', '\x3', '\x2', - '\x2', '\x2', '\x2', 'q', '\x3', '\x2', '\x2', '\x2', '\x2', 's', '\x3', - '\x2', '\x2', '\x2', '\x2', '}', '\x3', '\x2', '\x2', '\x2', '\x2', '\x7F', - '\x3', '\x2', '\x2', '\x2', '\x3', '\xB7', '\x3', '\x2', '\x2', '\x2', - '\x5', '\xB9', '\x3', '\x2', '\x2', '\x2', '\a', '\xBB', '\x3', '\x2', - '\x2', '\x2', '\t', '\xBD', '\x3', '\x2', '\x2', '\x2', '\v', '\xBF', - '\x3', '\x2', '\x2', '\x2', '\r', '\xC1', '\x3', '\x2', '\x2', '\x2', - '\xF', '\xC3', '\x3', '\x2', '\x2', '\x2', '\x11', '\xC5', '\x3', '\x2', - '\x2', '\x2', '\x13', '\xC7', '\x3', '\x2', '\x2', '\x2', '\x15', '\xC9', - '\x3', '\x2', '\x2', '\x2', '\x17', '\xCC', '\x3', '\x2', '\x2', '\x2', - '\x19', '\xCE', '\x3', '\x2', '\x2', '\x2', '\x1B', '\xD0', '\x3', '\x2', - '\x2', '\x2', '\x1D', '\xD2', '\x3', '\x2', '\x2', '\x2', '\x1F', '\xD4', - '\x3', '\x2', '\x2', '\x2', '!', '\xD6', '\x3', '\x2', '\x2', '\x2', '#', - '\xD8', '\x3', '\x2', '\x2', '\x2', '%', '\xDB', '\x3', '\x2', '\x2', - '\x2', '\'', '\xDE', '\x3', '\x2', '\x2', '\x2', ')', '\xE0', '\x3', '\x2', - '\x2', '\x2', '+', '\xE3', '\x3', '\x2', '\x2', '\x2', '-', '\xE5', '\x3', - '\x2', '\x2', '\x2', '/', '\xE7', '\x3', '\x2', '\x2', '\x2', '\x31', - '\xE9', '\x3', '\x2', '\x2', '\x2', '\x33', '\xEC', '\x3', '\x2', '\x2', - '\x2', '\x35', '\xEE', '\x3', '\x2', '\x2', '\x2', '\x37', '\xF0', '\x3', - '\x2', '\x2', '\x2', '\x39', '\xF2', '\x3', '\x2', '\x2', '\x2', ';', - '\xF6', '\x3', '\x2', '\x2', '\x2', '=', '\xFC', '\x3', '\x2', '\x2', - '\x2', '?', '\xFF', '\x3', '\x2', '\x2', '\x2', '\x41', '\x103', '\x3', - '\x2', '\x2', '\x2', '\x43', '\x10B', '\x3', '\x2', '\x2', '\x2', '\x45', - '\x10E', '\x3', '\x2', '\x2', '\x2', 'G', '\x113', '\x3', '\x2', '\x2', - '\x2', 'I', '\x11C', '\x3', '\x2', '\x2', '\x2', 'K', '\x123', '\x3', - '\x2', '\x2', '\x2', 'M', '\x129', '\x3', '\x2', '\x2', '\x2', 'O', '\x12E', - '\x3', '\x2', '\x2', '\x2', 'Q', '\x134', '\x3', '\x2', '\x2', '\x2', - 'S', '\x137', '\x3', '\x2', '\x2', '\x2', 'U', '\x13C', '\x3', '\x2', - '\x2', '\x2', 'W', '\x142', '\x3', '\x2', '\x2', '\x2', 'Y', '\x146', - '\x3', '\x2', '\x2', '\x2', '[', '\x14B', '\x3', '\x2', '\x2', '\x2', - ']', '\x152', '\x3', '\x2', '\x2', '\x2', '_', '\x155', '\x3', '\x2', - '\x2', '\x2', '\x61', '\x15B', '\x3', '\x2', '\x2', '\x2', '\x63', '\x162', - '\x3', '\x2', '\x2', '\x2', '\x65', '\x166', '\x3', '\x2', '\x2', '\x2', - 'g', '\x16B', '\x3', '\x2', '\x2', '\x2', 'i', '\x16F', '\x3', '\x2', - '\x2', '\x2', 'k', '\x179', '\x3', '\x2', '\x2', '\x2', 'm', '\x17F', - '\x3', '\x2', '\x2', '\x2', 'o', '\x186', '\x3', '\x2', '\x2', '\x2', - 'q', '\x1BC', '\x3', '\x2', '\x2', '\x2', 's', '\x1D0', '\x3', '\x2', - '\x2', '\x2', 'u', '\x1D2', '\x3', '\x2', '\x2', '\x2', 'w', '\x1D7', - '\x3', '\x2', '\x2', '\x2', 'y', '\x1DD', '\x3', '\x2', '\x2', '\x2', - '{', '\x1DF', '\x3', '\x2', '\x2', '\x2', '}', '\x1EF', '\x3', '\x2', - '\x2', '\x2', '\x7F', '\x1F1', '\x3', '\x2', '\x2', '\x2', '\x81', '\x1F4', - '\x3', '\x2', '\x2', '\x2', '\x83', '\x1F6', '\x3', '\x2', '\x2', '\x2', - '\x85', '\x1F8', '\x3', '\x2', '\x2', '\x2', '\x87', '\x1FA', '\x3', '\x2', - '\x2', '\x2', '\x89', '\x1FC', '\x3', '\x2', '\x2', '\x2', '\x8B', '\x1FE', - '\x3', '\x2', '\x2', '\x2', '\x8D', '\x200', '\x3', '\x2', '\x2', '\x2', - '\x8F', '\x202', '\x3', '\x2', '\x2', '\x2', '\x91', '\x204', '\x3', '\x2', - '\x2', '\x2', '\x93', '\x206', '\x3', '\x2', '\x2', '\x2', '\x95', '\x208', - '\x3', '\x2', '\x2', '\x2', '\x97', '\x20A', '\x3', '\x2', '\x2', '\x2', - '\x99', '\x20C', '\x3', '\x2', '\x2', '\x2', '\x9B', '\x20E', '\x3', '\x2', - '\x2', '\x2', '\x9D', '\x210', '\x3', '\x2', '\x2', '\x2', '\x9F', '\x212', - '\x3', '\x2', '\x2', '\x2', '\xA1', '\x214', '\x3', '\x2', '\x2', '\x2', - '\xA3', '\x216', '\x3', '\x2', '\x2', '\x2', '\xA5', '\x218', '\x3', '\x2', - '\x2', '\x2', '\xA7', '\x21A', '\x3', '\x2', '\x2', '\x2', '\xA9', '\x21C', - '\x3', '\x2', '\x2', '\x2', '\xAB', '\x21E', '\x3', '\x2', '\x2', '\x2', - '\xAD', '\x220', '\x3', '\x2', '\x2', '\x2', '\xAF', '\x222', '\x3', '\x2', - '\x2', '\x2', '\xB1', '\x224', '\x3', '\x2', '\x2', '\x2', '\xB3', '\x226', - '\x3', '\x2', '\x2', '\x2', '\xB5', '\x228', '\x3', '\x2', '\x2', '\x2', - '\xB7', '\xB8', '\a', ',', '\x2', '\x2', '\xB8', '\x4', '\x3', '\x2', - '\x2', '\x2', '\xB9', '\xBA', '\a', '.', '\x2', '\x2', '\xBA', '\x6', - '\x3', '\x2', '\x2', '\x2', '\xBB', '\xBC', '\a', '*', '\x2', '\x2', '\xBC', - '\b', '\x3', '\x2', '\x2', '\x2', '\xBD', '\xBE', '\a', '+', '\x2', '\x2', - '\xBE', '\n', '\x3', '\x2', '\x2', '\x2', '\xBF', '\xC0', '\a', '\x30', - '\x2', '\x2', '\xC0', '\f', '\x3', '\x2', '\x2', '\x2', '\xC1', '\xC2', - '\a', ']', '\x2', '\x2', '\xC2', '\xE', '\x3', '\x2', '\x2', '\x2', '\xC3', - '\xC4', '\a', '_', '\x2', '\x2', '\xC4', '\x10', '\x3', '\x2', '\x2', - '\x2', '\xC5', '\xC6', '\a', '\x41', '\x2', '\x2', '\xC6', '\x12', '\x3', - '\x2', '\x2', '\x2', '\xC7', '\xC8', '\a', '<', '\x2', '\x2', '\xC8', - '\x14', '\x3', '\x2', '\x2', '\x2', '\xC9', '\xCA', '\a', '\x41', '\x2', - '\x2', '\xCA', '\xCB', '\a', '\x41', '\x2', '\x2', '\xCB', '\x16', '\x3', - '\x2', '\x2', '\x2', '\xCC', '\xCD', '\a', '\x31', '\x2', '\x2', '\xCD', - '\x18', '\x3', '\x2', '\x2', '\x2', '\xCE', '\xCF', '\a', '\'', '\x2', - '\x2', '\xCF', '\x1A', '\x3', '\x2', '\x2', '\x2', '\xD0', '\xD1', '\a', - '-', '\x2', '\x2', '\xD1', '\x1C', '\x3', '\x2', '\x2', '\x2', '\xD2', - '\xD3', '\a', '/', '\x2', '\x2', '\xD3', '\x1E', '\x3', '\x2', '\x2', - '\x2', '\xD4', '\xD5', '\a', '>', '\x2', '\x2', '\xD5', ' ', '\x3', '\x2', - '\x2', '\x2', '\xD6', '\xD7', '\a', '@', '\x2', '\x2', '\xD7', '\"', '\x3', - '\x2', '\x2', '\x2', '\xD8', '\xD9', '\a', '@', '\x2', '\x2', '\xD9', - '\xDA', '\a', '?', '\x2', '\x2', '\xDA', '$', '\x3', '\x2', '\x2', '\x2', - '\xDB', '\xDC', '\a', '>', '\x2', '\x2', '\xDC', '\xDD', '\a', '?', '\x2', - '\x2', '\xDD', '&', '\x3', '\x2', '\x2', '\x2', '\xDE', '\xDF', '\a', - '?', '\x2', '\x2', '\xDF', '(', '\x3', '\x2', '\x2', '\x2', '\xE0', '\xE1', - '\a', '#', '\x2', '\x2', '\xE1', '\xE2', '\a', '?', '\x2', '\x2', '\xE2', - '*', '\x3', '\x2', '\x2', '\x2', '\xE3', '\xE4', '\a', '(', '\x2', '\x2', - '\xE4', ',', '\x3', '\x2', '\x2', '\x2', '\xE5', '\xE6', '\a', '`', '\x2', - '\x2', '\xE6', '.', '\x3', '\x2', '\x2', '\x2', '\xE7', '\xE8', '\a', - '~', '\x2', '\x2', '\xE8', '\x30', '\x3', '\x2', '\x2', '\x2', '\xE9', - '\xEA', '\a', '~', '\x2', '\x2', '\xEA', '\xEB', '\a', '~', '\x2', '\x2', - '\xEB', '\x32', '\x3', '\x2', '\x2', '\x2', '\xEC', '\xED', '\a', '\x80', - '\x2', '\x2', '\xED', '\x34', '\x3', '\x2', '\x2', '\x2', '\xEE', '\xEF', - '\a', '}', '\x2', '\x2', '\xEF', '\x36', '\x3', '\x2', '\x2', '\x2', '\xF0', - '\xF1', '\a', '\x7F', '\x2', '\x2', '\xF1', '\x38', '\x3', '\x2', '\x2', - '\x2', '\xF2', '\xF3', '\x5', '\x83', '\x42', '\x2', '\xF3', '\xF4', '\x5', - '\x9D', 'O', '\x2', '\xF4', '\xF5', '\x5', '\x89', '\x45', '\x2', '\xF5', - ':', '\x3', '\x2', '\x2', '\x2', '\xF6', '\xF7', '\x5', '\x83', '\x42', - '\x2', '\xF7', '\xF8', '\x5', '\xA5', 'S', '\x2', '\xF8', '\xF9', '\x5', - '\xA5', 'S', '\x2', '\xF9', '\xFA', '\x5', '\x83', '\x42', '\x2', '\xFA', - '\xFB', '\x5', '\xB3', 'Z', '\x2', '\xFB', '<', '\x3', '\x2', '\x2', '\x2', - '\xFC', '\xFD', '\x5', '\x83', '\x42', '\x2', '\xFD', '\xFE', '\x5', '\xA7', - 'T', '\x2', '\xFE', '>', '\x3', '\x2', '\x2', '\x2', '\xFF', '\x100', - '\x5', '\x83', '\x42', '\x2', '\x100', '\x101', '\x5', '\xA7', 'T', '\x2', - '\x101', '\x102', '\x5', '\x87', '\x44', '\x2', '\x102', '@', '\x3', '\x2', - '\x2', '\x2', '\x103', '\x104', '\x5', '\x85', '\x43', '\x2', '\x104', - '\x105', '\x5', '\x8B', '\x46', '\x2', '\x105', '\x106', '\x5', '\xA9', - 'U', '\x2', '\x106', '\x107', '\x5', '\xAF', 'X', '\x2', '\x107', '\x108', - '\x5', '\x8B', '\x46', '\x2', '\x108', '\x109', '\x5', '\x8B', '\x46', - '\x2', '\x109', '\x10A', '\x5', '\x9D', 'O', '\x2', '\x10A', '\x42', '\x3', - '\x2', '\x2', '\x2', '\x10B', '\x10C', '\x5', '\x85', '\x43', '\x2', '\x10C', - '\x10D', '\x5', '\xB3', 'Z', '\x2', '\x10D', '\x44', '\x3', '\x2', '\x2', - '\x2', '\x10E', '\x10F', '\x5', '\x89', '\x45', '\x2', '\x10F', '\x110', - '\x5', '\x8B', '\x46', '\x2', '\x110', '\x111', '\x5', '\xA7', 'T', '\x2', - '\x111', '\x112', '\x5', '\x87', '\x44', '\x2', '\x112', '\x46', '\x3', - '\x2', '\x2', '\x2', '\x113', '\x114', '\x5', '\x89', '\x45', '\x2', '\x114', - '\x115', '\x5', '\x93', 'J', '\x2', '\x115', '\x116', '\x5', '\xA7', 'T', - '\x2', '\x116', '\x117', '\x5', '\xA9', 'U', '\x2', '\x117', '\x118', - '\x5', '\x93', 'J', '\x2', '\x118', '\x119', '\x5', '\x9D', 'O', '\x2', - '\x119', '\x11A', '\x5', '\x87', '\x44', '\x2', '\x11A', '\x11B', '\x5', - '\xA9', 'U', '\x2', '\x11B', 'H', '\x3', '\x2', '\x2', '\x2', '\x11C', - '\x11D', '\x5', '\x8B', '\x46', '\x2', '\x11D', '\x11E', '\x5', '\xB1', - 'Y', '\x2', '\x11E', '\x11F', '\x5', '\x93', 'J', '\x2', '\x11F', '\x120', - '\x5', '\xA7', 'T', '\x2', '\x120', '\x121', '\x5', '\xA9', 'U', '\x2', - '\x121', '\x122', '\x5', '\xA7', 'T', '\x2', '\x122', 'J', '\x3', '\x2', - '\x2', '\x2', '\x123', '\x124', '\a', 'h', '\x2', '\x2', '\x124', '\x125', - '\a', '\x63', '\x2', '\x2', '\x125', '\x126', '\a', 'n', '\x2', '\x2', - '\x126', '\x127', '\a', 'u', '\x2', '\x2', '\x127', '\x128', '\a', 'g', - '\x2', '\x2', '\x128', 'L', '\x3', '\x2', '\x2', '\x2', '\x129', '\x12A', - '\x5', '\x8D', 'G', '\x2', '\x12A', '\x12B', '\x5', '\xA5', 'S', '\x2', - '\x12B', '\x12C', '\x5', '\x9F', 'P', '\x2', '\x12C', '\x12D', '\x5', - '\x9B', 'N', '\x2', '\x12D', 'N', '\x3', '\x2', '\x2', '\x2', '\x12E', - '\x12F', '\x5', '\x8F', 'H', '\x2', '\x12F', '\x130', '\x5', '\xA5', 'S', - '\x2', '\x130', '\x131', '\x5', '\x9F', 'P', '\x2', '\x131', '\x132', - '\x5', '\xAB', 'V', '\x2', '\x132', '\x133', '\x5', '\xA1', 'Q', '\x2', - '\x133', 'P', '\x3', '\x2', '\x2', '\x2', '\x134', '\x135', '\x5', '\x93', - 'J', '\x2', '\x135', '\x136', '\x5', '\x9D', 'O', '\x2', '\x136', 'R', - '\x3', '\x2', '\x2', '\x2', '\x137', '\x138', '\x5', '\x95', 'K', '\x2', - '\x138', '\x139', '\x5', '\x9F', 'P', '\x2', '\x139', '\x13A', '\x5', - '\x93', 'J', '\x2', '\x13A', '\x13B', '\x5', '\x9D', 'O', '\x2', '\x13B', - 'T', '\x3', '\x2', '\x2', '\x2', '\x13C', '\x13D', '\x5', '\x99', 'M', - '\x2', '\x13D', '\x13E', '\x5', '\x93', 'J', '\x2', '\x13E', '\x13F', - '\x5', '\x9B', 'N', '\x2', '\x13F', '\x140', '\x5', '\x93', 'J', '\x2', - '\x140', '\x141', '\x5', '\xA9', 'U', '\x2', '\x141', 'V', '\x3', '\x2', - '\x2', '\x2', '\x142', '\x143', '\x5', '\x9D', 'O', '\x2', '\x143', '\x144', - '\x5', '\x9F', 'P', '\x2', '\x144', '\x145', '\x5', '\xA9', 'U', '\x2', - '\x145', 'X', '\x3', '\x2', '\x2', '\x2', '\x146', '\x147', '\a', 'p', - '\x2', '\x2', '\x147', '\x148', '\a', 'w', '\x2', '\x2', '\x148', '\x149', - '\a', 'n', '\x2', '\x2', '\x149', '\x14A', '\a', 'n', '\x2', '\x2', '\x14A', - 'Z', '\x3', '\x2', '\x2', '\x2', '\x14B', '\x14C', '\x5', '\x9F', 'P', - '\x2', '\x14C', '\x14D', '\x5', '\x8D', 'G', '\x2', '\x14D', '\x14E', - '\x5', '\x8D', 'G', '\x2', '\x14E', '\x14F', '\x5', '\xA7', 'T', '\x2', - '\x14F', '\x150', '\x5', '\x8B', '\x46', '\x2', '\x150', '\x151', '\x5', - '\xA9', 'U', '\x2', '\x151', '\\', '\x3', '\x2', '\x2', '\x2', '\x152', - '\x153', '\x5', '\x9F', 'P', '\x2', '\x153', '\x154', '\x5', '\xA5', 'S', - '\x2', '\x154', '^', '\x3', '\x2', '\x2', '\x2', '\x155', '\x156', '\x5', - '\x9F', 'P', '\x2', '\x156', '\x157', '\x5', '\xA5', 'S', '\x2', '\x157', - '\x158', '\x5', '\x89', '\x45', '\x2', '\x158', '\x159', '\x5', '\x8B', - '\x46', '\x2', '\x159', '\x15A', '\x5', '\xA5', 'S', '\x2', '\x15A', '`', - '\x3', '\x2', '\x2', '\x2', '\x15B', '\x15C', '\x5', '\xA7', 'T', '\x2', - '\x15C', '\x15D', '\x5', '\x8B', '\x46', '\x2', '\x15D', '\x15E', '\x5', - '\x99', 'M', '\x2', '\x15E', '\x15F', '\x5', '\x8B', '\x46', '\x2', '\x15F', - '\x160', '\x5', '\x87', '\x44', '\x2', '\x160', '\x161', '\x5', '\xA9', - 'U', '\x2', '\x161', '\x62', '\x3', '\x2', '\x2', '\x2', '\x162', '\x163', - '\x5', '\xA9', 'U', '\x2', '\x163', '\x164', '\x5', '\x9F', 'P', '\x2', - '\x164', '\x165', '\x5', '\xA1', 'Q', '\x2', '\x165', '\x64', '\x3', '\x2', - '\x2', '\x2', '\x166', '\x167', '\a', 'v', '\x2', '\x2', '\x167', '\x168', - '\a', 't', '\x2', '\x2', '\x168', '\x169', '\a', 'w', '\x2', '\x2', '\x169', - '\x16A', '\a', 'g', '\x2', '\x2', '\x16A', '\x66', '\x3', '\x2', '\x2', - '\x2', '\x16B', '\x16C', '\x5', '\xAB', 'V', '\x2', '\x16C', '\x16D', - '\x5', '\x89', '\x45', '\x2', '\x16D', '\x16E', '\x5', '\x8D', 'G', '\x2', - '\x16E', 'h', '\x3', '\x2', '\x2', '\x2', '\x16F', '\x170', '\a', 'w', - '\x2', '\x2', '\x170', '\x171', '\a', 'p', '\x2', '\x2', '\x171', '\x172', - '\a', '\x66', '\x2', '\x2', '\x172', '\x173', '\a', 'g', '\x2', '\x2', - '\x173', '\x174', '\a', 'h', '\x2', '\x2', '\x174', '\x175', '\a', 'k', - '\x2', '\x2', '\x175', '\x176', '\a', 'p', '\x2', '\x2', '\x176', '\x177', - '\a', 'g', '\x2', '\x2', '\x177', '\x178', '\a', '\x66', '\x2', '\x2', - '\x178', 'j', '\x3', '\x2', '\x2', '\x2', '\x179', '\x17A', '\x5', '\xAD', - 'W', '\x2', '\x17A', '\x17B', '\x5', '\x83', '\x42', '\x2', '\x17B', '\x17C', - '\x5', '\x99', 'M', '\x2', '\x17C', '\x17D', '\x5', '\xAB', 'V', '\x2', - '\x17D', '\x17E', '\x5', '\x8B', '\x46', '\x2', '\x17E', 'l', '\x3', '\x2', - '\x2', '\x2', '\x17F', '\x180', '\x5', '\xAF', 'X', '\x2', '\x180', '\x181', - '\x5', '\x91', 'I', '\x2', '\x181', '\x182', '\x5', '\x8B', '\x46', '\x2', - '\x182', '\x183', '\x5', '\xA5', 'S', '\x2', '\x183', '\x184', '\x5', - '\x8B', '\x46', '\x2', '\x184', 'n', '\x3', '\x2', '\x2', '\x2', '\x185', - '\x187', '\t', '\x2', '\x2', '\x2', '\x186', '\x185', '\x3', '\x2', '\x2', - '\x2', '\x187', '\x188', '\x3', '\x2', '\x2', '\x2', '\x188', '\x186', - '\x3', '\x2', '\x2', '\x2', '\x188', '\x189', '\x3', '\x2', '\x2', '\x2', - '\x189', '\x18A', '\x3', '\x2', '\x2', '\x2', '\x18A', '\x18B', '\b', - '\x38', '\x2', '\x2', '\x18B', 'p', '\x3', '\x2', '\x2', '\x2', '\x18C', - '\x18E', '\t', '\x3', '\x2', '\x2', '\x18D', '\x18C', '\x3', '\x2', '\x2', - '\x2', '\x18D', '\x18E', '\x3', '\x2', '\x2', '\x2', '\x18E', '\x190', - '\x3', '\x2', '\x2', '\x2', '\x18F', '\x191', '\x5', '\x81', '\x41', '\x2', - '\x190', '\x18F', '\x3', '\x2', '\x2', '\x2', '\x191', '\x192', '\x3', - '\x2', '\x2', '\x2', '\x192', '\x190', '\x3', '\x2', '\x2', '\x2', '\x192', - '\x193', '\x3', '\x2', '\x2', '\x2', '\x193', '\x19B', '\x3', '\x2', '\x2', - '\x2', '\x194', '\x198', '\a', '\x30', '\x2', '\x2', '\x195', '\x197', - '\x5', '\x81', '\x41', '\x2', '\x196', '\x195', '\x3', '\x2', '\x2', '\x2', - '\x197', '\x19A', '\x3', '\x2', '\x2', '\x2', '\x198', '\x196', '\x3', - '\x2', '\x2', '\x2', '\x198', '\x199', '\x3', '\x2', '\x2', '\x2', '\x199', - '\x19C', '\x3', '\x2', '\x2', '\x2', '\x19A', '\x198', '\x3', '\x2', '\x2', - '\x2', '\x19B', '\x194', '\x3', '\x2', '\x2', '\x2', '\x19B', '\x19C', - '\x3', '\x2', '\x2', '\x2', '\x19C', '\x1A6', '\x3', '\x2', '\x2', '\x2', - '\x19D', '\x19F', '\x5', '\x8B', '\x46', '\x2', '\x19E', '\x1A0', '\t', - '\x3', '\x2', '\x2', '\x19F', '\x19E', '\x3', '\x2', '\x2', '\x2', '\x19F', - '\x1A0', '\x3', '\x2', '\x2', '\x2', '\x1A0', '\x1A2', '\x3', '\x2', '\x2', - '\x2', '\x1A1', '\x1A3', '\x5', '\x81', '\x41', '\x2', '\x1A2', '\x1A1', - '\x3', '\x2', '\x2', '\x2', '\x1A3', '\x1A4', '\x3', '\x2', '\x2', '\x2', - '\x1A4', '\x1A2', '\x3', '\x2', '\x2', '\x2', '\x1A4', '\x1A5', '\x3', - '\x2', '\x2', '\x2', '\x1A5', '\x1A7', '\x3', '\x2', '\x2', '\x2', '\x1A6', - '\x19D', '\x3', '\x2', '\x2', '\x2', '\x1A6', '\x1A7', '\x3', '\x2', '\x2', - '\x2', '\x1A7', '\x1BD', '\x3', '\x2', '\x2', '\x2', '\x1A8', '\x1AA', - '\t', '\x3', '\x2', '\x2', '\x1A9', '\x1A8', '\x3', '\x2', '\x2', '\x2', - '\x1A9', '\x1AA', '\x3', '\x2', '\x2', '\x2', '\x1AA', '\x1AB', '\x3', - '\x2', '\x2', '\x2', '\x1AB', '\x1AD', '\a', '\x30', '\x2', '\x2', '\x1AC', - '\x1AE', '\x5', '\x81', '\x41', '\x2', '\x1AD', '\x1AC', '\x3', '\x2', - '\x2', '\x2', '\x1AE', '\x1AF', '\x3', '\x2', '\x2', '\x2', '\x1AF', '\x1AD', - '\x3', '\x2', '\x2', '\x2', '\x1AF', '\x1B0', '\x3', '\x2', '\x2', '\x2', - '\x1B0', '\x1BA', '\x3', '\x2', '\x2', '\x2', '\x1B1', '\x1B3', '\x5', - '\x8B', '\x46', '\x2', '\x1B2', '\x1B4', '\t', '\x3', '\x2', '\x2', '\x1B3', - '\x1B2', '\x3', '\x2', '\x2', '\x2', '\x1B3', '\x1B4', '\x3', '\x2', '\x2', - '\x2', '\x1B4', '\x1B6', '\x3', '\x2', '\x2', '\x2', '\x1B5', '\x1B7', - '\x5', '\x81', '\x41', '\x2', '\x1B6', '\x1B5', '\x3', '\x2', '\x2', '\x2', - '\x1B7', '\x1B8', '\x3', '\x2', '\x2', '\x2', '\x1B8', '\x1B6', '\x3', - '\x2', '\x2', '\x2', '\x1B8', '\x1B9', '\x3', '\x2', '\x2', '\x2', '\x1B9', - '\x1BB', '\x3', '\x2', '\x2', '\x2', '\x1BA', '\x1B1', '\x3', '\x2', '\x2', - '\x2', '\x1BA', '\x1BB', '\x3', '\x2', '\x2', '\x2', '\x1BB', '\x1BD', - '\x3', '\x2', '\x2', '\x2', '\x1BC', '\x18D', '\x3', '\x2', '\x2', '\x2', - '\x1BC', '\x1A9', '\x3', '\x2', '\x2', '\x2', '\x1BD', 'r', '\x3', '\x2', - '\x2', '\x2', '\x1BE', '\x1C3', '\a', '$', '\x2', '\x2', '\x1BF', '\x1C2', - '\x5', 'u', ';', '\x2', '\x1C0', '\x1C2', '\x5', '{', '>', '\x2', '\x1C1', - '\x1BF', '\x3', '\x2', '\x2', '\x2', '\x1C1', '\x1C0', '\x3', '\x2', '\x2', - '\x2', '\x1C2', '\x1C5', '\x3', '\x2', '\x2', '\x2', '\x1C3', '\x1C1', - '\x3', '\x2', '\x2', '\x2', '\x1C3', '\x1C4', '\x3', '\x2', '\x2', '\x2', - '\x1C4', '\x1C6', '\x3', '\x2', '\x2', '\x2', '\x1C5', '\x1C3', '\x3', - '\x2', '\x2', '\x2', '\x1C6', '\x1D1', '\a', '$', '\x2', '\x2', '\x1C7', - '\x1CC', '\a', ')', '\x2', '\x2', '\x1C8', '\x1CB', '\x5', 'u', ';', '\x2', - '\x1C9', '\x1CB', '\x5', '{', '>', '\x2', '\x1CA', '\x1C8', '\x3', '\x2', - '\x2', '\x2', '\x1CA', '\x1C9', '\x3', '\x2', '\x2', '\x2', '\x1CB', '\x1CE', - '\x3', '\x2', '\x2', '\x2', '\x1CC', '\x1CA', '\x3', '\x2', '\x2', '\x2', - '\x1CC', '\x1CD', '\x3', '\x2', '\x2', '\x2', '\x1CD', '\x1CF', '\x3', - '\x2', '\x2', '\x2', '\x1CE', '\x1CC', '\x3', '\x2', '\x2', '\x2', '\x1CF', - '\x1D1', '\a', ')', '\x2', '\x2', '\x1D0', '\x1BE', '\x3', '\x2', '\x2', - '\x2', '\x1D0', '\x1C7', '\x3', '\x2', '\x2', '\x2', '\x1D1', 't', '\x3', - '\x2', '\x2', '\x2', '\x1D2', '\x1D5', '\a', '^', '\x2', '\x2', '\x1D3', - '\x1D6', '\t', '\x4', '\x2', '\x2', '\x1D4', '\x1D6', '\x5', 'w', '<', - '\x2', '\x1D5', '\x1D3', '\x3', '\x2', '\x2', '\x2', '\x1D5', '\x1D4', - '\x3', '\x2', '\x2', '\x2', '\x1D6', 'v', '\x3', '\x2', '\x2', '\x2', - '\x1D7', '\x1D8', '\a', 'w', '\x2', '\x2', '\x1D8', '\x1D9', '\x5', 'y', - '=', '\x2', '\x1D9', '\x1DA', '\x5', 'y', '=', '\x2', '\x1DA', '\x1DB', - '\x5', 'y', '=', '\x2', '\x1DB', '\x1DC', '\x5', 'y', '=', '\x2', '\x1DC', - 'x', '\x3', '\x2', '\x2', '\x2', '\x1DD', '\x1DE', '\t', '\x5', '\x2', - '\x2', '\x1DE', 'z', '\x3', '\x2', '\x2', '\x2', '\x1DF', '\x1E0', '\n', - '\x6', '\x2', '\x2', '\x1E0', '|', '\x3', '\x2', '\x2', '\x2', '\x1E1', - '\x1F0', '\x3', '\x2', '\x2', '\x2', '\x1E2', '\x1E6', '\t', '\a', '\x2', - '\x2', '\x1E3', '\x1E5', '\t', '\a', '\x2', '\x2', '\x1E4', '\x1E3', '\x3', - '\x2', '\x2', '\x2', '\x1E5', '\x1E8', '\x3', '\x2', '\x2', '\x2', '\x1E6', - '\x1E4', '\x3', '\x2', '\x2', '\x2', '\x1E6', '\x1E7', '\x3', '\x2', '\x2', - '\x2', '\x1E7', '\x1EC', '\x3', '\x2', '\x2', '\x2', '\x1E8', '\x1E6', - '\x3', '\x2', '\x2', '\x2', '\x1E9', '\x1EB', '\x5', '\x81', '\x41', '\x2', - '\x1EA', '\x1E9', '\x3', '\x2', '\x2', '\x2', '\x1EB', '\x1EE', '\x3', - '\x2', '\x2', '\x2', '\x1EC', '\x1EA', '\x3', '\x2', '\x2', '\x2', '\x1EC', - '\x1ED', '\x3', '\x2', '\x2', '\x2', '\x1ED', '\x1F0', '\x3', '\x2', '\x2', - '\x2', '\x1EE', '\x1EC', '\x3', '\x2', '\x2', '\x2', '\x1EF', '\x1E1', - '\x3', '\x2', '\x2', '\x2', '\x1EF', '\x1E2', '\x3', '\x2', '\x2', '\x2', - '\x1F0', '~', '\x3', '\x2', '\x2', '\x2', '\x1F1', '\x1F2', '\a', '\x42', - '\x2', '\x2', '\x1F2', '\x1F3', '\x5', '}', '?', '\x2', '\x1F3', '\x80', - '\x3', '\x2', '\x2', '\x2', '\x1F4', '\x1F5', '\t', '\b', '\x2', '\x2', - '\x1F5', '\x82', '\x3', '\x2', '\x2', '\x2', '\x1F6', '\x1F7', '\t', '\t', - '\x2', '\x2', '\x1F7', '\x84', '\x3', '\x2', '\x2', '\x2', '\x1F8', '\x1F9', - '\t', '\n', '\x2', '\x2', '\x1F9', '\x86', '\x3', '\x2', '\x2', '\x2', - '\x1FA', '\x1FB', '\t', '\v', '\x2', '\x2', '\x1FB', '\x88', '\x3', '\x2', - '\x2', '\x2', '\x1FC', '\x1FD', '\t', '\f', '\x2', '\x2', '\x1FD', '\x8A', - '\x3', '\x2', '\x2', '\x2', '\x1FE', '\x1FF', '\t', '\r', '\x2', '\x2', - '\x1FF', '\x8C', '\x3', '\x2', '\x2', '\x2', '\x200', '\x201', '\t', '\xE', - '\x2', '\x2', '\x201', '\x8E', '\x3', '\x2', '\x2', '\x2', '\x202', '\x203', - '\t', '\xF', '\x2', '\x2', '\x203', '\x90', '\x3', '\x2', '\x2', '\x2', - '\x204', '\x205', '\t', '\x10', '\x2', '\x2', '\x205', '\x92', '\x3', - '\x2', '\x2', '\x2', '\x206', '\x207', '\t', '\x11', '\x2', '\x2', '\x207', - '\x94', '\x3', '\x2', '\x2', '\x2', '\x208', '\x209', '\t', '\x12', '\x2', - '\x2', '\x209', '\x96', '\x3', '\x2', '\x2', '\x2', '\x20A', '\x20B', - '\t', '\x13', '\x2', '\x2', '\x20B', '\x98', '\x3', '\x2', '\x2', '\x2', - '\x20C', '\x20D', '\t', '\x14', '\x2', '\x2', '\x20D', '\x9A', '\x3', - '\x2', '\x2', '\x2', '\x20E', '\x20F', '\t', '\x15', '\x2', '\x2', '\x20F', - '\x9C', '\x3', '\x2', '\x2', '\x2', '\x210', '\x211', '\t', '\x16', '\x2', - '\x2', '\x211', '\x9E', '\x3', '\x2', '\x2', '\x2', '\x212', '\x213', - '\t', '\x17', '\x2', '\x2', '\x213', '\xA0', '\x3', '\x2', '\x2', '\x2', - '\x214', '\x215', '\t', '\x18', '\x2', '\x2', '\x215', '\xA2', '\x3', - '\x2', '\x2', '\x2', '\x216', '\x217', '\t', '\x19', '\x2', '\x2', '\x217', - '\xA4', '\x3', '\x2', '\x2', '\x2', '\x218', '\x219', '\t', '\x1A', '\x2', - '\x2', '\x219', '\xA6', '\x3', '\x2', '\x2', '\x2', '\x21A', '\x21B', - '\t', '\x1B', '\x2', '\x2', '\x21B', '\xA8', '\x3', '\x2', '\x2', '\x2', - '\x21C', '\x21D', '\t', '\x1C', '\x2', '\x2', '\x21D', '\xAA', '\x3', - '\x2', '\x2', '\x2', '\x21E', '\x21F', '\t', '\x1D', '\x2', '\x2', '\x21F', - '\xAC', '\x3', '\x2', '\x2', '\x2', '\x220', '\x221', '\t', '\x1E', '\x2', - '\x2', '\x221', '\xAE', '\x3', '\x2', '\x2', '\x2', '\x222', '\x223', - '\t', '\x1F', '\x2', '\x2', '\x223', '\xB0', '\x3', '\x2', '\x2', '\x2', - '\x224', '\x225', '\t', ' ', '\x2', '\x2', '\x225', '\xB2', '\x3', '\x2', - '\x2', '\x2', '\x226', '\x227', '\t', '!', '\x2', '\x2', '\x227', '\xB4', - '\x3', '\x2', '\x2', '\x2', '\x228', '\x229', '\t', '\"', '\x2', '\x2', - '\x229', '\xB6', '\x3', '\x2', '\x2', '\x2', '\x1A', '\x2', '\x188', '\x18D', - '\x192', '\x198', '\x19B', '\x19F', '\x1A4', '\x1A6', '\x1A9', '\x1AF', - '\x1B3', '\x1B8', '\x1BA', '\x1BC', '\x1C1', '\x1C3', '\x1CA', '\x1CC', - '\x1D0', '\x1D5', '\x1E6', '\x1EC', '\x1EF', '\x3', '\b', '\x2', '\x2', - }; + static sqlLexer() { + decisionToDFA = new DFA[_ATN.NumberOfDecisions]; + for (int i = 0; i < _ATN.NumberOfDecisions; i++) { + decisionToDFA[i] = new DFA(_ATN.GetDecisionState(i), i); + } + } + private static char[] _serializedATN = { + '\x3', '\x608B', '\xA72A', '\x8133', '\xB9ED', '\x417C', '\x3BE7', '\x7786', + '\x5964', '\x2', '?', '\x237', '\b', '\x1', '\x4', '\x2', '\t', '\x2', + '\x4', '\x3', '\t', '\x3', '\x4', '\x4', '\t', '\x4', '\x4', '\x5', '\t', + '\x5', '\x4', '\x6', '\t', '\x6', '\x4', '\a', '\t', '\a', '\x4', '\b', + '\t', '\b', '\x4', '\t', '\t', '\t', '\x4', '\n', '\t', '\n', '\x4', '\v', + '\t', '\v', '\x4', '\f', '\t', '\f', '\x4', '\r', '\t', '\r', '\x4', '\xE', + '\t', '\xE', '\x4', '\xF', '\t', '\xF', '\x4', '\x10', '\t', '\x10', '\x4', + '\x11', '\t', '\x11', '\x4', '\x12', '\t', '\x12', '\x4', '\x13', '\t', + '\x13', '\x4', '\x14', '\t', '\x14', '\x4', '\x15', '\t', '\x15', '\x4', + '\x16', '\t', '\x16', '\x4', '\x17', '\t', '\x17', '\x4', '\x18', '\t', + '\x18', '\x4', '\x19', '\t', '\x19', '\x4', '\x1A', '\t', '\x1A', '\x4', + '\x1B', '\t', '\x1B', '\x4', '\x1C', '\t', '\x1C', '\x4', '\x1D', '\t', + '\x1D', '\x4', '\x1E', '\t', '\x1E', '\x4', '\x1F', '\t', '\x1F', '\x4', + ' ', '\t', ' ', '\x4', '!', '\t', '!', '\x4', '\"', '\t', '\"', '\x4', + '#', '\t', '#', '\x4', '$', '\t', '$', '\x4', '%', '\t', '%', '\x4', '&', + '\t', '&', '\x4', '\'', '\t', '\'', '\x4', '(', '\t', '(', '\x4', ')', + '\t', ')', '\x4', '*', '\t', '*', '\x4', '+', '\t', '+', '\x4', ',', '\t', + ',', '\x4', '-', '\t', '-', '\x4', '.', '\t', '.', '\x4', '/', '\t', '/', + '\x4', '\x30', '\t', '\x30', '\x4', '\x31', '\t', '\x31', '\x4', '\x32', + '\t', '\x32', '\x4', '\x33', '\t', '\x33', '\x4', '\x34', '\t', '\x34', + '\x4', '\x35', '\t', '\x35', '\x4', '\x36', '\t', '\x36', '\x4', '\x37', + '\t', '\x37', '\x4', '\x38', '\t', '\x38', '\x4', '\x39', '\t', '\x39', + '\x4', ':', '\t', ':', '\x4', ';', '\t', ';', '\x4', '<', '\t', '<', '\x4', + '=', '\t', '=', '\x4', '>', '\t', '>', '\x4', '?', '\t', '?', '\x4', '@', + '\t', '@', '\x4', '\x41', '\t', '\x41', '\x4', '\x42', '\t', '\x42', '\x4', + '\x43', '\t', '\x43', '\x4', '\x44', '\t', '\x44', '\x4', '\x45', '\t', + '\x45', '\x4', '\x46', '\t', '\x46', '\x4', 'G', '\t', 'G', '\x4', 'H', + '\t', 'H', '\x4', 'I', '\t', 'I', '\x4', 'J', '\t', 'J', '\x4', 'K', '\t', + 'K', '\x4', 'L', '\t', 'L', '\x4', 'M', '\t', 'M', '\x4', 'N', '\t', 'N', + '\x4', 'O', '\t', 'O', '\x4', 'P', '\t', 'P', '\x4', 'Q', '\t', 'Q', '\x4', + 'R', '\t', 'R', '\x4', 'S', '\t', 'S', '\x4', 'T', '\t', 'T', '\x4', 'U', + '\t', 'U', '\x4', 'V', '\t', 'V', '\x4', 'W', '\t', 'W', '\x4', 'X', '\t', + 'X', '\x4', 'Y', '\t', 'Y', '\x4', 'Z', '\t', 'Z', '\x4', '[', '\t', '[', + '\x4', '\\', '\t', '\\', '\x4', ']', '\t', ']', '\x3', '\x2', '\x3', '\x2', + '\x3', '\x3', '\x3', '\x3', '\x3', '\x4', '\x3', '\x4', '\x3', '\x5', + '\x3', '\x5', '\x3', '\x6', '\x3', '\x6', '\x3', '\a', '\x3', '\a', '\x3', + '\b', '\x3', '\b', '\x3', '\t', '\x3', '\t', '\x3', '\n', '\x3', '\n', + '\x3', '\v', '\x3', '\v', '\x3', '\v', '\x3', '\f', '\x3', '\f', '\x3', + '\r', '\x3', '\r', '\x3', '\xE', '\x3', '\xE', '\x3', '\xF', '\x3', '\xF', + '\x3', '\x10', '\x3', '\x10', '\x3', '\x11', '\x3', '\x11', '\x3', '\x12', + '\x3', '\x12', '\x3', '\x12', '\x3', '\x13', '\x3', '\x13', '\x3', '\x13', + '\x3', '\x14', '\x3', '\x14', '\x3', '\x15', '\x3', '\x15', '\x3', '\x15', + '\x3', '\x16', '\x3', '\x16', '\x3', '\x17', '\x3', '\x17', '\x3', '\x18', + '\x3', '\x18', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x1A', + '\x3', '\x1A', '\x3', '\x1B', '\x3', '\x1B', '\x3', '\x1C', '\x3', '\x1C', + '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1E', + '\x3', '\x1E', '\x3', '\x1E', '\x3', '\x1E', '\x3', '\x1E', '\x3', '\x1E', + '\x3', '\x1F', '\x3', '\x1F', '\x3', '\x1F', '\x3', ' ', '\x3', ' ', '\x3', + ' ', '\x3', ' ', '\x3', '!', '\x3', '!', '\x3', '!', '\x3', '!', '\x3', + '!', '\x3', '!', '\x3', '!', '\x3', '!', '\x3', '\"', '\x3', '\"', '\x3', + '\"', '\x3', '#', '\x3', '#', '\x3', '#', '\x3', '#', '\x3', '#', '\x3', + '$', '\x3', '$', '\x3', '$', '\x3', '$', '\x3', '$', '\x3', '$', '\x3', + '$', '\x3', '$', '\x3', '$', '\x3', '%', '\x3', '%', '\x3', '%', '\x3', + '%', '\x3', '%', '\x3', '%', '\x3', '%', '\x3', '&', '\x3', '&', '\x3', + '&', '\x3', '&', '\x3', '&', '\x3', '&', '\x3', '&', '\x3', '\'', '\x3', + '\'', '\x3', '\'', '\x3', '\'', '\x3', '\'', '\x3', '\'', '\x3', '(', + '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', ')', '\x3', ')', + '\x3', ')', '\x3', ')', '\x3', ')', '\x3', ')', '\x3', '*', '\x3', '*', + '\x3', '*', '\x3', '+', '\x3', '+', '\x3', '+', '\x3', '+', '\x3', '+', + '\x3', ',', '\x3', ',', '\x3', ',', '\x3', ',', '\x3', ',', '\x3', '-', + '\x3', '-', '\x3', '-', '\x3', '-', '\x3', '-', '\x3', '-', '\x3', '.', + '\x3', '.', '\x3', '.', '\x3', '.', '\x3', '/', '\x3', '/', '\x3', '/', + '\x3', '/', '\x3', '/', '\x3', '\x30', '\x3', '\x30', '\x3', '\x30', '\x3', + '\x30', '\x3', '\x30', '\x3', '\x30', '\x3', '\x30', '\x3', '\x31', '\x3', + '\x31', '\x3', '\x31', '\x3', '\x32', '\x3', '\x32', '\x3', '\x32', '\x3', + '\x32', '\x3', '\x32', '\x3', '\x32', '\x3', '\x33', '\x3', '\x33', '\x3', + '\x33', '\x3', '\x33', '\x3', '\x33', '\x3', '\x33', '\x3', '\x33', '\x3', + '\x34', '\x3', '\x34', '\x3', '\x34', '\x3', '\x34', '\x3', '\x35', '\x3', + '\x35', '\x3', '\x35', '\x3', '\x35', '\x3', '\x35', '\x3', '\x36', '\x3', + '\x36', '\x3', '\x36', '\x3', '\x36', '\x3', '\x37', '\x3', '\x37', '\x3', + '\x37', '\x3', '\x37', '\x3', '\x37', '\x3', '\x37', '\x3', '\x37', '\x3', + '\x37', '\x3', '\x37', '\x3', '\x37', '\x3', '\x38', '\x3', '\x38', '\x3', + '\x38', '\x3', '\x38', '\x3', '\x38', '\x3', '\x38', '\x3', '\x39', '\x3', + '\x39', '\x3', '\x39', '\x3', '\x39', '\x3', '\x39', '\x3', '\x39', '\x3', + ':', '\x6', ':', '\x197', '\n', ':', '\r', ':', '\xE', ':', '\x198', '\x3', + ':', '\x3', ':', '\x3', ';', '\x5', ';', '\x19E', '\n', ';', '\x3', ';', + '\x6', ';', '\x1A1', '\n', ';', '\r', ';', '\xE', ';', '\x1A2', '\x3', + ';', '\x3', ';', '\a', ';', '\x1A7', '\n', ';', '\f', ';', '\xE', ';', + '\x1AA', '\v', ';', '\x5', ';', '\x1AC', '\n', ';', '\x3', ';', '\x3', + ';', '\x5', ';', '\x1B0', '\n', ';', '\x3', ';', '\x6', ';', '\x1B3', + '\n', ';', '\r', ';', '\xE', ';', '\x1B4', '\x5', ';', '\x1B7', '\n', + ';', '\x3', ';', '\x5', ';', '\x1BA', '\n', ';', '\x3', ';', '\x3', ';', + '\x6', ';', '\x1BE', '\n', ';', '\r', ';', '\xE', ';', '\x1BF', '\x3', + ';', '\x3', ';', '\x5', ';', '\x1C4', '\n', ';', '\x3', ';', '\x6', ';', + '\x1C7', '\n', ';', '\r', ';', '\xE', ';', '\x1C8', '\x5', ';', '\x1CB', + '\n', ';', '\x5', ';', '\x1CD', '\n', ';', '\x3', '<', '\x3', '<', '\x3', + '<', '\a', '<', '\x1D2', '\n', '<', '\f', '<', '\xE', '<', '\x1D5', '\v', + '<', '\x3', '<', '\x3', '<', '\x3', '<', '\x3', '<', '\a', '<', '\x1DB', + '\n', '<', '\f', '<', '\xE', '<', '\x1DE', '\v', '<', '\x3', '<', '\x5', + '<', '\x1E1', '\n', '<', '\x3', '=', '\x3', '=', '\x3', '=', '\x5', '=', + '\x1E6', '\n', '=', '\x3', '>', '\x3', '>', '\x3', '>', '\x3', '>', '\x3', + '>', '\x3', '>', '\x3', '?', '\x3', '?', '\x3', '@', '\x3', '@', '\x3', + '\x41', '\x3', '\x41', '\a', '\x41', '\x1F4', '\n', '\x41', '\f', '\x41', + '\xE', '\x41', '\x1F7', '\v', '\x41', '\x3', '\x41', '\a', '\x41', '\x1FA', + '\n', '\x41', '\f', '\x41', '\xE', '\x41', '\x1FD', '\v', '\x41', '\x3', + '\x42', '\x3', '\x42', '\x3', '\x42', '\x3', '\x43', '\x3', '\x43', '\x3', + '\x44', '\x3', '\x44', '\x3', '\x45', '\x3', '\x45', '\x3', '\x46', '\x3', + '\x46', '\x3', 'G', '\x3', 'G', '\x3', 'H', '\x3', 'H', '\x3', 'I', '\x3', + 'I', '\x3', 'J', '\x3', 'J', '\x3', 'K', '\x3', 'K', '\x3', 'L', '\x3', + 'L', '\x3', 'M', '\x3', 'M', '\x3', 'N', '\x3', 'N', '\x3', 'O', '\x3', + 'O', '\x3', 'P', '\x3', 'P', '\x3', 'Q', '\x3', 'Q', '\x3', 'R', '\x3', + 'R', '\x3', 'S', '\x3', 'S', '\x3', 'T', '\x3', 'T', '\x3', 'U', '\x3', + 'U', '\x3', 'V', '\x3', 'V', '\x3', 'W', '\x3', 'W', '\x3', 'X', '\x3', + 'X', '\x3', 'Y', '\x3', 'Y', '\x3', 'Z', '\x3', 'Z', '\x3', '[', '\x3', + '[', '\x3', '\\', '\x3', '\\', '\x3', ']', '\x3', ']', '\x2', '\x2', '^', + '\x3', '\x3', '\x5', '\x4', '\a', '\x5', '\t', '\x6', '\v', '\a', '\r', + '\b', '\xF', '\t', '\x11', '\n', '\x13', '\v', '\x15', '\f', '\x17', '\r', + '\x19', '\xE', '\x1B', '\xF', '\x1D', '\x10', '\x1F', '\x11', '!', '\x12', + '#', '\x13', '%', '\x14', '\'', '\x15', ')', '\x16', '+', '\x17', '-', + '\x18', '/', '\x19', '\x31', '\x1A', '\x33', '\x1B', '\x35', '\x1C', '\x37', + '\x1D', '\x39', '\x1E', ';', '\x1F', '=', ' ', '?', '!', '\x41', '\"', + '\x43', '#', '\x45', '$', 'G', '%', 'I', '&', 'K', '\'', 'M', '(', 'O', + ')', 'Q', '*', 'S', '+', 'U', ',', 'W', '-', 'Y', '.', '[', '/', ']', + '\x30', '_', '\x31', '\x61', '\x32', '\x63', '\x33', '\x65', '\x34', 'g', + '\x35', 'i', '\x36', 'k', '\x37', 'm', '\x38', 'o', '\x39', 'q', ':', + 's', ';', 'u', '<', 'w', '=', 'y', '\x2', '{', '\x2', '}', '\x2', '\x7F', + '\x2', '\x81', '>', '\x83', '?', '\x85', '\x2', '\x87', '\x2', '\x89', + '\x2', '\x8B', '\x2', '\x8D', '\x2', '\x8F', '\x2', '\x91', '\x2', '\x93', + '\x2', '\x95', '\x2', '\x97', '\x2', '\x99', '\x2', '\x9B', '\x2', '\x9D', + '\x2', '\x9F', '\x2', '\xA1', '\x2', '\xA3', '\x2', '\xA5', '\x2', '\xA7', + '\x2', '\xA9', '\x2', '\xAB', '\x2', '\xAD', '\x2', '\xAF', '\x2', '\xB1', + '\x2', '\xB3', '\x2', '\xB5', '\x2', '\xB7', '\x2', '\xB9', '\x2', '\x3', + '\x2', '#', '\x5', '\x2', '\v', '\f', '\xF', '\xF', '\"', '\"', '\x4', + '\x2', '-', '-', '/', '/', '\n', '\x2', '$', '$', '\x31', '\x31', '^', + '^', '\x64', '\x64', 'h', 'h', 'p', 'p', 't', 't', 'v', 'v', '\x5', '\x2', + '\x32', ';', '\x43', 'H', '\x63', 'h', '\x5', '\x2', '\x2', '!', '$', + '$', '^', '^', '\x5', '\x2', '\x43', '\\', '\x61', '\x61', '\x63', '|', + '\x3', '\x2', '\x32', ';', '\x4', '\x2', '\x43', '\x43', '\x63', '\x63', + '\x4', '\x2', '\x44', '\x44', '\x64', '\x64', '\x4', '\x2', '\x45', '\x45', + '\x65', '\x65', '\x4', '\x2', '\x46', '\x46', '\x66', '\x66', '\x4', '\x2', + 'G', 'G', 'g', 'g', '\x4', '\x2', 'H', 'H', 'h', 'h', '\x4', '\x2', 'I', + 'I', 'i', 'i', '\x4', '\x2', 'J', 'J', 'j', 'j', '\x4', '\x2', 'K', 'K', + 'k', 'k', '\x4', '\x2', 'L', 'L', 'l', 'l', '\x4', '\x2', 'M', 'M', 'm', + 'm', '\x4', '\x2', 'N', 'N', 'n', 'n', '\x4', '\x2', 'O', 'O', 'o', 'o', + '\x4', '\x2', 'P', 'P', 'p', 'p', '\x4', '\x2', 'Q', 'Q', 'q', 'q', '\x4', + '\x2', 'R', 'R', 'r', 'r', '\x4', '\x2', 'S', 'S', 's', 's', '\x4', '\x2', + 'T', 'T', 't', 't', '\x4', '\x2', 'U', 'U', 'u', 'u', '\x4', '\x2', 'V', + 'V', 'v', 'v', '\x4', '\x2', 'W', 'W', 'w', 'w', '\x4', '\x2', 'X', 'X', + 'x', 'x', '\x4', '\x2', 'Y', 'Y', 'y', 'y', '\x4', '\x2', 'Z', 'Z', 'z', + 'z', '\x4', '\x2', '[', '[', '{', '{', '\x4', '\x2', '\\', '\\', '|', + '|', '\x2', '\x22D', '\x2', '\x3', '\x3', '\x2', '\x2', '\x2', '\x2', + '\x5', '\x3', '\x2', '\x2', '\x2', '\x2', '\a', '\x3', '\x2', '\x2', '\x2', + '\x2', '\t', '\x3', '\x2', '\x2', '\x2', '\x2', '\v', '\x3', '\x2', '\x2', + '\x2', '\x2', '\r', '\x3', '\x2', '\x2', '\x2', '\x2', '\xF', '\x3', '\x2', + '\x2', '\x2', '\x2', '\x11', '\x3', '\x2', '\x2', '\x2', '\x2', '\x13', + '\x3', '\x2', '\x2', '\x2', '\x2', '\x15', '\x3', '\x2', '\x2', '\x2', + '\x2', '\x17', '\x3', '\x2', '\x2', '\x2', '\x2', '\x19', '\x3', '\x2', + '\x2', '\x2', '\x2', '\x1B', '\x3', '\x2', '\x2', '\x2', '\x2', '\x1D', + '\x3', '\x2', '\x2', '\x2', '\x2', '\x1F', '\x3', '\x2', '\x2', '\x2', + '\x2', '!', '\x3', '\x2', '\x2', '\x2', '\x2', '#', '\x3', '\x2', '\x2', + '\x2', '\x2', '%', '\x3', '\x2', '\x2', '\x2', '\x2', '\'', '\x3', '\x2', + '\x2', '\x2', '\x2', ')', '\x3', '\x2', '\x2', '\x2', '\x2', '+', '\x3', + '\x2', '\x2', '\x2', '\x2', '-', '\x3', '\x2', '\x2', '\x2', '\x2', '/', + '\x3', '\x2', '\x2', '\x2', '\x2', '\x31', '\x3', '\x2', '\x2', '\x2', + '\x2', '\x33', '\x3', '\x2', '\x2', '\x2', '\x2', '\x35', '\x3', '\x2', + '\x2', '\x2', '\x2', '\x37', '\x3', '\x2', '\x2', '\x2', '\x2', '\x39', + '\x3', '\x2', '\x2', '\x2', '\x2', ';', '\x3', '\x2', '\x2', '\x2', '\x2', + '=', '\x3', '\x2', '\x2', '\x2', '\x2', '?', '\x3', '\x2', '\x2', '\x2', + '\x2', '\x41', '\x3', '\x2', '\x2', '\x2', '\x2', '\x43', '\x3', '\x2', + '\x2', '\x2', '\x2', '\x45', '\x3', '\x2', '\x2', '\x2', '\x2', 'G', '\x3', + '\x2', '\x2', '\x2', '\x2', 'I', '\x3', '\x2', '\x2', '\x2', '\x2', 'K', + '\x3', '\x2', '\x2', '\x2', '\x2', 'M', '\x3', '\x2', '\x2', '\x2', '\x2', + 'O', '\x3', '\x2', '\x2', '\x2', '\x2', 'Q', '\x3', '\x2', '\x2', '\x2', + '\x2', 'S', '\x3', '\x2', '\x2', '\x2', '\x2', 'U', '\x3', '\x2', '\x2', + '\x2', '\x2', 'W', '\x3', '\x2', '\x2', '\x2', '\x2', 'Y', '\x3', '\x2', + '\x2', '\x2', '\x2', '[', '\x3', '\x2', '\x2', '\x2', '\x2', ']', '\x3', + '\x2', '\x2', '\x2', '\x2', '_', '\x3', '\x2', '\x2', '\x2', '\x2', '\x61', + '\x3', '\x2', '\x2', '\x2', '\x2', '\x63', '\x3', '\x2', '\x2', '\x2', + '\x2', '\x65', '\x3', '\x2', '\x2', '\x2', '\x2', 'g', '\x3', '\x2', '\x2', + '\x2', '\x2', 'i', '\x3', '\x2', '\x2', '\x2', '\x2', 'k', '\x3', '\x2', + '\x2', '\x2', '\x2', 'm', '\x3', '\x2', '\x2', '\x2', '\x2', 'o', '\x3', + '\x2', '\x2', '\x2', '\x2', 'q', '\x3', '\x2', '\x2', '\x2', '\x2', 's', + '\x3', '\x2', '\x2', '\x2', '\x2', 'u', '\x3', '\x2', '\x2', '\x2', '\x2', + 'w', '\x3', '\x2', '\x2', '\x2', '\x2', '\x81', '\x3', '\x2', '\x2', '\x2', + '\x2', '\x83', '\x3', '\x2', '\x2', '\x2', '\x3', '\xBB', '\x3', '\x2', + '\x2', '\x2', '\x5', '\xBD', '\x3', '\x2', '\x2', '\x2', '\a', '\xBF', + '\x3', '\x2', '\x2', '\x2', '\t', '\xC1', '\x3', '\x2', '\x2', '\x2', + '\v', '\xC3', '\x3', '\x2', '\x2', '\x2', '\r', '\xC5', '\x3', '\x2', + '\x2', '\x2', '\xF', '\xC7', '\x3', '\x2', '\x2', '\x2', '\x11', '\xC9', + '\x3', '\x2', '\x2', '\x2', '\x13', '\xCB', '\x3', '\x2', '\x2', '\x2', + '\x15', '\xCD', '\x3', '\x2', '\x2', '\x2', '\x17', '\xD0', '\x3', '\x2', + '\x2', '\x2', '\x19', '\xD2', '\x3', '\x2', '\x2', '\x2', '\x1B', '\xD4', + '\x3', '\x2', '\x2', '\x2', '\x1D', '\xD6', '\x3', '\x2', '\x2', '\x2', + '\x1F', '\xD8', '\x3', '\x2', '\x2', '\x2', '!', '\xDA', '\x3', '\x2', + '\x2', '\x2', '#', '\xDC', '\x3', '\x2', '\x2', '\x2', '%', '\xDF', '\x3', + '\x2', '\x2', '\x2', '\'', '\xE2', '\x3', '\x2', '\x2', '\x2', ')', '\xE4', + '\x3', '\x2', '\x2', '\x2', '+', '\xE7', '\x3', '\x2', '\x2', '\x2', '-', + '\xE9', '\x3', '\x2', '\x2', '\x2', '/', '\xEB', '\x3', '\x2', '\x2', + '\x2', '\x31', '\xED', '\x3', '\x2', '\x2', '\x2', '\x33', '\xF0', '\x3', + '\x2', '\x2', '\x2', '\x35', '\xF2', '\x3', '\x2', '\x2', '\x2', '\x37', + '\xF4', '\x3', '\x2', '\x2', '\x2', '\x39', '\xF6', '\x3', '\x2', '\x2', + '\x2', ';', '\xFA', '\x3', '\x2', '\x2', '\x2', '=', '\x100', '\x3', '\x2', + '\x2', '\x2', '?', '\x103', '\x3', '\x2', '\x2', '\x2', '\x41', '\x107', + '\x3', '\x2', '\x2', '\x2', '\x43', '\x10F', '\x3', '\x2', '\x2', '\x2', + '\x45', '\x112', '\x3', '\x2', '\x2', '\x2', 'G', '\x117', '\x3', '\x2', + '\x2', '\x2', 'I', '\x120', '\x3', '\x2', '\x2', '\x2', 'K', '\x127', + '\x3', '\x2', '\x2', '\x2', 'M', '\x12E', '\x3', '\x2', '\x2', '\x2', + 'O', '\x134', '\x3', '\x2', '\x2', '\x2', 'Q', '\x139', '\x3', '\x2', + '\x2', '\x2', 'S', '\x13F', '\x3', '\x2', '\x2', '\x2', 'U', '\x142', + '\x3', '\x2', '\x2', '\x2', 'W', '\x147', '\x3', '\x2', '\x2', '\x2', + 'Y', '\x14C', '\x3', '\x2', '\x2', '\x2', '[', '\x152', '\x3', '\x2', + '\x2', '\x2', ']', '\x156', '\x3', '\x2', '\x2', '\x2', '_', '\x15B', + '\x3', '\x2', '\x2', '\x2', '\x61', '\x162', '\x3', '\x2', '\x2', '\x2', + '\x63', '\x165', '\x3', '\x2', '\x2', '\x2', '\x65', '\x16B', '\x3', '\x2', + '\x2', '\x2', 'g', '\x172', '\x3', '\x2', '\x2', '\x2', 'i', '\x176', + '\x3', '\x2', '\x2', '\x2', 'k', '\x17B', '\x3', '\x2', '\x2', '\x2', + 'm', '\x17F', '\x3', '\x2', '\x2', '\x2', 'o', '\x189', '\x3', '\x2', + '\x2', '\x2', 'q', '\x18F', '\x3', '\x2', '\x2', '\x2', 's', '\x196', + '\x3', '\x2', '\x2', '\x2', 'u', '\x1CC', '\x3', '\x2', '\x2', '\x2', + 'w', '\x1E0', '\x3', '\x2', '\x2', '\x2', 'y', '\x1E2', '\x3', '\x2', + '\x2', '\x2', '{', '\x1E7', '\x3', '\x2', '\x2', '\x2', '}', '\x1ED', + '\x3', '\x2', '\x2', '\x2', '\x7F', '\x1EF', '\x3', '\x2', '\x2', '\x2', + '\x81', '\x1F1', '\x3', '\x2', '\x2', '\x2', '\x83', '\x1FE', '\x3', '\x2', + '\x2', '\x2', '\x85', '\x201', '\x3', '\x2', '\x2', '\x2', '\x87', '\x203', + '\x3', '\x2', '\x2', '\x2', '\x89', '\x205', '\x3', '\x2', '\x2', '\x2', + '\x8B', '\x207', '\x3', '\x2', '\x2', '\x2', '\x8D', '\x209', '\x3', '\x2', + '\x2', '\x2', '\x8F', '\x20B', '\x3', '\x2', '\x2', '\x2', '\x91', '\x20D', + '\x3', '\x2', '\x2', '\x2', '\x93', '\x20F', '\x3', '\x2', '\x2', '\x2', + '\x95', '\x211', '\x3', '\x2', '\x2', '\x2', '\x97', '\x213', '\x3', '\x2', + '\x2', '\x2', '\x99', '\x215', '\x3', '\x2', '\x2', '\x2', '\x9B', '\x217', + '\x3', '\x2', '\x2', '\x2', '\x9D', '\x219', '\x3', '\x2', '\x2', '\x2', + '\x9F', '\x21B', '\x3', '\x2', '\x2', '\x2', '\xA1', '\x21D', '\x3', '\x2', + '\x2', '\x2', '\xA3', '\x21F', '\x3', '\x2', '\x2', '\x2', '\xA5', '\x221', + '\x3', '\x2', '\x2', '\x2', '\xA7', '\x223', '\x3', '\x2', '\x2', '\x2', + '\xA9', '\x225', '\x3', '\x2', '\x2', '\x2', '\xAB', '\x227', '\x3', '\x2', + '\x2', '\x2', '\xAD', '\x229', '\x3', '\x2', '\x2', '\x2', '\xAF', '\x22B', + '\x3', '\x2', '\x2', '\x2', '\xB1', '\x22D', '\x3', '\x2', '\x2', '\x2', + '\xB3', '\x22F', '\x3', '\x2', '\x2', '\x2', '\xB5', '\x231', '\x3', '\x2', + '\x2', '\x2', '\xB7', '\x233', '\x3', '\x2', '\x2', '\x2', '\xB9', '\x235', + '\x3', '\x2', '\x2', '\x2', '\xBB', '\xBC', '\a', ',', '\x2', '\x2', '\xBC', + '\x4', '\x3', '\x2', '\x2', '\x2', '\xBD', '\xBE', '\a', '.', '\x2', '\x2', + '\xBE', '\x6', '\x3', '\x2', '\x2', '\x2', '\xBF', '\xC0', '\a', '*', + '\x2', '\x2', '\xC0', '\b', '\x3', '\x2', '\x2', '\x2', '\xC1', '\xC2', + '\a', '+', '\x2', '\x2', '\xC2', '\n', '\x3', '\x2', '\x2', '\x2', '\xC3', + '\xC4', '\a', '\x30', '\x2', '\x2', '\xC4', '\f', '\x3', '\x2', '\x2', + '\x2', '\xC5', '\xC6', '\a', ']', '\x2', '\x2', '\xC6', '\xE', '\x3', + '\x2', '\x2', '\x2', '\xC7', '\xC8', '\a', '_', '\x2', '\x2', '\xC8', + '\x10', '\x3', '\x2', '\x2', '\x2', '\xC9', '\xCA', '\a', '\x41', '\x2', + '\x2', '\xCA', '\x12', '\x3', '\x2', '\x2', '\x2', '\xCB', '\xCC', '\a', + '<', '\x2', '\x2', '\xCC', '\x14', '\x3', '\x2', '\x2', '\x2', '\xCD', + '\xCE', '\a', '\x41', '\x2', '\x2', '\xCE', '\xCF', '\a', '\x41', '\x2', + '\x2', '\xCF', '\x16', '\x3', '\x2', '\x2', '\x2', '\xD0', '\xD1', '\a', + '\x31', '\x2', '\x2', '\xD1', '\x18', '\x3', '\x2', '\x2', '\x2', '\xD2', + '\xD3', '\a', '\'', '\x2', '\x2', '\xD3', '\x1A', '\x3', '\x2', '\x2', + '\x2', '\xD4', '\xD5', '\a', '-', '\x2', '\x2', '\xD5', '\x1C', '\x3', + '\x2', '\x2', '\x2', '\xD6', '\xD7', '\a', '/', '\x2', '\x2', '\xD7', + '\x1E', '\x3', '\x2', '\x2', '\x2', '\xD8', '\xD9', '\a', '>', '\x2', + '\x2', '\xD9', ' ', '\x3', '\x2', '\x2', '\x2', '\xDA', '\xDB', '\a', + '@', '\x2', '\x2', '\xDB', '\"', '\x3', '\x2', '\x2', '\x2', '\xDC', '\xDD', + '\a', '@', '\x2', '\x2', '\xDD', '\xDE', '\a', '?', '\x2', '\x2', '\xDE', + '$', '\x3', '\x2', '\x2', '\x2', '\xDF', '\xE0', '\a', '>', '\x2', '\x2', + '\xE0', '\xE1', '\a', '?', '\x2', '\x2', '\xE1', '&', '\x3', '\x2', '\x2', + '\x2', '\xE2', '\xE3', '\a', '?', '\x2', '\x2', '\xE3', '(', '\x3', '\x2', + '\x2', '\x2', '\xE4', '\xE5', '\a', '#', '\x2', '\x2', '\xE5', '\xE6', + '\a', '?', '\x2', '\x2', '\xE6', '*', '\x3', '\x2', '\x2', '\x2', '\xE7', + '\xE8', '\a', '(', '\x2', '\x2', '\xE8', ',', '\x3', '\x2', '\x2', '\x2', + '\xE9', '\xEA', '\a', '`', '\x2', '\x2', '\xEA', '.', '\x3', '\x2', '\x2', + '\x2', '\xEB', '\xEC', '\a', '~', '\x2', '\x2', '\xEC', '\x30', '\x3', + '\x2', '\x2', '\x2', '\xED', '\xEE', '\a', '~', '\x2', '\x2', '\xEE', + '\xEF', '\a', '~', '\x2', '\x2', '\xEF', '\x32', '\x3', '\x2', '\x2', + '\x2', '\xF0', '\xF1', '\a', '\x80', '\x2', '\x2', '\xF1', '\x34', '\x3', + '\x2', '\x2', '\x2', '\xF2', '\xF3', '\a', '}', '\x2', '\x2', '\xF3', + '\x36', '\x3', '\x2', '\x2', '\x2', '\xF4', '\xF5', '\a', '\x7F', '\x2', + '\x2', '\xF5', '\x38', '\x3', '\x2', '\x2', '\x2', '\xF6', '\xF7', '\x5', + '\x87', '\x44', '\x2', '\xF7', '\xF8', '\x5', '\xA1', 'Q', '\x2', '\xF8', + '\xF9', '\x5', '\x8D', 'G', '\x2', '\xF9', ':', '\x3', '\x2', '\x2', '\x2', + '\xFA', '\xFB', '\x5', '\x87', '\x44', '\x2', '\xFB', '\xFC', '\x5', '\xA9', + 'U', '\x2', '\xFC', '\xFD', '\x5', '\xA9', 'U', '\x2', '\xFD', '\xFE', + '\x5', '\x87', '\x44', '\x2', '\xFE', '\xFF', '\x5', '\xB7', '\\', '\x2', + '\xFF', '<', '\x3', '\x2', '\x2', '\x2', '\x100', '\x101', '\x5', '\x87', + '\x44', '\x2', '\x101', '\x102', '\x5', '\xAB', 'V', '\x2', '\x102', '>', + '\x3', '\x2', '\x2', '\x2', '\x103', '\x104', '\x5', '\x87', '\x44', '\x2', + '\x104', '\x105', '\x5', '\xAB', 'V', '\x2', '\x105', '\x106', '\x5', + '\x8B', '\x46', '\x2', '\x106', '@', '\x3', '\x2', '\x2', '\x2', '\x107', + '\x108', '\x5', '\x89', '\x45', '\x2', '\x108', '\x109', '\x5', '\x8F', + 'H', '\x2', '\x109', '\x10A', '\x5', '\xAD', 'W', '\x2', '\x10A', '\x10B', + '\x5', '\xB3', 'Z', '\x2', '\x10B', '\x10C', '\x5', '\x8F', 'H', '\x2', + '\x10C', '\x10D', '\x5', '\x8F', 'H', '\x2', '\x10D', '\x10E', '\x5', + '\xA1', 'Q', '\x2', '\x10E', '\x42', '\x3', '\x2', '\x2', '\x2', '\x10F', + '\x110', '\x5', '\x89', '\x45', '\x2', '\x110', '\x111', '\x5', '\xB7', + '\\', '\x2', '\x111', '\x44', '\x3', '\x2', '\x2', '\x2', '\x112', '\x113', + '\x5', '\x8D', 'G', '\x2', '\x113', '\x114', '\x5', '\x8F', 'H', '\x2', + '\x114', '\x115', '\x5', '\xAB', 'V', '\x2', '\x115', '\x116', '\x5', + '\x8B', '\x46', '\x2', '\x116', '\x46', '\x3', '\x2', '\x2', '\x2', '\x117', + '\x118', '\x5', '\x8D', 'G', '\x2', '\x118', '\x119', '\x5', '\x97', 'L', + '\x2', '\x119', '\x11A', '\x5', '\xAB', 'V', '\x2', '\x11A', '\x11B', + '\x5', '\xAD', 'W', '\x2', '\x11B', '\x11C', '\x5', '\x97', 'L', '\x2', + '\x11C', '\x11D', '\x5', '\xA1', 'Q', '\x2', '\x11D', '\x11E', '\x5', + '\x8B', '\x46', '\x2', '\x11E', '\x11F', '\x5', '\xAD', 'W', '\x2', '\x11F', + 'H', '\x3', '\x2', '\x2', '\x2', '\x120', '\x121', '\x5', '\x8F', 'H', + '\x2', '\x121', '\x122', '\x5', '\xAB', 'V', '\x2', '\x122', '\x123', + '\x5', '\x8B', '\x46', '\x2', '\x123', '\x124', '\x5', '\x87', '\x44', + '\x2', '\x124', '\x125', '\x5', '\xA5', 'S', '\x2', '\x125', '\x126', + '\x5', '\x8F', 'H', '\x2', '\x126', 'J', '\x3', '\x2', '\x2', '\x2', '\x127', + '\x128', '\x5', '\x8F', 'H', '\x2', '\x128', '\x129', '\x5', '\xB5', '[', + '\x2', '\x129', '\x12A', '\x5', '\x97', 'L', '\x2', '\x12A', '\x12B', + '\x5', '\xAB', 'V', '\x2', '\x12B', '\x12C', '\x5', '\xAD', 'W', '\x2', + '\x12C', '\x12D', '\x5', '\xAB', 'V', '\x2', '\x12D', 'L', '\x3', '\x2', + '\x2', '\x2', '\x12E', '\x12F', '\a', 'h', '\x2', '\x2', '\x12F', '\x130', + '\a', '\x63', '\x2', '\x2', '\x130', '\x131', '\a', 'n', '\x2', '\x2', + '\x131', '\x132', '\a', 'u', '\x2', '\x2', '\x132', '\x133', '\a', 'g', + '\x2', '\x2', '\x133', 'N', '\x3', '\x2', '\x2', '\x2', '\x134', '\x135', + '\x5', '\x91', 'I', '\x2', '\x135', '\x136', '\x5', '\xA9', 'U', '\x2', + '\x136', '\x137', '\x5', '\xA3', 'R', '\x2', '\x137', '\x138', '\x5', + '\x9F', 'P', '\x2', '\x138', 'P', '\x3', '\x2', '\x2', '\x2', '\x139', + '\x13A', '\x5', '\x93', 'J', '\x2', '\x13A', '\x13B', '\x5', '\xA9', 'U', + '\x2', '\x13B', '\x13C', '\x5', '\xA3', 'R', '\x2', '\x13C', '\x13D', + '\x5', '\xAF', 'X', '\x2', '\x13D', '\x13E', '\x5', '\xA5', 'S', '\x2', + '\x13E', 'R', '\x3', '\x2', '\x2', '\x2', '\x13F', '\x140', '\x5', '\x97', + 'L', '\x2', '\x140', '\x141', '\x5', '\xA1', 'Q', '\x2', '\x141', 'T', + '\x3', '\x2', '\x2', '\x2', '\x142', '\x143', '\x5', '\x99', 'M', '\x2', + '\x143', '\x144', '\x5', '\xA3', 'R', '\x2', '\x144', '\x145', '\x5', + '\x97', 'L', '\x2', '\x145', '\x146', '\x5', '\xA1', 'Q', '\x2', '\x146', + 'V', '\x3', '\x2', '\x2', '\x2', '\x147', '\x148', '\x5', '\x9D', 'O', + '\x2', '\x148', '\x149', '\x5', '\x97', 'L', '\x2', '\x149', '\x14A', + '\x5', '\x9B', 'N', '\x2', '\x14A', '\x14B', '\x5', '\x8F', 'H', '\x2', + '\x14B', 'X', '\x3', '\x2', '\x2', '\x2', '\x14C', '\x14D', '\x5', '\x9D', + 'O', '\x2', '\x14D', '\x14E', '\x5', '\x97', 'L', '\x2', '\x14E', '\x14F', + '\x5', '\x9F', 'P', '\x2', '\x14F', '\x150', '\x5', '\x97', 'L', '\x2', + '\x150', '\x151', '\x5', '\xAD', 'W', '\x2', '\x151', 'Z', '\x3', '\x2', + '\x2', '\x2', '\x152', '\x153', '\x5', '\xA1', 'Q', '\x2', '\x153', '\x154', + '\x5', '\xA3', 'R', '\x2', '\x154', '\x155', '\x5', '\xAD', 'W', '\x2', + '\x155', '\\', '\x3', '\x2', '\x2', '\x2', '\x156', '\x157', '\a', 'p', + '\x2', '\x2', '\x157', '\x158', '\a', 'w', '\x2', '\x2', '\x158', '\x159', + '\a', 'n', '\x2', '\x2', '\x159', '\x15A', '\a', 'n', '\x2', '\x2', '\x15A', + '^', '\x3', '\x2', '\x2', '\x2', '\x15B', '\x15C', '\x5', '\xA3', 'R', + '\x2', '\x15C', '\x15D', '\x5', '\x91', 'I', '\x2', '\x15D', '\x15E', + '\x5', '\x91', 'I', '\x2', '\x15E', '\x15F', '\x5', '\xAB', 'V', '\x2', + '\x15F', '\x160', '\x5', '\x8F', 'H', '\x2', '\x160', '\x161', '\x5', + '\xAD', 'W', '\x2', '\x161', '`', '\x3', '\x2', '\x2', '\x2', '\x162', + '\x163', '\x5', '\xA3', 'R', '\x2', '\x163', '\x164', '\x5', '\xA9', 'U', + '\x2', '\x164', '\x62', '\x3', '\x2', '\x2', '\x2', '\x165', '\x166', + '\x5', '\xA3', 'R', '\x2', '\x166', '\x167', '\x5', '\xA9', 'U', '\x2', + '\x167', '\x168', '\x5', '\x8D', 'G', '\x2', '\x168', '\x169', '\x5', + '\x8F', 'H', '\x2', '\x169', '\x16A', '\x5', '\xA9', 'U', '\x2', '\x16A', + '\x64', '\x3', '\x2', '\x2', '\x2', '\x16B', '\x16C', '\x5', '\xAB', 'V', + '\x2', '\x16C', '\x16D', '\x5', '\x8F', 'H', '\x2', '\x16D', '\x16E', + '\x5', '\x9D', 'O', '\x2', '\x16E', '\x16F', '\x5', '\x8F', 'H', '\x2', + '\x16F', '\x170', '\x5', '\x8B', '\x46', '\x2', '\x170', '\x171', '\x5', + '\xAD', 'W', '\x2', '\x171', '\x66', '\x3', '\x2', '\x2', '\x2', '\x172', + '\x173', '\x5', '\xAD', 'W', '\x2', '\x173', '\x174', '\x5', '\xA3', 'R', + '\x2', '\x174', '\x175', '\x5', '\xA5', 'S', '\x2', '\x175', 'h', '\x3', + '\x2', '\x2', '\x2', '\x176', '\x177', '\a', 'v', '\x2', '\x2', '\x177', + '\x178', '\a', 't', '\x2', '\x2', '\x178', '\x179', '\a', 'w', '\x2', + '\x2', '\x179', '\x17A', '\a', 'g', '\x2', '\x2', '\x17A', 'j', '\x3', + '\x2', '\x2', '\x2', '\x17B', '\x17C', '\x5', '\xAF', 'X', '\x2', '\x17C', + '\x17D', '\x5', '\x8D', 'G', '\x2', '\x17D', '\x17E', '\x5', '\x91', 'I', + '\x2', '\x17E', 'l', '\x3', '\x2', '\x2', '\x2', '\x17F', '\x180', '\a', + 'w', '\x2', '\x2', '\x180', '\x181', '\a', 'p', '\x2', '\x2', '\x181', + '\x182', '\a', '\x66', '\x2', '\x2', '\x182', '\x183', '\a', 'g', '\x2', + '\x2', '\x183', '\x184', '\a', 'h', '\x2', '\x2', '\x184', '\x185', '\a', + 'k', '\x2', '\x2', '\x185', '\x186', '\a', 'p', '\x2', '\x2', '\x186', + '\x187', '\a', 'g', '\x2', '\x2', '\x187', '\x188', '\a', '\x66', '\x2', + '\x2', '\x188', 'n', '\x3', '\x2', '\x2', '\x2', '\x189', '\x18A', '\x5', + '\xB1', 'Y', '\x2', '\x18A', '\x18B', '\x5', '\x87', '\x44', '\x2', '\x18B', + '\x18C', '\x5', '\x9D', 'O', '\x2', '\x18C', '\x18D', '\x5', '\xAF', 'X', + '\x2', '\x18D', '\x18E', '\x5', '\x8F', 'H', '\x2', '\x18E', 'p', '\x3', + '\x2', '\x2', '\x2', '\x18F', '\x190', '\x5', '\xB3', 'Z', '\x2', '\x190', + '\x191', '\x5', '\x95', 'K', '\x2', '\x191', '\x192', '\x5', '\x8F', 'H', + '\x2', '\x192', '\x193', '\x5', '\xA9', 'U', '\x2', '\x193', '\x194', + '\x5', '\x8F', 'H', '\x2', '\x194', 'r', '\x3', '\x2', '\x2', '\x2', '\x195', + '\x197', '\t', '\x2', '\x2', '\x2', '\x196', '\x195', '\x3', '\x2', '\x2', + '\x2', '\x197', '\x198', '\x3', '\x2', '\x2', '\x2', '\x198', '\x196', + '\x3', '\x2', '\x2', '\x2', '\x198', '\x199', '\x3', '\x2', '\x2', '\x2', + '\x199', '\x19A', '\x3', '\x2', '\x2', '\x2', '\x19A', '\x19B', '\b', + ':', '\x2', '\x2', '\x19B', 't', '\x3', '\x2', '\x2', '\x2', '\x19C', + '\x19E', '\t', '\x3', '\x2', '\x2', '\x19D', '\x19C', '\x3', '\x2', '\x2', + '\x2', '\x19D', '\x19E', '\x3', '\x2', '\x2', '\x2', '\x19E', '\x1A0', + '\x3', '\x2', '\x2', '\x2', '\x19F', '\x1A1', '\x5', '\x85', '\x43', '\x2', + '\x1A0', '\x19F', '\x3', '\x2', '\x2', '\x2', '\x1A1', '\x1A2', '\x3', + '\x2', '\x2', '\x2', '\x1A2', '\x1A0', '\x3', '\x2', '\x2', '\x2', '\x1A2', + '\x1A3', '\x3', '\x2', '\x2', '\x2', '\x1A3', '\x1AB', '\x3', '\x2', '\x2', + '\x2', '\x1A4', '\x1A8', '\a', '\x30', '\x2', '\x2', '\x1A5', '\x1A7', + '\x5', '\x85', '\x43', '\x2', '\x1A6', '\x1A5', '\x3', '\x2', '\x2', '\x2', + '\x1A7', '\x1AA', '\x3', '\x2', '\x2', '\x2', '\x1A8', '\x1A6', '\x3', + '\x2', '\x2', '\x2', '\x1A8', '\x1A9', '\x3', '\x2', '\x2', '\x2', '\x1A9', + '\x1AC', '\x3', '\x2', '\x2', '\x2', '\x1AA', '\x1A8', '\x3', '\x2', '\x2', + '\x2', '\x1AB', '\x1A4', '\x3', '\x2', '\x2', '\x2', '\x1AB', '\x1AC', + '\x3', '\x2', '\x2', '\x2', '\x1AC', '\x1B6', '\x3', '\x2', '\x2', '\x2', + '\x1AD', '\x1AF', '\x5', '\x8F', 'H', '\x2', '\x1AE', '\x1B0', '\t', '\x3', + '\x2', '\x2', '\x1AF', '\x1AE', '\x3', '\x2', '\x2', '\x2', '\x1AF', '\x1B0', + '\x3', '\x2', '\x2', '\x2', '\x1B0', '\x1B2', '\x3', '\x2', '\x2', '\x2', + '\x1B1', '\x1B3', '\x5', '\x85', '\x43', '\x2', '\x1B2', '\x1B1', '\x3', + '\x2', '\x2', '\x2', '\x1B3', '\x1B4', '\x3', '\x2', '\x2', '\x2', '\x1B4', + '\x1B2', '\x3', '\x2', '\x2', '\x2', '\x1B4', '\x1B5', '\x3', '\x2', '\x2', + '\x2', '\x1B5', '\x1B7', '\x3', '\x2', '\x2', '\x2', '\x1B6', '\x1AD', + '\x3', '\x2', '\x2', '\x2', '\x1B6', '\x1B7', '\x3', '\x2', '\x2', '\x2', + '\x1B7', '\x1CD', '\x3', '\x2', '\x2', '\x2', '\x1B8', '\x1BA', '\t', + '\x3', '\x2', '\x2', '\x1B9', '\x1B8', '\x3', '\x2', '\x2', '\x2', '\x1B9', + '\x1BA', '\x3', '\x2', '\x2', '\x2', '\x1BA', '\x1BB', '\x3', '\x2', '\x2', + '\x2', '\x1BB', '\x1BD', '\a', '\x30', '\x2', '\x2', '\x1BC', '\x1BE', + '\x5', '\x85', '\x43', '\x2', '\x1BD', '\x1BC', '\x3', '\x2', '\x2', '\x2', + '\x1BE', '\x1BF', '\x3', '\x2', '\x2', '\x2', '\x1BF', '\x1BD', '\x3', + '\x2', '\x2', '\x2', '\x1BF', '\x1C0', '\x3', '\x2', '\x2', '\x2', '\x1C0', + '\x1CA', '\x3', '\x2', '\x2', '\x2', '\x1C1', '\x1C3', '\x5', '\x8F', + 'H', '\x2', '\x1C2', '\x1C4', '\t', '\x3', '\x2', '\x2', '\x1C3', '\x1C2', + '\x3', '\x2', '\x2', '\x2', '\x1C3', '\x1C4', '\x3', '\x2', '\x2', '\x2', + '\x1C4', '\x1C6', '\x3', '\x2', '\x2', '\x2', '\x1C5', '\x1C7', '\x5', + '\x85', '\x43', '\x2', '\x1C6', '\x1C5', '\x3', '\x2', '\x2', '\x2', '\x1C7', + '\x1C8', '\x3', '\x2', '\x2', '\x2', '\x1C8', '\x1C6', '\x3', '\x2', '\x2', + '\x2', '\x1C8', '\x1C9', '\x3', '\x2', '\x2', '\x2', '\x1C9', '\x1CB', + '\x3', '\x2', '\x2', '\x2', '\x1CA', '\x1C1', '\x3', '\x2', '\x2', '\x2', + '\x1CA', '\x1CB', '\x3', '\x2', '\x2', '\x2', '\x1CB', '\x1CD', '\x3', + '\x2', '\x2', '\x2', '\x1CC', '\x19D', '\x3', '\x2', '\x2', '\x2', '\x1CC', + '\x1B9', '\x3', '\x2', '\x2', '\x2', '\x1CD', 'v', '\x3', '\x2', '\x2', + '\x2', '\x1CE', '\x1D3', '\a', '$', '\x2', '\x2', '\x1CF', '\x1D2', '\x5', + 'y', '=', '\x2', '\x1D0', '\x1D2', '\x5', '\x7F', '@', '\x2', '\x1D1', + '\x1CF', '\x3', '\x2', '\x2', '\x2', '\x1D1', '\x1D0', '\x3', '\x2', '\x2', + '\x2', '\x1D2', '\x1D5', '\x3', '\x2', '\x2', '\x2', '\x1D3', '\x1D1', + '\x3', '\x2', '\x2', '\x2', '\x1D3', '\x1D4', '\x3', '\x2', '\x2', '\x2', + '\x1D4', '\x1D6', '\x3', '\x2', '\x2', '\x2', '\x1D5', '\x1D3', '\x3', + '\x2', '\x2', '\x2', '\x1D6', '\x1E1', '\a', '$', '\x2', '\x2', '\x1D7', + '\x1DC', '\a', ')', '\x2', '\x2', '\x1D8', '\x1DB', '\x5', 'y', '=', '\x2', + '\x1D9', '\x1DB', '\x5', '\x7F', '@', '\x2', '\x1DA', '\x1D8', '\x3', + '\x2', '\x2', '\x2', '\x1DA', '\x1D9', '\x3', '\x2', '\x2', '\x2', '\x1DB', + '\x1DE', '\x3', '\x2', '\x2', '\x2', '\x1DC', '\x1DA', '\x3', '\x2', '\x2', + '\x2', '\x1DC', '\x1DD', '\x3', '\x2', '\x2', '\x2', '\x1DD', '\x1DF', + '\x3', '\x2', '\x2', '\x2', '\x1DE', '\x1DC', '\x3', '\x2', '\x2', '\x2', + '\x1DF', '\x1E1', '\a', ')', '\x2', '\x2', '\x1E0', '\x1CE', '\x3', '\x2', + '\x2', '\x2', '\x1E0', '\x1D7', '\x3', '\x2', '\x2', '\x2', '\x1E1', 'x', + '\x3', '\x2', '\x2', '\x2', '\x1E2', '\x1E5', '\a', '^', '\x2', '\x2', + '\x1E3', '\x1E6', '\t', '\x4', '\x2', '\x2', '\x1E4', '\x1E6', '\x5', + '{', '>', '\x2', '\x1E5', '\x1E3', '\x3', '\x2', '\x2', '\x2', '\x1E5', + '\x1E4', '\x3', '\x2', '\x2', '\x2', '\x1E6', 'z', '\x3', '\x2', '\x2', + '\x2', '\x1E7', '\x1E8', '\a', 'w', '\x2', '\x2', '\x1E8', '\x1E9', '\x5', + '}', '?', '\x2', '\x1E9', '\x1EA', '\x5', '}', '?', '\x2', '\x1EA', '\x1EB', + '\x5', '}', '?', '\x2', '\x1EB', '\x1EC', '\x5', '}', '?', '\x2', '\x1EC', + '|', '\x3', '\x2', '\x2', '\x2', '\x1ED', '\x1EE', '\t', '\x5', '\x2', + '\x2', '\x1EE', '~', '\x3', '\x2', '\x2', '\x2', '\x1EF', '\x1F0', '\n', + '\x6', '\x2', '\x2', '\x1F0', '\x80', '\x3', '\x2', '\x2', '\x2', '\x1F1', + '\x1F5', '\t', '\a', '\x2', '\x2', '\x1F2', '\x1F4', '\t', '\a', '\x2', + '\x2', '\x1F3', '\x1F2', '\x3', '\x2', '\x2', '\x2', '\x1F4', '\x1F7', + '\x3', '\x2', '\x2', '\x2', '\x1F5', '\x1F3', '\x3', '\x2', '\x2', '\x2', + '\x1F5', '\x1F6', '\x3', '\x2', '\x2', '\x2', '\x1F6', '\x1FB', '\x3', + '\x2', '\x2', '\x2', '\x1F7', '\x1F5', '\x3', '\x2', '\x2', '\x2', '\x1F8', + '\x1FA', '\x5', '\x85', '\x43', '\x2', '\x1F9', '\x1F8', '\x3', '\x2', + '\x2', '\x2', '\x1FA', '\x1FD', '\x3', '\x2', '\x2', '\x2', '\x1FB', '\x1F9', + '\x3', '\x2', '\x2', '\x2', '\x1FB', '\x1FC', '\x3', '\x2', '\x2', '\x2', + '\x1FC', '\x82', '\x3', '\x2', '\x2', '\x2', '\x1FD', '\x1FB', '\x3', + '\x2', '\x2', '\x2', '\x1FE', '\x1FF', '\a', '\x42', '\x2', '\x2', '\x1FF', + '\x200', '\x5', '\x81', '\x41', '\x2', '\x200', '\x84', '\x3', '\x2', + '\x2', '\x2', '\x201', '\x202', '\t', '\b', '\x2', '\x2', '\x202', '\x86', + '\x3', '\x2', '\x2', '\x2', '\x203', '\x204', '\t', '\t', '\x2', '\x2', + '\x204', '\x88', '\x3', '\x2', '\x2', '\x2', '\x205', '\x206', '\t', '\n', + '\x2', '\x2', '\x206', '\x8A', '\x3', '\x2', '\x2', '\x2', '\x207', '\x208', + '\t', '\v', '\x2', '\x2', '\x208', '\x8C', '\x3', '\x2', '\x2', '\x2', + '\x209', '\x20A', '\t', '\f', '\x2', '\x2', '\x20A', '\x8E', '\x3', '\x2', + '\x2', '\x2', '\x20B', '\x20C', '\t', '\r', '\x2', '\x2', '\x20C', '\x90', + '\x3', '\x2', '\x2', '\x2', '\x20D', '\x20E', '\t', '\xE', '\x2', '\x2', + '\x20E', '\x92', '\x3', '\x2', '\x2', '\x2', '\x20F', '\x210', '\t', '\xF', + '\x2', '\x2', '\x210', '\x94', '\x3', '\x2', '\x2', '\x2', '\x211', '\x212', + '\t', '\x10', '\x2', '\x2', '\x212', '\x96', '\x3', '\x2', '\x2', '\x2', + '\x213', '\x214', '\t', '\x11', '\x2', '\x2', '\x214', '\x98', '\x3', + '\x2', '\x2', '\x2', '\x215', '\x216', '\t', '\x12', '\x2', '\x2', '\x216', + '\x9A', '\x3', '\x2', '\x2', '\x2', '\x217', '\x218', '\t', '\x13', '\x2', + '\x2', '\x218', '\x9C', '\x3', '\x2', '\x2', '\x2', '\x219', '\x21A', + '\t', '\x14', '\x2', '\x2', '\x21A', '\x9E', '\x3', '\x2', '\x2', '\x2', + '\x21B', '\x21C', '\t', '\x15', '\x2', '\x2', '\x21C', '\xA0', '\x3', + '\x2', '\x2', '\x2', '\x21D', '\x21E', '\t', '\x16', '\x2', '\x2', '\x21E', + '\xA2', '\x3', '\x2', '\x2', '\x2', '\x21F', '\x220', '\t', '\x17', '\x2', + '\x2', '\x220', '\xA4', '\x3', '\x2', '\x2', '\x2', '\x221', '\x222', + '\t', '\x18', '\x2', '\x2', '\x222', '\xA6', '\x3', '\x2', '\x2', '\x2', + '\x223', '\x224', '\t', '\x19', '\x2', '\x2', '\x224', '\xA8', '\x3', + '\x2', '\x2', '\x2', '\x225', '\x226', '\t', '\x1A', '\x2', '\x2', '\x226', + '\xAA', '\x3', '\x2', '\x2', '\x2', '\x227', '\x228', '\t', '\x1B', '\x2', + '\x2', '\x228', '\xAC', '\x3', '\x2', '\x2', '\x2', '\x229', '\x22A', + '\t', '\x1C', '\x2', '\x2', '\x22A', '\xAE', '\x3', '\x2', '\x2', '\x2', + '\x22B', '\x22C', '\t', '\x1D', '\x2', '\x2', '\x22C', '\xB0', '\x3', + '\x2', '\x2', '\x2', '\x22D', '\x22E', '\t', '\x1E', '\x2', '\x2', '\x22E', + '\xB2', '\x3', '\x2', '\x2', '\x2', '\x22F', '\x230', '\t', '\x1F', '\x2', + '\x2', '\x230', '\xB4', '\x3', '\x2', '\x2', '\x2', '\x231', '\x232', + '\t', ' ', '\x2', '\x2', '\x232', '\xB6', '\x3', '\x2', '\x2', '\x2', + '\x233', '\x234', '\t', '!', '\x2', '\x2', '\x234', '\xB8', '\x3', '\x2', + '\x2', '\x2', '\x235', '\x236', '\t', '\"', '\x2', '\x2', '\x236', '\xBA', + '\x3', '\x2', '\x2', '\x2', '\x19', '\x2', '\x198', '\x19D', '\x1A2', + '\x1A8', '\x1AB', '\x1AF', '\x1B4', '\x1B6', '\x1B9', '\x1BF', '\x1C3', + '\x1C8', '\x1CA', '\x1CC', '\x1D1', '\x1D3', '\x1DA', '\x1DC', '\x1E0', + '\x1E5', '\x1F5', '\x1FB', '\x3', '\b', '\x2', '\x2', + }; - public static readonly ATN _ATN = - new ATNDeserializer().Deserialize(_serializedATN); + public static readonly ATN _ATN = + new ATNDeserializer().Deserialize(_serializedATN); } diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlParser.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlParser.cs index aab000dae7..9edb4e0a59 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlParser.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlParser.cs @@ -1,4 +1,4 @@ -//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ // // This code was generated by a tool. // ANTLR Version: 4.7.2 @@ -8,7 +8,7 @@ // //------------------------------------------------------------------------------ -// Generated from C:\CosmosSQLANTLR\CosmosSqlAntlr\CosmosSqlAntlr\sql.g4 by ANTLR 4.7.2 +// Generated from sql.g4 by ANTLR 4.7.2 // Unreachable code detected #pragma warning disable 0162 @@ -31,4347 +31,3921 @@ using DFA = Antlr4.Runtime.Dfa.DFA; [System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.7.2")] -internal partial class sqlParser : Parser -{ - protected static DFA[] decisionToDFA; - protected static PredictionContextCache sharedContextCache = new PredictionContextCache(); - public const int - T__0 = 1, T__1 = 2, T__2 = 3, T__3 = 4, T__4 = 5, T__5 = 6, T__6 = 7, T__7 = 8, T__8 = 9, - T__9 = 10, T__10 = 11, T__11 = 12, T__12 = 13, T__13 = 14, T__14 = 15, T__15 = 16, T__16 = 17, - T__17 = 18, T__18 = 19, T__19 = 20, T__20 = 21, T__21 = 22, T__22 = 23, T__23 = 24, - T__24 = 25, T__25 = 26, T__26 = 27, K_AND = 28, K_ARRAY = 29, K_AS = 30, K_ASC = 31, - K_BETWEEN = 32, K_BY = 33, K_DESC = 34, K_DISTINCT = 35, K_EXISTS = 36, K_FALSE = 37, - K_FROM = 38, K_GROUP = 39, K_IN = 40, K_JOIN = 41, K_LIMIT = 42, K_NOT = 43, K_NULL = 44, - K_OFFSET = 45, K_OR = 46, K_ORDER = 47, K_SELECT = 48, K_TOP = 49, K_TRUE = 50, K_UDF = 51, - K_UNDEFINED = 52, K_VALUE = 53, K_WHERE = 54, WS = 55, NUMERIC_LITERAL = 56, STRING_LITERAL = 57, - IDENTIFIER = 58, PARAMETER = 59; - public const int - RULE_program = 0, RULE_sql_query = 1, RULE_select_clause = 2, RULE_top_spec = 3, - RULE_selection = 4, RULE_select_star_spec = 5, RULE_select_value_spec = 6, - RULE_select_list_spec = 7, RULE_select_item = 8, RULE_from_clause = 9, - RULE_collection_expression = 10, RULE_collection = 11, RULE_path_expression = 12, - RULE_where_clause = 13, RULE_group_by_clause = 14, RULE_order_by_clause = 15, - RULE_order_by_items = 16, RULE_order_by_item = 17, RULE_sort_order = 18, - RULE_offset_limit_clause = 19, RULE_offset_count = 20, RULE_limit_count = 21, - RULE_scalar_expression = 22, RULE_logical_scalar_expression = 23, RULE_in_scalar_expression = 24, - RULE_binary_scalar_expression = 25, RULE_multiplicative_operator = 26, - RULE_additive_operator = 27, RULE_relational_operator = 28, RULE_equality_operator = 29, - RULE_bitwise_and_operator = 30, RULE_bitwise_exclusive_or_operator = 31, - RULE_bitwise_inclusive_or_operator = 32, RULE_string_concat_operator = 33, - RULE_unary_scalar_expression = 34, RULE_unary_operator = 35, RULE_primary_expression = 36, - RULE_scalar_expression_list = 37, RULE_object_property_list = 38, RULE_object_property = 39, - RULE_literal = 40; - public static readonly string[] ruleNames = { - "program", "sql_query", "select_clause", "top_spec", "selection", "select_star_spec", - "select_value_spec", "select_list_spec", "select_item", "from_clause", - "collection_expression", "collection", "path_expression", "where_clause", - "group_by_clause", "order_by_clause", "order_by_items", "order_by_item", - "sort_order", "offset_limit_clause", "offset_count", "limit_count", "scalar_expression", - "logical_scalar_expression", "in_scalar_expression", "binary_scalar_expression", - "multiplicative_operator", "additive_operator", "relational_operator", - "equality_operator", "bitwise_and_operator", "bitwise_exclusive_or_operator", - "bitwise_inclusive_or_operator", "string_concat_operator", "unary_scalar_expression", - "unary_operator", "primary_expression", "scalar_expression_list", "object_property_list", - "object_property", "literal" - }; - - private static readonly string[] _LiteralNames = { - null, "'*'", "','", "'('", "')'", "'.'", "'['", "']'", "'?'", "':'", "'??'", - "'/'", "'%'", "'+'", "'-'", "'<'", "'>'", "'>='", "'<='", "'='", "'!='", - "'&'", "'^'", "'|'", "'||'", "'~'", "'{'", "'}'", null, null, null, null, - null, null, null, null, null, "'false'", null, null, null, null, null, - null, "'null'", null, null, null, null, null, "'true'", null, "'undefined'" - }; - private static readonly string[] _SymbolicNames = { - null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, "K_AND", "K_ARRAY", "K_AS", "K_ASC", "K_BETWEEN", - "K_BY", "K_DESC", "K_DISTINCT", "K_EXISTS", "K_FALSE", "K_FROM", "K_GROUP", - "K_IN", "K_JOIN", "K_LIMIT", "K_NOT", "K_NULL", "K_OFFSET", "K_OR", "K_ORDER", - "K_SELECT", "K_TOP", "K_TRUE", "K_UDF", "K_UNDEFINED", "K_VALUE", "K_WHERE", - "WS", "NUMERIC_LITERAL", "STRING_LITERAL", "IDENTIFIER", "PARAMETER" - }; - public static readonly IVocabulary DefaultVocabulary = new Vocabulary(_LiteralNames, _SymbolicNames); - - [NotNull] - public override IVocabulary Vocabulary - { - get - { - return DefaultVocabulary; - } - } - - public override string GrammarFileName { get { return "sql.g4"; } } - - public override string[] RuleNames { get { return ruleNames; } } - - public override string SerializedAtn { get { return new string(_serializedATN); } } - - static sqlParser() - { - decisionToDFA = new DFA[_ATN.NumberOfDecisions]; - for (int i = 0; i < _ATN.NumberOfDecisions; i++) - { - decisionToDFA[i] = new DFA(_ATN.GetDecisionState(i), i); - } - } - - public sqlParser(ITokenStream input) : this(input, Console.Out, Console.Error) { } - - public sqlParser(ITokenStream input, TextWriter output, TextWriter errorOutput) - : base(input, output, errorOutput) - { - Interpreter = new ParserATNSimulator(this, _ATN, decisionToDFA, sharedContextCache); - } - - public partial class ProgramContext : ParserRuleContext - { - public Sql_queryContext sql_query() - { - return GetRuleContext(0); - } - public ITerminalNode Eof() { return GetToken(sqlParser.Eof, 0); } - public ProgramContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_program; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterProgram(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitProgram(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitProgram(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public ProgramContext program() - { - ProgramContext _localctx = new ProgramContext(Context, State); - EnterRule(_localctx, 0, RULE_program); - try - { - EnterOuterAlt(_localctx, 1); - { - State = 82; sql_query(); - State = 83; Match(Eof); - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class Sql_queryContext : ParserRuleContext - { - public Select_clauseContext select_clause() - { - return GetRuleContext(0); - } - public From_clauseContext from_clause() - { - return GetRuleContext(0); - } - public Where_clauseContext where_clause() - { - return GetRuleContext(0); - } - public Group_by_clauseContext group_by_clause() - { - return GetRuleContext(0); - } - public Order_by_clauseContext order_by_clause() - { - return GetRuleContext(0); - } - public Offset_limit_clauseContext offset_limit_clause() - { - return GetRuleContext(0); - } - public Sql_queryContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_sql_query; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterSql_query(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitSql_query(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitSql_query(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Sql_queryContext sql_query() - { - Sql_queryContext _localctx = new Sql_queryContext(Context, State); - EnterRule(_localctx, 2, RULE_sql_query); - int _la; - try - { - EnterOuterAlt(_localctx, 1); - { - State = 85; select_clause(); - State = 87; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if (_la == K_FROM) - { - { - State = 86; from_clause(); - } - } - - State = 90; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if (_la == K_WHERE) - { - { - State = 89; where_clause(); - } - } - - State = 93; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if (_la == K_GROUP) - { - { - State = 92; group_by_clause(); - } - } - - State = 96; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if (_la == K_ORDER) - { - { - State = 95; order_by_clause(); - } - } - - State = 99; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if (_la == K_OFFSET) - { - { - State = 98; offset_limit_clause(); - } - } - - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class Select_clauseContext : ParserRuleContext - { - public ITerminalNode K_SELECT() { return GetToken(sqlParser.K_SELECT, 0); } - public SelectionContext selection() - { - return GetRuleContext(0); - } - public ITerminalNode K_DISTINCT() { return GetToken(sqlParser.K_DISTINCT, 0); } - public Top_specContext top_spec() - { - return GetRuleContext(0); - } - public Select_clauseContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_select_clause; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterSelect_clause(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitSelect_clause(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitSelect_clause(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Select_clauseContext select_clause() - { - Select_clauseContext _localctx = new Select_clauseContext(Context, State); - EnterRule(_localctx, 4, RULE_select_clause); - int _la; - try - { - EnterOuterAlt(_localctx, 1); - { - State = 101; Match(K_SELECT); - State = 103; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if (_la == K_DISTINCT) - { - { - State = 102; Match(K_DISTINCT); - } - } - - State = 106; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if (_la == K_TOP) - { - { - State = 105; top_spec(); - } - } - - State = 108; selection(); - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class Top_specContext : ParserRuleContext - { - public ITerminalNode K_TOP() { return GetToken(sqlParser.K_TOP, 0); } - public ITerminalNode NUMERIC_LITERAL() { return GetToken(sqlParser.NUMERIC_LITERAL, 0); } - public ITerminalNode PARAMETER() { return GetToken(sqlParser.PARAMETER, 0); } - public Top_specContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_top_spec; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterTop_spec(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitTop_spec(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitTop_spec(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Top_specContext top_spec() - { - Top_specContext _localctx = new Top_specContext(Context, State); - EnterRule(_localctx, 6, RULE_top_spec); - int _la; - try - { - EnterOuterAlt(_localctx, 1); - { - State = 110; Match(K_TOP); - State = 111; - _la = TokenStream.LA(1); - if (!(_la == NUMERIC_LITERAL || _la == PARAMETER)) - { - ErrorHandler.RecoverInline(this); - } - else - { - ErrorHandler.ReportMatch(this); - Consume(); - } - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class SelectionContext : ParserRuleContext - { - public Select_star_specContext select_star_spec() - { - return GetRuleContext(0); - } - public Select_value_specContext select_value_spec() - { - return GetRuleContext(0); - } - public Select_list_specContext select_list_spec() - { - return GetRuleContext(0); - } - public SelectionContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_selection; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterSelection(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitSelection(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitSelection(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public SelectionContext selection() - { - SelectionContext _localctx = new SelectionContext(Context, State); - EnterRule(_localctx, 8, RULE_selection); - try - { - State = 116; - ErrorHandler.Sync(this); - switch (TokenStream.LA(1)) - { - case T__0: - EnterOuterAlt(_localctx, 1); - { - State = 113; select_star_spec(); - } - break; - case K_VALUE: - EnterOuterAlt(_localctx, 2); - { - State = 114; select_value_spec(); - } - break; - case T__2: - case T__5: - case T__12: - case T__13: - case T__24: - case T__25: - case K_ARRAY: - case K_EXISTS: - case K_FALSE: - case K_NOT: - case K_NULL: - case K_TRUE: - case K_UDF: - case K_UNDEFINED: - case NUMERIC_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case PARAMETER: - EnterOuterAlt(_localctx, 3); - { - State = 115; select_list_spec(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class Select_star_specContext : ParserRuleContext - { - public Select_star_specContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_select_star_spec; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterSelect_star_spec(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitSelect_star_spec(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitSelect_star_spec(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Select_star_specContext select_star_spec() - { - Select_star_specContext _localctx = new Select_star_specContext(Context, State); - EnterRule(_localctx, 10, RULE_select_star_spec); - try - { - EnterOuterAlt(_localctx, 1); - { - State = 118; Match(T__0); - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class Select_value_specContext : ParserRuleContext - { - public ITerminalNode K_VALUE() { return GetToken(sqlParser.K_VALUE, 0); } - public Scalar_expressionContext scalar_expression() - { - return GetRuleContext(0); - } - public Select_value_specContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_select_value_spec; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterSelect_value_spec(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitSelect_value_spec(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitSelect_value_spec(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Select_value_specContext select_value_spec() - { - Select_value_specContext _localctx = new Select_value_specContext(Context, State); - EnterRule(_localctx, 12, RULE_select_value_spec); - try - { - EnterOuterAlt(_localctx, 1); - { - State = 120; Match(K_VALUE); - State = 121; scalar_expression(0); - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class Select_list_specContext : ParserRuleContext - { - public Select_itemContext[] select_item() - { - return GetRuleContexts(); - } - public Select_itemContext select_item(int i) - { - return GetRuleContext(i); - } - public Select_list_specContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_select_list_spec; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterSelect_list_spec(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitSelect_list_spec(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitSelect_list_spec(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Select_list_specContext select_list_spec() - { - Select_list_specContext _localctx = new Select_list_specContext(Context, State); - EnterRule(_localctx, 14, RULE_select_list_spec); - int _la; - try - { - EnterOuterAlt(_localctx, 1); - { - State = 123; select_item(); - State = 128; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - while (_la == T__1) - { - { - { - State = 124; Match(T__1); - State = 125; select_item(); - } - } - State = 130; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - } - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class Select_itemContext : ParserRuleContext - { - public Scalar_expressionContext scalar_expression() - { - return GetRuleContext(0); - } - public ITerminalNode K_AS() { return GetToken(sqlParser.K_AS, 0); } - public ITerminalNode IDENTIFIER() { return GetToken(sqlParser.IDENTIFIER, 0); } - public Select_itemContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_select_item; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterSelect_item(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitSelect_item(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitSelect_item(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Select_itemContext select_item() - { - Select_itemContext _localctx = new Select_itemContext(Context, State); - EnterRule(_localctx, 16, RULE_select_item); - int _la; - try - { - EnterOuterAlt(_localctx, 1); - { - State = 131; scalar_expression(0); - State = 134; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if (_la == K_AS) - { - { - State = 132; Match(K_AS); - State = 133; Match(IDENTIFIER); - } - } - - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class From_clauseContext : ParserRuleContext - { - public ITerminalNode K_FROM() { return GetToken(sqlParser.K_FROM, 0); } - public Collection_expressionContext collection_expression() - { - return GetRuleContext(0); - } - public From_clauseContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_from_clause; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterFrom_clause(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitFrom_clause(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitFrom_clause(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public From_clauseContext from_clause() - { - From_clauseContext _localctx = new From_clauseContext(Context, State); - EnterRule(_localctx, 18, RULE_from_clause); - try - { - EnterOuterAlt(_localctx, 1); - { - State = 136; Match(K_FROM); - State = 137; collection_expression(0); - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class Collection_expressionContext : ParserRuleContext - { - public Collection_expressionContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_collection_expression; } } - - public Collection_expressionContext() { } - public virtual void CopyFrom(Collection_expressionContext context) - { - base.CopyFrom(context); - } - } - public partial class JoinCollectionExpressionContext : Collection_expressionContext - { - public Collection_expressionContext[] collection_expression() - { - return GetRuleContexts(); - } - public Collection_expressionContext collection_expression(int i) - { - return GetRuleContext(i); - } - public ITerminalNode K_JOIN() { return GetToken(sqlParser.K_JOIN, 0); } - public JoinCollectionExpressionContext(Collection_expressionContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterJoinCollectionExpression(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitJoinCollectionExpression(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitJoinCollectionExpression(this); - else return visitor.VisitChildren(this); - } - } - public partial class AliasedCollectionExpressionContext : Collection_expressionContext - { - public CollectionContext collection() - { - return GetRuleContext(0); - } - public ITerminalNode K_AS() { return GetToken(sqlParser.K_AS, 0); } - public ITerminalNode IDENTIFIER() { return GetToken(sqlParser.IDENTIFIER, 0); } - public AliasedCollectionExpressionContext(Collection_expressionContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterAliasedCollectionExpression(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitAliasedCollectionExpression(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitAliasedCollectionExpression(this); - else return visitor.VisitChildren(this); - } - } - public partial class ArrayIteratorCollectionExpressionContext : Collection_expressionContext - { - public ITerminalNode IDENTIFIER() { return GetToken(sqlParser.IDENTIFIER, 0); } - public ITerminalNode K_IN() { return GetToken(sqlParser.K_IN, 0); } - public CollectionContext collection() - { - return GetRuleContext(0); - } - public ArrayIteratorCollectionExpressionContext(Collection_expressionContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterArrayIteratorCollectionExpression(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitArrayIteratorCollectionExpression(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitArrayIteratorCollectionExpression(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Collection_expressionContext collection_expression() - { - return collection_expression(0); - } - - private Collection_expressionContext collection_expression(int _p) - { - ParserRuleContext _parentctx = Context; - int _parentState = State; - Collection_expressionContext _localctx = new Collection_expressionContext(Context, _parentState); - Collection_expressionContext _prevctx = _localctx; - int _startState = 20; - EnterRecursionRule(_localctx, 20, RULE_collection_expression, _p); - try - { - int _alt; - EnterOuterAlt(_localctx, 1); - { - State = 148; - ErrorHandler.Sync(this); - switch (Interpreter.AdaptivePredict(TokenStream, 11, Context)) - { - case 1: - { - _localctx = new AliasedCollectionExpressionContext(_localctx); - Context = _localctx; - _prevctx = _localctx; - - State = 140; collection(); - State = 143; - ErrorHandler.Sync(this); - switch (Interpreter.AdaptivePredict(TokenStream, 10, Context)) - { - case 1: - { - State = 141; Match(K_AS); - State = 142; Match(IDENTIFIER); - } - break; - } - } - break; - case 2: - { - _localctx = new ArrayIteratorCollectionExpressionContext(_localctx); - Context = _localctx; - _prevctx = _localctx; - State = 145; Match(IDENTIFIER); - State = 146; Match(K_IN); - State = 147; collection(); - } - break; - } - Context.Stop = TokenStream.LT(-1); - State = 155; - ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream, 12, Context); - while (_alt != 2 && _alt != global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER) - { - if (_alt == 1) - { - if (ParseListeners != null) - TriggerExitRuleEvent(); - _prevctx = _localctx; - { - { - _localctx = new JoinCollectionExpressionContext(new Collection_expressionContext(_parentctx, _parentState)); - PushNewRecursionContext(_localctx, _startState, RULE_collection_expression); - State = 150; - if (!(Precpred(Context, 1))) throw new FailedPredicateException(this, "Precpred(Context, 1)"); - State = 151; Match(K_JOIN); - State = 152; collection_expression(2); - } - } - } - State = 157; - ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream, 12, Context); - } - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - UnrollRecursionContexts(_parentctx); - } - return _localctx; - } - - public partial class CollectionContext : ParserRuleContext - { - public CollectionContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_collection; } } - - public CollectionContext() { } - public virtual void CopyFrom(CollectionContext context) - { - base.CopyFrom(context); - } - } - public partial class InputPathCollectionContext : CollectionContext - { - public ITerminalNode IDENTIFIER() { return GetToken(sqlParser.IDENTIFIER, 0); } - public Path_expressionContext path_expression() - { - return GetRuleContext(0); - } - public InputPathCollectionContext(CollectionContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterInputPathCollection(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitInputPathCollection(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitInputPathCollection(this); - else return visitor.VisitChildren(this); - } - } - public partial class SubqueryCollectionContext : CollectionContext - { - public Sql_queryContext sql_query() - { - return GetRuleContext(0); - } - public SubqueryCollectionContext(CollectionContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterSubqueryCollection(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitSubqueryCollection(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitSubqueryCollection(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public CollectionContext collection() - { - CollectionContext _localctx = new CollectionContext(Context, State); - EnterRule(_localctx, 22, RULE_collection); - try - { - State = 166; - ErrorHandler.Sync(this); - switch (TokenStream.LA(1)) - { - case IDENTIFIER: - _localctx = new InputPathCollectionContext(_localctx); - EnterOuterAlt(_localctx, 1); - { - State = 158; Match(IDENTIFIER); - State = 160; - ErrorHandler.Sync(this); - switch (Interpreter.AdaptivePredict(TokenStream, 13, Context)) - { - case 1: - { - State = 159; path_expression(0); - } - break; - } - } - break; - case T__2: - _localctx = new SubqueryCollectionContext(_localctx); - EnterOuterAlt(_localctx, 2); - { - State = 162; Match(T__2); - State = 163; sql_query(); - State = 164; Match(T__3); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class Path_expressionContext : ParserRuleContext - { - public Path_expressionContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_path_expression; } } - - public Path_expressionContext() { } - public virtual void CopyFrom(Path_expressionContext context) - { - base.CopyFrom(context); - } - } - public partial class StringPathExpressionContext : Path_expressionContext - { - public Path_expressionContext path_expression() - { - return GetRuleContext(0); - } - public ITerminalNode STRING_LITERAL() { return GetToken(sqlParser.STRING_LITERAL, 0); } - public StringPathExpressionContext(Path_expressionContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterStringPathExpression(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitStringPathExpression(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitStringPathExpression(this); - else return visitor.VisitChildren(this); - } - } - public partial class EpsilonPathExpressionContext : Path_expressionContext - { - public EpsilonPathExpressionContext(Path_expressionContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterEpsilonPathExpression(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitEpsilonPathExpression(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitEpsilonPathExpression(this); - else return visitor.VisitChildren(this); - } - } - public partial class IdentifierPathExpressionContext : Path_expressionContext - { - public Path_expressionContext path_expression() - { - return GetRuleContext(0); - } - public ITerminalNode IDENTIFIER() { return GetToken(sqlParser.IDENTIFIER, 0); } - public IdentifierPathExpressionContext(Path_expressionContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterIdentifierPathExpression(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitIdentifierPathExpression(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitIdentifierPathExpression(this); - else return visitor.VisitChildren(this); - } - } - public partial class NumberPathExpressionContext : Path_expressionContext - { - public Path_expressionContext path_expression() - { - return GetRuleContext(0); - } - public ITerminalNode NUMERIC_LITERAL() { return GetToken(sqlParser.NUMERIC_LITERAL, 0); } - public NumberPathExpressionContext(Path_expressionContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterNumberPathExpression(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitNumberPathExpression(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitNumberPathExpression(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Path_expressionContext path_expression() - { - return path_expression(0); - } - - private Path_expressionContext path_expression(int _p) - { - ParserRuleContext _parentctx = Context; - int _parentState = State; - Path_expressionContext _localctx = new Path_expressionContext(Context, _parentState); - Path_expressionContext _prevctx = _localctx; - int _startState = 24; - EnterRecursionRule(_localctx, 24, RULE_path_expression, _p); - try - { - int _alt; - EnterOuterAlt(_localctx, 1); - { - { - _localctx = new EpsilonPathExpressionContext(_localctx); - Context = _localctx; - _prevctx = _localctx; - - } - Context.Stop = TokenStream.LT(-1); - State = 182; - ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream, 16, Context); - while (_alt != 2 && _alt != global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER) - { - if (_alt == 1) - { - if (ParseListeners != null) - TriggerExitRuleEvent(); - _prevctx = _localctx; - { - State = 180; - ErrorHandler.Sync(this); - switch (Interpreter.AdaptivePredict(TokenStream, 15, Context)) - { - case 1: - { - _localctx = new IdentifierPathExpressionContext(new Path_expressionContext(_parentctx, _parentState)); - PushNewRecursionContext(_localctx, _startState, RULE_path_expression); - State = 169; - if (!(Precpred(Context, 4))) throw new FailedPredicateException(this, "Precpred(Context, 4)"); - State = 170; Match(T__4); - State = 171; Match(IDENTIFIER); - } - break; - case 2: - { - _localctx = new NumberPathExpressionContext(new Path_expressionContext(_parentctx, _parentState)); - PushNewRecursionContext(_localctx, _startState, RULE_path_expression); - State = 172; - if (!(Precpred(Context, 3))) throw new FailedPredicateException(this, "Precpred(Context, 3)"); - State = 173; Match(T__5); - State = 174; Match(NUMERIC_LITERAL); - State = 175; Match(T__6); - } - break; - case 3: - { - _localctx = new StringPathExpressionContext(new Path_expressionContext(_parentctx, _parentState)); - PushNewRecursionContext(_localctx, _startState, RULE_path_expression); - State = 176; - if (!(Precpred(Context, 2))) throw new FailedPredicateException(this, "Precpred(Context, 2)"); - State = 177; Match(T__5); - State = 178; Match(STRING_LITERAL); - State = 179; Match(T__6); - } - break; - } - } - } - State = 184; - ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream, 16, Context); - } - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - UnrollRecursionContexts(_parentctx); - } - return _localctx; - } - - public partial class Where_clauseContext : ParserRuleContext - { - public ITerminalNode K_WHERE() { return GetToken(sqlParser.K_WHERE, 0); } - public Scalar_expressionContext scalar_expression() - { - return GetRuleContext(0); - } - public Where_clauseContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_where_clause; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterWhere_clause(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitWhere_clause(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitWhere_clause(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Where_clauseContext where_clause() - { - Where_clauseContext _localctx = new Where_clauseContext(Context, State); - EnterRule(_localctx, 26, RULE_where_clause); - try - { - EnterOuterAlt(_localctx, 1); - { - State = 185; Match(K_WHERE); - State = 186; scalar_expression(0); - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class Group_by_clauseContext : ParserRuleContext - { - public ITerminalNode K_GROUP() { return GetToken(sqlParser.K_GROUP, 0); } - public ITerminalNode K_BY() { return GetToken(sqlParser.K_BY, 0); } - public Scalar_expression_listContext scalar_expression_list() - { - return GetRuleContext(0); - } - public Group_by_clauseContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_group_by_clause; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterGroup_by_clause(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitGroup_by_clause(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitGroup_by_clause(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Group_by_clauseContext group_by_clause() - { - Group_by_clauseContext _localctx = new Group_by_clauseContext(Context, State); - EnterRule(_localctx, 28, RULE_group_by_clause); - try - { - EnterOuterAlt(_localctx, 1); - { - State = 188; Match(K_GROUP); - State = 189; Match(K_BY); - State = 190; scalar_expression_list(); - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class Order_by_clauseContext : ParserRuleContext - { - public ITerminalNode K_ORDER() { return GetToken(sqlParser.K_ORDER, 0); } - public ITerminalNode K_BY() { return GetToken(sqlParser.K_BY, 0); } - public Order_by_itemsContext order_by_items() - { - return GetRuleContext(0); - } - public Order_by_clauseContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_order_by_clause; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterOrder_by_clause(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitOrder_by_clause(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitOrder_by_clause(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Order_by_clauseContext order_by_clause() - { - Order_by_clauseContext _localctx = new Order_by_clauseContext(Context, State); - EnterRule(_localctx, 30, RULE_order_by_clause); - try - { - EnterOuterAlt(_localctx, 1); - { - State = 192; Match(K_ORDER); - State = 193; Match(K_BY); - State = 194; order_by_items(); - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class Order_by_itemsContext : ParserRuleContext - { - public Order_by_itemContext[] order_by_item() - { - return GetRuleContexts(); - } - public Order_by_itemContext order_by_item(int i) - { - return GetRuleContext(i); - } - public Order_by_itemsContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_order_by_items; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterOrder_by_items(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitOrder_by_items(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitOrder_by_items(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Order_by_itemsContext order_by_items() - { - Order_by_itemsContext _localctx = new Order_by_itemsContext(Context, State); - EnterRule(_localctx, 32, RULE_order_by_items); - int _la; - try - { - EnterOuterAlt(_localctx, 1); - { - State = 196; order_by_item(); - State = 201; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - while (_la == T__1) - { - { - { - State = 197; Match(T__1); - State = 198; order_by_item(); - } - } - State = 203; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - } - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class Order_by_itemContext : ParserRuleContext - { - public Scalar_expressionContext scalar_expression() - { - return GetRuleContext(0); - } - public Sort_orderContext sort_order() - { - return GetRuleContext(0); - } - public Order_by_itemContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_order_by_item; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterOrder_by_item(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitOrder_by_item(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitOrder_by_item(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Order_by_itemContext order_by_item() - { - Order_by_itemContext _localctx = new Order_by_itemContext(Context, State); - EnterRule(_localctx, 34, RULE_order_by_item); - int _la; - try - { - EnterOuterAlt(_localctx, 1); - { - State = 204; scalar_expression(0); - State = 206; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if (_la == K_ASC || _la == K_DESC) - { - { - State = 205; sort_order(); - } - } - - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class Sort_orderContext : ParserRuleContext - { - public ITerminalNode K_ASC() { return GetToken(sqlParser.K_ASC, 0); } - public ITerminalNode K_DESC() { return GetToken(sqlParser.K_DESC, 0); } - public Sort_orderContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_sort_order; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterSort_order(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitSort_order(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitSort_order(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Sort_orderContext sort_order() - { - Sort_orderContext _localctx = new Sort_orderContext(Context, State); - EnterRule(_localctx, 36, RULE_sort_order); - int _la; - try - { - EnterOuterAlt(_localctx, 1); - { - State = 208; - _la = TokenStream.LA(1); - if (!(_la == K_ASC || _la == K_DESC)) - { - ErrorHandler.RecoverInline(this); - } - else - { - ErrorHandler.ReportMatch(this); - Consume(); - } - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class Offset_limit_clauseContext : ParserRuleContext - { - public ITerminalNode K_OFFSET() { return GetToken(sqlParser.K_OFFSET, 0); } - public Offset_countContext offset_count() - { - return GetRuleContext(0); - } - public ITerminalNode K_LIMIT() { return GetToken(sqlParser.K_LIMIT, 0); } - public Limit_countContext limit_count() - { - return GetRuleContext(0); - } - public Offset_limit_clauseContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_offset_limit_clause; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterOffset_limit_clause(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitOffset_limit_clause(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitOffset_limit_clause(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Offset_limit_clauseContext offset_limit_clause() - { - Offset_limit_clauseContext _localctx = new Offset_limit_clauseContext(Context, State); - EnterRule(_localctx, 38, RULE_offset_limit_clause); - try - { - EnterOuterAlt(_localctx, 1); - { - State = 210; Match(K_OFFSET); - State = 211; offset_count(); - State = 212; Match(K_LIMIT); - State = 213; limit_count(); - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class Offset_countContext : ParserRuleContext - { - public ITerminalNode NUMERIC_LITERAL() { return GetToken(sqlParser.NUMERIC_LITERAL, 0); } - public ITerminalNode PARAMETER() { return GetToken(sqlParser.PARAMETER, 0); } - public Offset_countContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_offset_count; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterOffset_count(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitOffset_count(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitOffset_count(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Offset_countContext offset_count() - { - Offset_countContext _localctx = new Offset_countContext(Context, State); - EnterRule(_localctx, 40, RULE_offset_count); - int _la; - try - { - EnterOuterAlt(_localctx, 1); - { - State = 215; - _la = TokenStream.LA(1); - if (!(_la == NUMERIC_LITERAL || _la == PARAMETER)) - { - ErrorHandler.RecoverInline(this); - } - else - { - ErrorHandler.ReportMatch(this); - Consume(); - } - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class Limit_countContext : ParserRuleContext - { - public ITerminalNode NUMERIC_LITERAL() { return GetToken(sqlParser.NUMERIC_LITERAL, 0); } - public ITerminalNode PARAMETER() { return GetToken(sqlParser.PARAMETER, 0); } - public Limit_countContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_limit_count; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterLimit_count(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitLimit_count(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitLimit_count(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Limit_countContext limit_count() - { - Limit_countContext _localctx = new Limit_countContext(Context, State); - EnterRule(_localctx, 42, RULE_limit_count); - int _la; - try - { - EnterOuterAlt(_localctx, 1); - { - State = 217; - _la = TokenStream.LA(1); - if (!(_la == NUMERIC_LITERAL || _la == PARAMETER)) - { - ErrorHandler.RecoverInline(this); - } - else - { - ErrorHandler.ReportMatch(this); - Consume(); - } - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class Scalar_expressionContext : ParserRuleContext - { - public Scalar_expressionContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_scalar_expression; } } - - public Scalar_expressionContext() { } - public virtual void CopyFrom(Scalar_expressionContext context) - { - base.CopyFrom(context); - } - } - public partial class LogicalScalarExpressionContext : Scalar_expressionContext - { - public Logical_scalar_expressionContext logical_scalar_expression() - { - return GetRuleContext(0); - } - public LogicalScalarExpressionContext(Scalar_expressionContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterLogicalScalarExpression(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitLogicalScalarExpression(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitLogicalScalarExpression(this); - else return visitor.VisitChildren(this); - } - } - public partial class ConditionalScalarExpressionContext : Scalar_expressionContext - { - public Scalar_expressionContext[] scalar_expression() - { - return GetRuleContexts(); - } - public Scalar_expressionContext scalar_expression(int i) - { - return GetRuleContext(i); - } - public ConditionalScalarExpressionContext(Scalar_expressionContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterConditionalScalarExpression(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitConditionalScalarExpression(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitConditionalScalarExpression(this); - else return visitor.VisitChildren(this); - } - } - public partial class CoalesceScalarExpressionContext : Scalar_expressionContext - { - public Scalar_expressionContext[] scalar_expression() - { - return GetRuleContexts(); - } - public Scalar_expressionContext scalar_expression(int i) - { - return GetRuleContext(i); - } - public CoalesceScalarExpressionContext(Scalar_expressionContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterCoalesceScalarExpression(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitCoalesceScalarExpression(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitCoalesceScalarExpression(this); - else return visitor.VisitChildren(this); - } - } - public partial class BetweenScalarExpressionContext : Scalar_expressionContext - { - public Binary_scalar_expressionContext[] binary_scalar_expression() - { - return GetRuleContexts(); - } - public Binary_scalar_expressionContext binary_scalar_expression(int i) - { - return GetRuleContext(i); - } - public ITerminalNode K_BETWEEN() { return GetToken(sqlParser.K_BETWEEN, 0); } - public ITerminalNode K_AND() { return GetToken(sqlParser.K_AND, 0); } - public ITerminalNode K_NOT() { return GetToken(sqlParser.K_NOT, 0); } - public BetweenScalarExpressionContext(Scalar_expressionContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterBetweenScalarExpression(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitBetweenScalarExpression(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitBetweenScalarExpression(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Scalar_expressionContext scalar_expression() - { - return scalar_expression(0); - } - - private Scalar_expressionContext scalar_expression(int _p) - { - ParserRuleContext _parentctx = Context; - int _parentState = State; - Scalar_expressionContext _localctx = new Scalar_expressionContext(Context, _parentState); - Scalar_expressionContext _prevctx = _localctx; - int _startState = 44; - EnterRecursionRule(_localctx, 44, RULE_scalar_expression, _p); - int _la; - try - { - int _alt; - EnterOuterAlt(_localctx, 1); - { - State = 230; - ErrorHandler.Sync(this); - switch (Interpreter.AdaptivePredict(TokenStream, 20, Context)) - { - case 1: - { - _localctx = new LogicalScalarExpressionContext(_localctx); - Context = _localctx; - _prevctx = _localctx; - - State = 220; logical_scalar_expression(); - } - break; - case 2: - { - _localctx = new BetweenScalarExpressionContext(_localctx); - Context = _localctx; - _prevctx = _localctx; - State = 221; binary_scalar_expression(0); - State = 223; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if (_la == K_NOT) - { - { - State = 222; Match(K_NOT); - } - } - - State = 225; Match(K_BETWEEN); - State = 226; binary_scalar_expression(0); - State = 227; Match(K_AND); - State = 228; binary_scalar_expression(0); - } - break; - } - Context.Stop = TokenStream.LT(-1); - State = 243; - ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream, 22, Context); - while (_alt != 2 && _alt != global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER) - { - if (_alt == 1) - { - if (ParseListeners != null) - TriggerExitRuleEvent(); - _prevctx = _localctx; - { - State = 241; - ErrorHandler.Sync(this); - switch (Interpreter.AdaptivePredict(TokenStream, 21, Context)) - { - case 1: - { - _localctx = new ConditionalScalarExpressionContext(new Scalar_expressionContext(_parentctx, _parentState)); - PushNewRecursionContext(_localctx, _startState, RULE_scalar_expression); - State = 232; - if (!(Precpred(Context, 4))) throw new FailedPredicateException(this, "Precpred(Context, 4)"); - State = 233; Match(T__7); - State = 234; scalar_expression(0); - State = 235; Match(T__8); - State = 236; scalar_expression(5); - } - break; - case 2: - { - _localctx = new CoalesceScalarExpressionContext(new Scalar_expressionContext(_parentctx, _parentState)); - PushNewRecursionContext(_localctx, _startState, RULE_scalar_expression); - State = 238; - if (!(Precpred(Context, 3))) throw new FailedPredicateException(this, "Precpred(Context, 3)"); - State = 239; Match(T__9); - State = 240; scalar_expression(4); - } - break; - } - } - } - State = 245; - ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream, 22, Context); - } - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - UnrollRecursionContexts(_parentctx); - } - return _localctx; - } - - public partial class Logical_scalar_expressionContext : ParserRuleContext - { - public Binary_scalar_expressionContext binary_scalar_expression() - { - return GetRuleContext(0); - } - public In_scalar_expressionContext in_scalar_expression() - { - return GetRuleContext(0); - } - public Logical_scalar_expressionContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_logical_scalar_expression; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterLogical_scalar_expression(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitLogical_scalar_expression(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitLogical_scalar_expression(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Logical_scalar_expressionContext logical_scalar_expression() - { - Logical_scalar_expressionContext _localctx = new Logical_scalar_expressionContext(Context, State); - EnterRule(_localctx, 46, RULE_logical_scalar_expression); - try - { - State = 248; - ErrorHandler.Sync(this); - switch (Interpreter.AdaptivePredict(TokenStream, 23, Context)) - { - case 1: - EnterOuterAlt(_localctx, 1); - { - State = 246; binary_scalar_expression(0); - } - break; - case 2: - EnterOuterAlt(_localctx, 2); - { - State = 247; in_scalar_expression(); - } - break; - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class In_scalar_expressionContext : ParserRuleContext - { - public Binary_scalar_expressionContext binary_scalar_expression() - { - return GetRuleContext(0); - } - public ITerminalNode K_IN() { return GetToken(sqlParser.K_IN, 0); } - public Scalar_expression_listContext scalar_expression_list() - { - return GetRuleContext(0); - } - public ITerminalNode K_NOT() { return GetToken(sqlParser.K_NOT, 0); } - public In_scalar_expressionContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_in_scalar_expression; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterIn_scalar_expression(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitIn_scalar_expression(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitIn_scalar_expression(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public In_scalar_expressionContext in_scalar_expression() - { - In_scalar_expressionContext _localctx = new In_scalar_expressionContext(Context, State); - EnterRule(_localctx, 48, RULE_in_scalar_expression); - int _la; - try - { - EnterOuterAlt(_localctx, 1); - { - State = 250; binary_scalar_expression(0); - State = 252; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if (_la == K_NOT) - { - { - State = 251; Match(K_NOT); - } - } - - State = 254; Match(K_IN); - State = 255; Match(T__2); - State = 256; scalar_expression_list(); - State = 257; Match(T__3); - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class Binary_scalar_expressionContext : ParserRuleContext - { - public Unary_scalar_expressionContext unary_scalar_expression() - { - return GetRuleContext(0); - } - public Binary_scalar_expressionContext[] binary_scalar_expression() - { - return GetRuleContexts(); - } - public Binary_scalar_expressionContext binary_scalar_expression(int i) - { - return GetRuleContext(i); - } - public Multiplicative_operatorContext multiplicative_operator() - { - return GetRuleContext(0); - } - public Additive_operatorContext additive_operator() - { - return GetRuleContext(0); - } - public Relational_operatorContext relational_operator() - { - return GetRuleContext(0); - } - public Equality_operatorContext equality_operator() - { - return GetRuleContext(0); - } - public Bitwise_and_operatorContext bitwise_and_operator() - { - return GetRuleContext(0); - } - public Bitwise_exclusive_or_operatorContext bitwise_exclusive_or_operator() - { - return GetRuleContext(0); - } - public Bitwise_inclusive_or_operatorContext bitwise_inclusive_or_operator() - { - return GetRuleContext(0); - } - public ITerminalNode K_AND() { return GetToken(sqlParser.K_AND, 0); } - public ITerminalNode K_OR() { return GetToken(sqlParser.K_OR, 0); } - public String_concat_operatorContext string_concat_operator() - { - return GetRuleContext(0); - } - public Binary_scalar_expressionContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_binary_scalar_expression; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterBinary_scalar_expression(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitBinary_scalar_expression(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitBinary_scalar_expression(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Binary_scalar_expressionContext binary_scalar_expression() - { - return binary_scalar_expression(0); - } - - private Binary_scalar_expressionContext binary_scalar_expression(int _p) - { - ParserRuleContext _parentctx = Context; - int _parentState = State; - Binary_scalar_expressionContext _localctx = new Binary_scalar_expressionContext(Context, _parentState); - Binary_scalar_expressionContext _prevctx = _localctx; - int _startState = 50; - EnterRecursionRule(_localctx, 50, RULE_binary_scalar_expression, _p); - try - { - int _alt; - EnterOuterAlt(_localctx, 1); - { - { - State = 260; unary_scalar_expression(); - } - Context.Stop = TokenStream.LT(-1); - State = 302; - ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream, 26, Context); - while (_alt != 2 && _alt != global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER) - { - if (_alt == 1) - { - if (ParseListeners != null) - TriggerExitRuleEvent(); - _prevctx = _localctx; - { - State = 300; - ErrorHandler.Sync(this); - switch (Interpreter.AdaptivePredict(TokenStream, 25, Context)) - { - case 1: - { - _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); - PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 262; - if (!(Precpred(Context, 10))) throw new FailedPredicateException(this, "Precpred(Context, 10)"); - State = 263; multiplicative_operator(); - State = 264; binary_scalar_expression(11); - } - break; - case 2: - { - _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); - PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 266; - if (!(Precpred(Context, 9))) throw new FailedPredicateException(this, "Precpred(Context, 9)"); - State = 267; additive_operator(); - State = 268; binary_scalar_expression(10); - } - break; - case 3: - { - _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); - PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 270; - if (!(Precpred(Context, 8))) throw new FailedPredicateException(this, "Precpred(Context, 8)"); - State = 271; relational_operator(); - State = 272; binary_scalar_expression(9); - } - break; - case 4: - { - _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); - PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 274; - if (!(Precpred(Context, 7))) throw new FailedPredicateException(this, "Precpred(Context, 7)"); - State = 275; equality_operator(); - State = 276; binary_scalar_expression(8); - } - break; - case 5: - { - _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); - PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 278; - if (!(Precpred(Context, 6))) throw new FailedPredicateException(this, "Precpred(Context, 6)"); - State = 279; bitwise_and_operator(); - State = 280; binary_scalar_expression(7); - } - break; - case 6: - { - _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); - PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 282; - if (!(Precpred(Context, 5))) throw new FailedPredicateException(this, "Precpred(Context, 5)"); - State = 283; bitwise_exclusive_or_operator(); - State = 284; binary_scalar_expression(6); - } - break; - case 7: - { - _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); - PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 286; - if (!(Precpred(Context, 4))) throw new FailedPredicateException(this, "Precpred(Context, 4)"); - State = 287; bitwise_inclusive_or_operator(); - State = 288; binary_scalar_expression(5); - } - break; - case 8: - { - _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); - PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 290; - if (!(Precpred(Context, 3))) throw new FailedPredicateException(this, "Precpred(Context, 3)"); - State = 291; Match(K_AND); - State = 292; binary_scalar_expression(4); - } - break; - case 9: - { - _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); - PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 293; - if (!(Precpred(Context, 2))) throw new FailedPredicateException(this, "Precpred(Context, 2)"); - State = 294; Match(K_OR); - State = 295; binary_scalar_expression(3); - } - break; - case 10: - { - _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); - PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 296; - if (!(Precpred(Context, 1))) throw new FailedPredicateException(this, "Precpred(Context, 1)"); - State = 297; string_concat_operator(); - State = 298; binary_scalar_expression(2); - } - break; - } - } - } - State = 304; - ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream, 26, Context); - } - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - UnrollRecursionContexts(_parentctx); - } - return _localctx; - } - - public partial class Multiplicative_operatorContext : ParserRuleContext - { - public Multiplicative_operatorContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_multiplicative_operator; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterMultiplicative_operator(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitMultiplicative_operator(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitMultiplicative_operator(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Multiplicative_operatorContext multiplicative_operator() - { - Multiplicative_operatorContext _localctx = new Multiplicative_operatorContext(Context, State); - EnterRule(_localctx, 52, RULE_multiplicative_operator); - int _la; - try - { - EnterOuterAlt(_localctx, 1); - { - State = 305; - _la = TokenStream.LA(1); - if (!((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << T__10) | (1L << T__11))) != 0))) - { - ErrorHandler.RecoverInline(this); - } - else - { - ErrorHandler.ReportMatch(this); - Consume(); - } - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class Additive_operatorContext : ParserRuleContext - { - public Additive_operatorContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_additive_operator; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterAdditive_operator(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitAdditive_operator(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitAdditive_operator(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Additive_operatorContext additive_operator() - { - Additive_operatorContext _localctx = new Additive_operatorContext(Context, State); - EnterRule(_localctx, 54, RULE_additive_operator); - int _la; - try - { - EnterOuterAlt(_localctx, 1); - { - State = 307; - _la = TokenStream.LA(1); - if (!(_la == T__12 || _la == T__13)) - { - ErrorHandler.RecoverInline(this); - } - else - { - ErrorHandler.ReportMatch(this); - Consume(); - } - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class Relational_operatorContext : ParserRuleContext - { - public Relational_operatorContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_relational_operator; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterRelational_operator(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitRelational_operator(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitRelational_operator(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Relational_operatorContext relational_operator() - { - Relational_operatorContext _localctx = new Relational_operatorContext(Context, State); - EnterRule(_localctx, 56, RULE_relational_operator); - int _la; - try - { - EnterOuterAlt(_localctx, 1); - { - State = 309; - _la = TokenStream.LA(1); - if (!((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__14) | (1L << T__15) | (1L << T__16) | (1L << T__17))) != 0))) - { - ErrorHandler.RecoverInline(this); - } - else - { - ErrorHandler.ReportMatch(this); - Consume(); - } - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class Equality_operatorContext : ParserRuleContext - { - public Equality_operatorContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_equality_operator; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterEquality_operator(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitEquality_operator(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitEquality_operator(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Equality_operatorContext equality_operator() - { - Equality_operatorContext _localctx = new Equality_operatorContext(Context, State); - EnterRule(_localctx, 58, RULE_equality_operator); - int _la; - try - { - EnterOuterAlt(_localctx, 1); - { - State = 311; - _la = TokenStream.LA(1); - if (!(_la == T__18 || _la == T__19)) - { - ErrorHandler.RecoverInline(this); - } - else - { - ErrorHandler.ReportMatch(this); - Consume(); - } - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class Bitwise_and_operatorContext : ParserRuleContext - { - public Bitwise_and_operatorContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_bitwise_and_operator; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterBitwise_and_operator(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitBitwise_and_operator(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitBitwise_and_operator(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Bitwise_and_operatorContext bitwise_and_operator() - { - Bitwise_and_operatorContext _localctx = new Bitwise_and_operatorContext(Context, State); - EnterRule(_localctx, 60, RULE_bitwise_and_operator); - try - { - EnterOuterAlt(_localctx, 1); - { - State = 313; Match(T__20); - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class Bitwise_exclusive_or_operatorContext : ParserRuleContext - { - public Bitwise_exclusive_or_operatorContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_bitwise_exclusive_or_operator; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterBitwise_exclusive_or_operator(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitBitwise_exclusive_or_operator(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitBitwise_exclusive_or_operator(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Bitwise_exclusive_or_operatorContext bitwise_exclusive_or_operator() - { - Bitwise_exclusive_or_operatorContext _localctx = new Bitwise_exclusive_or_operatorContext(Context, State); - EnterRule(_localctx, 62, RULE_bitwise_exclusive_or_operator); - try - { - EnterOuterAlt(_localctx, 1); - { - State = 315; Match(T__21); - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class Bitwise_inclusive_or_operatorContext : ParserRuleContext - { - public Bitwise_inclusive_or_operatorContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_bitwise_inclusive_or_operator; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterBitwise_inclusive_or_operator(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitBitwise_inclusive_or_operator(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitBitwise_inclusive_or_operator(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Bitwise_inclusive_or_operatorContext bitwise_inclusive_or_operator() - { - Bitwise_inclusive_or_operatorContext _localctx = new Bitwise_inclusive_or_operatorContext(Context, State); - EnterRule(_localctx, 64, RULE_bitwise_inclusive_or_operator); - try - { - EnterOuterAlt(_localctx, 1); - { - State = 317; Match(T__22); - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class String_concat_operatorContext : ParserRuleContext - { - public String_concat_operatorContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_string_concat_operator; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterString_concat_operator(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitString_concat_operator(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitString_concat_operator(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public String_concat_operatorContext string_concat_operator() - { - String_concat_operatorContext _localctx = new String_concat_operatorContext(Context, State); - EnterRule(_localctx, 66, RULE_string_concat_operator); - try - { - EnterOuterAlt(_localctx, 1); - { - State = 319; Match(T__23); - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class Unary_scalar_expressionContext : ParserRuleContext - { - public Primary_expressionContext primary_expression() - { - return GetRuleContext(0); - } - public Unary_operatorContext unary_operator() - { - return GetRuleContext(0); - } - public Unary_scalar_expressionContext unary_scalar_expression() - { - return GetRuleContext(0); - } - public Unary_scalar_expressionContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_unary_scalar_expression; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterUnary_scalar_expression(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitUnary_scalar_expression(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitUnary_scalar_expression(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Unary_scalar_expressionContext unary_scalar_expression() - { - Unary_scalar_expressionContext _localctx = new Unary_scalar_expressionContext(Context, State); - EnterRule(_localctx, 68, RULE_unary_scalar_expression); - try - { - State = 325; - ErrorHandler.Sync(this); - switch (TokenStream.LA(1)) - { - case T__2: - case T__5: - case T__25: - case K_ARRAY: - case K_EXISTS: - case K_FALSE: - case K_NULL: - case K_TRUE: - case K_UDF: - case K_UNDEFINED: - case NUMERIC_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case PARAMETER: - EnterOuterAlt(_localctx, 1); - { - State = 321; primary_expression(0); - } - break; - case T__12: - case T__13: - case T__24: - case K_NOT: - EnterOuterAlt(_localctx, 2); - { - State = 322; unary_operator(); - State = 323; unary_scalar_expression(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class Unary_operatorContext : ParserRuleContext - { - public ITerminalNode K_NOT() { return GetToken(sqlParser.K_NOT, 0); } - public Unary_operatorContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_unary_operator; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterUnary_operator(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitUnary_operator(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitUnary_operator(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Unary_operatorContext unary_operator() - { - Unary_operatorContext _localctx = new Unary_operatorContext(Context, State); - EnterRule(_localctx, 70, RULE_unary_operator); - int _la; - try - { - EnterOuterAlt(_localctx, 1); - { - State = 327; - _la = TokenStream.LA(1); - if (!((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__12) | (1L << T__13) | (1L << T__24) | (1L << K_NOT))) != 0))) - { - ErrorHandler.RecoverInline(this); - } - else - { - ErrorHandler.ReportMatch(this); - Consume(); - } - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class Primary_expressionContext : ParserRuleContext - { - public Primary_expressionContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_primary_expression; } } - - public Primary_expressionContext() { } - public virtual void CopyFrom(Primary_expressionContext context) - { - base.CopyFrom(context); - } - } - public partial class SubqueryScalarExpressionContext : Primary_expressionContext - { - public Sql_queryContext sql_query() - { - return GetRuleContext(0); - } - public SubqueryScalarExpressionContext(Primary_expressionContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterSubqueryScalarExpression(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitSubqueryScalarExpression(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitSubqueryScalarExpression(this); - else return visitor.VisitChildren(this); - } - } - public partial class PropertyRefScalarExpressionBaseContext : Primary_expressionContext - { - public ITerminalNode IDENTIFIER() { return GetToken(sqlParser.IDENTIFIER, 0); } - public PropertyRefScalarExpressionBaseContext(Primary_expressionContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterPropertyRefScalarExpressionBase(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitPropertyRefScalarExpressionBase(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitPropertyRefScalarExpressionBase(this); - else return visitor.VisitChildren(this); - } - } - public partial class FunctionCallScalarExpressionContext : Primary_expressionContext - { - public ITerminalNode IDENTIFIER() { return GetToken(sqlParser.IDENTIFIER, 0); } - public ITerminalNode K_UDF() { return GetToken(sqlParser.K_UDF, 0); } - public Scalar_expression_listContext scalar_expression_list() - { - return GetRuleContext(0); - } - public FunctionCallScalarExpressionContext(Primary_expressionContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterFunctionCallScalarExpression(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitFunctionCallScalarExpression(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitFunctionCallScalarExpression(this); - else return visitor.VisitChildren(this); - } - } - public partial class LiteralScalarExpressionContext : Primary_expressionContext - { - public LiteralContext literal() - { - return GetRuleContext(0); - } - public LiteralScalarExpressionContext(Primary_expressionContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterLiteralScalarExpression(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitLiteralScalarExpression(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitLiteralScalarExpression(this); - else return visitor.VisitChildren(this); - } - } - public partial class ObjectCreateScalarExpressionContext : Primary_expressionContext - { - public Object_property_listContext object_property_list() - { - return GetRuleContext(0); - } - public ObjectCreateScalarExpressionContext(Primary_expressionContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterObjectCreateScalarExpression(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitObjectCreateScalarExpression(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitObjectCreateScalarExpression(this); - else return visitor.VisitChildren(this); - } - } - public partial class ParenthesizedScalarExperessionContext : Primary_expressionContext - { - public Scalar_expressionContext scalar_expression() - { - return GetRuleContext(0); - } - public ParenthesizedScalarExperessionContext(Primary_expressionContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterParenthesizedScalarExperession(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitParenthesizedScalarExperession(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitParenthesizedScalarExperession(this); - else return visitor.VisitChildren(this); - } - } - public partial class ParameterRefScalarExpressionContext : Primary_expressionContext - { - public ITerminalNode PARAMETER() { return GetToken(sqlParser.PARAMETER, 0); } - public ParameterRefScalarExpressionContext(Primary_expressionContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterParameterRefScalarExpression(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitParameterRefScalarExpression(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitParameterRefScalarExpression(this); - else return visitor.VisitChildren(this); - } - } - public partial class ArrayCreateScalarExpressionContext : Primary_expressionContext - { - public Scalar_expression_listContext scalar_expression_list() - { - return GetRuleContext(0); - } - public ArrayCreateScalarExpressionContext(Primary_expressionContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterArrayCreateScalarExpression(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitArrayCreateScalarExpression(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitArrayCreateScalarExpression(this); - else return visitor.VisitChildren(this); - } - } - public partial class ExistsScalarExpressionContext : Primary_expressionContext - { - public ITerminalNode K_EXISTS() { return GetToken(sqlParser.K_EXISTS, 0); } - public Sql_queryContext sql_query() - { - return GetRuleContext(0); - } - public ExistsScalarExpressionContext(Primary_expressionContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterExistsScalarExpression(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitExistsScalarExpression(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitExistsScalarExpression(this); - else return visitor.VisitChildren(this); - } - } - public partial class ArrayScalarExpressionContext : Primary_expressionContext - { - public ITerminalNode K_ARRAY() { return GetToken(sqlParser.K_ARRAY, 0); } - public Sql_queryContext sql_query() - { - return GetRuleContext(0); - } - public ArrayScalarExpressionContext(Primary_expressionContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterArrayScalarExpression(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitArrayScalarExpression(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitArrayScalarExpression(this); - else return visitor.VisitChildren(this); - } - } - public partial class MemberIndexerScalarExpressionContext : Primary_expressionContext - { - public Primary_expressionContext primary_expression() - { - return GetRuleContext(0); - } - public Scalar_expressionContext scalar_expression() - { - return GetRuleContext(0); - } - public MemberIndexerScalarExpressionContext(Primary_expressionContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterMemberIndexerScalarExpression(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitMemberIndexerScalarExpression(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitMemberIndexerScalarExpression(this); - else return visitor.VisitChildren(this); - } - } - public partial class PropertyRefScalarExpressionRecursiveContext : Primary_expressionContext - { - public Primary_expressionContext primary_expression() - { - return GetRuleContext(0); - } - public ITerminalNode IDENTIFIER() { return GetToken(sqlParser.IDENTIFIER, 0); } - public PropertyRefScalarExpressionRecursiveContext(Primary_expressionContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterPropertyRefScalarExpressionRecursive(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitPropertyRefScalarExpressionRecursive(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitPropertyRefScalarExpressionRecursive(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Primary_expressionContext primary_expression() - { - return primary_expression(0); - } - - private Primary_expressionContext primary_expression(int _p) - { - ParserRuleContext _parentctx = Context; - int _parentState = State; - Primary_expressionContext _localctx = new Primary_expressionContext(Context, _parentState); - Primary_expressionContext _prevctx = _localctx; - int _startState = 72; - EnterRecursionRule(_localctx, 72, RULE_primary_expression, _p); - int _la; - try - { - int _alt; - EnterOuterAlt(_localctx, 1); - { - State = 371; - ErrorHandler.Sync(this); - switch (Interpreter.AdaptivePredict(TokenStream, 32, Context)) - { - case 1: - { - _localctx = new PropertyRefScalarExpressionBaseContext(_localctx); - Context = _localctx; - _prevctx = _localctx; - - State = 330; Match(IDENTIFIER); - } - break; - case 2: - { - _localctx = new ParameterRefScalarExpressionContext(_localctx); - Context = _localctx; - _prevctx = _localctx; - State = 331; Match(PARAMETER); - } - break; - case 3: - { - _localctx = new LiteralScalarExpressionContext(_localctx); - Context = _localctx; - _prevctx = _localctx; - State = 332; literal(); - } - break; - case 4: - { - _localctx = new ArrayCreateScalarExpressionContext(_localctx); - Context = _localctx; - _prevctx = _localctx; - State = 333; Match(T__5); - State = 335; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__5) | (1L << T__12) | (1L << T__13) | (1L << T__24) | (1L << T__25) | (1L << K_ARRAY) | (1L << K_EXISTS) | (1L << K_FALSE) | (1L << K_NOT) | (1L << K_NULL) | (1L << K_TRUE) | (1L << K_UDF) | (1L << K_UNDEFINED) | (1L << NUMERIC_LITERAL) | (1L << STRING_LITERAL) | (1L << IDENTIFIER) | (1L << PARAMETER))) != 0)) - { - { - State = 334; scalar_expression_list(); - } - } - - State = 337; Match(T__6); - } - break; - case 5: - { - _localctx = new ObjectCreateScalarExpressionContext(_localctx); - Context = _localctx; - _prevctx = _localctx; - State = 338; Match(T__25); - State = 340; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if (_la == STRING_LITERAL) - { - { - State = 339; object_property_list(); - } - } - - State = 342; Match(T__26); - } - break; - case 6: - { - _localctx = new FunctionCallScalarExpressionContext(_localctx); - Context = _localctx; - _prevctx = _localctx; - State = 345; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if (_la == K_UDF) - { - { - State = 343; Match(K_UDF); - State = 344; Match(T__4); - } - } - - State = 347; Match(IDENTIFIER); - State = 348; Match(T__2); - State = 350; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__5) | (1L << T__12) | (1L << T__13) | (1L << T__24) | (1L << T__25) | (1L << K_ARRAY) | (1L << K_EXISTS) | (1L << K_FALSE) | (1L << K_NOT) | (1L << K_NULL) | (1L << K_TRUE) | (1L << K_UDF) | (1L << K_UNDEFINED) | (1L << NUMERIC_LITERAL) | (1L << STRING_LITERAL) | (1L << IDENTIFIER) | (1L << PARAMETER))) != 0)) - { - { - State = 349; scalar_expression_list(); - } - } - - State = 352; Match(T__3); - } - break; - case 7: - { - _localctx = new ParenthesizedScalarExperessionContext(_localctx); - Context = _localctx; - _prevctx = _localctx; - State = 353; Match(T__2); - State = 354; scalar_expression(0); - State = 355; Match(T__3); - } - break; - case 8: - { - _localctx = new SubqueryScalarExpressionContext(_localctx); - Context = _localctx; - _prevctx = _localctx; - State = 357; Match(T__2); - State = 358; sql_query(); - State = 359; Match(T__3); - } - break; - case 9: - { - _localctx = new ExistsScalarExpressionContext(_localctx); - Context = _localctx; - _prevctx = _localctx; - State = 361; Match(K_EXISTS); - State = 362; Match(T__2); - State = 363; sql_query(); - State = 364; Match(T__3); - } - break; - case 10: - { - _localctx = new ArrayScalarExpressionContext(_localctx); - Context = _localctx; - _prevctx = _localctx; - State = 366; Match(K_ARRAY); - State = 367; Match(T__2); - State = 368; sql_query(); - State = 369; Match(T__3); - } - break; - } - Context.Stop = TokenStream.LT(-1); - State = 383; - ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream, 34, Context); - while (_alt != 2 && _alt != global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER) - { - if (_alt == 1) - { - if (ParseListeners != null) - TriggerExitRuleEvent(); - _prevctx = _localctx; - { - State = 381; - ErrorHandler.Sync(this); - switch (Interpreter.AdaptivePredict(TokenStream, 33, Context)) - { - case 1: - { - _localctx = new PropertyRefScalarExpressionRecursiveContext(new Primary_expressionContext(_parentctx, _parentState)); - PushNewRecursionContext(_localctx, _startState, RULE_primary_expression); - State = 373; - if (!(Precpred(Context, 4))) throw new FailedPredicateException(this, "Precpred(Context, 4)"); - State = 374; Match(T__4); - State = 375; Match(IDENTIFIER); - } - break; - case 2: - { - _localctx = new MemberIndexerScalarExpressionContext(new Primary_expressionContext(_parentctx, _parentState)); - PushNewRecursionContext(_localctx, _startState, RULE_primary_expression); - State = 376; - if (!(Precpred(Context, 3))) throw new FailedPredicateException(this, "Precpred(Context, 3)"); - State = 377; Match(T__5); - State = 378; scalar_expression(0); - State = 379; Match(T__6); - } - break; - } - } - } - State = 385; - ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream, 34, Context); - } - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - UnrollRecursionContexts(_parentctx); - } - return _localctx; - } - - public partial class Scalar_expression_listContext : ParserRuleContext - { - public Scalar_expressionContext[] scalar_expression() - { - return GetRuleContexts(); - } - public Scalar_expressionContext scalar_expression(int i) - { - return GetRuleContext(i); - } - public Scalar_expression_listContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_scalar_expression_list; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterScalar_expression_list(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitScalar_expression_list(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitScalar_expression_list(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Scalar_expression_listContext scalar_expression_list() - { - Scalar_expression_listContext _localctx = new Scalar_expression_listContext(Context, State); - EnterRule(_localctx, 74, RULE_scalar_expression_list); - int _la; - try - { - EnterOuterAlt(_localctx, 1); - { - State = 386; scalar_expression(0); - State = 391; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - while (_la == T__1) - { - { - { - State = 387; Match(T__1); - State = 388; scalar_expression(0); - } - } - State = 393; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - } - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class Object_property_listContext : ParserRuleContext - { - public Object_propertyContext[] object_property() - { - return GetRuleContexts(); - } - public Object_propertyContext object_property(int i) - { - return GetRuleContext(i); - } - public Object_property_listContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_object_property_list; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterObject_property_list(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitObject_property_list(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitObject_property_list(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Object_property_listContext object_property_list() - { - Object_property_listContext _localctx = new Object_property_listContext(Context, State); - EnterRule(_localctx, 76, RULE_object_property_list); - int _la; - try - { - EnterOuterAlt(_localctx, 1); - { - State = 394; object_property(); - State = 399; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - while (_la == T__1) - { - { - { - State = 395; Match(T__1); - State = 396; object_property(); - } - } - State = 401; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - } - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class Object_propertyContext : ParserRuleContext - { - public ITerminalNode STRING_LITERAL() { return GetToken(sqlParser.STRING_LITERAL, 0); } - public Scalar_expressionContext scalar_expression() - { - return GetRuleContext(0); - } - public Object_propertyContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_object_property; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterObject_property(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitObject_property(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitObject_property(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Object_propertyContext object_property() - { - Object_propertyContext _localctx = new Object_propertyContext(Context, State); - EnterRule(_localctx, 78, RULE_object_property); - try - { - EnterOuterAlt(_localctx, 1); - { - State = 402; Match(STRING_LITERAL); - State = 403; Match(T__8); - State = 404; scalar_expression(0); - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public partial class LiteralContext : ParserRuleContext - { - public ITerminalNode STRING_LITERAL() { return GetToken(sqlParser.STRING_LITERAL, 0); } - public ITerminalNode NUMERIC_LITERAL() { return GetToken(sqlParser.NUMERIC_LITERAL, 0); } - public ITerminalNode K_TRUE() { return GetToken(sqlParser.K_TRUE, 0); } - public ITerminalNode K_FALSE() { return GetToken(sqlParser.K_FALSE, 0); } - public ITerminalNode K_NULL() { return GetToken(sqlParser.K_NULL, 0); } - public ITerminalNode K_UNDEFINED() { return GetToken(sqlParser.K_UNDEFINED, 0); } - public LiteralContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_literal; } } - public override void EnterRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterLiteral(this); - } - public override void ExitRule(IParseTreeListener listener) - { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitLiteral(this); - } - public override TResult Accept(IParseTreeVisitor visitor) - { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitLiteral(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public LiteralContext literal() - { - LiteralContext _localctx = new LiteralContext(Context, State); - EnterRule(_localctx, 80, RULE_literal); - int _la; - try - { - EnterOuterAlt(_localctx, 1); - { - State = 406; - _la = TokenStream.LA(1); - if (!((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << K_FALSE) | (1L << K_NULL) | (1L << K_TRUE) | (1L << K_UNDEFINED) | (1L << NUMERIC_LITERAL) | (1L << STRING_LITERAL))) != 0))) - { - ErrorHandler.RecoverInline(this); - } - else - { - ErrorHandler.ReportMatch(this); - Consume(); - } - } - } - catch (RecognitionException re) - { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally - { - ExitRule(); - } - return _localctx; - } - - public override bool Sempred(RuleContext _localctx, int ruleIndex, int predIndex) - { - switch (ruleIndex) - { - case 10: return collection_expression_sempred((Collection_expressionContext)_localctx, predIndex); - case 12: return path_expression_sempred((Path_expressionContext)_localctx, predIndex); - case 22: return scalar_expression_sempred((Scalar_expressionContext)_localctx, predIndex); - case 25: return binary_scalar_expression_sempred((Binary_scalar_expressionContext)_localctx, predIndex); - case 36: return primary_expression_sempred((Primary_expressionContext)_localctx, predIndex); - } - return true; - } - private bool collection_expression_sempred(Collection_expressionContext _localctx, int predIndex) - { - switch (predIndex) - { - case 0: return Precpred(Context, 1); - } - return true; - } - private bool path_expression_sempred(Path_expressionContext _localctx, int predIndex) - { - switch (predIndex) - { - case 1: return Precpred(Context, 4); - case 2: return Precpred(Context, 3); - case 3: return Precpred(Context, 2); - } - return true; - } - private bool scalar_expression_sempred(Scalar_expressionContext _localctx, int predIndex) - { - switch (predIndex) - { - case 4: return Precpred(Context, 4); - case 5: return Precpred(Context, 3); - } - return true; - } - private bool binary_scalar_expression_sempred(Binary_scalar_expressionContext _localctx, int predIndex) - { - switch (predIndex) - { - case 6: return Precpred(Context, 10); - case 7: return Precpred(Context, 9); - case 8: return Precpred(Context, 8); - case 9: return Precpred(Context, 7); - case 10: return Precpred(Context, 6); - case 11: return Precpred(Context, 5); - case 12: return Precpred(Context, 4); - case 13: return Precpred(Context, 3); - case 14: return Precpred(Context, 2); - case 15: return Precpred(Context, 1); - } - return true; - } - private bool primary_expression_sempred(Primary_expressionContext _localctx, int predIndex) - { - switch (predIndex) - { - case 16: return Precpred(Context, 4); - case 17: return Precpred(Context, 3); - } - return true; - } - - private static char[] _serializedATN = { - '\x3', '\x608B', '\xA72A', '\x8133', '\xB9ED', '\x417C', '\x3BE7', '\x7786', - '\x5964', '\x3', '=', '\x19B', '\x4', '\x2', '\t', '\x2', '\x4', '\x3', - '\t', '\x3', '\x4', '\x4', '\t', '\x4', '\x4', '\x5', '\t', '\x5', '\x4', - '\x6', '\t', '\x6', '\x4', '\a', '\t', '\a', '\x4', '\b', '\t', '\b', - '\x4', '\t', '\t', '\t', '\x4', '\n', '\t', '\n', '\x4', '\v', '\t', '\v', - '\x4', '\f', '\t', '\f', '\x4', '\r', '\t', '\r', '\x4', '\xE', '\t', - '\xE', '\x4', '\xF', '\t', '\xF', '\x4', '\x10', '\t', '\x10', '\x4', - '\x11', '\t', '\x11', '\x4', '\x12', '\t', '\x12', '\x4', '\x13', '\t', - '\x13', '\x4', '\x14', '\t', '\x14', '\x4', '\x15', '\t', '\x15', '\x4', - '\x16', '\t', '\x16', '\x4', '\x17', '\t', '\x17', '\x4', '\x18', '\t', - '\x18', '\x4', '\x19', '\t', '\x19', '\x4', '\x1A', '\t', '\x1A', '\x4', - '\x1B', '\t', '\x1B', '\x4', '\x1C', '\t', '\x1C', '\x4', '\x1D', '\t', - '\x1D', '\x4', '\x1E', '\t', '\x1E', '\x4', '\x1F', '\t', '\x1F', '\x4', - ' ', '\t', ' ', '\x4', '!', '\t', '!', '\x4', '\"', '\t', '\"', '\x4', - '#', '\t', '#', '\x4', '$', '\t', '$', '\x4', '%', '\t', '%', '\x4', '&', - '\t', '&', '\x4', '\'', '\t', '\'', '\x4', '(', '\t', '(', '\x4', ')', - '\t', ')', '\x4', '*', '\t', '*', '\x3', '\x2', '\x3', '\x2', '\x3', '\x2', - '\x3', '\x3', '\x3', '\x3', '\x5', '\x3', 'Z', '\n', '\x3', '\x3', '\x3', - '\x5', '\x3', ']', '\n', '\x3', '\x3', '\x3', '\x5', '\x3', '`', '\n', - '\x3', '\x3', '\x3', '\x5', '\x3', '\x63', '\n', '\x3', '\x3', '\x3', - '\x5', '\x3', '\x66', '\n', '\x3', '\x3', '\x4', '\x3', '\x4', '\x5', - '\x4', 'j', '\n', '\x4', '\x3', '\x4', '\x5', '\x4', 'm', '\n', '\x4', - '\x3', '\x4', '\x3', '\x4', '\x3', '\x5', '\x3', '\x5', '\x3', '\x5', - '\x3', '\x6', '\x3', '\x6', '\x3', '\x6', '\x5', '\x6', 'w', '\n', '\x6', - '\x3', '\a', '\x3', '\a', '\x3', '\b', '\x3', '\b', '\x3', '\b', '\x3', - '\t', '\x3', '\t', '\x3', '\t', '\a', '\t', '\x81', '\n', '\t', '\f', - '\t', '\xE', '\t', '\x84', '\v', '\t', '\x3', '\n', '\x3', '\n', '\x3', - '\n', '\x5', '\n', '\x89', '\n', '\n', '\x3', '\v', '\x3', '\v', '\x3', - '\v', '\x3', '\f', '\x3', '\f', '\x3', '\f', '\x3', '\f', '\x5', '\f', - '\x92', '\n', '\f', '\x3', '\f', '\x3', '\f', '\x3', '\f', '\x5', '\f', - '\x97', '\n', '\f', '\x3', '\f', '\x3', '\f', '\x3', '\f', '\a', '\f', - '\x9C', '\n', '\f', '\f', '\f', '\xE', '\f', '\x9F', '\v', '\f', '\x3', - '\r', '\x3', '\r', '\x5', '\r', '\xA3', '\n', '\r', '\x3', '\r', '\x3', - '\r', '\x3', '\r', '\x3', '\r', '\x5', '\r', '\xA9', '\n', '\r', '\x3', - '\xE', '\x3', '\xE', '\x3', '\xE', '\x3', '\xE', '\x3', '\xE', '\x3', - '\xE', '\x3', '\xE', '\x3', '\xE', '\x3', '\xE', '\x3', '\xE', '\x3', - '\xE', '\x3', '\xE', '\a', '\xE', '\xB7', '\n', '\xE', '\f', '\xE', '\xE', - '\xE', '\xBA', '\v', '\xE', '\x3', '\xF', '\x3', '\xF', '\x3', '\xF', - '\x3', '\x10', '\x3', '\x10', '\x3', '\x10', '\x3', '\x10', '\x3', '\x11', - '\x3', '\x11', '\x3', '\x11', '\x3', '\x11', '\x3', '\x12', '\x3', '\x12', - '\x3', '\x12', '\a', '\x12', '\xCA', '\n', '\x12', '\f', '\x12', '\xE', - '\x12', '\xCD', '\v', '\x12', '\x3', '\x13', '\x3', '\x13', '\x5', '\x13', - '\xD1', '\n', '\x13', '\x3', '\x14', '\x3', '\x14', '\x3', '\x15', '\x3', - '\x15', '\x3', '\x15', '\x3', '\x15', '\x3', '\x15', '\x3', '\x16', '\x3', - '\x16', '\x3', '\x17', '\x3', '\x17', '\x3', '\x18', '\x3', '\x18', '\x3', - '\x18', '\x3', '\x18', '\x5', '\x18', '\xE2', '\n', '\x18', '\x3', '\x18', - '\x3', '\x18', '\x3', '\x18', '\x3', '\x18', '\x3', '\x18', '\x5', '\x18', - '\xE9', '\n', '\x18', '\x3', '\x18', '\x3', '\x18', '\x3', '\x18', '\x3', - '\x18', '\x3', '\x18', '\x3', '\x18', '\x3', '\x18', '\x3', '\x18', '\x3', - '\x18', '\a', '\x18', '\xF4', '\n', '\x18', '\f', '\x18', '\xE', '\x18', - '\xF7', '\v', '\x18', '\x3', '\x19', '\x3', '\x19', '\x5', '\x19', '\xFB', - '\n', '\x19', '\x3', '\x1A', '\x3', '\x1A', '\x5', '\x1A', '\xFF', '\n', - '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x3', - '\x1A', '\x3', '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x3', - '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x3', - '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x3', - '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x3', - '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x3', - '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x3', - '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x3', - '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x3', - '\x1B', '\x3', '\x1B', '\a', '\x1B', '\x12F', '\n', '\x1B', '\f', '\x1B', - '\xE', '\x1B', '\x132', '\v', '\x1B', '\x3', '\x1C', '\x3', '\x1C', '\x3', - '\x1D', '\x3', '\x1D', '\x3', '\x1E', '\x3', '\x1E', '\x3', '\x1F', '\x3', - '\x1F', '\x3', ' ', '\x3', ' ', '\x3', '!', '\x3', '!', '\x3', '\"', '\x3', - '\"', '\x3', '#', '\x3', '#', '\x3', '$', '\x3', '$', '\x3', '$', '\x3', - '$', '\x5', '$', '\x148', '\n', '$', '\x3', '%', '\x3', '%', '\x3', '&', - '\x3', '&', '\x3', '&', '\x3', '&', '\x3', '&', '\x3', '&', '\x5', '&', - '\x152', '\n', '&', '\x3', '&', '\x3', '&', '\x3', '&', '\x5', '&', '\x157', - '\n', '&', '\x3', '&', '\x3', '&', '\x3', '&', '\x5', '&', '\x15C', '\n', - '&', '\x3', '&', '\x3', '&', '\x3', '&', '\x5', '&', '\x161', '\n', '&', - '\x3', '&', '\x3', '&', '\x3', '&', '\x3', '&', '\x3', '&', '\x3', '&', - '\x3', '&', '\x3', '&', '\x3', '&', '\x3', '&', '\x3', '&', '\x3', '&', - '\x3', '&', '\x3', '&', '\x3', '&', '\x3', '&', '\x3', '&', '\x3', '&', - '\x3', '&', '\x5', '&', '\x176', '\n', '&', '\x3', '&', '\x3', '&', '\x3', - '&', '\x3', '&', '\x3', '&', '\x3', '&', '\x3', '&', '\x3', '&', '\a', - '&', '\x180', '\n', '&', '\f', '&', '\xE', '&', '\x183', '\v', '&', '\x3', - '\'', '\x3', '\'', '\x3', '\'', '\a', '\'', '\x188', '\n', '\'', '\f', - '\'', '\xE', '\'', '\x18B', '\v', '\'', '\x3', '(', '\x3', '(', '\x3', - '(', '\a', '(', '\x190', '\n', '(', '\f', '(', '\xE', '(', '\x193', '\v', - '(', '\x3', ')', '\x3', ')', '\x3', ')', '\x3', ')', '\x3', '*', '\x3', - '*', '\x3', '*', '\x2', '\a', '\x16', '\x1A', '.', '\x34', 'J', '+', '\x2', - '\x4', '\x6', '\b', '\n', '\f', '\xE', '\x10', '\x12', '\x14', '\x16', - '\x18', '\x1A', '\x1C', '\x1E', ' ', '\"', '$', '&', '(', '*', ',', '.', - '\x30', '\x32', '\x34', '\x36', '\x38', ':', '<', '>', '@', '\x42', '\x44', - '\x46', 'H', 'J', 'L', 'N', 'P', 'R', '\x2', '\n', '\x4', '\x2', ':', - ':', '=', '=', '\x4', '\x2', '!', '!', '$', '$', '\x4', '\x2', '\x3', - '\x3', '\r', '\xE', '\x3', '\x2', '\xF', '\x10', '\x3', '\x2', '\x11', - '\x14', '\x3', '\x2', '\x15', '\x16', '\x5', '\x2', '\xF', '\x10', '\x1B', - '\x1B', '-', '-', '\a', '\x2', '\'', '\'', '.', '.', '\x34', '\x34', '\x36', - '\x36', ':', ';', '\x2', '\x1A8', '\x2', 'T', '\x3', '\x2', '\x2', '\x2', - '\x4', 'W', '\x3', '\x2', '\x2', '\x2', '\x6', 'g', '\x3', '\x2', '\x2', - '\x2', '\b', 'p', '\x3', '\x2', '\x2', '\x2', '\n', 'v', '\x3', '\x2', - '\x2', '\x2', '\f', 'x', '\x3', '\x2', '\x2', '\x2', '\xE', 'z', '\x3', - '\x2', '\x2', '\x2', '\x10', '}', '\x3', '\x2', '\x2', '\x2', '\x12', - '\x85', '\x3', '\x2', '\x2', '\x2', '\x14', '\x8A', '\x3', '\x2', '\x2', - '\x2', '\x16', '\x96', '\x3', '\x2', '\x2', '\x2', '\x18', '\xA8', '\x3', - '\x2', '\x2', '\x2', '\x1A', '\xAA', '\x3', '\x2', '\x2', '\x2', '\x1C', - '\xBB', '\x3', '\x2', '\x2', '\x2', '\x1E', '\xBE', '\x3', '\x2', '\x2', - '\x2', ' ', '\xC2', '\x3', '\x2', '\x2', '\x2', '\"', '\xC6', '\x3', '\x2', - '\x2', '\x2', '$', '\xCE', '\x3', '\x2', '\x2', '\x2', '&', '\xD2', '\x3', - '\x2', '\x2', '\x2', '(', '\xD4', '\x3', '\x2', '\x2', '\x2', '*', '\xD9', - '\x3', '\x2', '\x2', '\x2', ',', '\xDB', '\x3', '\x2', '\x2', '\x2', '.', - '\xE8', '\x3', '\x2', '\x2', '\x2', '\x30', '\xFA', '\x3', '\x2', '\x2', - '\x2', '\x32', '\xFC', '\x3', '\x2', '\x2', '\x2', '\x34', '\x105', '\x3', - '\x2', '\x2', '\x2', '\x36', '\x133', '\x3', '\x2', '\x2', '\x2', '\x38', - '\x135', '\x3', '\x2', '\x2', '\x2', ':', '\x137', '\x3', '\x2', '\x2', - '\x2', '<', '\x139', '\x3', '\x2', '\x2', '\x2', '>', '\x13B', '\x3', - '\x2', '\x2', '\x2', '@', '\x13D', '\x3', '\x2', '\x2', '\x2', '\x42', - '\x13F', '\x3', '\x2', '\x2', '\x2', '\x44', '\x141', '\x3', '\x2', '\x2', - '\x2', '\x46', '\x147', '\x3', '\x2', '\x2', '\x2', 'H', '\x149', '\x3', - '\x2', '\x2', '\x2', 'J', '\x175', '\x3', '\x2', '\x2', '\x2', 'L', '\x184', - '\x3', '\x2', '\x2', '\x2', 'N', '\x18C', '\x3', '\x2', '\x2', '\x2', - 'P', '\x194', '\x3', '\x2', '\x2', '\x2', 'R', '\x198', '\x3', '\x2', - '\x2', '\x2', 'T', 'U', '\x5', '\x4', '\x3', '\x2', 'U', 'V', '\a', '\x2', - '\x2', '\x3', 'V', '\x3', '\x3', '\x2', '\x2', '\x2', 'W', 'Y', '\x5', - '\x6', '\x4', '\x2', 'X', 'Z', '\x5', '\x14', '\v', '\x2', 'Y', 'X', '\x3', - '\x2', '\x2', '\x2', 'Y', 'Z', '\x3', '\x2', '\x2', '\x2', 'Z', '\\', - '\x3', '\x2', '\x2', '\x2', '[', ']', '\x5', '\x1C', '\xF', '\x2', '\\', - '[', '\x3', '\x2', '\x2', '\x2', '\\', ']', '\x3', '\x2', '\x2', '\x2', - ']', '_', '\x3', '\x2', '\x2', '\x2', '^', '`', '\x5', '\x1E', '\x10', - '\x2', '_', '^', '\x3', '\x2', '\x2', '\x2', '_', '`', '\x3', '\x2', '\x2', - '\x2', '`', '\x62', '\x3', '\x2', '\x2', '\x2', '\x61', '\x63', '\x5', - ' ', '\x11', '\x2', '\x62', '\x61', '\x3', '\x2', '\x2', '\x2', '\x62', - '\x63', '\x3', '\x2', '\x2', '\x2', '\x63', '\x65', '\x3', '\x2', '\x2', - '\x2', '\x64', '\x66', '\x5', '(', '\x15', '\x2', '\x65', '\x64', '\x3', - '\x2', '\x2', '\x2', '\x65', '\x66', '\x3', '\x2', '\x2', '\x2', '\x66', - '\x5', '\x3', '\x2', '\x2', '\x2', 'g', 'i', '\a', '\x32', '\x2', '\x2', - 'h', 'j', '\a', '%', '\x2', '\x2', 'i', 'h', '\x3', '\x2', '\x2', '\x2', - 'i', 'j', '\x3', '\x2', '\x2', '\x2', 'j', 'l', '\x3', '\x2', '\x2', '\x2', - 'k', 'm', '\x5', '\b', '\x5', '\x2', 'l', 'k', '\x3', '\x2', '\x2', '\x2', - 'l', 'm', '\x3', '\x2', '\x2', '\x2', 'm', 'n', '\x3', '\x2', '\x2', '\x2', - 'n', 'o', '\x5', '\n', '\x6', '\x2', 'o', '\a', '\x3', '\x2', '\x2', '\x2', - 'p', 'q', '\a', '\x33', '\x2', '\x2', 'q', 'r', '\t', '\x2', '\x2', '\x2', - 'r', '\t', '\x3', '\x2', '\x2', '\x2', 's', 'w', '\x5', '\f', '\a', '\x2', - 't', 'w', '\x5', '\xE', '\b', '\x2', 'u', 'w', '\x5', '\x10', '\t', '\x2', - 'v', 's', '\x3', '\x2', '\x2', '\x2', 'v', 't', '\x3', '\x2', '\x2', '\x2', - 'v', 'u', '\x3', '\x2', '\x2', '\x2', 'w', '\v', '\x3', '\x2', '\x2', - '\x2', 'x', 'y', '\a', '\x3', '\x2', '\x2', 'y', '\r', '\x3', '\x2', '\x2', - '\x2', 'z', '{', '\a', '\x37', '\x2', '\x2', '{', '|', '\x5', '.', '\x18', - '\x2', '|', '\xF', '\x3', '\x2', '\x2', '\x2', '}', '\x82', '\x5', '\x12', - '\n', '\x2', '~', '\x7F', '\a', '\x4', '\x2', '\x2', '\x7F', '\x81', '\x5', - '\x12', '\n', '\x2', '\x80', '~', '\x3', '\x2', '\x2', '\x2', '\x81', - '\x84', '\x3', '\x2', '\x2', '\x2', '\x82', '\x80', '\x3', '\x2', '\x2', - '\x2', '\x82', '\x83', '\x3', '\x2', '\x2', '\x2', '\x83', '\x11', '\x3', - '\x2', '\x2', '\x2', '\x84', '\x82', '\x3', '\x2', '\x2', '\x2', '\x85', - '\x88', '\x5', '.', '\x18', '\x2', '\x86', '\x87', '\a', ' ', '\x2', '\x2', - '\x87', '\x89', '\a', '<', '\x2', '\x2', '\x88', '\x86', '\x3', '\x2', - '\x2', '\x2', '\x88', '\x89', '\x3', '\x2', '\x2', '\x2', '\x89', '\x13', - '\x3', '\x2', '\x2', '\x2', '\x8A', '\x8B', '\a', '(', '\x2', '\x2', '\x8B', - '\x8C', '\x5', '\x16', '\f', '\x2', '\x8C', '\x15', '\x3', '\x2', '\x2', - '\x2', '\x8D', '\x8E', '\b', '\f', '\x1', '\x2', '\x8E', '\x91', '\x5', - '\x18', '\r', '\x2', '\x8F', '\x90', '\a', ' ', '\x2', '\x2', '\x90', - '\x92', '\a', '<', '\x2', '\x2', '\x91', '\x8F', '\x3', '\x2', '\x2', - '\x2', '\x91', '\x92', '\x3', '\x2', '\x2', '\x2', '\x92', '\x97', '\x3', - '\x2', '\x2', '\x2', '\x93', '\x94', '\a', '<', '\x2', '\x2', '\x94', - '\x95', '\a', '*', '\x2', '\x2', '\x95', '\x97', '\x5', '\x18', '\r', - '\x2', '\x96', '\x8D', '\x3', '\x2', '\x2', '\x2', '\x96', '\x93', '\x3', - '\x2', '\x2', '\x2', '\x97', '\x9D', '\x3', '\x2', '\x2', '\x2', '\x98', - '\x99', '\f', '\x3', '\x2', '\x2', '\x99', '\x9A', '\a', '+', '\x2', '\x2', - '\x9A', '\x9C', '\x5', '\x16', '\f', '\x4', '\x9B', '\x98', '\x3', '\x2', - '\x2', '\x2', '\x9C', '\x9F', '\x3', '\x2', '\x2', '\x2', '\x9D', '\x9B', - '\x3', '\x2', '\x2', '\x2', '\x9D', '\x9E', '\x3', '\x2', '\x2', '\x2', - '\x9E', '\x17', '\x3', '\x2', '\x2', '\x2', '\x9F', '\x9D', '\x3', '\x2', - '\x2', '\x2', '\xA0', '\xA2', '\a', '<', '\x2', '\x2', '\xA1', '\xA3', - '\x5', '\x1A', '\xE', '\x2', '\xA2', '\xA1', '\x3', '\x2', '\x2', '\x2', - '\xA2', '\xA3', '\x3', '\x2', '\x2', '\x2', '\xA3', '\xA9', '\x3', '\x2', - '\x2', '\x2', '\xA4', '\xA5', '\a', '\x5', '\x2', '\x2', '\xA5', '\xA6', - '\x5', '\x4', '\x3', '\x2', '\xA6', '\xA7', '\a', '\x6', '\x2', '\x2', - '\xA7', '\xA9', '\x3', '\x2', '\x2', '\x2', '\xA8', '\xA0', '\x3', '\x2', - '\x2', '\x2', '\xA8', '\xA4', '\x3', '\x2', '\x2', '\x2', '\xA9', '\x19', - '\x3', '\x2', '\x2', '\x2', '\xAA', '\xB8', '\b', '\xE', '\x1', '\x2', - '\xAB', '\xAC', '\f', '\x6', '\x2', '\x2', '\xAC', '\xAD', '\a', '\a', - '\x2', '\x2', '\xAD', '\xB7', '\a', '<', '\x2', '\x2', '\xAE', '\xAF', - '\f', '\x5', '\x2', '\x2', '\xAF', '\xB0', '\a', '\b', '\x2', '\x2', '\xB0', - '\xB1', '\a', ':', '\x2', '\x2', '\xB1', '\xB7', '\a', '\t', '\x2', '\x2', - '\xB2', '\xB3', '\f', '\x4', '\x2', '\x2', '\xB3', '\xB4', '\a', '\b', - '\x2', '\x2', '\xB4', '\xB5', '\a', ';', '\x2', '\x2', '\xB5', '\xB7', - '\a', '\t', '\x2', '\x2', '\xB6', '\xAB', '\x3', '\x2', '\x2', '\x2', - '\xB6', '\xAE', '\x3', '\x2', '\x2', '\x2', '\xB6', '\xB2', '\x3', '\x2', - '\x2', '\x2', '\xB7', '\xBA', '\x3', '\x2', '\x2', '\x2', '\xB8', '\xB6', - '\x3', '\x2', '\x2', '\x2', '\xB8', '\xB9', '\x3', '\x2', '\x2', '\x2', - '\xB9', '\x1B', '\x3', '\x2', '\x2', '\x2', '\xBA', '\xB8', '\x3', '\x2', - '\x2', '\x2', '\xBB', '\xBC', '\a', '\x38', '\x2', '\x2', '\xBC', '\xBD', - '\x5', '.', '\x18', '\x2', '\xBD', '\x1D', '\x3', '\x2', '\x2', '\x2', - '\xBE', '\xBF', '\a', ')', '\x2', '\x2', '\xBF', '\xC0', '\a', '#', '\x2', - '\x2', '\xC0', '\xC1', '\x5', 'L', '\'', '\x2', '\xC1', '\x1F', '\x3', - '\x2', '\x2', '\x2', '\xC2', '\xC3', '\a', '\x31', '\x2', '\x2', '\xC3', - '\xC4', '\a', '#', '\x2', '\x2', '\xC4', '\xC5', '\x5', '\"', '\x12', - '\x2', '\xC5', '!', '\x3', '\x2', '\x2', '\x2', '\xC6', '\xCB', '\x5', - '$', '\x13', '\x2', '\xC7', '\xC8', '\a', '\x4', '\x2', '\x2', '\xC8', - '\xCA', '\x5', '$', '\x13', '\x2', '\xC9', '\xC7', '\x3', '\x2', '\x2', - '\x2', '\xCA', '\xCD', '\x3', '\x2', '\x2', '\x2', '\xCB', '\xC9', '\x3', - '\x2', '\x2', '\x2', '\xCB', '\xCC', '\x3', '\x2', '\x2', '\x2', '\xCC', - '#', '\x3', '\x2', '\x2', '\x2', '\xCD', '\xCB', '\x3', '\x2', '\x2', - '\x2', '\xCE', '\xD0', '\x5', '.', '\x18', '\x2', '\xCF', '\xD1', '\x5', - '&', '\x14', '\x2', '\xD0', '\xCF', '\x3', '\x2', '\x2', '\x2', '\xD0', - '\xD1', '\x3', '\x2', '\x2', '\x2', '\xD1', '%', '\x3', '\x2', '\x2', - '\x2', '\xD2', '\xD3', '\t', '\x3', '\x2', '\x2', '\xD3', '\'', '\x3', - '\x2', '\x2', '\x2', '\xD4', '\xD5', '\a', '/', '\x2', '\x2', '\xD5', - '\xD6', '\x5', '*', '\x16', '\x2', '\xD6', '\xD7', '\a', ',', '\x2', '\x2', - '\xD7', '\xD8', '\x5', ',', '\x17', '\x2', '\xD8', ')', '\x3', '\x2', - '\x2', '\x2', '\xD9', '\xDA', '\t', '\x2', '\x2', '\x2', '\xDA', '+', - '\x3', '\x2', '\x2', '\x2', '\xDB', '\xDC', '\t', '\x2', '\x2', '\x2', - '\xDC', '-', '\x3', '\x2', '\x2', '\x2', '\xDD', '\xDE', '\b', '\x18', - '\x1', '\x2', '\xDE', '\xE9', '\x5', '\x30', '\x19', '\x2', '\xDF', '\xE1', - '\x5', '\x34', '\x1B', '\x2', '\xE0', '\xE2', '\a', '-', '\x2', '\x2', - '\xE1', '\xE0', '\x3', '\x2', '\x2', '\x2', '\xE1', '\xE2', '\x3', '\x2', - '\x2', '\x2', '\xE2', '\xE3', '\x3', '\x2', '\x2', '\x2', '\xE3', '\xE4', - '\a', '\"', '\x2', '\x2', '\xE4', '\xE5', '\x5', '\x34', '\x1B', '\x2', - '\xE5', '\xE6', '\a', '\x1E', '\x2', '\x2', '\xE6', '\xE7', '\x5', '\x34', - '\x1B', '\x2', '\xE7', '\xE9', '\x3', '\x2', '\x2', '\x2', '\xE8', '\xDD', - '\x3', '\x2', '\x2', '\x2', '\xE8', '\xDF', '\x3', '\x2', '\x2', '\x2', - '\xE9', '\xF5', '\x3', '\x2', '\x2', '\x2', '\xEA', '\xEB', '\f', '\x6', - '\x2', '\x2', '\xEB', '\xEC', '\a', '\n', '\x2', '\x2', '\xEC', '\xED', - '\x5', '.', '\x18', '\x2', '\xED', '\xEE', '\a', '\v', '\x2', '\x2', '\xEE', - '\xEF', '\x5', '.', '\x18', '\a', '\xEF', '\xF4', '\x3', '\x2', '\x2', - '\x2', '\xF0', '\xF1', '\f', '\x5', '\x2', '\x2', '\xF1', '\xF2', '\a', - '\f', '\x2', '\x2', '\xF2', '\xF4', '\x5', '.', '\x18', '\x6', '\xF3', - '\xEA', '\x3', '\x2', '\x2', '\x2', '\xF3', '\xF0', '\x3', '\x2', '\x2', - '\x2', '\xF4', '\xF7', '\x3', '\x2', '\x2', '\x2', '\xF5', '\xF3', '\x3', - '\x2', '\x2', '\x2', '\xF5', '\xF6', '\x3', '\x2', '\x2', '\x2', '\xF6', - '/', '\x3', '\x2', '\x2', '\x2', '\xF7', '\xF5', '\x3', '\x2', '\x2', - '\x2', '\xF8', '\xFB', '\x5', '\x34', '\x1B', '\x2', '\xF9', '\xFB', '\x5', - '\x32', '\x1A', '\x2', '\xFA', '\xF8', '\x3', '\x2', '\x2', '\x2', '\xFA', - '\xF9', '\x3', '\x2', '\x2', '\x2', '\xFB', '\x31', '\x3', '\x2', '\x2', - '\x2', '\xFC', '\xFE', '\x5', '\x34', '\x1B', '\x2', '\xFD', '\xFF', '\a', - '-', '\x2', '\x2', '\xFE', '\xFD', '\x3', '\x2', '\x2', '\x2', '\xFE', - '\xFF', '\x3', '\x2', '\x2', '\x2', '\xFF', '\x100', '\x3', '\x2', '\x2', - '\x2', '\x100', '\x101', '\a', '*', '\x2', '\x2', '\x101', '\x102', '\a', - '\x5', '\x2', '\x2', '\x102', '\x103', '\x5', 'L', '\'', '\x2', '\x103', - '\x104', '\a', '\x6', '\x2', '\x2', '\x104', '\x33', '\x3', '\x2', '\x2', - '\x2', '\x105', '\x106', '\b', '\x1B', '\x1', '\x2', '\x106', '\x107', - '\x5', '\x46', '$', '\x2', '\x107', '\x130', '\x3', '\x2', '\x2', '\x2', - '\x108', '\x109', '\f', '\f', '\x2', '\x2', '\x109', '\x10A', '\x5', '\x36', - '\x1C', '\x2', '\x10A', '\x10B', '\x5', '\x34', '\x1B', '\r', '\x10B', - '\x12F', '\x3', '\x2', '\x2', '\x2', '\x10C', '\x10D', '\f', '\v', '\x2', - '\x2', '\x10D', '\x10E', '\x5', '\x38', '\x1D', '\x2', '\x10E', '\x10F', - '\x5', '\x34', '\x1B', '\f', '\x10F', '\x12F', '\x3', '\x2', '\x2', '\x2', - '\x110', '\x111', '\f', '\n', '\x2', '\x2', '\x111', '\x112', '\x5', ':', - '\x1E', '\x2', '\x112', '\x113', '\x5', '\x34', '\x1B', '\v', '\x113', - '\x12F', '\x3', '\x2', '\x2', '\x2', '\x114', '\x115', '\f', '\t', '\x2', - '\x2', '\x115', '\x116', '\x5', '<', '\x1F', '\x2', '\x116', '\x117', - '\x5', '\x34', '\x1B', '\n', '\x117', '\x12F', '\x3', '\x2', '\x2', '\x2', - '\x118', '\x119', '\f', '\b', '\x2', '\x2', '\x119', '\x11A', '\x5', '>', - ' ', '\x2', '\x11A', '\x11B', '\x5', '\x34', '\x1B', '\t', '\x11B', '\x12F', - '\x3', '\x2', '\x2', '\x2', '\x11C', '\x11D', '\f', '\a', '\x2', '\x2', - '\x11D', '\x11E', '\x5', '@', '!', '\x2', '\x11E', '\x11F', '\x5', '\x34', - '\x1B', '\b', '\x11F', '\x12F', '\x3', '\x2', '\x2', '\x2', '\x120', '\x121', - '\f', '\x6', '\x2', '\x2', '\x121', '\x122', '\x5', '\x42', '\"', '\x2', - '\x122', '\x123', '\x5', '\x34', '\x1B', '\a', '\x123', '\x12F', '\x3', - '\x2', '\x2', '\x2', '\x124', '\x125', '\f', '\x5', '\x2', '\x2', '\x125', - '\x126', '\a', '\x1E', '\x2', '\x2', '\x126', '\x12F', '\x5', '\x34', - '\x1B', '\x6', '\x127', '\x128', '\f', '\x4', '\x2', '\x2', '\x128', '\x129', - '\a', '\x30', '\x2', '\x2', '\x129', '\x12F', '\x5', '\x34', '\x1B', '\x5', - '\x12A', '\x12B', '\f', '\x3', '\x2', '\x2', '\x12B', '\x12C', '\x5', - '\x44', '#', '\x2', '\x12C', '\x12D', '\x5', '\x34', '\x1B', '\x4', '\x12D', - '\x12F', '\x3', '\x2', '\x2', '\x2', '\x12E', '\x108', '\x3', '\x2', '\x2', - '\x2', '\x12E', '\x10C', '\x3', '\x2', '\x2', '\x2', '\x12E', '\x110', - '\x3', '\x2', '\x2', '\x2', '\x12E', '\x114', '\x3', '\x2', '\x2', '\x2', - '\x12E', '\x118', '\x3', '\x2', '\x2', '\x2', '\x12E', '\x11C', '\x3', - '\x2', '\x2', '\x2', '\x12E', '\x120', '\x3', '\x2', '\x2', '\x2', '\x12E', - '\x124', '\x3', '\x2', '\x2', '\x2', '\x12E', '\x127', '\x3', '\x2', '\x2', - '\x2', '\x12E', '\x12A', '\x3', '\x2', '\x2', '\x2', '\x12F', '\x132', - '\x3', '\x2', '\x2', '\x2', '\x130', '\x12E', '\x3', '\x2', '\x2', '\x2', - '\x130', '\x131', '\x3', '\x2', '\x2', '\x2', '\x131', '\x35', '\x3', - '\x2', '\x2', '\x2', '\x132', '\x130', '\x3', '\x2', '\x2', '\x2', '\x133', - '\x134', '\t', '\x4', '\x2', '\x2', '\x134', '\x37', '\x3', '\x2', '\x2', - '\x2', '\x135', '\x136', '\t', '\x5', '\x2', '\x2', '\x136', '\x39', '\x3', - '\x2', '\x2', '\x2', '\x137', '\x138', '\t', '\x6', '\x2', '\x2', '\x138', - ';', '\x3', '\x2', '\x2', '\x2', '\x139', '\x13A', '\t', '\a', '\x2', - '\x2', '\x13A', '=', '\x3', '\x2', '\x2', '\x2', '\x13B', '\x13C', '\a', - '\x17', '\x2', '\x2', '\x13C', '?', '\x3', '\x2', '\x2', '\x2', '\x13D', - '\x13E', '\a', '\x18', '\x2', '\x2', '\x13E', '\x41', '\x3', '\x2', '\x2', - '\x2', '\x13F', '\x140', '\a', '\x19', '\x2', '\x2', '\x140', '\x43', - '\x3', '\x2', '\x2', '\x2', '\x141', '\x142', '\a', '\x1A', '\x2', '\x2', - '\x142', '\x45', '\x3', '\x2', '\x2', '\x2', '\x143', '\x148', '\x5', - 'J', '&', '\x2', '\x144', '\x145', '\x5', 'H', '%', '\x2', '\x145', '\x146', - '\x5', '\x46', '$', '\x2', '\x146', '\x148', '\x3', '\x2', '\x2', '\x2', - '\x147', '\x143', '\x3', '\x2', '\x2', '\x2', '\x147', '\x144', '\x3', - '\x2', '\x2', '\x2', '\x148', 'G', '\x3', '\x2', '\x2', '\x2', '\x149', - '\x14A', '\t', '\b', '\x2', '\x2', '\x14A', 'I', '\x3', '\x2', '\x2', - '\x2', '\x14B', '\x14C', '\b', '&', '\x1', '\x2', '\x14C', '\x176', '\a', - '<', '\x2', '\x2', '\x14D', '\x176', '\a', '=', '\x2', '\x2', '\x14E', - '\x176', '\x5', 'R', '*', '\x2', '\x14F', '\x151', '\a', '\b', '\x2', - '\x2', '\x150', '\x152', '\x5', 'L', '\'', '\x2', '\x151', '\x150', '\x3', - '\x2', '\x2', '\x2', '\x151', '\x152', '\x3', '\x2', '\x2', '\x2', '\x152', - '\x153', '\x3', '\x2', '\x2', '\x2', '\x153', '\x176', '\a', '\t', '\x2', - '\x2', '\x154', '\x156', '\a', '\x1C', '\x2', '\x2', '\x155', '\x157', - '\x5', 'N', '(', '\x2', '\x156', '\x155', '\x3', '\x2', '\x2', '\x2', - '\x156', '\x157', '\x3', '\x2', '\x2', '\x2', '\x157', '\x158', '\x3', - '\x2', '\x2', '\x2', '\x158', '\x176', '\a', '\x1D', '\x2', '\x2', '\x159', - '\x15A', '\a', '\x35', '\x2', '\x2', '\x15A', '\x15C', '\a', '\a', '\x2', - '\x2', '\x15B', '\x159', '\x3', '\x2', '\x2', '\x2', '\x15B', '\x15C', - '\x3', '\x2', '\x2', '\x2', '\x15C', '\x15D', '\x3', '\x2', '\x2', '\x2', - '\x15D', '\x15E', '\a', '<', '\x2', '\x2', '\x15E', '\x160', '\a', '\x5', - '\x2', '\x2', '\x15F', '\x161', '\x5', 'L', '\'', '\x2', '\x160', '\x15F', - '\x3', '\x2', '\x2', '\x2', '\x160', '\x161', '\x3', '\x2', '\x2', '\x2', - '\x161', '\x162', '\x3', '\x2', '\x2', '\x2', '\x162', '\x176', '\a', - '\x6', '\x2', '\x2', '\x163', '\x164', '\a', '\x5', '\x2', '\x2', '\x164', - '\x165', '\x5', '.', '\x18', '\x2', '\x165', '\x166', '\a', '\x6', '\x2', - '\x2', '\x166', '\x176', '\x3', '\x2', '\x2', '\x2', '\x167', '\x168', - '\a', '\x5', '\x2', '\x2', '\x168', '\x169', '\x5', '\x4', '\x3', '\x2', - '\x169', '\x16A', '\a', '\x6', '\x2', '\x2', '\x16A', '\x176', '\x3', - '\x2', '\x2', '\x2', '\x16B', '\x16C', '\a', '&', '\x2', '\x2', '\x16C', - '\x16D', '\a', '\x5', '\x2', '\x2', '\x16D', '\x16E', '\x5', '\x4', '\x3', - '\x2', '\x16E', '\x16F', '\a', '\x6', '\x2', '\x2', '\x16F', '\x176', - '\x3', '\x2', '\x2', '\x2', '\x170', '\x171', '\a', '\x1F', '\x2', '\x2', - '\x171', '\x172', '\a', '\x5', '\x2', '\x2', '\x172', '\x173', '\x5', - '\x4', '\x3', '\x2', '\x173', '\x174', '\a', '\x6', '\x2', '\x2', '\x174', - '\x176', '\x3', '\x2', '\x2', '\x2', '\x175', '\x14B', '\x3', '\x2', '\x2', - '\x2', '\x175', '\x14D', '\x3', '\x2', '\x2', '\x2', '\x175', '\x14E', - '\x3', '\x2', '\x2', '\x2', '\x175', '\x14F', '\x3', '\x2', '\x2', '\x2', - '\x175', '\x154', '\x3', '\x2', '\x2', '\x2', '\x175', '\x15B', '\x3', - '\x2', '\x2', '\x2', '\x175', '\x163', '\x3', '\x2', '\x2', '\x2', '\x175', - '\x167', '\x3', '\x2', '\x2', '\x2', '\x175', '\x16B', '\x3', '\x2', '\x2', - '\x2', '\x175', '\x170', '\x3', '\x2', '\x2', '\x2', '\x176', '\x181', - '\x3', '\x2', '\x2', '\x2', '\x177', '\x178', '\f', '\x6', '\x2', '\x2', - '\x178', '\x179', '\a', '\a', '\x2', '\x2', '\x179', '\x180', '\a', '<', - '\x2', '\x2', '\x17A', '\x17B', '\f', '\x5', '\x2', '\x2', '\x17B', '\x17C', - '\a', '\b', '\x2', '\x2', '\x17C', '\x17D', '\x5', '.', '\x18', '\x2', - '\x17D', '\x17E', '\a', '\t', '\x2', '\x2', '\x17E', '\x180', '\x3', '\x2', - '\x2', '\x2', '\x17F', '\x177', '\x3', '\x2', '\x2', '\x2', '\x17F', '\x17A', - '\x3', '\x2', '\x2', '\x2', '\x180', '\x183', '\x3', '\x2', '\x2', '\x2', - '\x181', '\x17F', '\x3', '\x2', '\x2', '\x2', '\x181', '\x182', '\x3', - '\x2', '\x2', '\x2', '\x182', 'K', '\x3', '\x2', '\x2', '\x2', '\x183', - '\x181', '\x3', '\x2', '\x2', '\x2', '\x184', '\x189', '\x5', '.', '\x18', - '\x2', '\x185', '\x186', '\a', '\x4', '\x2', '\x2', '\x186', '\x188', - '\x5', '.', '\x18', '\x2', '\x187', '\x185', '\x3', '\x2', '\x2', '\x2', - '\x188', '\x18B', '\x3', '\x2', '\x2', '\x2', '\x189', '\x187', '\x3', - '\x2', '\x2', '\x2', '\x189', '\x18A', '\x3', '\x2', '\x2', '\x2', '\x18A', - 'M', '\x3', '\x2', '\x2', '\x2', '\x18B', '\x189', '\x3', '\x2', '\x2', - '\x2', '\x18C', '\x191', '\x5', 'P', ')', '\x2', '\x18D', '\x18E', '\a', - '\x4', '\x2', '\x2', '\x18E', '\x190', '\x5', 'P', ')', '\x2', '\x18F', - '\x18D', '\x3', '\x2', '\x2', '\x2', '\x190', '\x193', '\x3', '\x2', '\x2', - '\x2', '\x191', '\x18F', '\x3', '\x2', '\x2', '\x2', '\x191', '\x192', - '\x3', '\x2', '\x2', '\x2', '\x192', 'O', '\x3', '\x2', '\x2', '\x2', - '\x193', '\x191', '\x3', '\x2', '\x2', '\x2', '\x194', '\x195', '\a', - ';', '\x2', '\x2', '\x195', '\x196', '\a', '\v', '\x2', '\x2', '\x196', - '\x197', '\x5', '.', '\x18', '\x2', '\x197', 'Q', '\x3', '\x2', '\x2', - '\x2', '\x198', '\x199', '\t', '\t', '\x2', '\x2', '\x199', 'S', '\x3', - '\x2', '\x2', '\x2', '\'', 'Y', '\\', '_', '\x62', '\x65', 'i', 'l', 'v', - '\x82', '\x88', '\x91', '\x96', '\x9D', '\xA2', '\xA8', '\xB6', '\xB8', - '\xCB', '\xD0', '\xE1', '\xE8', '\xF3', '\xF5', '\xFA', '\xFE', '\x12E', - '\x130', '\x147', '\x151', '\x156', '\x15B', '\x160', '\x175', '\x17F', - '\x181', '\x189', '\x191', - }; - - public static readonly ATN _ATN = - new ATNDeserializer().Deserialize(_serializedATN); +[System.CLSCompliant(false)] +public partial class sqlParser : Parser { + protected static DFA[] decisionToDFA; + protected static PredictionContextCache sharedContextCache = new PredictionContextCache(); + public const int + T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, T__6=7, T__7=8, T__8=9, + T__9=10, T__10=11, T__11=12, T__12=13, T__13=14, T__14=15, T__15=16, T__16=17, + T__17=18, T__18=19, T__19=20, T__20=21, T__21=22, T__22=23, T__23=24, + T__24=25, T__25=26, T__26=27, K_AND=28, K_ARRAY=29, K_AS=30, K_ASC=31, + K_BETWEEN=32, K_BY=33, K_DESC=34, K_DISTINCT=35, K_ESCAPE=36, K_EXISTS=37, + K_FALSE=38, K_FROM=39, K_GROUP=40, K_IN=41, K_JOIN=42, K_LIKE=43, K_LIMIT=44, + K_NOT=45, K_NULL=46, K_OFFSET=47, K_OR=48, K_ORDER=49, K_SELECT=50, K_TOP=51, + K_TRUE=52, K_UDF=53, K_UNDEFINED=54, K_VALUE=55, K_WHERE=56, WS=57, NUMERIC_LITERAL=58, + STRING_LITERAL=59, IDENTIFIER=60, PARAMETER=61; + public const int + RULE_program = 0, RULE_sql_query = 1, RULE_select_clause = 2, RULE_top_spec = 3, + RULE_selection = 4, RULE_select_star_spec = 5, RULE_select_value_spec = 6, + RULE_select_list_spec = 7, RULE_select_item = 8, RULE_from_clause = 9, + RULE_collection_expression = 10, RULE_collection = 11, RULE_path_expression = 12, + RULE_where_clause = 13, RULE_group_by_clause = 14, RULE_order_by_clause = 15, + RULE_order_by_items = 16, RULE_order_by_item = 17, RULE_sort_order = 18, + RULE_offset_limit_clause = 19, RULE_offset_count = 20, RULE_limit_count = 21, + RULE_scalar_expression = 22, RULE_logical_scalar_expression = 23, RULE_in_scalar_expression = 24, + RULE_like_scalar_expression = 25, RULE_opt_escape = 26, RULE_binary_scalar_expression = 27, + RULE_multiplicative_operator = 28, RULE_additive_operator = 29, RULE_relational_operator = 30, + RULE_equality_operator = 31, RULE_bitwise_and_operator = 32, RULE_bitwise_exclusive_or_operator = 33, + RULE_bitwise_inclusive_or_operator = 34, RULE_string_concat_operator = 35, + RULE_unary_scalar_expression = 36, RULE_unary_operator = 37, RULE_primary_expression = 38, + RULE_scalar_expression_list = 39, RULE_object_property_list = 40, RULE_object_property = 41, + RULE_literal = 42; + public static readonly string[] ruleNames = { + "program", "sql_query", "select_clause", "top_spec", "selection", "select_star_spec", + "select_value_spec", "select_list_spec", "select_item", "from_clause", + "collection_expression", "collection", "path_expression", "where_clause", + "group_by_clause", "order_by_clause", "order_by_items", "order_by_item", + "sort_order", "offset_limit_clause", "offset_count", "limit_count", "scalar_expression", + "logical_scalar_expression", "in_scalar_expression", "like_scalar_expression", + "opt_escape", "binary_scalar_expression", "multiplicative_operator", "additive_operator", + "relational_operator", "equality_operator", "bitwise_and_operator", "bitwise_exclusive_or_operator", + "bitwise_inclusive_or_operator", "string_concat_operator", "unary_scalar_expression", + "unary_operator", "primary_expression", "scalar_expression_list", "object_property_list", + "object_property", "literal" + }; + + private static readonly string[] _LiteralNames = { + null, "'*'", "','", "'('", "')'", "'.'", "'['", "']'", "'?'", "':'", "'??'", + "'/'", "'%'", "'+'", "'-'", "'<'", "'>'", "'>='", "'<='", "'='", "'!='", + "'&'", "'^'", "'|'", "'||'", "'~'", "'{'", "'}'", null, null, null, null, + null, null, null, null, null, null, "'false'", null, null, null, null, + null, null, null, "'null'", null, null, null, null, null, "'true'", null, + "'undefined'" + }; + private static readonly string[] _SymbolicNames = { + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, null, null, null, null, null, null, null, null, + null, null, null, null, "K_AND", "K_ARRAY", "K_AS", "K_ASC", "K_BETWEEN", + "K_BY", "K_DESC", "K_DISTINCT", "K_ESCAPE", "K_EXISTS", "K_FALSE", "K_FROM", + "K_GROUP", "K_IN", "K_JOIN", "K_LIKE", "K_LIMIT", "K_NOT", "K_NULL", "K_OFFSET", + "K_OR", "K_ORDER", "K_SELECT", "K_TOP", "K_TRUE", "K_UDF", "K_UNDEFINED", + "K_VALUE", "K_WHERE", "WS", "NUMERIC_LITERAL", "STRING_LITERAL", "IDENTIFIER", + "PARAMETER" + }; + public static readonly IVocabulary DefaultVocabulary = new Vocabulary(_LiteralNames, _SymbolicNames); + + [NotNull] + public override IVocabulary Vocabulary + { + get + { + return DefaultVocabulary; + } + } + + public override string GrammarFileName { get { return "sql.g4"; } } + + public override string[] RuleNames { get { return ruleNames; } } + + public override string SerializedAtn { get { return new string(_serializedATN); } } + + static sqlParser() { + decisionToDFA = new DFA[_ATN.NumberOfDecisions]; + for (int i = 0; i < _ATN.NumberOfDecisions; i++) { + decisionToDFA[i] = new DFA(_ATN.GetDecisionState(i), i); + } + } + + public sqlParser(ITokenStream input) : this(input, Console.Out, Console.Error) { } + + public sqlParser(ITokenStream input, TextWriter output, TextWriter errorOutput) + : base(input, output, errorOutput) + { + Interpreter = new ParserATNSimulator(this, _ATN, decisionToDFA, sharedContextCache); + } + + public partial class ProgramContext : ParserRuleContext { + public Sql_queryContext sql_query() { + return GetRuleContext(0); + } + public ITerminalNode Eof() { return GetToken(sqlParser.Eof, 0); } + public ProgramContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_program; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterProgram(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitProgram(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitProgram(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public ProgramContext program() { + ProgramContext _localctx = new ProgramContext(Context, State); + EnterRule(_localctx, 0, RULE_program); + try { + EnterOuterAlt(_localctx, 1); + { + State = 86; sql_query(); + State = 87; Match(Eof); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Sql_queryContext : ParserRuleContext { + public Select_clauseContext select_clause() { + return GetRuleContext(0); + } + public From_clauseContext from_clause() { + return GetRuleContext(0); + } + public Where_clauseContext where_clause() { + return GetRuleContext(0); + } + public Group_by_clauseContext group_by_clause() { + return GetRuleContext(0); + } + public Order_by_clauseContext order_by_clause() { + return GetRuleContext(0); + } + public Offset_limit_clauseContext offset_limit_clause() { + return GetRuleContext(0); + } + public Sql_queryContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_sql_query; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterSql_query(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitSql_query(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitSql_query(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Sql_queryContext sql_query() { + Sql_queryContext _localctx = new Sql_queryContext(Context, State); + EnterRule(_localctx, 2, RULE_sql_query); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 89; select_clause(); + State = 91; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==K_FROM) { + { + State = 90; from_clause(); + } + } + + State = 94; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==K_WHERE) { + { + State = 93; where_clause(); + } + } + + State = 97; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==K_GROUP) { + { + State = 96; group_by_clause(); + } + } + + State = 100; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==K_ORDER) { + { + State = 99; order_by_clause(); + } + } + + State = 103; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==K_OFFSET) { + { + State = 102; offset_limit_clause(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Select_clauseContext : ParserRuleContext { + public ITerminalNode K_SELECT() { return GetToken(sqlParser.K_SELECT, 0); } + public SelectionContext selection() { + return GetRuleContext(0); + } + public ITerminalNode K_DISTINCT() { return GetToken(sqlParser.K_DISTINCT, 0); } + public Top_specContext top_spec() { + return GetRuleContext(0); + } + public Select_clauseContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_select_clause; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterSelect_clause(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitSelect_clause(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitSelect_clause(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Select_clauseContext select_clause() { + Select_clauseContext _localctx = new Select_clauseContext(Context, State); + EnterRule(_localctx, 4, RULE_select_clause); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 105; Match(K_SELECT); + State = 107; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==K_DISTINCT) { + { + State = 106; Match(K_DISTINCT); + } + } + + State = 110; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==K_TOP) { + { + State = 109; top_spec(); + } + } + + State = 112; selection(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Top_specContext : ParserRuleContext { + public ITerminalNode K_TOP() { return GetToken(sqlParser.K_TOP, 0); } + public ITerminalNode NUMERIC_LITERAL() { return GetToken(sqlParser.NUMERIC_LITERAL, 0); } + public ITerminalNode PARAMETER() { return GetToken(sqlParser.PARAMETER, 0); } + public Top_specContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_top_spec; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterTop_spec(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitTop_spec(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitTop_spec(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Top_specContext top_spec() { + Top_specContext _localctx = new Top_specContext(Context, State); + EnterRule(_localctx, 6, RULE_top_spec); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 114; Match(K_TOP); + State = 115; + _la = TokenStream.LA(1); + if ( !(_la==NUMERIC_LITERAL || _la==PARAMETER) ) { + ErrorHandler.RecoverInline(this); + } + else { + ErrorHandler.ReportMatch(this); + Consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class SelectionContext : ParserRuleContext { + public Select_star_specContext select_star_spec() { + return GetRuleContext(0); + } + public Select_value_specContext select_value_spec() { + return GetRuleContext(0); + } + public Select_list_specContext select_list_spec() { + return GetRuleContext(0); + } + public SelectionContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_selection; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterSelection(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitSelection(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitSelection(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public SelectionContext selection() { + SelectionContext _localctx = new SelectionContext(Context, State); + EnterRule(_localctx, 8, RULE_selection); + try { + State = 120; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__0: + EnterOuterAlt(_localctx, 1); + { + State = 117; select_star_spec(); + } + break; + case K_VALUE: + EnterOuterAlt(_localctx, 2); + { + State = 118; select_value_spec(); + } + break; + case T__2: + case T__5: + case T__12: + case T__13: + case T__24: + case T__25: + case K_ARRAY: + case K_EXISTS: + case K_FALSE: + case K_NOT: + case K_NULL: + case K_TRUE: + case K_UDF: + case K_UNDEFINED: + case NUMERIC_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case PARAMETER: + EnterOuterAlt(_localctx, 3); + { + State = 119; select_list_spec(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Select_star_specContext : ParserRuleContext { + public Select_star_specContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_select_star_spec; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterSelect_star_spec(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitSelect_star_spec(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitSelect_star_spec(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Select_star_specContext select_star_spec() { + Select_star_specContext _localctx = new Select_star_specContext(Context, State); + EnterRule(_localctx, 10, RULE_select_star_spec); + try { + EnterOuterAlt(_localctx, 1); + { + State = 122; Match(T__0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Select_value_specContext : ParserRuleContext { + public ITerminalNode K_VALUE() { return GetToken(sqlParser.K_VALUE, 0); } + public Scalar_expressionContext scalar_expression() { + return GetRuleContext(0); + } + public Select_value_specContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_select_value_spec; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterSelect_value_spec(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitSelect_value_spec(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitSelect_value_spec(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Select_value_specContext select_value_spec() { + Select_value_specContext _localctx = new Select_value_specContext(Context, State); + EnterRule(_localctx, 12, RULE_select_value_spec); + try { + EnterOuterAlt(_localctx, 1); + { + State = 124; Match(K_VALUE); + State = 125; scalar_expression(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Select_list_specContext : ParserRuleContext { + public Select_itemContext[] select_item() { + return GetRuleContexts(); + } + public Select_itemContext select_item(int i) { + return GetRuleContext(i); + } + public Select_list_specContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_select_list_spec; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterSelect_list_spec(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitSelect_list_spec(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitSelect_list_spec(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Select_list_specContext select_list_spec() { + Select_list_specContext _localctx = new Select_list_specContext(Context, State); + EnterRule(_localctx, 14, RULE_select_list_spec); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 127; select_item(); + State = 132; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==T__1) { + { + { + State = 128; Match(T__1); + State = 129; select_item(); + } + } + State = 134; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Select_itemContext : ParserRuleContext { + public Scalar_expressionContext scalar_expression() { + return GetRuleContext(0); + } + public ITerminalNode K_AS() { return GetToken(sqlParser.K_AS, 0); } + public ITerminalNode IDENTIFIER() { return GetToken(sqlParser.IDENTIFIER, 0); } + public Select_itemContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_select_item; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterSelect_item(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitSelect_item(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitSelect_item(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Select_itemContext select_item() { + Select_itemContext _localctx = new Select_itemContext(Context, State); + EnterRule(_localctx, 16, RULE_select_item); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 135; scalar_expression(0); + State = 138; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==K_AS) { + { + State = 136; Match(K_AS); + State = 137; Match(IDENTIFIER); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class From_clauseContext : ParserRuleContext { + public ITerminalNode K_FROM() { return GetToken(sqlParser.K_FROM, 0); } + public Collection_expressionContext collection_expression() { + return GetRuleContext(0); + } + public From_clauseContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_from_clause; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterFrom_clause(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitFrom_clause(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitFrom_clause(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public From_clauseContext from_clause() { + From_clauseContext _localctx = new From_clauseContext(Context, State); + EnterRule(_localctx, 18, RULE_from_clause); + try { + EnterOuterAlt(_localctx, 1); + { + State = 140; Match(K_FROM); + State = 141; collection_expression(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Collection_expressionContext : ParserRuleContext { + public Collection_expressionContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_collection_expression; } } + + public Collection_expressionContext() { } + public virtual void CopyFrom(Collection_expressionContext context) { + base.CopyFrom(context); + } + } + public partial class JoinCollectionExpressionContext : Collection_expressionContext { + public Collection_expressionContext[] collection_expression() { + return GetRuleContexts(); + } + public Collection_expressionContext collection_expression(int i) { + return GetRuleContext(i); + } + public ITerminalNode K_JOIN() { return GetToken(sqlParser.K_JOIN, 0); } + public JoinCollectionExpressionContext(Collection_expressionContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterJoinCollectionExpression(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitJoinCollectionExpression(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitJoinCollectionExpression(this); + else return visitor.VisitChildren(this); + } + } + public partial class AliasedCollectionExpressionContext : Collection_expressionContext { + public CollectionContext collection() { + return GetRuleContext(0); + } + public ITerminalNode K_AS() { return GetToken(sqlParser.K_AS, 0); } + public ITerminalNode IDENTIFIER() { return GetToken(sqlParser.IDENTIFIER, 0); } + public AliasedCollectionExpressionContext(Collection_expressionContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterAliasedCollectionExpression(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitAliasedCollectionExpression(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitAliasedCollectionExpression(this); + else return visitor.VisitChildren(this); + } + } + public partial class ArrayIteratorCollectionExpressionContext : Collection_expressionContext { + public ITerminalNode IDENTIFIER() { return GetToken(sqlParser.IDENTIFIER, 0); } + public ITerminalNode K_IN() { return GetToken(sqlParser.K_IN, 0); } + public CollectionContext collection() { + return GetRuleContext(0); + } + public ArrayIteratorCollectionExpressionContext(Collection_expressionContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterArrayIteratorCollectionExpression(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitArrayIteratorCollectionExpression(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitArrayIteratorCollectionExpression(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Collection_expressionContext collection_expression() { + return collection_expression(0); + } + + private Collection_expressionContext collection_expression(int _p) { + ParserRuleContext _parentctx = Context; + int _parentState = State; + Collection_expressionContext _localctx = new Collection_expressionContext(Context, _parentState); + Collection_expressionContext _prevctx = _localctx; + int _startState = 20; + EnterRecursionRule(_localctx, 20, RULE_collection_expression, _p); + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 152; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,11,Context) ) { + case 1: + { + _localctx = new AliasedCollectionExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + + State = 144; collection(); + State = 147; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,10,Context) ) { + case 1: + { + State = 145; Match(K_AS); + State = 146; Match(IDENTIFIER); + } + break; + } + } + break; + case 2: + { + _localctx = new ArrayIteratorCollectionExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + State = 149; Match(IDENTIFIER); + State = 150; Match(K_IN); + State = 151; collection(); + } + break; + } + Context.Stop = TokenStream.LT(-1); + State = 159; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,12,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( ParseListeners!=null ) + TriggerExitRuleEvent(); + _prevctx = _localctx; + { + { + _localctx = new JoinCollectionExpressionContext(new Collection_expressionContext(_parentctx, _parentState)); + PushNewRecursionContext(_localctx, _startState, RULE_collection_expression); + State = 154; + if (!(Precpred(Context, 1))) throw new FailedPredicateException(this, "Precpred(Context, 1)"); + State = 155; Match(K_JOIN); + State = 156; collection_expression(2); + } + } + } + State = 161; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,12,Context); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + UnrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public partial class CollectionContext : ParserRuleContext { + public CollectionContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_collection; } } + + public CollectionContext() { } + public virtual void CopyFrom(CollectionContext context) { + base.CopyFrom(context); + } + } + public partial class InputPathCollectionContext : CollectionContext { + public ITerminalNode IDENTIFIER() { return GetToken(sqlParser.IDENTIFIER, 0); } + public Path_expressionContext path_expression() { + return GetRuleContext(0); + } + public InputPathCollectionContext(CollectionContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterInputPathCollection(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitInputPathCollection(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitInputPathCollection(this); + else return visitor.VisitChildren(this); + } + } + public partial class SubqueryCollectionContext : CollectionContext { + public Sql_queryContext sql_query() { + return GetRuleContext(0); + } + public SubqueryCollectionContext(CollectionContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterSubqueryCollection(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitSubqueryCollection(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitSubqueryCollection(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public CollectionContext collection() { + CollectionContext _localctx = new CollectionContext(Context, State); + EnterRule(_localctx, 22, RULE_collection); + try { + State = 170; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case IDENTIFIER: + _localctx = new InputPathCollectionContext(_localctx); + EnterOuterAlt(_localctx, 1); + { + State = 162; Match(IDENTIFIER); + State = 164; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,13,Context) ) { + case 1: + { + State = 163; path_expression(0); + } + break; + } + } + break; + case T__2: + _localctx = new SubqueryCollectionContext(_localctx); + EnterOuterAlt(_localctx, 2); + { + State = 166; Match(T__2); + State = 167; sql_query(); + State = 168; Match(T__3); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Path_expressionContext : ParserRuleContext { + public Path_expressionContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_path_expression; } } + + public Path_expressionContext() { } + public virtual void CopyFrom(Path_expressionContext context) { + base.CopyFrom(context); + } + } + public partial class StringPathExpressionContext : Path_expressionContext { + public Path_expressionContext path_expression() { + return GetRuleContext(0); + } + public ITerminalNode STRING_LITERAL() { return GetToken(sqlParser.STRING_LITERAL, 0); } + public StringPathExpressionContext(Path_expressionContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterStringPathExpression(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitStringPathExpression(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitStringPathExpression(this); + else return visitor.VisitChildren(this); + } + } + public partial class EpsilonPathExpressionContext : Path_expressionContext { + public EpsilonPathExpressionContext(Path_expressionContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterEpsilonPathExpression(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitEpsilonPathExpression(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitEpsilonPathExpression(this); + else return visitor.VisitChildren(this); + } + } + public partial class IdentifierPathExpressionContext : Path_expressionContext { + public Path_expressionContext path_expression() { + return GetRuleContext(0); + } + public ITerminalNode IDENTIFIER() { return GetToken(sqlParser.IDENTIFIER, 0); } + public IdentifierPathExpressionContext(Path_expressionContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterIdentifierPathExpression(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitIdentifierPathExpression(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitIdentifierPathExpression(this); + else return visitor.VisitChildren(this); + } + } + public partial class NumberPathExpressionContext : Path_expressionContext { + public Path_expressionContext path_expression() { + return GetRuleContext(0); + } + public ITerminalNode NUMERIC_LITERAL() { return GetToken(sqlParser.NUMERIC_LITERAL, 0); } + public NumberPathExpressionContext(Path_expressionContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterNumberPathExpression(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitNumberPathExpression(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitNumberPathExpression(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Path_expressionContext path_expression() { + return path_expression(0); + } + + private Path_expressionContext path_expression(int _p) { + ParserRuleContext _parentctx = Context; + int _parentState = State; + Path_expressionContext _localctx = new Path_expressionContext(Context, _parentState); + Path_expressionContext _prevctx = _localctx; + int _startState = 24; + EnterRecursionRule(_localctx, 24, RULE_path_expression, _p); + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + { + _localctx = new EpsilonPathExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + + } + Context.Stop = TokenStream.LT(-1); + State = 186; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,16,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( ParseListeners!=null ) + TriggerExitRuleEvent(); + _prevctx = _localctx; + { + State = 184; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,15,Context) ) { + case 1: + { + _localctx = new IdentifierPathExpressionContext(new Path_expressionContext(_parentctx, _parentState)); + PushNewRecursionContext(_localctx, _startState, RULE_path_expression); + State = 173; + if (!(Precpred(Context, 4))) throw new FailedPredicateException(this, "Precpred(Context, 4)"); + State = 174; Match(T__4); + State = 175; Match(IDENTIFIER); + } + break; + case 2: + { + _localctx = new NumberPathExpressionContext(new Path_expressionContext(_parentctx, _parentState)); + PushNewRecursionContext(_localctx, _startState, RULE_path_expression); + State = 176; + if (!(Precpred(Context, 3))) throw new FailedPredicateException(this, "Precpred(Context, 3)"); + State = 177; Match(T__5); + State = 178; Match(NUMERIC_LITERAL); + State = 179; Match(T__6); + } + break; + case 3: + { + _localctx = new StringPathExpressionContext(new Path_expressionContext(_parentctx, _parentState)); + PushNewRecursionContext(_localctx, _startState, RULE_path_expression); + State = 180; + if (!(Precpred(Context, 2))) throw new FailedPredicateException(this, "Precpred(Context, 2)"); + State = 181; Match(T__5); + State = 182; Match(STRING_LITERAL); + State = 183; Match(T__6); + } + break; + } + } + } + State = 188; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,16,Context); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + UnrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public partial class Where_clauseContext : ParserRuleContext { + public ITerminalNode K_WHERE() { return GetToken(sqlParser.K_WHERE, 0); } + public Scalar_expressionContext scalar_expression() { + return GetRuleContext(0); + } + public Where_clauseContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_where_clause; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterWhere_clause(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitWhere_clause(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitWhere_clause(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Where_clauseContext where_clause() { + Where_clauseContext _localctx = new Where_clauseContext(Context, State); + EnterRule(_localctx, 26, RULE_where_clause); + try { + EnterOuterAlt(_localctx, 1); + { + State = 189; Match(K_WHERE); + State = 190; scalar_expression(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Group_by_clauseContext : ParserRuleContext { + public ITerminalNode K_GROUP() { return GetToken(sqlParser.K_GROUP, 0); } + public ITerminalNode K_BY() { return GetToken(sqlParser.K_BY, 0); } + public Scalar_expression_listContext scalar_expression_list() { + return GetRuleContext(0); + } + public Group_by_clauseContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_group_by_clause; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterGroup_by_clause(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitGroup_by_clause(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitGroup_by_clause(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Group_by_clauseContext group_by_clause() { + Group_by_clauseContext _localctx = new Group_by_clauseContext(Context, State); + EnterRule(_localctx, 28, RULE_group_by_clause); + try { + EnterOuterAlt(_localctx, 1); + { + State = 192; Match(K_GROUP); + State = 193; Match(K_BY); + State = 194; scalar_expression_list(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Order_by_clauseContext : ParserRuleContext { + public ITerminalNode K_ORDER() { return GetToken(sqlParser.K_ORDER, 0); } + public ITerminalNode K_BY() { return GetToken(sqlParser.K_BY, 0); } + public Order_by_itemsContext order_by_items() { + return GetRuleContext(0); + } + public Order_by_clauseContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_order_by_clause; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterOrder_by_clause(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitOrder_by_clause(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitOrder_by_clause(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Order_by_clauseContext order_by_clause() { + Order_by_clauseContext _localctx = new Order_by_clauseContext(Context, State); + EnterRule(_localctx, 30, RULE_order_by_clause); + try { + EnterOuterAlt(_localctx, 1); + { + State = 196; Match(K_ORDER); + State = 197; Match(K_BY); + State = 198; order_by_items(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Order_by_itemsContext : ParserRuleContext { + public Order_by_itemContext[] order_by_item() { + return GetRuleContexts(); + } + public Order_by_itemContext order_by_item(int i) { + return GetRuleContext(i); + } + public Order_by_itemsContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_order_by_items; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterOrder_by_items(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitOrder_by_items(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitOrder_by_items(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Order_by_itemsContext order_by_items() { + Order_by_itemsContext _localctx = new Order_by_itemsContext(Context, State); + EnterRule(_localctx, 32, RULE_order_by_items); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 200; order_by_item(); + State = 205; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==T__1) { + { + { + State = 201; Match(T__1); + State = 202; order_by_item(); + } + } + State = 207; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Order_by_itemContext : ParserRuleContext { + public Scalar_expressionContext scalar_expression() { + return GetRuleContext(0); + } + public Sort_orderContext sort_order() { + return GetRuleContext(0); + } + public Order_by_itemContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_order_by_item; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterOrder_by_item(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitOrder_by_item(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitOrder_by_item(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Order_by_itemContext order_by_item() { + Order_by_itemContext _localctx = new Order_by_itemContext(Context, State); + EnterRule(_localctx, 34, RULE_order_by_item); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 208; scalar_expression(0); + State = 210; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==K_ASC || _la==K_DESC) { + { + State = 209; sort_order(); + } + } + + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Sort_orderContext : ParserRuleContext { + public ITerminalNode K_ASC() { return GetToken(sqlParser.K_ASC, 0); } + public ITerminalNode K_DESC() { return GetToken(sqlParser.K_DESC, 0); } + public Sort_orderContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_sort_order; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterSort_order(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitSort_order(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitSort_order(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Sort_orderContext sort_order() { + Sort_orderContext _localctx = new Sort_orderContext(Context, State); + EnterRule(_localctx, 36, RULE_sort_order); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 212; + _la = TokenStream.LA(1); + if ( !(_la==K_ASC || _la==K_DESC) ) { + ErrorHandler.RecoverInline(this); + } + else { + ErrorHandler.ReportMatch(this); + Consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Offset_limit_clauseContext : ParserRuleContext { + public ITerminalNode K_OFFSET() { return GetToken(sqlParser.K_OFFSET, 0); } + public Offset_countContext offset_count() { + return GetRuleContext(0); + } + public ITerminalNode K_LIMIT() { return GetToken(sqlParser.K_LIMIT, 0); } + public Limit_countContext limit_count() { + return GetRuleContext(0); + } + public Offset_limit_clauseContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_offset_limit_clause; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterOffset_limit_clause(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitOffset_limit_clause(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitOffset_limit_clause(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Offset_limit_clauseContext offset_limit_clause() { + Offset_limit_clauseContext _localctx = new Offset_limit_clauseContext(Context, State); + EnterRule(_localctx, 38, RULE_offset_limit_clause); + try { + EnterOuterAlt(_localctx, 1); + { + State = 214; Match(K_OFFSET); + State = 215; offset_count(); + State = 216; Match(K_LIMIT); + State = 217; limit_count(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Offset_countContext : ParserRuleContext { + public ITerminalNode NUMERIC_LITERAL() { return GetToken(sqlParser.NUMERIC_LITERAL, 0); } + public ITerminalNode PARAMETER() { return GetToken(sqlParser.PARAMETER, 0); } + public Offset_countContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_offset_count; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterOffset_count(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitOffset_count(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitOffset_count(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Offset_countContext offset_count() { + Offset_countContext _localctx = new Offset_countContext(Context, State); + EnterRule(_localctx, 40, RULE_offset_count); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 219; + _la = TokenStream.LA(1); + if ( !(_la==NUMERIC_LITERAL || _la==PARAMETER) ) { + ErrorHandler.RecoverInline(this); + } + else { + ErrorHandler.ReportMatch(this); + Consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Limit_countContext : ParserRuleContext { + public ITerminalNode NUMERIC_LITERAL() { return GetToken(sqlParser.NUMERIC_LITERAL, 0); } + public ITerminalNode PARAMETER() { return GetToken(sqlParser.PARAMETER, 0); } + public Limit_countContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_limit_count; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterLimit_count(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitLimit_count(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitLimit_count(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Limit_countContext limit_count() { + Limit_countContext _localctx = new Limit_countContext(Context, State); + EnterRule(_localctx, 42, RULE_limit_count); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 221; + _la = TokenStream.LA(1); + if ( !(_la==NUMERIC_LITERAL || _la==PARAMETER) ) { + ErrorHandler.RecoverInline(this); + } + else { + ErrorHandler.ReportMatch(this); + Consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Scalar_expressionContext : ParserRuleContext { + public Scalar_expressionContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_scalar_expression; } } + + public Scalar_expressionContext() { } + public virtual void CopyFrom(Scalar_expressionContext context) { + base.CopyFrom(context); + } + } + public partial class LogicalScalarExpressionContext : Scalar_expressionContext { + public Logical_scalar_expressionContext logical_scalar_expression() { + return GetRuleContext(0); + } + public LogicalScalarExpressionContext(Scalar_expressionContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterLogicalScalarExpression(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitLogicalScalarExpression(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitLogicalScalarExpression(this); + else return visitor.VisitChildren(this); + } + } + public partial class ConditionalScalarExpressionContext : Scalar_expressionContext { + public Scalar_expressionContext[] scalar_expression() { + return GetRuleContexts(); + } + public Scalar_expressionContext scalar_expression(int i) { + return GetRuleContext(i); + } + public ConditionalScalarExpressionContext(Scalar_expressionContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterConditionalScalarExpression(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitConditionalScalarExpression(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitConditionalScalarExpression(this); + else return visitor.VisitChildren(this); + } + } + public partial class CoalesceScalarExpressionContext : Scalar_expressionContext { + public Scalar_expressionContext[] scalar_expression() { + return GetRuleContexts(); + } + public Scalar_expressionContext scalar_expression(int i) { + return GetRuleContext(i); + } + public CoalesceScalarExpressionContext(Scalar_expressionContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterCoalesceScalarExpression(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitCoalesceScalarExpression(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitCoalesceScalarExpression(this); + else return visitor.VisitChildren(this); + } + } + public partial class BetweenScalarExpressionContext : Scalar_expressionContext { + public Binary_scalar_expressionContext[] binary_scalar_expression() { + return GetRuleContexts(); + } + public Binary_scalar_expressionContext binary_scalar_expression(int i) { + return GetRuleContext(i); + } + public ITerminalNode K_BETWEEN() { return GetToken(sqlParser.K_BETWEEN, 0); } + public ITerminalNode K_AND() { return GetToken(sqlParser.K_AND, 0); } + public ITerminalNode K_NOT() { return GetToken(sqlParser.K_NOT, 0); } + public BetweenScalarExpressionContext(Scalar_expressionContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterBetweenScalarExpression(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitBetweenScalarExpression(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitBetweenScalarExpression(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Scalar_expressionContext scalar_expression() { + return scalar_expression(0); + } + + private Scalar_expressionContext scalar_expression(int _p) { + ParserRuleContext _parentctx = Context; + int _parentState = State; + Scalar_expressionContext _localctx = new Scalar_expressionContext(Context, _parentState); + Scalar_expressionContext _prevctx = _localctx; + int _startState = 44; + EnterRecursionRule(_localctx, 44, RULE_scalar_expression, _p); + int _la; + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 234; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,20,Context) ) { + case 1: + { + _localctx = new LogicalScalarExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + + State = 224; logical_scalar_expression(); + } + break; + case 2: + { + _localctx = new BetweenScalarExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + State = 225; binary_scalar_expression(0); + State = 227; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==K_NOT) { + { + State = 226; Match(K_NOT); + } + } + + State = 229; Match(K_BETWEEN); + State = 230; binary_scalar_expression(0); + State = 231; Match(K_AND); + State = 232; binary_scalar_expression(0); + } + break; + } + Context.Stop = TokenStream.LT(-1); + State = 247; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,22,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( ParseListeners!=null ) + TriggerExitRuleEvent(); + _prevctx = _localctx; + { + State = 245; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,21,Context) ) { + case 1: + { + _localctx = new ConditionalScalarExpressionContext(new Scalar_expressionContext(_parentctx, _parentState)); + PushNewRecursionContext(_localctx, _startState, RULE_scalar_expression); + State = 236; + if (!(Precpred(Context, 4))) throw new FailedPredicateException(this, "Precpred(Context, 4)"); + State = 237; Match(T__7); + State = 238; scalar_expression(0); + State = 239; Match(T__8); + State = 240; scalar_expression(5); + } + break; + case 2: + { + _localctx = new CoalesceScalarExpressionContext(new Scalar_expressionContext(_parentctx, _parentState)); + PushNewRecursionContext(_localctx, _startState, RULE_scalar_expression); + State = 242; + if (!(Precpred(Context, 3))) throw new FailedPredicateException(this, "Precpred(Context, 3)"); + State = 243; Match(T__9); + State = 244; scalar_expression(4); + } + break; + } + } + } + State = 249; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,22,Context); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + UnrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public partial class Logical_scalar_expressionContext : ParserRuleContext { + public Binary_scalar_expressionContext binary_scalar_expression() { + return GetRuleContext(0); + } + public In_scalar_expressionContext in_scalar_expression() { + return GetRuleContext(0); + } + public Like_scalar_expressionContext like_scalar_expression() { + return GetRuleContext(0); + } + public Logical_scalar_expressionContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_logical_scalar_expression; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterLogical_scalar_expression(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitLogical_scalar_expression(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitLogical_scalar_expression(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Logical_scalar_expressionContext logical_scalar_expression() { + Logical_scalar_expressionContext _localctx = new Logical_scalar_expressionContext(Context, State); + EnterRule(_localctx, 46, RULE_logical_scalar_expression); + try { + State = 253; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,23,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 250; binary_scalar_expression(0); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 251; in_scalar_expression(); + } + break; + case 3: + EnterOuterAlt(_localctx, 3); + { + State = 252; like_scalar_expression(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class In_scalar_expressionContext : ParserRuleContext { + public Binary_scalar_expressionContext binary_scalar_expression() { + return GetRuleContext(0); + } + public ITerminalNode K_IN() { return GetToken(sqlParser.K_IN, 0); } + public Scalar_expression_listContext scalar_expression_list() { + return GetRuleContext(0); + } + public ITerminalNode K_NOT() { return GetToken(sqlParser.K_NOT, 0); } + public In_scalar_expressionContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_in_scalar_expression; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterIn_scalar_expression(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitIn_scalar_expression(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitIn_scalar_expression(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public In_scalar_expressionContext in_scalar_expression() { + In_scalar_expressionContext _localctx = new In_scalar_expressionContext(Context, State); + EnterRule(_localctx, 48, RULE_in_scalar_expression); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 255; binary_scalar_expression(0); + State = 257; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==K_NOT) { + { + State = 256; Match(K_NOT); + } + } + + State = 259; Match(K_IN); + State = 260; Match(T__2); + State = 261; scalar_expression_list(); + State = 262; Match(T__3); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Like_scalar_expressionContext : ParserRuleContext { + public Binary_scalar_expressionContext[] binary_scalar_expression() { + return GetRuleContexts(); + } + public Binary_scalar_expressionContext binary_scalar_expression(int i) { + return GetRuleContext(i); + } + public ITerminalNode K_LIKE() { return GetToken(sqlParser.K_LIKE, 0); } + public Opt_escapeContext opt_escape() { + return GetRuleContext(0); + } + public ITerminalNode K_NOT() { return GetToken(sqlParser.K_NOT, 0); } + public Like_scalar_expressionContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_like_scalar_expression; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterLike_scalar_expression(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitLike_scalar_expression(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitLike_scalar_expression(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Like_scalar_expressionContext like_scalar_expression() { + Like_scalar_expressionContext _localctx = new Like_scalar_expressionContext(Context, State); + EnterRule(_localctx, 50, RULE_like_scalar_expression); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 264; binary_scalar_expression(0); + State = 266; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==K_NOT) { + { + State = 265; Match(K_NOT); + } + } + + State = 268; Match(K_LIKE); + State = 269; binary_scalar_expression(0); + State = 270; opt_escape(); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Opt_escapeContext : ParserRuleContext { + public ITerminalNode K_ESCAPE() { return GetToken(sqlParser.K_ESCAPE, 0); } + public ITerminalNode STRING_LITERAL() { return GetToken(sqlParser.STRING_LITERAL, 0); } + public Opt_escapeContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_opt_escape; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterOpt_escape(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitOpt_escape(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitOpt_escape(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Opt_escapeContext opt_escape() { + Opt_escapeContext _localctx = new Opt_escapeContext(Context, State); + EnterRule(_localctx, 52, RULE_opt_escape); + try { + State = 275; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,26,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 273; Match(K_ESCAPE); + State = 274; Match(STRING_LITERAL); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Binary_scalar_expressionContext : ParserRuleContext { + public Unary_scalar_expressionContext unary_scalar_expression() { + return GetRuleContext(0); + } + public Binary_scalar_expressionContext[] binary_scalar_expression() { + return GetRuleContexts(); + } + public Binary_scalar_expressionContext binary_scalar_expression(int i) { + return GetRuleContext(i); + } + public Multiplicative_operatorContext multiplicative_operator() { + return GetRuleContext(0); + } + public Additive_operatorContext additive_operator() { + return GetRuleContext(0); + } + public Relational_operatorContext relational_operator() { + return GetRuleContext(0); + } + public Equality_operatorContext equality_operator() { + return GetRuleContext(0); + } + public Bitwise_and_operatorContext bitwise_and_operator() { + return GetRuleContext(0); + } + public Bitwise_exclusive_or_operatorContext bitwise_exclusive_or_operator() { + return GetRuleContext(0); + } + public Bitwise_inclusive_or_operatorContext bitwise_inclusive_or_operator() { + return GetRuleContext(0); + } + public ITerminalNode K_AND() { return GetToken(sqlParser.K_AND, 0); } + public ITerminalNode K_OR() { return GetToken(sqlParser.K_OR, 0); } + public String_concat_operatorContext string_concat_operator() { + return GetRuleContext(0); + } + public Binary_scalar_expressionContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_binary_scalar_expression; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterBinary_scalar_expression(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitBinary_scalar_expression(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitBinary_scalar_expression(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Binary_scalar_expressionContext binary_scalar_expression() { + return binary_scalar_expression(0); + } + + private Binary_scalar_expressionContext binary_scalar_expression(int _p) { + ParserRuleContext _parentctx = Context; + int _parentState = State; + Binary_scalar_expressionContext _localctx = new Binary_scalar_expressionContext(Context, _parentState); + Binary_scalar_expressionContext _prevctx = _localctx; + int _startState = 54; + EnterRecursionRule(_localctx, 54, RULE_binary_scalar_expression, _p); + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + { + State = 278; unary_scalar_expression(); + } + Context.Stop = TokenStream.LT(-1); + State = 320; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,28,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( ParseListeners!=null ) + TriggerExitRuleEvent(); + _prevctx = _localctx; + { + State = 318; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,27,Context) ) { + case 1: + { + _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); + State = 280; + if (!(Precpred(Context, 10))) throw new FailedPredicateException(this, "Precpred(Context, 10)"); + State = 281; multiplicative_operator(); + State = 282; binary_scalar_expression(11); + } + break; + case 2: + { + _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); + State = 284; + if (!(Precpred(Context, 9))) throw new FailedPredicateException(this, "Precpred(Context, 9)"); + State = 285; additive_operator(); + State = 286; binary_scalar_expression(10); + } + break; + case 3: + { + _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); + State = 288; + if (!(Precpred(Context, 8))) throw new FailedPredicateException(this, "Precpred(Context, 8)"); + State = 289; relational_operator(); + State = 290; binary_scalar_expression(9); + } + break; + case 4: + { + _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); + State = 292; + if (!(Precpred(Context, 7))) throw new FailedPredicateException(this, "Precpred(Context, 7)"); + State = 293; equality_operator(); + State = 294; binary_scalar_expression(8); + } + break; + case 5: + { + _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); + State = 296; + if (!(Precpred(Context, 6))) throw new FailedPredicateException(this, "Precpred(Context, 6)"); + State = 297; bitwise_and_operator(); + State = 298; binary_scalar_expression(7); + } + break; + case 6: + { + _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); + State = 300; + if (!(Precpred(Context, 5))) throw new FailedPredicateException(this, "Precpred(Context, 5)"); + State = 301; bitwise_exclusive_or_operator(); + State = 302; binary_scalar_expression(6); + } + break; + case 7: + { + _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); + State = 304; + if (!(Precpred(Context, 4))) throw new FailedPredicateException(this, "Precpred(Context, 4)"); + State = 305; bitwise_inclusive_or_operator(); + State = 306; binary_scalar_expression(5); + } + break; + case 8: + { + _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); + State = 308; + if (!(Precpred(Context, 3))) throw new FailedPredicateException(this, "Precpred(Context, 3)"); + State = 309; Match(K_AND); + State = 310; binary_scalar_expression(4); + } + break; + case 9: + { + _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); + State = 311; + if (!(Precpred(Context, 2))) throw new FailedPredicateException(this, "Precpred(Context, 2)"); + State = 312; Match(K_OR); + State = 313; binary_scalar_expression(3); + } + break; + case 10: + { + _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); + State = 314; + if (!(Precpred(Context, 1))) throw new FailedPredicateException(this, "Precpred(Context, 1)"); + State = 315; string_concat_operator(); + State = 316; binary_scalar_expression(2); + } + break; + } + } + } + State = 322; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,28,Context); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + UnrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public partial class Multiplicative_operatorContext : ParserRuleContext { + public Multiplicative_operatorContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_multiplicative_operator; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterMultiplicative_operator(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitMultiplicative_operator(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitMultiplicative_operator(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Multiplicative_operatorContext multiplicative_operator() { + Multiplicative_operatorContext _localctx = new Multiplicative_operatorContext(Context, State); + EnterRule(_localctx, 56, RULE_multiplicative_operator); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 323; + _la = TokenStream.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << T__10) | (1L << T__11))) != 0)) ) { + ErrorHandler.RecoverInline(this); + } + else { + ErrorHandler.ReportMatch(this); + Consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Additive_operatorContext : ParserRuleContext { + public Additive_operatorContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_additive_operator; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterAdditive_operator(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitAdditive_operator(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitAdditive_operator(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Additive_operatorContext additive_operator() { + Additive_operatorContext _localctx = new Additive_operatorContext(Context, State); + EnterRule(_localctx, 58, RULE_additive_operator); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 325; + _la = TokenStream.LA(1); + if ( !(_la==T__12 || _la==T__13) ) { + ErrorHandler.RecoverInline(this); + } + else { + ErrorHandler.ReportMatch(this); + Consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Relational_operatorContext : ParserRuleContext { + public Relational_operatorContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_relational_operator; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterRelational_operator(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitRelational_operator(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitRelational_operator(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Relational_operatorContext relational_operator() { + Relational_operatorContext _localctx = new Relational_operatorContext(Context, State); + EnterRule(_localctx, 60, RULE_relational_operator); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 327; + _la = TokenStream.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__14) | (1L << T__15) | (1L << T__16) | (1L << T__17))) != 0)) ) { + ErrorHandler.RecoverInline(this); + } + else { + ErrorHandler.ReportMatch(this); + Consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Equality_operatorContext : ParserRuleContext { + public Equality_operatorContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_equality_operator; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterEquality_operator(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitEquality_operator(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitEquality_operator(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Equality_operatorContext equality_operator() { + Equality_operatorContext _localctx = new Equality_operatorContext(Context, State); + EnterRule(_localctx, 62, RULE_equality_operator); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 329; + _la = TokenStream.LA(1); + if ( !(_la==T__18 || _la==T__19) ) { + ErrorHandler.RecoverInline(this); + } + else { + ErrorHandler.ReportMatch(this); + Consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Bitwise_and_operatorContext : ParserRuleContext { + public Bitwise_and_operatorContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_bitwise_and_operator; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterBitwise_and_operator(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitBitwise_and_operator(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitBitwise_and_operator(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Bitwise_and_operatorContext bitwise_and_operator() { + Bitwise_and_operatorContext _localctx = new Bitwise_and_operatorContext(Context, State); + EnterRule(_localctx, 64, RULE_bitwise_and_operator); + try { + EnterOuterAlt(_localctx, 1); + { + State = 331; Match(T__20); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Bitwise_exclusive_or_operatorContext : ParserRuleContext { + public Bitwise_exclusive_or_operatorContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_bitwise_exclusive_or_operator; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterBitwise_exclusive_or_operator(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitBitwise_exclusive_or_operator(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitBitwise_exclusive_or_operator(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Bitwise_exclusive_or_operatorContext bitwise_exclusive_or_operator() { + Bitwise_exclusive_or_operatorContext _localctx = new Bitwise_exclusive_or_operatorContext(Context, State); + EnterRule(_localctx, 66, RULE_bitwise_exclusive_or_operator); + try { + EnterOuterAlt(_localctx, 1); + { + State = 333; Match(T__21); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Bitwise_inclusive_or_operatorContext : ParserRuleContext { + public Bitwise_inclusive_or_operatorContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_bitwise_inclusive_or_operator; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterBitwise_inclusive_or_operator(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitBitwise_inclusive_or_operator(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitBitwise_inclusive_or_operator(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Bitwise_inclusive_or_operatorContext bitwise_inclusive_or_operator() { + Bitwise_inclusive_or_operatorContext _localctx = new Bitwise_inclusive_or_operatorContext(Context, State); + EnterRule(_localctx, 68, RULE_bitwise_inclusive_or_operator); + try { + EnterOuterAlt(_localctx, 1); + { + State = 335; Match(T__22); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class String_concat_operatorContext : ParserRuleContext { + public String_concat_operatorContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_string_concat_operator; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterString_concat_operator(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitString_concat_operator(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitString_concat_operator(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public String_concat_operatorContext string_concat_operator() { + String_concat_operatorContext _localctx = new String_concat_operatorContext(Context, State); + EnterRule(_localctx, 70, RULE_string_concat_operator); + try { + EnterOuterAlt(_localctx, 1); + { + State = 337; Match(T__23); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Unary_scalar_expressionContext : ParserRuleContext { + public Primary_expressionContext primary_expression() { + return GetRuleContext(0); + } + public Unary_operatorContext unary_operator() { + return GetRuleContext(0); + } + public Unary_scalar_expressionContext unary_scalar_expression() { + return GetRuleContext(0); + } + public Unary_scalar_expressionContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_unary_scalar_expression; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterUnary_scalar_expression(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitUnary_scalar_expression(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitUnary_scalar_expression(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Unary_scalar_expressionContext unary_scalar_expression() { + Unary_scalar_expressionContext _localctx = new Unary_scalar_expressionContext(Context, State); + EnterRule(_localctx, 72, RULE_unary_scalar_expression); + try { + State = 343; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__2: + case T__5: + case T__25: + case K_ARRAY: + case K_EXISTS: + case K_FALSE: + case K_NULL: + case K_TRUE: + case K_UDF: + case K_UNDEFINED: + case NUMERIC_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case PARAMETER: + EnterOuterAlt(_localctx, 1); + { + State = 339; primary_expression(0); + } + break; + case T__12: + case T__13: + case T__24: + case K_NOT: + EnterOuterAlt(_localctx, 2); + { + State = 340; unary_operator(); + State = 341; unary_scalar_expression(); + } + break; + default: + throw new NoViableAltException(this); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Unary_operatorContext : ParserRuleContext { + public ITerminalNode K_NOT() { return GetToken(sqlParser.K_NOT, 0); } + public Unary_operatorContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_unary_operator; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterUnary_operator(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitUnary_operator(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitUnary_operator(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Unary_operatorContext unary_operator() { + Unary_operatorContext _localctx = new Unary_operatorContext(Context, State); + EnterRule(_localctx, 74, RULE_unary_operator); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 345; + _la = TokenStream.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__12) | (1L << T__13) | (1L << T__24) | (1L << K_NOT))) != 0)) ) { + ErrorHandler.RecoverInline(this); + } + else { + ErrorHandler.ReportMatch(this); + Consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Primary_expressionContext : ParserRuleContext { + public Primary_expressionContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_primary_expression; } } + + public Primary_expressionContext() { } + public virtual void CopyFrom(Primary_expressionContext context) { + base.CopyFrom(context); + } + } + public partial class SubqueryScalarExpressionContext : Primary_expressionContext { + public Sql_queryContext sql_query() { + return GetRuleContext(0); + } + public SubqueryScalarExpressionContext(Primary_expressionContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterSubqueryScalarExpression(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitSubqueryScalarExpression(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitSubqueryScalarExpression(this); + else return visitor.VisitChildren(this); + } + } + public partial class PropertyRefScalarExpressionBaseContext : Primary_expressionContext { + public ITerminalNode IDENTIFIER() { return GetToken(sqlParser.IDENTIFIER, 0); } + public PropertyRefScalarExpressionBaseContext(Primary_expressionContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterPropertyRefScalarExpressionBase(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitPropertyRefScalarExpressionBase(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitPropertyRefScalarExpressionBase(this); + else return visitor.VisitChildren(this); + } + } + public partial class FunctionCallScalarExpressionContext : Primary_expressionContext { + public ITerminalNode IDENTIFIER() { return GetToken(sqlParser.IDENTIFIER, 0); } + public ITerminalNode K_UDF() { return GetToken(sqlParser.K_UDF, 0); } + public Scalar_expression_listContext scalar_expression_list() { + return GetRuleContext(0); + } + public FunctionCallScalarExpressionContext(Primary_expressionContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterFunctionCallScalarExpression(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitFunctionCallScalarExpression(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitFunctionCallScalarExpression(this); + else return visitor.VisitChildren(this); + } + } + public partial class LiteralScalarExpressionContext : Primary_expressionContext { + public LiteralContext literal() { + return GetRuleContext(0); + } + public LiteralScalarExpressionContext(Primary_expressionContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterLiteralScalarExpression(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitLiteralScalarExpression(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitLiteralScalarExpression(this); + else return visitor.VisitChildren(this); + } + } + public partial class ObjectCreateScalarExpressionContext : Primary_expressionContext { + public Object_property_listContext object_property_list() { + return GetRuleContext(0); + } + public ObjectCreateScalarExpressionContext(Primary_expressionContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterObjectCreateScalarExpression(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitObjectCreateScalarExpression(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitObjectCreateScalarExpression(this); + else return visitor.VisitChildren(this); + } + } + public partial class ParenthesizedScalarExperessionContext : Primary_expressionContext { + public Scalar_expressionContext scalar_expression() { + return GetRuleContext(0); + } + public ParenthesizedScalarExperessionContext(Primary_expressionContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterParenthesizedScalarExperession(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitParenthesizedScalarExperession(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitParenthesizedScalarExperession(this); + else return visitor.VisitChildren(this); + } + } + public partial class ParameterRefScalarExpressionContext : Primary_expressionContext { + public ITerminalNode PARAMETER() { return GetToken(sqlParser.PARAMETER, 0); } + public ParameterRefScalarExpressionContext(Primary_expressionContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterParameterRefScalarExpression(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitParameterRefScalarExpression(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitParameterRefScalarExpression(this); + else return visitor.VisitChildren(this); + } + } + public partial class ArrayCreateScalarExpressionContext : Primary_expressionContext { + public Scalar_expression_listContext scalar_expression_list() { + return GetRuleContext(0); + } + public ArrayCreateScalarExpressionContext(Primary_expressionContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterArrayCreateScalarExpression(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitArrayCreateScalarExpression(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitArrayCreateScalarExpression(this); + else return visitor.VisitChildren(this); + } + } + public partial class ExistsScalarExpressionContext : Primary_expressionContext { + public ITerminalNode K_EXISTS() { return GetToken(sqlParser.K_EXISTS, 0); } + public Sql_queryContext sql_query() { + return GetRuleContext(0); + } + public ExistsScalarExpressionContext(Primary_expressionContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterExistsScalarExpression(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitExistsScalarExpression(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitExistsScalarExpression(this); + else return visitor.VisitChildren(this); + } + } + public partial class ArrayScalarExpressionContext : Primary_expressionContext { + public ITerminalNode K_ARRAY() { return GetToken(sqlParser.K_ARRAY, 0); } + public Sql_queryContext sql_query() { + return GetRuleContext(0); + } + public ArrayScalarExpressionContext(Primary_expressionContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterArrayScalarExpression(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitArrayScalarExpression(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitArrayScalarExpression(this); + else return visitor.VisitChildren(this); + } + } + public partial class MemberIndexerScalarExpressionContext : Primary_expressionContext { + public Primary_expressionContext primary_expression() { + return GetRuleContext(0); + } + public Scalar_expressionContext scalar_expression() { + return GetRuleContext(0); + } + public MemberIndexerScalarExpressionContext(Primary_expressionContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterMemberIndexerScalarExpression(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitMemberIndexerScalarExpression(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitMemberIndexerScalarExpression(this); + else return visitor.VisitChildren(this); + } + } + public partial class PropertyRefScalarExpressionRecursiveContext : Primary_expressionContext { + public Primary_expressionContext primary_expression() { + return GetRuleContext(0); + } + public ITerminalNode IDENTIFIER() { return GetToken(sqlParser.IDENTIFIER, 0); } + public PropertyRefScalarExpressionRecursiveContext(Primary_expressionContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterPropertyRefScalarExpressionRecursive(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitPropertyRefScalarExpressionRecursive(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitPropertyRefScalarExpressionRecursive(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Primary_expressionContext primary_expression() { + return primary_expression(0); + } + + private Primary_expressionContext primary_expression(int _p) { + ParserRuleContext _parentctx = Context; + int _parentState = State; + Primary_expressionContext _localctx = new Primary_expressionContext(Context, _parentState); + Primary_expressionContext _prevctx = _localctx; + int _startState = 76; + EnterRecursionRule(_localctx, 76, RULE_primary_expression, _p); + int _la; + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 389; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,34,Context) ) { + case 1: + { + _localctx = new PropertyRefScalarExpressionBaseContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + + State = 348; Match(IDENTIFIER); + } + break; + case 2: + { + _localctx = new ParameterRefScalarExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + State = 349; Match(PARAMETER); + } + break; + case 3: + { + _localctx = new LiteralScalarExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + State = 350; literal(); + } + break; + case 4: + { + _localctx = new ArrayCreateScalarExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + State = 351; Match(T__5); + State = 353; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__5) | (1L << T__12) | (1L << T__13) | (1L << T__24) | (1L << T__25) | (1L << K_ARRAY) | (1L << K_EXISTS) | (1L << K_FALSE) | (1L << K_NOT) | (1L << K_NULL) | (1L << K_TRUE) | (1L << K_UDF) | (1L << K_UNDEFINED) | (1L << NUMERIC_LITERAL) | (1L << STRING_LITERAL) | (1L << IDENTIFIER) | (1L << PARAMETER))) != 0)) { + { + State = 352; scalar_expression_list(); + } + } + + State = 355; Match(T__6); + } + break; + case 5: + { + _localctx = new ObjectCreateScalarExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + State = 356; Match(T__25); + State = 358; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==STRING_LITERAL) { + { + State = 357; object_property_list(); + } + } + + State = 360; Match(T__26); + } + break; + case 6: + { + _localctx = new FunctionCallScalarExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + State = 363; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==K_UDF) { + { + State = 361; Match(K_UDF); + State = 362; Match(T__4); + } + } + + State = 365; Match(IDENTIFIER); + State = 366; Match(T__2); + State = 368; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__5) | (1L << T__12) | (1L << T__13) | (1L << T__24) | (1L << T__25) | (1L << K_ARRAY) | (1L << K_EXISTS) | (1L << K_FALSE) | (1L << K_NOT) | (1L << K_NULL) | (1L << K_TRUE) | (1L << K_UDF) | (1L << K_UNDEFINED) | (1L << NUMERIC_LITERAL) | (1L << STRING_LITERAL) | (1L << IDENTIFIER) | (1L << PARAMETER))) != 0)) { + { + State = 367; scalar_expression_list(); + } + } + + State = 370; Match(T__3); + } + break; + case 7: + { + _localctx = new ParenthesizedScalarExperessionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + State = 371; Match(T__2); + State = 372; scalar_expression(0); + State = 373; Match(T__3); + } + break; + case 8: + { + _localctx = new SubqueryScalarExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + State = 375; Match(T__2); + State = 376; sql_query(); + State = 377; Match(T__3); + } + break; + case 9: + { + _localctx = new ExistsScalarExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + State = 379; Match(K_EXISTS); + State = 380; Match(T__2); + State = 381; sql_query(); + State = 382; Match(T__3); + } + break; + case 10: + { + _localctx = new ArrayScalarExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + State = 384; Match(K_ARRAY); + State = 385; Match(T__2); + State = 386; sql_query(); + State = 387; Match(T__3); + } + break; + } + Context.Stop = TokenStream.LT(-1); + State = 401; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,36,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( ParseListeners!=null ) + TriggerExitRuleEvent(); + _prevctx = _localctx; + { + State = 399; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,35,Context) ) { + case 1: + { + _localctx = new PropertyRefScalarExpressionRecursiveContext(new Primary_expressionContext(_parentctx, _parentState)); + PushNewRecursionContext(_localctx, _startState, RULE_primary_expression); + State = 391; + if (!(Precpred(Context, 4))) throw new FailedPredicateException(this, "Precpred(Context, 4)"); + State = 392; Match(T__4); + State = 393; Match(IDENTIFIER); + } + break; + case 2: + { + _localctx = new MemberIndexerScalarExpressionContext(new Primary_expressionContext(_parentctx, _parentState)); + PushNewRecursionContext(_localctx, _startState, RULE_primary_expression); + State = 394; + if (!(Precpred(Context, 3))) throw new FailedPredicateException(this, "Precpred(Context, 3)"); + State = 395; Match(T__5); + State = 396; scalar_expression(0); + State = 397; Match(T__6); + } + break; + } + } + } + State = 403; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,36,Context); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + UnrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public partial class Scalar_expression_listContext : ParserRuleContext { + public Scalar_expressionContext[] scalar_expression() { + return GetRuleContexts(); + } + public Scalar_expressionContext scalar_expression(int i) { + return GetRuleContext(i); + } + public Scalar_expression_listContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_scalar_expression_list; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterScalar_expression_list(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitScalar_expression_list(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitScalar_expression_list(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Scalar_expression_listContext scalar_expression_list() { + Scalar_expression_listContext _localctx = new Scalar_expression_listContext(Context, State); + EnterRule(_localctx, 78, RULE_scalar_expression_list); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 404; scalar_expression(0); + State = 409; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==T__1) { + { + { + State = 405; Match(T__1); + State = 406; scalar_expression(0); + } + } + State = 411; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Object_property_listContext : ParserRuleContext { + public Object_propertyContext[] object_property() { + return GetRuleContexts(); + } + public Object_propertyContext object_property(int i) { + return GetRuleContext(i); + } + public Object_property_listContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_object_property_list; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterObject_property_list(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitObject_property_list(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitObject_property_list(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Object_property_listContext object_property_list() { + Object_property_listContext _localctx = new Object_property_listContext(Context, State); + EnterRule(_localctx, 80, RULE_object_property_list); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 412; object_property(); + State = 417; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==T__1) { + { + { + State = 413; Match(T__1); + State = 414; object_property(); + } + } + State = 419; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Object_propertyContext : ParserRuleContext { + public ITerminalNode STRING_LITERAL() { return GetToken(sqlParser.STRING_LITERAL, 0); } + public Scalar_expressionContext scalar_expression() { + return GetRuleContext(0); + } + public Object_propertyContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_object_property; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterObject_property(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitObject_property(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitObject_property(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Object_propertyContext object_property() { + Object_propertyContext _localctx = new Object_propertyContext(Context, State); + EnterRule(_localctx, 82, RULE_object_property); + try { + EnterOuterAlt(_localctx, 1); + { + State = 420; Match(STRING_LITERAL); + State = 421; Match(T__8); + State = 422; scalar_expression(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class LiteralContext : ParserRuleContext { + public ITerminalNode STRING_LITERAL() { return GetToken(sqlParser.STRING_LITERAL, 0); } + public ITerminalNode NUMERIC_LITERAL() { return GetToken(sqlParser.NUMERIC_LITERAL, 0); } + public ITerminalNode K_TRUE() { return GetToken(sqlParser.K_TRUE, 0); } + public ITerminalNode K_FALSE() { return GetToken(sqlParser.K_FALSE, 0); } + public ITerminalNode K_NULL() { return GetToken(sqlParser.K_NULL, 0); } + public ITerminalNode K_UNDEFINED() { return GetToken(sqlParser.K_UNDEFINED, 0); } + public LiteralContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_literal; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterLiteral(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitLiteral(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitLiteral(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public LiteralContext literal() { + LiteralContext _localctx = new LiteralContext(Context, State); + EnterRule(_localctx, 84, RULE_literal); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 424; + _la = TokenStream.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << K_FALSE) | (1L << K_NULL) | (1L << K_TRUE) | (1L << K_UNDEFINED) | (1L << NUMERIC_LITERAL) | (1L << STRING_LITERAL))) != 0)) ) { + ErrorHandler.RecoverInline(this); + } + else { + ErrorHandler.ReportMatch(this); + Consume(); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public override bool Sempred(RuleContext _localctx, int ruleIndex, int predIndex) { + switch (ruleIndex) { + case 10: return collection_expression_sempred((Collection_expressionContext)_localctx, predIndex); + case 12: return path_expression_sempred((Path_expressionContext)_localctx, predIndex); + case 22: return scalar_expression_sempred((Scalar_expressionContext)_localctx, predIndex); + case 27: return binary_scalar_expression_sempred((Binary_scalar_expressionContext)_localctx, predIndex); + case 38: return primary_expression_sempred((Primary_expressionContext)_localctx, predIndex); + } + return true; + } + private bool collection_expression_sempred(Collection_expressionContext _localctx, int predIndex) { + switch (predIndex) { + case 0: return Precpred(Context, 1); + } + return true; + } + private bool path_expression_sempred(Path_expressionContext _localctx, int predIndex) { + switch (predIndex) { + case 1: return Precpred(Context, 4); + case 2: return Precpred(Context, 3); + case 3: return Precpred(Context, 2); + } + return true; + } + private bool scalar_expression_sempred(Scalar_expressionContext _localctx, int predIndex) { + switch (predIndex) { + case 4: return Precpred(Context, 4); + case 5: return Precpred(Context, 3); + } + return true; + } + private bool binary_scalar_expression_sempred(Binary_scalar_expressionContext _localctx, int predIndex) { + switch (predIndex) { + case 6: return Precpred(Context, 10); + case 7: return Precpred(Context, 9); + case 8: return Precpred(Context, 8); + case 9: return Precpred(Context, 7); + case 10: return Precpred(Context, 6); + case 11: return Precpred(Context, 5); + case 12: return Precpred(Context, 4); + case 13: return Precpred(Context, 3); + case 14: return Precpred(Context, 2); + case 15: return Precpred(Context, 1); + } + return true; + } + private bool primary_expression_sempred(Primary_expressionContext _localctx, int predIndex) { + switch (predIndex) { + case 16: return Precpred(Context, 4); + case 17: return Precpred(Context, 3); + } + return true; + } + + private static char[] _serializedATN = { + '\x3', '\x608B', '\xA72A', '\x8133', '\xB9ED', '\x417C', '\x3BE7', '\x7786', + '\x5964', '\x3', '?', '\x1AD', '\x4', '\x2', '\t', '\x2', '\x4', '\x3', + '\t', '\x3', '\x4', '\x4', '\t', '\x4', '\x4', '\x5', '\t', '\x5', '\x4', + '\x6', '\t', '\x6', '\x4', '\a', '\t', '\a', '\x4', '\b', '\t', '\b', + '\x4', '\t', '\t', '\t', '\x4', '\n', '\t', '\n', '\x4', '\v', '\t', '\v', + '\x4', '\f', '\t', '\f', '\x4', '\r', '\t', '\r', '\x4', '\xE', '\t', + '\xE', '\x4', '\xF', '\t', '\xF', '\x4', '\x10', '\t', '\x10', '\x4', + '\x11', '\t', '\x11', '\x4', '\x12', '\t', '\x12', '\x4', '\x13', '\t', + '\x13', '\x4', '\x14', '\t', '\x14', '\x4', '\x15', '\t', '\x15', '\x4', + '\x16', '\t', '\x16', '\x4', '\x17', '\t', '\x17', '\x4', '\x18', '\t', + '\x18', '\x4', '\x19', '\t', '\x19', '\x4', '\x1A', '\t', '\x1A', '\x4', + '\x1B', '\t', '\x1B', '\x4', '\x1C', '\t', '\x1C', '\x4', '\x1D', '\t', + '\x1D', '\x4', '\x1E', '\t', '\x1E', '\x4', '\x1F', '\t', '\x1F', '\x4', + ' ', '\t', ' ', '\x4', '!', '\t', '!', '\x4', '\"', '\t', '\"', '\x4', + '#', '\t', '#', '\x4', '$', '\t', '$', '\x4', '%', '\t', '%', '\x4', '&', + '\t', '&', '\x4', '\'', '\t', '\'', '\x4', '(', '\t', '(', '\x4', ')', + '\t', ')', '\x4', '*', '\t', '*', '\x4', '+', '\t', '+', '\x4', ',', '\t', + ',', '\x3', '\x2', '\x3', '\x2', '\x3', '\x2', '\x3', '\x3', '\x3', '\x3', + '\x5', '\x3', '^', '\n', '\x3', '\x3', '\x3', '\x5', '\x3', '\x61', '\n', + '\x3', '\x3', '\x3', '\x5', '\x3', '\x64', '\n', '\x3', '\x3', '\x3', + '\x5', '\x3', 'g', '\n', '\x3', '\x3', '\x3', '\x5', '\x3', 'j', '\n', + '\x3', '\x3', '\x4', '\x3', '\x4', '\x5', '\x4', 'n', '\n', '\x4', '\x3', + '\x4', '\x5', '\x4', 'q', '\n', '\x4', '\x3', '\x4', '\x3', '\x4', '\x3', + '\x5', '\x3', '\x5', '\x3', '\x5', '\x3', '\x6', '\x3', '\x6', '\x3', + '\x6', '\x5', '\x6', '{', '\n', '\x6', '\x3', '\a', '\x3', '\a', '\x3', + '\b', '\x3', '\b', '\x3', '\b', '\x3', '\t', '\x3', '\t', '\x3', '\t', + '\a', '\t', '\x85', '\n', '\t', '\f', '\t', '\xE', '\t', '\x88', '\v', + '\t', '\x3', '\n', '\x3', '\n', '\x3', '\n', '\x5', '\n', '\x8D', '\n', + '\n', '\x3', '\v', '\x3', '\v', '\x3', '\v', '\x3', '\f', '\x3', '\f', + '\x3', '\f', '\x3', '\f', '\x5', '\f', '\x96', '\n', '\f', '\x3', '\f', + '\x3', '\f', '\x3', '\f', '\x5', '\f', '\x9B', '\n', '\f', '\x3', '\f', + '\x3', '\f', '\x3', '\f', '\a', '\f', '\xA0', '\n', '\f', '\f', '\f', + '\xE', '\f', '\xA3', '\v', '\f', '\x3', '\r', '\x3', '\r', '\x5', '\r', + '\xA7', '\n', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', + '\x5', '\r', '\xAD', '\n', '\r', '\x3', '\xE', '\x3', '\xE', '\x3', '\xE', + '\x3', '\xE', '\x3', '\xE', '\x3', '\xE', '\x3', '\xE', '\x3', '\xE', + '\x3', '\xE', '\x3', '\xE', '\x3', '\xE', '\x3', '\xE', '\a', '\xE', '\xBB', + '\n', '\xE', '\f', '\xE', '\xE', '\xE', '\xBE', '\v', '\xE', '\x3', '\xF', + '\x3', '\xF', '\x3', '\xF', '\x3', '\x10', '\x3', '\x10', '\x3', '\x10', + '\x3', '\x10', '\x3', '\x11', '\x3', '\x11', '\x3', '\x11', '\x3', '\x11', + '\x3', '\x12', '\x3', '\x12', '\x3', '\x12', '\a', '\x12', '\xCE', '\n', + '\x12', '\f', '\x12', '\xE', '\x12', '\xD1', '\v', '\x12', '\x3', '\x13', + '\x3', '\x13', '\x5', '\x13', '\xD5', '\n', '\x13', '\x3', '\x14', '\x3', + '\x14', '\x3', '\x15', '\x3', '\x15', '\x3', '\x15', '\x3', '\x15', '\x3', + '\x15', '\x3', '\x16', '\x3', '\x16', '\x3', '\x17', '\x3', '\x17', '\x3', + '\x18', '\x3', '\x18', '\x3', '\x18', '\x3', '\x18', '\x5', '\x18', '\xE6', + '\n', '\x18', '\x3', '\x18', '\x3', '\x18', '\x3', '\x18', '\x3', '\x18', + '\x3', '\x18', '\x5', '\x18', '\xED', '\n', '\x18', '\x3', '\x18', '\x3', + '\x18', '\x3', '\x18', '\x3', '\x18', '\x3', '\x18', '\x3', '\x18', '\x3', + '\x18', '\x3', '\x18', '\x3', '\x18', '\a', '\x18', '\xF8', '\n', '\x18', + '\f', '\x18', '\xE', '\x18', '\xFB', '\v', '\x18', '\x3', '\x19', '\x3', + '\x19', '\x3', '\x19', '\x5', '\x19', '\x100', '\n', '\x19', '\x3', '\x1A', + '\x3', '\x1A', '\x5', '\x1A', '\x104', '\n', '\x1A', '\x3', '\x1A', '\x3', + '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x3', '\x1B', '\x3', + '\x1B', '\x5', '\x1B', '\x10D', '\n', '\x1B', '\x3', '\x1B', '\x3', '\x1B', + '\x3', '\x1B', '\x3', '\x1B', '\x3', '\x1C', '\x3', '\x1C', '\x3', '\x1C', + '\x5', '\x1C', '\x116', '\n', '\x1C', '\x3', '\x1D', '\x3', '\x1D', '\x3', + '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', + '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', + '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', + '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', + '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', + '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', + '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', + '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\a', '\x1D', '\x141', + '\n', '\x1D', '\f', '\x1D', '\xE', '\x1D', '\x144', '\v', '\x1D', '\x3', + '\x1E', '\x3', '\x1E', '\x3', '\x1F', '\x3', '\x1F', '\x3', ' ', '\x3', + ' ', '\x3', '!', '\x3', '!', '\x3', '\"', '\x3', '\"', '\x3', '#', '\x3', + '#', '\x3', '$', '\x3', '$', '\x3', '%', '\x3', '%', '\x3', '&', '\x3', + '&', '\x3', '&', '\x3', '&', '\x5', '&', '\x15A', '\n', '&', '\x3', '\'', + '\x3', '\'', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', + '\x3', '(', '\x5', '(', '\x164', '\n', '(', '\x3', '(', '\x3', '(', '\x3', + '(', '\x5', '(', '\x169', '\n', '(', '\x3', '(', '\x3', '(', '\x3', '(', + '\x5', '(', '\x16E', '\n', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x5', + '(', '\x173', '\n', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', + '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', + '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', + '\x3', '(', '\x3', '(', '\x3', '(', '\x5', '(', '\x188', '\n', '(', '\x3', + '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', + '(', '\x3', '(', '\a', '(', '\x192', '\n', '(', '\f', '(', '\xE', '(', + '\x195', '\v', '(', '\x3', ')', '\x3', ')', '\x3', ')', '\a', ')', '\x19A', + '\n', ')', '\f', ')', '\xE', ')', '\x19D', '\v', ')', '\x3', '*', '\x3', + '*', '\x3', '*', '\a', '*', '\x1A2', '\n', '*', '\f', '*', '\xE', '*', + '\x1A5', '\v', '*', '\x3', '+', '\x3', '+', '\x3', '+', '\x3', '+', '\x3', + ',', '\x3', ',', '\x3', ',', '\x2', '\a', '\x16', '\x1A', '.', '\x38', + 'N', '-', '\x2', '\x4', '\x6', '\b', '\n', '\f', '\xE', '\x10', '\x12', + '\x14', '\x16', '\x18', '\x1A', '\x1C', '\x1E', ' ', '\"', '$', '&', '(', + '*', ',', '.', '\x30', '\x32', '\x34', '\x36', '\x38', ':', '<', '>', + '@', '\x42', '\x44', '\x46', 'H', 'J', 'L', 'N', 'P', 'R', 'T', 'V', '\x2', + '\n', '\x4', '\x2', '<', '<', '?', '?', '\x4', '\x2', '!', '!', '$', '$', + '\x4', '\x2', '\x3', '\x3', '\r', '\xE', '\x3', '\x2', '\xF', '\x10', + '\x3', '\x2', '\x11', '\x14', '\x3', '\x2', '\x15', '\x16', '\x5', '\x2', + '\xF', '\x10', '\x1B', '\x1B', '/', '/', '\a', '\x2', '(', '(', '\x30', + '\x30', '\x36', '\x36', '\x38', '\x38', '<', '=', '\x2', '\x1BB', '\x2', + 'X', '\x3', '\x2', '\x2', '\x2', '\x4', '[', '\x3', '\x2', '\x2', '\x2', + '\x6', 'k', '\x3', '\x2', '\x2', '\x2', '\b', 't', '\x3', '\x2', '\x2', + '\x2', '\n', 'z', '\x3', '\x2', '\x2', '\x2', '\f', '|', '\x3', '\x2', + '\x2', '\x2', '\xE', '~', '\x3', '\x2', '\x2', '\x2', '\x10', '\x81', + '\x3', '\x2', '\x2', '\x2', '\x12', '\x89', '\x3', '\x2', '\x2', '\x2', + '\x14', '\x8E', '\x3', '\x2', '\x2', '\x2', '\x16', '\x9A', '\x3', '\x2', + '\x2', '\x2', '\x18', '\xAC', '\x3', '\x2', '\x2', '\x2', '\x1A', '\xAE', + '\x3', '\x2', '\x2', '\x2', '\x1C', '\xBF', '\x3', '\x2', '\x2', '\x2', + '\x1E', '\xC2', '\x3', '\x2', '\x2', '\x2', ' ', '\xC6', '\x3', '\x2', + '\x2', '\x2', '\"', '\xCA', '\x3', '\x2', '\x2', '\x2', '$', '\xD2', '\x3', + '\x2', '\x2', '\x2', '&', '\xD6', '\x3', '\x2', '\x2', '\x2', '(', '\xD8', + '\x3', '\x2', '\x2', '\x2', '*', '\xDD', '\x3', '\x2', '\x2', '\x2', ',', + '\xDF', '\x3', '\x2', '\x2', '\x2', '.', '\xEC', '\x3', '\x2', '\x2', + '\x2', '\x30', '\xFF', '\x3', '\x2', '\x2', '\x2', '\x32', '\x101', '\x3', + '\x2', '\x2', '\x2', '\x34', '\x10A', '\x3', '\x2', '\x2', '\x2', '\x36', + '\x115', '\x3', '\x2', '\x2', '\x2', '\x38', '\x117', '\x3', '\x2', '\x2', + '\x2', ':', '\x145', '\x3', '\x2', '\x2', '\x2', '<', '\x147', '\x3', + '\x2', '\x2', '\x2', '>', '\x149', '\x3', '\x2', '\x2', '\x2', '@', '\x14B', + '\x3', '\x2', '\x2', '\x2', '\x42', '\x14D', '\x3', '\x2', '\x2', '\x2', + '\x44', '\x14F', '\x3', '\x2', '\x2', '\x2', '\x46', '\x151', '\x3', '\x2', + '\x2', '\x2', 'H', '\x153', '\x3', '\x2', '\x2', '\x2', 'J', '\x159', + '\x3', '\x2', '\x2', '\x2', 'L', '\x15B', '\x3', '\x2', '\x2', '\x2', + 'N', '\x187', '\x3', '\x2', '\x2', '\x2', 'P', '\x196', '\x3', '\x2', + '\x2', '\x2', 'R', '\x19E', '\x3', '\x2', '\x2', '\x2', 'T', '\x1A6', + '\x3', '\x2', '\x2', '\x2', 'V', '\x1AA', '\x3', '\x2', '\x2', '\x2', + 'X', 'Y', '\x5', '\x4', '\x3', '\x2', 'Y', 'Z', '\a', '\x2', '\x2', '\x3', + 'Z', '\x3', '\x3', '\x2', '\x2', '\x2', '[', ']', '\x5', '\x6', '\x4', + '\x2', '\\', '^', '\x5', '\x14', '\v', '\x2', ']', '\\', '\x3', '\x2', + '\x2', '\x2', ']', '^', '\x3', '\x2', '\x2', '\x2', '^', '`', '\x3', '\x2', + '\x2', '\x2', '_', '\x61', '\x5', '\x1C', '\xF', '\x2', '`', '_', '\x3', + '\x2', '\x2', '\x2', '`', '\x61', '\x3', '\x2', '\x2', '\x2', '\x61', + '\x63', '\x3', '\x2', '\x2', '\x2', '\x62', '\x64', '\x5', '\x1E', '\x10', + '\x2', '\x63', '\x62', '\x3', '\x2', '\x2', '\x2', '\x63', '\x64', '\x3', + '\x2', '\x2', '\x2', '\x64', '\x66', '\x3', '\x2', '\x2', '\x2', '\x65', + 'g', '\x5', ' ', '\x11', '\x2', '\x66', '\x65', '\x3', '\x2', '\x2', '\x2', + '\x66', 'g', '\x3', '\x2', '\x2', '\x2', 'g', 'i', '\x3', '\x2', '\x2', + '\x2', 'h', 'j', '\x5', '(', '\x15', '\x2', 'i', 'h', '\x3', '\x2', '\x2', + '\x2', 'i', 'j', '\x3', '\x2', '\x2', '\x2', 'j', '\x5', '\x3', '\x2', + '\x2', '\x2', 'k', 'm', '\a', '\x34', '\x2', '\x2', 'l', 'n', '\a', '%', + '\x2', '\x2', 'm', 'l', '\x3', '\x2', '\x2', '\x2', 'm', 'n', '\x3', '\x2', + '\x2', '\x2', 'n', 'p', '\x3', '\x2', '\x2', '\x2', 'o', 'q', '\x5', '\b', + '\x5', '\x2', 'p', 'o', '\x3', '\x2', '\x2', '\x2', 'p', 'q', '\x3', '\x2', + '\x2', '\x2', 'q', 'r', '\x3', '\x2', '\x2', '\x2', 'r', 's', '\x5', '\n', + '\x6', '\x2', 's', '\a', '\x3', '\x2', '\x2', '\x2', 't', 'u', '\a', '\x35', + '\x2', '\x2', 'u', 'v', '\t', '\x2', '\x2', '\x2', 'v', '\t', '\x3', '\x2', + '\x2', '\x2', 'w', '{', '\x5', '\f', '\a', '\x2', 'x', '{', '\x5', '\xE', + '\b', '\x2', 'y', '{', '\x5', '\x10', '\t', '\x2', 'z', 'w', '\x3', '\x2', + '\x2', '\x2', 'z', 'x', '\x3', '\x2', '\x2', '\x2', 'z', 'y', '\x3', '\x2', + '\x2', '\x2', '{', '\v', '\x3', '\x2', '\x2', '\x2', '|', '}', '\a', '\x3', + '\x2', '\x2', '}', '\r', '\x3', '\x2', '\x2', '\x2', '~', '\x7F', '\a', + '\x39', '\x2', '\x2', '\x7F', '\x80', '\x5', '.', '\x18', '\x2', '\x80', + '\xF', '\x3', '\x2', '\x2', '\x2', '\x81', '\x86', '\x5', '\x12', '\n', + '\x2', '\x82', '\x83', '\a', '\x4', '\x2', '\x2', '\x83', '\x85', '\x5', + '\x12', '\n', '\x2', '\x84', '\x82', '\x3', '\x2', '\x2', '\x2', '\x85', + '\x88', '\x3', '\x2', '\x2', '\x2', '\x86', '\x84', '\x3', '\x2', '\x2', + '\x2', '\x86', '\x87', '\x3', '\x2', '\x2', '\x2', '\x87', '\x11', '\x3', + '\x2', '\x2', '\x2', '\x88', '\x86', '\x3', '\x2', '\x2', '\x2', '\x89', + '\x8C', '\x5', '.', '\x18', '\x2', '\x8A', '\x8B', '\a', ' ', '\x2', '\x2', + '\x8B', '\x8D', '\a', '>', '\x2', '\x2', '\x8C', '\x8A', '\x3', '\x2', + '\x2', '\x2', '\x8C', '\x8D', '\x3', '\x2', '\x2', '\x2', '\x8D', '\x13', + '\x3', '\x2', '\x2', '\x2', '\x8E', '\x8F', '\a', ')', '\x2', '\x2', '\x8F', + '\x90', '\x5', '\x16', '\f', '\x2', '\x90', '\x15', '\x3', '\x2', '\x2', + '\x2', '\x91', '\x92', '\b', '\f', '\x1', '\x2', '\x92', '\x95', '\x5', + '\x18', '\r', '\x2', '\x93', '\x94', '\a', ' ', '\x2', '\x2', '\x94', + '\x96', '\a', '>', '\x2', '\x2', '\x95', '\x93', '\x3', '\x2', '\x2', + '\x2', '\x95', '\x96', '\x3', '\x2', '\x2', '\x2', '\x96', '\x9B', '\x3', + '\x2', '\x2', '\x2', '\x97', '\x98', '\a', '>', '\x2', '\x2', '\x98', + '\x99', '\a', '+', '\x2', '\x2', '\x99', '\x9B', '\x5', '\x18', '\r', + '\x2', '\x9A', '\x91', '\x3', '\x2', '\x2', '\x2', '\x9A', '\x97', '\x3', + '\x2', '\x2', '\x2', '\x9B', '\xA1', '\x3', '\x2', '\x2', '\x2', '\x9C', + '\x9D', '\f', '\x3', '\x2', '\x2', '\x9D', '\x9E', '\a', ',', '\x2', '\x2', + '\x9E', '\xA0', '\x5', '\x16', '\f', '\x4', '\x9F', '\x9C', '\x3', '\x2', + '\x2', '\x2', '\xA0', '\xA3', '\x3', '\x2', '\x2', '\x2', '\xA1', '\x9F', + '\x3', '\x2', '\x2', '\x2', '\xA1', '\xA2', '\x3', '\x2', '\x2', '\x2', + '\xA2', '\x17', '\x3', '\x2', '\x2', '\x2', '\xA3', '\xA1', '\x3', '\x2', + '\x2', '\x2', '\xA4', '\xA6', '\a', '>', '\x2', '\x2', '\xA5', '\xA7', + '\x5', '\x1A', '\xE', '\x2', '\xA6', '\xA5', '\x3', '\x2', '\x2', '\x2', + '\xA6', '\xA7', '\x3', '\x2', '\x2', '\x2', '\xA7', '\xAD', '\x3', '\x2', + '\x2', '\x2', '\xA8', '\xA9', '\a', '\x5', '\x2', '\x2', '\xA9', '\xAA', + '\x5', '\x4', '\x3', '\x2', '\xAA', '\xAB', '\a', '\x6', '\x2', '\x2', + '\xAB', '\xAD', '\x3', '\x2', '\x2', '\x2', '\xAC', '\xA4', '\x3', '\x2', + '\x2', '\x2', '\xAC', '\xA8', '\x3', '\x2', '\x2', '\x2', '\xAD', '\x19', + '\x3', '\x2', '\x2', '\x2', '\xAE', '\xBC', '\b', '\xE', '\x1', '\x2', + '\xAF', '\xB0', '\f', '\x6', '\x2', '\x2', '\xB0', '\xB1', '\a', '\a', + '\x2', '\x2', '\xB1', '\xBB', '\a', '>', '\x2', '\x2', '\xB2', '\xB3', + '\f', '\x5', '\x2', '\x2', '\xB3', '\xB4', '\a', '\b', '\x2', '\x2', '\xB4', + '\xB5', '\a', '<', '\x2', '\x2', '\xB5', '\xBB', '\a', '\t', '\x2', '\x2', + '\xB6', '\xB7', '\f', '\x4', '\x2', '\x2', '\xB7', '\xB8', '\a', '\b', + '\x2', '\x2', '\xB8', '\xB9', '\a', '=', '\x2', '\x2', '\xB9', '\xBB', + '\a', '\t', '\x2', '\x2', '\xBA', '\xAF', '\x3', '\x2', '\x2', '\x2', + '\xBA', '\xB2', '\x3', '\x2', '\x2', '\x2', '\xBA', '\xB6', '\x3', '\x2', + '\x2', '\x2', '\xBB', '\xBE', '\x3', '\x2', '\x2', '\x2', '\xBC', '\xBA', + '\x3', '\x2', '\x2', '\x2', '\xBC', '\xBD', '\x3', '\x2', '\x2', '\x2', + '\xBD', '\x1B', '\x3', '\x2', '\x2', '\x2', '\xBE', '\xBC', '\x3', '\x2', + '\x2', '\x2', '\xBF', '\xC0', '\a', ':', '\x2', '\x2', '\xC0', '\xC1', + '\x5', '.', '\x18', '\x2', '\xC1', '\x1D', '\x3', '\x2', '\x2', '\x2', + '\xC2', '\xC3', '\a', '*', '\x2', '\x2', '\xC3', '\xC4', '\a', '#', '\x2', + '\x2', '\xC4', '\xC5', '\x5', 'P', ')', '\x2', '\xC5', '\x1F', '\x3', + '\x2', '\x2', '\x2', '\xC6', '\xC7', '\a', '\x33', '\x2', '\x2', '\xC7', + '\xC8', '\a', '#', '\x2', '\x2', '\xC8', '\xC9', '\x5', '\"', '\x12', + '\x2', '\xC9', '!', '\x3', '\x2', '\x2', '\x2', '\xCA', '\xCF', '\x5', + '$', '\x13', '\x2', '\xCB', '\xCC', '\a', '\x4', '\x2', '\x2', '\xCC', + '\xCE', '\x5', '$', '\x13', '\x2', '\xCD', '\xCB', '\x3', '\x2', '\x2', + '\x2', '\xCE', '\xD1', '\x3', '\x2', '\x2', '\x2', '\xCF', '\xCD', '\x3', + '\x2', '\x2', '\x2', '\xCF', '\xD0', '\x3', '\x2', '\x2', '\x2', '\xD0', + '#', '\x3', '\x2', '\x2', '\x2', '\xD1', '\xCF', '\x3', '\x2', '\x2', + '\x2', '\xD2', '\xD4', '\x5', '.', '\x18', '\x2', '\xD3', '\xD5', '\x5', + '&', '\x14', '\x2', '\xD4', '\xD3', '\x3', '\x2', '\x2', '\x2', '\xD4', + '\xD5', '\x3', '\x2', '\x2', '\x2', '\xD5', '%', '\x3', '\x2', '\x2', + '\x2', '\xD6', '\xD7', '\t', '\x3', '\x2', '\x2', '\xD7', '\'', '\x3', + '\x2', '\x2', '\x2', '\xD8', '\xD9', '\a', '\x31', '\x2', '\x2', '\xD9', + '\xDA', '\x5', '*', '\x16', '\x2', '\xDA', '\xDB', '\a', '.', '\x2', '\x2', + '\xDB', '\xDC', '\x5', ',', '\x17', '\x2', '\xDC', ')', '\x3', '\x2', + '\x2', '\x2', '\xDD', '\xDE', '\t', '\x2', '\x2', '\x2', '\xDE', '+', + '\x3', '\x2', '\x2', '\x2', '\xDF', '\xE0', '\t', '\x2', '\x2', '\x2', + '\xE0', '-', '\x3', '\x2', '\x2', '\x2', '\xE1', '\xE2', '\b', '\x18', + '\x1', '\x2', '\xE2', '\xED', '\x5', '\x30', '\x19', '\x2', '\xE3', '\xE5', + '\x5', '\x38', '\x1D', '\x2', '\xE4', '\xE6', '\a', '/', '\x2', '\x2', + '\xE5', '\xE4', '\x3', '\x2', '\x2', '\x2', '\xE5', '\xE6', '\x3', '\x2', + '\x2', '\x2', '\xE6', '\xE7', '\x3', '\x2', '\x2', '\x2', '\xE7', '\xE8', + '\a', '\"', '\x2', '\x2', '\xE8', '\xE9', '\x5', '\x38', '\x1D', '\x2', + '\xE9', '\xEA', '\a', '\x1E', '\x2', '\x2', '\xEA', '\xEB', '\x5', '\x38', + '\x1D', '\x2', '\xEB', '\xED', '\x3', '\x2', '\x2', '\x2', '\xEC', '\xE1', + '\x3', '\x2', '\x2', '\x2', '\xEC', '\xE3', '\x3', '\x2', '\x2', '\x2', + '\xED', '\xF9', '\x3', '\x2', '\x2', '\x2', '\xEE', '\xEF', '\f', '\x6', + '\x2', '\x2', '\xEF', '\xF0', '\a', '\n', '\x2', '\x2', '\xF0', '\xF1', + '\x5', '.', '\x18', '\x2', '\xF1', '\xF2', '\a', '\v', '\x2', '\x2', '\xF2', + '\xF3', '\x5', '.', '\x18', '\a', '\xF3', '\xF8', '\x3', '\x2', '\x2', + '\x2', '\xF4', '\xF5', '\f', '\x5', '\x2', '\x2', '\xF5', '\xF6', '\a', + '\f', '\x2', '\x2', '\xF6', '\xF8', '\x5', '.', '\x18', '\x6', '\xF7', + '\xEE', '\x3', '\x2', '\x2', '\x2', '\xF7', '\xF4', '\x3', '\x2', '\x2', + '\x2', '\xF8', '\xFB', '\x3', '\x2', '\x2', '\x2', '\xF9', '\xF7', '\x3', + '\x2', '\x2', '\x2', '\xF9', '\xFA', '\x3', '\x2', '\x2', '\x2', '\xFA', + '/', '\x3', '\x2', '\x2', '\x2', '\xFB', '\xF9', '\x3', '\x2', '\x2', + '\x2', '\xFC', '\x100', '\x5', '\x38', '\x1D', '\x2', '\xFD', '\x100', + '\x5', '\x32', '\x1A', '\x2', '\xFE', '\x100', '\x5', '\x34', '\x1B', + '\x2', '\xFF', '\xFC', '\x3', '\x2', '\x2', '\x2', '\xFF', '\xFD', '\x3', + '\x2', '\x2', '\x2', '\xFF', '\xFE', '\x3', '\x2', '\x2', '\x2', '\x100', + '\x31', '\x3', '\x2', '\x2', '\x2', '\x101', '\x103', '\x5', '\x38', '\x1D', + '\x2', '\x102', '\x104', '\a', '/', '\x2', '\x2', '\x103', '\x102', '\x3', + '\x2', '\x2', '\x2', '\x103', '\x104', '\x3', '\x2', '\x2', '\x2', '\x104', + '\x105', '\x3', '\x2', '\x2', '\x2', '\x105', '\x106', '\a', '+', '\x2', + '\x2', '\x106', '\x107', '\a', '\x5', '\x2', '\x2', '\x107', '\x108', + '\x5', 'P', ')', '\x2', '\x108', '\x109', '\a', '\x6', '\x2', '\x2', '\x109', + '\x33', '\x3', '\x2', '\x2', '\x2', '\x10A', '\x10C', '\x5', '\x38', '\x1D', + '\x2', '\x10B', '\x10D', '\a', '/', '\x2', '\x2', '\x10C', '\x10B', '\x3', + '\x2', '\x2', '\x2', '\x10C', '\x10D', '\x3', '\x2', '\x2', '\x2', '\x10D', + '\x10E', '\x3', '\x2', '\x2', '\x2', '\x10E', '\x10F', '\a', '-', '\x2', + '\x2', '\x10F', '\x110', '\x5', '\x38', '\x1D', '\x2', '\x110', '\x111', + '\x5', '\x36', '\x1C', '\x2', '\x111', '\x35', '\x3', '\x2', '\x2', '\x2', + '\x112', '\x116', '\x3', '\x2', '\x2', '\x2', '\x113', '\x114', '\a', + '&', '\x2', '\x2', '\x114', '\x116', '\a', '=', '\x2', '\x2', '\x115', + '\x112', '\x3', '\x2', '\x2', '\x2', '\x115', '\x113', '\x3', '\x2', '\x2', + '\x2', '\x116', '\x37', '\x3', '\x2', '\x2', '\x2', '\x117', '\x118', + '\b', '\x1D', '\x1', '\x2', '\x118', '\x119', '\x5', 'J', '&', '\x2', + '\x119', '\x142', '\x3', '\x2', '\x2', '\x2', '\x11A', '\x11B', '\f', + '\f', '\x2', '\x2', '\x11B', '\x11C', '\x5', ':', '\x1E', '\x2', '\x11C', + '\x11D', '\x5', '\x38', '\x1D', '\r', '\x11D', '\x141', '\x3', '\x2', + '\x2', '\x2', '\x11E', '\x11F', '\f', '\v', '\x2', '\x2', '\x11F', '\x120', + '\x5', '<', '\x1F', '\x2', '\x120', '\x121', '\x5', '\x38', '\x1D', '\f', + '\x121', '\x141', '\x3', '\x2', '\x2', '\x2', '\x122', '\x123', '\f', + '\n', '\x2', '\x2', '\x123', '\x124', '\x5', '>', ' ', '\x2', '\x124', + '\x125', '\x5', '\x38', '\x1D', '\v', '\x125', '\x141', '\x3', '\x2', + '\x2', '\x2', '\x126', '\x127', '\f', '\t', '\x2', '\x2', '\x127', '\x128', + '\x5', '@', '!', '\x2', '\x128', '\x129', '\x5', '\x38', '\x1D', '\n', + '\x129', '\x141', '\x3', '\x2', '\x2', '\x2', '\x12A', '\x12B', '\f', + '\b', '\x2', '\x2', '\x12B', '\x12C', '\x5', '\x42', '\"', '\x2', '\x12C', + '\x12D', '\x5', '\x38', '\x1D', '\t', '\x12D', '\x141', '\x3', '\x2', + '\x2', '\x2', '\x12E', '\x12F', '\f', '\a', '\x2', '\x2', '\x12F', '\x130', + '\x5', '\x44', '#', '\x2', '\x130', '\x131', '\x5', '\x38', '\x1D', '\b', + '\x131', '\x141', '\x3', '\x2', '\x2', '\x2', '\x132', '\x133', '\f', + '\x6', '\x2', '\x2', '\x133', '\x134', '\x5', '\x46', '$', '\x2', '\x134', + '\x135', '\x5', '\x38', '\x1D', '\a', '\x135', '\x141', '\x3', '\x2', + '\x2', '\x2', '\x136', '\x137', '\f', '\x5', '\x2', '\x2', '\x137', '\x138', + '\a', '\x1E', '\x2', '\x2', '\x138', '\x141', '\x5', '\x38', '\x1D', '\x6', + '\x139', '\x13A', '\f', '\x4', '\x2', '\x2', '\x13A', '\x13B', '\a', '\x32', + '\x2', '\x2', '\x13B', '\x141', '\x5', '\x38', '\x1D', '\x5', '\x13C', + '\x13D', '\f', '\x3', '\x2', '\x2', '\x13D', '\x13E', '\x5', 'H', '%', + '\x2', '\x13E', '\x13F', '\x5', '\x38', '\x1D', '\x4', '\x13F', '\x141', + '\x3', '\x2', '\x2', '\x2', '\x140', '\x11A', '\x3', '\x2', '\x2', '\x2', + '\x140', '\x11E', '\x3', '\x2', '\x2', '\x2', '\x140', '\x122', '\x3', + '\x2', '\x2', '\x2', '\x140', '\x126', '\x3', '\x2', '\x2', '\x2', '\x140', + '\x12A', '\x3', '\x2', '\x2', '\x2', '\x140', '\x12E', '\x3', '\x2', '\x2', + '\x2', '\x140', '\x132', '\x3', '\x2', '\x2', '\x2', '\x140', '\x136', + '\x3', '\x2', '\x2', '\x2', '\x140', '\x139', '\x3', '\x2', '\x2', '\x2', + '\x140', '\x13C', '\x3', '\x2', '\x2', '\x2', '\x141', '\x144', '\x3', + '\x2', '\x2', '\x2', '\x142', '\x140', '\x3', '\x2', '\x2', '\x2', '\x142', + '\x143', '\x3', '\x2', '\x2', '\x2', '\x143', '\x39', '\x3', '\x2', '\x2', + '\x2', '\x144', '\x142', '\x3', '\x2', '\x2', '\x2', '\x145', '\x146', + '\t', '\x4', '\x2', '\x2', '\x146', ';', '\x3', '\x2', '\x2', '\x2', '\x147', + '\x148', '\t', '\x5', '\x2', '\x2', '\x148', '=', '\x3', '\x2', '\x2', + '\x2', '\x149', '\x14A', '\t', '\x6', '\x2', '\x2', '\x14A', '?', '\x3', + '\x2', '\x2', '\x2', '\x14B', '\x14C', '\t', '\a', '\x2', '\x2', '\x14C', + '\x41', '\x3', '\x2', '\x2', '\x2', '\x14D', '\x14E', '\a', '\x17', '\x2', + '\x2', '\x14E', '\x43', '\x3', '\x2', '\x2', '\x2', '\x14F', '\x150', + '\a', '\x18', '\x2', '\x2', '\x150', '\x45', '\x3', '\x2', '\x2', '\x2', + '\x151', '\x152', '\a', '\x19', '\x2', '\x2', '\x152', 'G', '\x3', '\x2', + '\x2', '\x2', '\x153', '\x154', '\a', '\x1A', '\x2', '\x2', '\x154', 'I', + '\x3', '\x2', '\x2', '\x2', '\x155', '\x15A', '\x5', 'N', '(', '\x2', + '\x156', '\x157', '\x5', 'L', '\'', '\x2', '\x157', '\x158', '\x5', 'J', + '&', '\x2', '\x158', '\x15A', '\x3', '\x2', '\x2', '\x2', '\x159', '\x155', + '\x3', '\x2', '\x2', '\x2', '\x159', '\x156', '\x3', '\x2', '\x2', '\x2', + '\x15A', 'K', '\x3', '\x2', '\x2', '\x2', '\x15B', '\x15C', '\t', '\b', + '\x2', '\x2', '\x15C', 'M', '\x3', '\x2', '\x2', '\x2', '\x15D', '\x15E', + '\b', '(', '\x1', '\x2', '\x15E', '\x188', '\a', '>', '\x2', '\x2', '\x15F', + '\x188', '\a', '?', '\x2', '\x2', '\x160', '\x188', '\x5', 'V', ',', '\x2', + '\x161', '\x163', '\a', '\b', '\x2', '\x2', '\x162', '\x164', '\x5', 'P', + ')', '\x2', '\x163', '\x162', '\x3', '\x2', '\x2', '\x2', '\x163', '\x164', + '\x3', '\x2', '\x2', '\x2', '\x164', '\x165', '\x3', '\x2', '\x2', '\x2', + '\x165', '\x188', '\a', '\t', '\x2', '\x2', '\x166', '\x168', '\a', '\x1C', + '\x2', '\x2', '\x167', '\x169', '\x5', 'R', '*', '\x2', '\x168', '\x167', + '\x3', '\x2', '\x2', '\x2', '\x168', '\x169', '\x3', '\x2', '\x2', '\x2', + '\x169', '\x16A', '\x3', '\x2', '\x2', '\x2', '\x16A', '\x188', '\a', + '\x1D', '\x2', '\x2', '\x16B', '\x16C', '\a', '\x37', '\x2', '\x2', '\x16C', + '\x16E', '\a', '\a', '\x2', '\x2', '\x16D', '\x16B', '\x3', '\x2', '\x2', + '\x2', '\x16D', '\x16E', '\x3', '\x2', '\x2', '\x2', '\x16E', '\x16F', + '\x3', '\x2', '\x2', '\x2', '\x16F', '\x170', '\a', '>', '\x2', '\x2', + '\x170', '\x172', '\a', '\x5', '\x2', '\x2', '\x171', '\x173', '\x5', + 'P', ')', '\x2', '\x172', '\x171', '\x3', '\x2', '\x2', '\x2', '\x172', + '\x173', '\x3', '\x2', '\x2', '\x2', '\x173', '\x174', '\x3', '\x2', '\x2', + '\x2', '\x174', '\x188', '\a', '\x6', '\x2', '\x2', '\x175', '\x176', + '\a', '\x5', '\x2', '\x2', '\x176', '\x177', '\x5', '.', '\x18', '\x2', + '\x177', '\x178', '\a', '\x6', '\x2', '\x2', '\x178', '\x188', '\x3', + '\x2', '\x2', '\x2', '\x179', '\x17A', '\a', '\x5', '\x2', '\x2', '\x17A', + '\x17B', '\x5', '\x4', '\x3', '\x2', '\x17B', '\x17C', '\a', '\x6', '\x2', + '\x2', '\x17C', '\x188', '\x3', '\x2', '\x2', '\x2', '\x17D', '\x17E', + '\a', '\'', '\x2', '\x2', '\x17E', '\x17F', '\a', '\x5', '\x2', '\x2', + '\x17F', '\x180', '\x5', '\x4', '\x3', '\x2', '\x180', '\x181', '\a', + '\x6', '\x2', '\x2', '\x181', '\x188', '\x3', '\x2', '\x2', '\x2', '\x182', + '\x183', '\a', '\x1F', '\x2', '\x2', '\x183', '\x184', '\a', '\x5', '\x2', + '\x2', '\x184', '\x185', '\x5', '\x4', '\x3', '\x2', '\x185', '\x186', + '\a', '\x6', '\x2', '\x2', '\x186', '\x188', '\x3', '\x2', '\x2', '\x2', + '\x187', '\x15D', '\x3', '\x2', '\x2', '\x2', '\x187', '\x15F', '\x3', + '\x2', '\x2', '\x2', '\x187', '\x160', '\x3', '\x2', '\x2', '\x2', '\x187', + '\x161', '\x3', '\x2', '\x2', '\x2', '\x187', '\x166', '\x3', '\x2', '\x2', + '\x2', '\x187', '\x16D', '\x3', '\x2', '\x2', '\x2', '\x187', '\x175', + '\x3', '\x2', '\x2', '\x2', '\x187', '\x179', '\x3', '\x2', '\x2', '\x2', + '\x187', '\x17D', '\x3', '\x2', '\x2', '\x2', '\x187', '\x182', '\x3', + '\x2', '\x2', '\x2', '\x188', '\x193', '\x3', '\x2', '\x2', '\x2', '\x189', + '\x18A', '\f', '\x6', '\x2', '\x2', '\x18A', '\x18B', '\a', '\a', '\x2', + '\x2', '\x18B', '\x192', '\a', '>', '\x2', '\x2', '\x18C', '\x18D', '\f', + '\x5', '\x2', '\x2', '\x18D', '\x18E', '\a', '\b', '\x2', '\x2', '\x18E', + '\x18F', '\x5', '.', '\x18', '\x2', '\x18F', '\x190', '\a', '\t', '\x2', + '\x2', '\x190', '\x192', '\x3', '\x2', '\x2', '\x2', '\x191', '\x189', + '\x3', '\x2', '\x2', '\x2', '\x191', '\x18C', '\x3', '\x2', '\x2', '\x2', + '\x192', '\x195', '\x3', '\x2', '\x2', '\x2', '\x193', '\x191', '\x3', + '\x2', '\x2', '\x2', '\x193', '\x194', '\x3', '\x2', '\x2', '\x2', '\x194', + 'O', '\x3', '\x2', '\x2', '\x2', '\x195', '\x193', '\x3', '\x2', '\x2', + '\x2', '\x196', '\x19B', '\x5', '.', '\x18', '\x2', '\x197', '\x198', + '\a', '\x4', '\x2', '\x2', '\x198', '\x19A', '\x5', '.', '\x18', '\x2', + '\x199', '\x197', '\x3', '\x2', '\x2', '\x2', '\x19A', '\x19D', '\x3', + '\x2', '\x2', '\x2', '\x19B', '\x199', '\x3', '\x2', '\x2', '\x2', '\x19B', + '\x19C', '\x3', '\x2', '\x2', '\x2', '\x19C', 'Q', '\x3', '\x2', '\x2', + '\x2', '\x19D', '\x19B', '\x3', '\x2', '\x2', '\x2', '\x19E', '\x1A3', + '\x5', 'T', '+', '\x2', '\x19F', '\x1A0', '\a', '\x4', '\x2', '\x2', '\x1A0', + '\x1A2', '\x5', 'T', '+', '\x2', '\x1A1', '\x19F', '\x3', '\x2', '\x2', + '\x2', '\x1A2', '\x1A5', '\x3', '\x2', '\x2', '\x2', '\x1A3', '\x1A1', + '\x3', '\x2', '\x2', '\x2', '\x1A3', '\x1A4', '\x3', '\x2', '\x2', '\x2', + '\x1A4', 'S', '\x3', '\x2', '\x2', '\x2', '\x1A5', '\x1A3', '\x3', '\x2', + '\x2', '\x2', '\x1A6', '\x1A7', '\a', '=', '\x2', '\x2', '\x1A7', '\x1A8', + '\a', '\v', '\x2', '\x2', '\x1A8', '\x1A9', '\x5', '.', '\x18', '\x2', + '\x1A9', 'U', '\x3', '\x2', '\x2', '\x2', '\x1AA', '\x1AB', '\t', '\t', + '\x2', '\x2', '\x1AB', 'W', '\x3', '\x2', '\x2', '\x2', ')', ']', '`', + '\x63', '\x66', 'i', 'm', 'p', 'z', '\x86', '\x8C', '\x95', '\x9A', '\xA1', + '\xA6', '\xAC', '\xBA', '\xBC', '\xCF', '\xD4', '\xE5', '\xEC', '\xF7', + '\xF9', '\xFF', '\x103', '\x10C', '\x115', '\x140', '\x142', '\x159', + '\x163', '\x168', '\x16D', '\x172', '\x187', '\x191', '\x193', '\x19B', + '\x1A3', + }; + + public static readonly ATN _ATN = + new ATNDeserializer().Deserialize(_serializedATN); } diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/SqlFunctionCallScalarExpression.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/SqlFunctionCallScalarExpression.cs index 321c726db0..cee0fc7a4a 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/SqlFunctionCallScalarExpression.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/SqlFunctionCallScalarExpression.cs @@ -1,488 +1,512 @@ -//------------------------------------------------------------ -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------ -namespace Microsoft.Azure.Cosmos.SqlObjects -{ - using System; - using System.Collections.Generic; - using System.Collections.Immutable; - using Microsoft.Azure.Cosmos.SqlObjects.Visitors; - -#if INTERNAL -#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member -#pragma warning disable SA1600 // Elements should be documented - public -#else - internal -#endif - sealed class SqlFunctionCallScalarExpression : SqlScalarExpression - { - private static readonly ImmutableDictionary FunctionIdentifiers = new Dictionary(StringComparer.OrdinalIgnoreCase) - { - { Names.InternalCompareBsonBinaryData, Identifiers.InternalCompareBsonBinaryData }, - { Names.InternalCompareObjects, Identifiers.InternalCompareObjects }, - { Names.InternalEvalEq, Identifiers.InternalEvalEq }, - { Names.InternalEvalGt, Identifiers.InternalEvalGt }, - { Names.InternalEvalGte, Identifiers.InternalEvalGte }, - { Names.InternalEvalIn, Identifiers.InternalEvalIn }, - { Names.InternalEvalLt, Identifiers.InternalEvalLt }, - { Names.InternalEvalLte, Identifiers.InternalEvalLte }, - { Names.InternalEvalNeq, Identifiers.InternalEvalNeq }, - { Names.InternalEvalNin, Identifiers.InternalEvalNin }, - { Names.InternalObjectToArray, Identifiers.InternalObjectToArray }, - { Names.InternalProxyProjection, Identifiers.InternalProxyProjection }, - { Names.InternalRegexMatch, Identifiers.InternalRegexMatch }, - { Names.InternalStDistance, Identifiers.InternalStDistance }, - { Names.InternalStIntersects, Identifiers.InternalStIntersects }, - { Names.InternalStWithin, Identifiers.InternalStWithin }, - { Names.InternalTryArrayContains, Identifiers.InternalTryArrayContains }, - { Names.Abs, Identifiers.Abs }, - { Names.Acos, Identifiers.Acos }, - { Names.All, Identifiers.All }, - { Names.Any, Identifiers.Any }, - { Names.Array, Identifiers.Array }, - { Names.ArrayConcat, Identifiers.ArrayConcat }, - { Names.ArrayContains, Identifiers.ArrayContains }, - { Names.ArrayLength, Identifiers.ArrayLength }, - { Names.ArraySlice, Identifiers.ArraySlice }, - { Names.Asin, Identifiers.Asin }, - { Names.Atan, Identifiers.Atan }, - { Names.Atn2, Identifiers.Atn2 }, - { Names.Avg, Identifiers.Avg }, - { Names.Binary, Identifiers.Binary }, - { Names.Float32, Identifiers.Float32 }, - { Names.Float64, Identifiers.Float64 }, - { Names.Guid, Identifiers.Guid }, - { Names.Int16, Identifiers.Int16 }, - { Names.Int32, Identifiers.Int32 }, - { Names.Int64, Identifiers.Int64 }, - { Names.Int8, Identifiers.Int8 }, - { Names.List, Identifiers.List }, - { Names.ListContains, Identifiers.ListContains }, - { Names.Map, Identifiers.Map }, - { Names.MapContains, Identifiers.MapContains }, - { Names.MapContainsKey, Identifiers.MapContainsKey }, - { Names.MapContainsValue, Identifiers.MapContainsValue }, - { Names.Set, Identifiers.Set }, - { Names.SetContains, Identifiers.SetContains }, - { Names.Tuple, Identifiers.Tuple }, - { Names.Udt, Identifiers.Udt }, - { Names.UInt32, Identifiers.UInt32 }, - { Names.Ceiling, Identifiers.Ceiling }, - { Names.Concat, Identifiers.Concat }, - { Names.Contains, Identifiers.Contains }, - { Names.Cos, Identifiers.Cos }, - { Names.Cot, Identifiers.Cot }, - { Names.Count, Identifiers.Count }, - { Names.DateTimeAdd, Identifiers.DateTimeAdd }, - { Names.DateTimeDiff, Identifiers.DateTimeDiff }, - { Names.DateTimeFromParts, Identifiers.DateTimeFromParts }, - { Names.DateTimePart, Identifiers.DateTimePart }, - { Names.DateTimeToTicks, Identifiers.DateTimeToTicks }, - { Names.DateTimeToTimestamp, Identifiers.DateTimeToTimestamp }, - { Names.Degrees, Identifiers.Degrees }, - { Names.Documentid, Identifiers.Documentid }, - { Names.Endswith, Identifiers.Endswith }, - { Names.Exp, Identifiers.Exp }, - { Names.Floor, Identifiers.Floor }, - { Names.GetCurrentDateTime, Identifiers.GetCurrentDateTime }, - { Names.GetCurrentTicks, Identifiers.GetCurrentTicks }, - { Names.GetCurrentTimestamp, Identifiers.GetCurrentTimestamp }, - { Names.IndexOf, Identifiers.IndexOf }, - { Names.IsArray, Identifiers.IsArray }, - { Names.IsBool, Identifiers.IsBool }, - { Names.IsDefined, Identifiers.IsDefined }, - { Names.IsFiniteNumber, Identifiers.IsFiniteNumber }, - { Names.IsNull, Identifiers.IsNull }, - { Names.IsNumber, Identifiers.IsNumber }, - { Names.IsObject, Identifiers.IsObject }, - { Names.IsPrimitive, Identifiers.IsPrimitive }, - { Names.IsString, Identifiers.IsString }, - { Names.Left, Identifiers.Left }, - { Names.Length, Identifiers.Length }, - { Names.Like, Identifiers.Like }, - { Names.Log, Identifiers.Log }, - { Names.Log10, Identifiers.Log10 }, - { Names.Lower, Identifiers.Lower }, - { Names.Ltrim, Identifiers.Ltrim }, - { Names.Max, Identifiers.Max }, - { Names.Min, Identifiers.Min }, - { Names.ObjectToArray, Identifiers.ObjectToArray }, - { Names.Pi, Identifiers.Pi }, - { Names.Power, Identifiers.Power }, - { Names.Radians, Identifiers.Radians }, - { Names.Rand, Identifiers.Rand }, - { Names.Replace, Identifiers.Replace }, - { Names.Replicate, Identifiers.Replicate }, - { Names.Reverse, Identifiers.Reverse }, - { Names.Right, Identifiers.Right }, - { Names.Round, Identifiers.Round }, - { Names.Rtrim, Identifiers.Rtrim }, - { Names.Sign, Identifiers.Sign }, - { Names.Sin, Identifiers.Sin }, - { Names.Sqrt, Identifiers.Sqrt }, - { Names.Square, Identifiers.Square }, - { Names.Startswith, Identifiers.Startswith }, - { Names.StDistance, Identifiers.StDistance }, - { Names.StIntersects, Identifiers.StIntersects }, - { Names.StIsvalid, Identifiers.StIsvalid }, - { Names.StIsvaliddetailed, Identifiers.StIsvaliddetailed }, - { Names.StWithin, Identifiers.StWithin }, - { Names.StringEquals, Identifiers.StringEquals }, - { Names.StringToArray, Identifiers.StringToArray }, - { Names.StringToBoolean, Identifiers.StringToBoolean }, - { Names.StringToNull, Identifiers.StringToNull }, - { Names.StringToNumber, Identifiers.StringToNumber }, - { Names.StringToObject, Identifiers.StringToObject }, - { Names.Substring, Identifiers.Substring }, - { Names.Sum, Identifiers.Sum }, - { Names.Tan, Identifiers.Tan }, - { Names.TicksToDateTime, Identifiers.TicksToDateTime }, - { Names.TimestampToDateTime, Identifiers.TimestampToDateTime }, - { Names.ToString, Identifiers.ToString }, - { Names.Trim, Identifiers.Trim }, - { Names.Trunc, Identifiers.Trunc }, - { Names.Upper, Identifiers.Upper }, - }.ToImmutableDictionary(); - - private SqlFunctionCallScalarExpression( - SqlIdentifier name, - bool isUdf, - ImmutableArray arguments) - { - foreach (SqlScalarExpression argument in arguments) - { - if (argument == null) - { - throw new ArgumentNullException($"{nameof(arguments)} must not have null items."); - } - } - - this.Arguments = arguments; - this.Name = name ?? throw new ArgumentNullException(nameof(name)); - this.IsUdf = isUdf; - } - - public SqlIdentifier Name { get; } - - public ImmutableArray Arguments { get; } - - public bool IsUdf { get; } - - public static SqlFunctionCallScalarExpression Create( - SqlIdentifier name, - bool isUdf, - params SqlScalarExpression[] arguments) => new SqlFunctionCallScalarExpression(name, isUdf, arguments.ToImmutableArray()); - - public static SqlFunctionCallScalarExpression Create( - SqlIdentifier name, - bool isUdf, - ImmutableArray arguments) => new SqlFunctionCallScalarExpression(name, isUdf, arguments); - - public static SqlFunctionCallScalarExpression Create( - string name, - bool isUdf, - params SqlScalarExpression[] arguments) => SqlFunctionCallScalarExpression.Create(name, isUdf, arguments.ToImmutableArray()); - - public static SqlFunctionCallScalarExpression Create( - string name, - bool isUdf, - ImmutableArray arguments) - { - if (!SqlFunctionCallScalarExpression.FunctionIdentifiers.TryGetValue(name, out SqlIdentifier sqlIdentifier)) - { - sqlIdentifier = SqlIdentifier.Create(name); - } - - return SqlFunctionCallScalarExpression.Create(sqlIdentifier, isUdf, arguments); - } - - public static SqlFunctionCallScalarExpression CreateBuiltin( - string name, - params SqlScalarExpression[] arguments) => SqlFunctionCallScalarExpression.Create(name, isUdf: false, arguments); - - public static SqlFunctionCallScalarExpression CreateBuiltin( - string name, - ImmutableArray arguments) => SqlFunctionCallScalarExpression.Create(name, isUdf: false, arguments); - - public static SqlFunctionCallScalarExpression CreateBuiltin( - SqlIdentifier name, - params SqlScalarExpression[] arguments) => SqlFunctionCallScalarExpression.Create(name, isUdf: false, arguments); - - public static SqlFunctionCallScalarExpression CreateBuiltin( - SqlIdentifier name, - ImmutableArray arguments) => SqlFunctionCallScalarExpression.Create(name, isUdf: false, arguments); - - public override void Accept(SqlObjectVisitor visitor) => visitor.Visit(this); - - public override TResult Accept(SqlObjectVisitor visitor) => visitor.Visit(this); - - public override TResult Accept(SqlObjectVisitor visitor, T input) => visitor.Visit(this, input); - - public override void Accept(SqlScalarExpressionVisitor visitor) => visitor.Visit(this); - - public override TResult Accept(SqlScalarExpressionVisitor visitor) => visitor.Visit(this); - - public override TResult Accept(SqlScalarExpressionVisitor visitor, T input) => visitor.Visit(this, input); - - public static class Names - { - public const string InternalCompareBsonBinaryData = "_COMPARE_BSON_BINARYDATA"; - public const string InternalCompareObjects = "_COMPARE_OBJECTS"; - public const string InternalEvalEq = "_M_EVAL_EQ"; - public const string InternalEvalGt = "_M_EVAL_GT"; - public const string InternalEvalGte = "_M_EVAL_GTE"; - public const string InternalEvalIn = "_M_EVAL_IN"; - public const string InternalEvalLt = "_M_EVAL_LT"; - public const string InternalEvalLte = "_M_EVAL_LTE"; - public const string InternalEvalNeq = "_M_EVAL_NEQ"; - public const string InternalEvalNin = "_M_EVAL_NIN"; - public const string InternalObjectToArray = "_ObjectToArray"; - public const string InternalProxyProjection = "_PROXY_PROJECTION"; - public const string InternalRegexMatch = "_REGEX_MATCH"; - public const string InternalStDistance = "_ST_DISTANCE"; - public const string InternalStIntersects = "_ST_INTERSECTS"; - public const string InternalStWithin = "_ST_WITHIN"; - public const string InternalTryArrayContains = "_TRY_ARRAY_CONTAINS"; - public const string Abs = "ABS"; - public const string Acos = "ACOS"; - public const string All = "ALL"; - public const string Any = "ANY"; - public const string Array = "ARRAY"; - public const string ArrayConcat = "ARRAY_CONCAT"; - public const string ArrayContains = "ARRAY_CONTAINS"; - public const string ArrayLength = "ARRAY_LENGTH"; - public const string ArraySlice = "ARRAY_SLICE"; - public const string Asin = "ASIN"; - public const string Atan = "ATAN"; - public const string Atn2 = "ATN2"; - public const string Avg = "AVG"; - public const string Binary = "C_BINARY"; - public const string Float32 = "C_FLOAT32"; - public const string Float64 = "C_FLOAT64"; - public const string Guid = "C_GUID"; - public const string Int16 = "C_INT16"; - public const string Int32 = "C_INT32"; - public const string Int64 = "C_INT64"; - public const string Int8 = "C_INT8"; - public const string List = "C_LIST"; - public const string ListContains = "C_LISTCONTAINS"; - public const string Map = "C_MAP"; - public const string MapContains = "C_MAPCONTAINS"; - public const string MapContainsKey = "C_MAPCONTAINSKEY"; - public const string MapContainsValue = "C_MAPCONTAINSVALUE"; - public const string Set = "C_SET"; - public const string SetContains = "C_SETCONTAINS"; - public const string Tuple = "C_TUPLE"; - public const string Udt = "C_UDT"; - public const string UInt32 = "C_UINT32"; - public const string Ceiling = "CEILING"; - public const string Concat = "CONCAT"; - public const string Contains = "CONTAINS"; - public const string Cos = "COS"; - public const string Cot = "COT"; - public const string Count = "COUNT"; - public const string DateTimeAdd = "DateTimeAdd"; - public const string DateTimeDiff = "DateTimeDiff"; - public const string DateTimeFromParts = "DateTimeFromParts"; - public const string DateTimePart = "DateTimePart"; - public const string DateTimeToTicks = "DateTimeToTicks"; - public const string DateTimeToTimestamp = "DateTimeToTimestamp"; - public const string Degrees = "DEGREES"; - public const string Documentid = "DOCUMENTID"; - public const string Endswith = "ENDSWITH"; - public const string Exp = "EXP"; - public const string Floor = "FLOOR"; - public const string GetCurrentDateTime = "GetCurrentDateTime"; - public const string GetCurrentTicks = "GetCurrentTicks"; - public const string GetCurrentTimestamp = "GetCurrentTimestamp"; - public const string IndexOf = "INDEX_OF"; - public const string IsArray = "IS_ARRAY"; - public const string IsBool = "IS_BOOL"; - public const string IsDefined = "IS_DEFINED"; - public const string IsFiniteNumber = "IS_FINITE_NUMBER"; - public const string IsNull = "IS_NULL"; - public const string IsNumber = "IS_NUMBER"; - public const string IsObject = "IS_OBJECT"; - public const string IsPrimitive = "IS_PRIMITIVE"; - public const string IsString = "IS_STRING"; - public const string Left = "LEFT"; - public const string Length = "LENGTH"; - public const string Like = "LIKE"; - public const string Log = "LOG"; - public const string Log10 = "LOG10"; - public const string Lower = "LOWER"; - public const string Ltrim = "LTRIM"; - public const string Max = "MAX"; - public const string Min = "MIN"; - public const string ObjectToArray = "ObjectToArray"; - public const string Pi = "PI"; - public const string Power = "POWER"; - public const string Radians = "RADIANS"; - public const string Rand = "RAND"; - public const string Replace = "REPLACE"; - public const string Replicate = "REPLICATE"; - public const string Reverse = "REVERSE"; - public const string Right = "RIGHT"; - public const string Round = "ROUND"; - public const string Rtrim = "RTRIM"; - public const string Sign = "SIGN"; - public const string Sin = "SIN"; - public const string Sqrt = "SQRT"; - public const string Square = "SQUARE"; - public const string Startswith = "STARTSWITH"; - public const string StDistance = "ST_DISTANCE"; - public const string StIntersects = "ST_INTERSECTS"; - public const string StIsvalid = "ST_ISVALID"; - public const string StIsvaliddetailed = "ST_ISVALIDDETAILED"; - public const string StWithin = "ST_WITHIN"; - public const string StringEquals = "StringEquals"; - public const string StringToArray = "StringToArray"; - public const string StringToBoolean = "StringToBoolean"; - public const string StringToNull = "StringToNull"; - public const string StringToNumber = "StringToNumber"; - public const string StringToObject = "StringToObject"; - public const string Substring = "SUBSTRING"; - public const string Sum = "SUM"; +//------------------------------------------------------------ +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------ +namespace Microsoft.Azure.Cosmos.SqlObjects +{ + using System; + using System.Collections.Generic; + using System.Collections.Immutable; + using Microsoft.Azure.Cosmos.SqlObjects.Visitors; + +#if INTERNAL +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +#pragma warning disable SA1600 // Elements should be documented + public +#else + internal +#endif + sealed class SqlFunctionCallScalarExpression : SqlScalarExpression + { + private static readonly ImmutableDictionary FunctionIdentifiers = new Dictionary(StringComparer.OrdinalIgnoreCase) + { + { Names.InternalCompareBsonBinaryData, Identifiers.InternalCompareBsonBinaryData }, + { Names.InternalCompareObjects, Identifiers.InternalCompareObjects }, + { Names.InternalEvalEq, Identifiers.InternalEvalEq }, + { Names.InternalEvalGt, Identifiers.InternalEvalGt }, + { Names.InternalEvalGte, Identifiers.InternalEvalGte }, + { Names.InternalEvalIn, Identifiers.InternalEvalIn }, + { Names.InternalEvalLt, Identifiers.InternalEvalLt }, + { Names.InternalEvalLte, Identifiers.InternalEvalLte }, + { Names.InternalEvalNeq, Identifiers.InternalEvalNeq }, + { Names.InternalEvalNin, Identifiers.InternalEvalNin }, + { Names.InternalObjectToArray, Identifiers.InternalObjectToArray }, + { Names.InternalProxyProjection, Identifiers.InternalProxyProjection }, + { Names.InternalRegexMatch, Identifiers.InternalRegexMatch }, + { Names.InternalStDistance, Identifiers.InternalStDistance }, + { Names.InternalStIntersects, Identifiers.InternalStIntersects }, + { Names.InternalStWithin, Identifiers.InternalStWithin }, + { Names.InternalTryArrayContains, Identifiers.InternalTryArrayContains }, + { Names.Abs, Identifiers.Abs }, + { Names.Acos, Identifiers.Acos }, + { Names.All, Identifiers.All }, + { Names.Any, Identifiers.Any }, + { Names.Array, Identifiers.Array }, + { Names.ArrayConcat, Identifiers.ArrayConcat }, + { Names.ArrayContains, Identifiers.ArrayContains }, + { Names.ArrayLength, Identifiers.ArrayLength }, + { Names.ArraySlice, Identifiers.ArraySlice }, + { Names.Asin, Identifiers.Asin }, + { Names.Atan, Identifiers.Atan }, + { Names.Atn2, Identifiers.Atn2 }, + { Names.Avg, Identifiers.Avg }, + { Names.Binary, Identifiers.Binary }, + { Names.Float32, Identifiers.Float32 }, + { Names.Float64, Identifiers.Float64 }, + { Names.Guid, Identifiers.Guid }, + { Names.Int16, Identifiers.Int16 }, + { Names.Int32, Identifiers.Int32 }, + { Names.Int64, Identifiers.Int64 }, + { Names.Int8, Identifiers.Int8 }, + { Names.List, Identifiers.List }, + { Names.ListContains, Identifiers.ListContains }, + { Names.Map, Identifiers.Map }, + { Names.MapContains, Identifiers.MapContains }, + { Names.MapContainsKey, Identifiers.MapContainsKey }, + { Names.MapContainsValue, Identifiers.MapContainsValue }, + { Names.Set, Identifiers.Set }, + { Names.SetContains, Identifiers.SetContains }, + { Names.Tuple, Identifiers.Tuple }, + { Names.Udt, Identifiers.Udt }, + { Names.UInt32, Identifiers.UInt32 }, + { Names.Ceiling, Identifiers.Ceiling }, + { Names.Concat, Identifiers.Concat }, + { Names.Contains, Identifiers.Contains }, + { Names.Cos, Identifiers.Cos }, + { Names.Cot, Identifiers.Cot }, + { Names.Count, Identifiers.Count }, + { Names.DateTimeAdd, Identifiers.DateTimeAdd }, + { Names.DateTimeDiff, Identifiers.DateTimeDiff }, + { Names.DateTimeFromParts, Identifiers.DateTimeFromParts }, + { Names.DateTimePart, Identifiers.DateTimePart }, + { Names.DateTimeToTicks, Identifiers.DateTimeToTicks }, + { Names.DateTimeToTimestamp, Identifiers.DateTimeToTimestamp }, + { Names.Degrees, Identifiers.Degrees }, + { Names.Documentid, Identifiers.Documentid }, + { Names.Endswith, Identifiers.Endswith }, + { Names.Exp, Identifiers.Exp }, + { Names.Floor, Identifiers.Floor }, + { Names.GetCurrentDateTime, Identifiers.GetCurrentDateTime }, + { Names.GetCurrentTicks, Identifiers.GetCurrentTicks }, + { Names.GetCurrentTimestamp, Identifiers.GetCurrentTimestamp }, + { Names.IndexOf, Identifiers.IndexOf }, + { Names.IsArray, Identifiers.IsArray }, + { Names.IsBool, Identifiers.IsBool }, + { Names.IsDefined, Identifiers.IsDefined }, + { Names.IsFiniteNumber, Identifiers.IsFiniteNumber }, + { Names.IsNull, Identifiers.IsNull }, + { Names.IsNumber, Identifiers.IsNumber }, + { Names.IsObject, Identifiers.IsObject }, + { Names.IsPrimitive, Identifiers.IsPrimitive }, + { Names.IsString, Identifiers.IsString }, + { Names.Left, Identifiers.Left }, + { Names.Length, Identifiers.Length }, + { Names.Like, Identifiers.Like }, + { Names.Log, Identifiers.Log }, + { Names.Log10, Identifiers.Log10 }, + { Names.Lower, Identifiers.Lower }, + { Names.Ltrim, Identifiers.Ltrim }, + { Names.Max, Identifiers.Max }, + { Names.Min, Identifiers.Min }, + { Names.ObjectToArray, Identifiers.ObjectToArray }, + { Names.Pi, Identifiers.Pi }, + { Names.Power, Identifiers.Power }, + { Names.Radians, Identifiers.Radians }, + { Names.Rand, Identifiers.Rand }, + { Names.Replace, Identifiers.Replace }, + { Names.Replicate, Identifiers.Replicate }, + { Names.Reverse, Identifiers.Reverse }, + { Names.Right, Identifiers.Right }, + { Names.Round, Identifiers.Round }, + { Names.Rtrim, Identifiers.Rtrim }, + { Names.Sign, Identifiers.Sign }, + { Names.Sin, Identifiers.Sin }, + { Names.Sqrt, Identifiers.Sqrt }, + { Names.Square, Identifiers.Square }, + { Names.Startswith, Identifiers.Startswith }, + { Names.StDistance, Identifiers.StDistance }, + { Names.StIntersects, Identifiers.StIntersects }, + { Names.StIsvalid, Identifiers.StIsvalid }, + { Names.StIsvaliddetailed, Identifiers.StIsvaliddetailed }, + { Names.StWithin, Identifiers.StWithin }, + { Names.StringEquals, Identifiers.StringEquals }, + { Names.StringToArray, Identifiers.StringToArray }, + { Names.StringToBoolean, Identifiers.StringToBoolean }, + { Names.StringToNull, Identifiers.StringToNull }, + { Names.StringToNumber, Identifiers.StringToNumber }, + { Names.StringToObject, Identifiers.StringToObject }, + { Names.Substring, Identifiers.Substring }, + { Names.Sum, Identifiers.Sum }, + { Names.Tan, Identifiers.Tan }, + { Names.TicksToDateTime, Identifiers.TicksToDateTime }, + { Names.TimestampToDateTime, Identifiers.TimestampToDateTime }, + { Names.ToString, Identifiers.ToString }, + { Names.Trim, Identifiers.Trim }, + { Names.Trunc, Identifiers.Trunc }, + { Names.Upper, Identifiers.Upper }, + }.ToImmutableDictionary(); + + private SqlFunctionCallScalarExpression( + SqlIdentifier name, + bool isUdf, + ImmutableArray arguments) + { + foreach (SqlScalarExpression argument in arguments) + { + if (argument == null) + { + throw new ArgumentNullException($"{nameof(arguments)} must not have null items."); + } + } + + this.Arguments = arguments; + this.Name = name ?? throw new ArgumentNullException(nameof(name)); + this.IsUdf = isUdf; + } + + public SqlIdentifier Name { get; } + + public ImmutableArray Arguments { get; } + + public bool IsUdf { get; } + + public static SqlFunctionCallScalarExpression Create( + SqlIdentifier name, + bool isUdf, + params SqlScalarExpression[] arguments) => new SqlFunctionCallScalarExpression(name, isUdf, arguments.ToImmutableArray()); + + public static SqlFunctionCallScalarExpression Create( + SqlIdentifier name, + bool isUdf, + ImmutableArray arguments) => new SqlFunctionCallScalarExpression(name, isUdf, arguments); + + public static SqlFunctionCallScalarExpression Create( + string name, + bool isUdf, + params SqlScalarExpression[] arguments) => SqlFunctionCallScalarExpression.Create(name, isUdf, arguments.ToImmutableArray()); + + public static SqlFunctionCallScalarExpression Create( + string name, + bool isUdf, + ImmutableArray arguments) + { + if (!SqlFunctionCallScalarExpression.FunctionIdentifiers.TryGetValue(name, out SqlIdentifier sqlIdentifier)) + { + sqlIdentifier = SqlIdentifier.Create(name); + } + + return SqlFunctionCallScalarExpression.Create(sqlIdentifier, isUdf, arguments); + } + + public static SqlFunctionCallScalarExpression CreateBuiltin( + string name, + params SqlScalarExpression[] arguments) => SqlFunctionCallScalarExpression.Create(name, isUdf: false, arguments); + + public static SqlFunctionCallScalarExpression CreateBuiltin( + string name, + ImmutableArray arguments) => SqlFunctionCallScalarExpression.Create(name, isUdf: false, arguments); + + public static SqlFunctionCallScalarExpression CreateBuiltin( + SqlIdentifier name, + params SqlScalarExpression[] arguments) => SqlFunctionCallScalarExpression.Create(name, isUdf: false, arguments); + + public static SqlFunctionCallScalarExpression CreateBuiltin( + SqlIdentifier name, + ImmutableArray arguments) => SqlFunctionCallScalarExpression.Create(name, isUdf: false, arguments); + + public override void Accept(SqlObjectVisitor visitor) => visitor.Visit(this); + + public override TResult Accept(SqlObjectVisitor visitor) => visitor.Visit(this); + + public override TResult Accept(SqlObjectVisitor visitor, T input) => visitor.Visit(this, input); + + public override void Accept(SqlScalarExpressionVisitor visitor) => visitor.Visit(this); + + public override TResult Accept(SqlScalarExpressionVisitor visitor) => visitor.Visit(this); + + public override TResult Accept(SqlScalarExpressionVisitor visitor, T input) => visitor.Visit(this, input); + + public static class Names + { + public const string InternalCompareBsonBinaryData = "_COMPARE_BSON_BINARYDATA"; + public const string InternalCompareObjects = "_COMPARE_OBJECTS"; + public const string InternalEvalEq = "_M_EVAL_EQ"; + public const string InternalEvalGt = "_M_EVAL_GT"; + public const string InternalEvalGte = "_M_EVAL_GTE"; + public const string InternalEvalIn = "_M_EVAL_IN"; + public const string InternalEvalLt = "_M_EVAL_LT"; + public const string InternalEvalLte = "_M_EVAL_LTE"; + public const string InternalEvalNeq = "_M_EVAL_NEQ"; + public const string InternalEvalNin = "_M_EVAL_NIN"; + public const string InternalObjectToArray = "_ObjectToArray"; + public const string InternalProxyProjection = "_PROXY_PROJECTION"; + public const string InternalRegexMatch = "_REGEX_MATCH"; + public const string InternalStDistance = "_ST_DISTANCE"; + public const string InternalStIntersects = "_ST_INTERSECTS"; + public const string InternalStWithin = "_ST_WITHIN"; + public const string InternalTryArrayContains = "_TRY_ARRAY_CONTAINS"; + public const string Abs = "ABS"; + public const string Acos = "ACOS"; + public const string All = "ALL"; + public const string Any = "ANY"; + public const string Array = "ARRAY"; + public const string ArrayConcat = "ARRAY_CONCAT"; + public const string ArrayContains = "ARRAY_CONTAINS"; + public const string ArrayLength = "ARRAY_LENGTH"; + public const string ArraySlice = "ARRAY_SLICE"; + public const string Asin = "ASIN"; + public const string Atan = "ATAN"; + public const string Atn2 = "ATN2"; + public const string Avg = "AVG"; + public const string Binary = "C_BINARY"; + public const string Float32 = "C_FLOAT32"; + public const string Float64 = "C_FLOAT64"; + public const string Guid = "C_GUID"; + public const string Int16 = "C_INT16"; + public const string Int32 = "C_INT32"; + public const string Int64 = "C_INT64"; + public const string Int8 = "C_INT8"; + public const string List = "C_LIST"; + public const string ListContains = "C_LISTCONTAINS"; + public const string Map = "C_MAP"; + public const string MapContains = "C_MAPCONTAINS"; + public const string MapContainsKey = "C_MAPCONTAINSKEY"; + public const string MapContainsValue = "C_MAPCONTAINSVALUE"; + public const string Set = "C_SET"; + public const string SetContains = "C_SETCONTAINS"; + public const string Tuple = "C_TUPLE"; + public const string Udt = "C_UDT"; + public const string UInt32 = "C_UINT32"; + public const string Ceiling = "CEILING"; + public const string Concat = "CONCAT"; + public const string Contains = "CONTAINS"; + public const string Cos = "COS"; + public const string Cot = "COT"; + public const string Count = "COUNT"; + public const string DateTimeAdd = "DateTimeAdd"; + public const string DateTimeDiff = "DateTimeDiff"; + public const string DateTimeFromParts = "DateTimeFromParts"; + public const string DateTimePart = "DateTimePart"; + public const string DateTimeToTicks = "DateTimeToTicks"; + public const string DateTimeToTimestamp = "DateTimeToTimestamp"; + public const string Degrees = "DEGREES"; + public const string Documentid = "DOCUMENTID"; + public const string Endswith = "ENDSWITH"; + public const string Exp = "EXP"; + public const string Floor = "FLOOR"; + public const string GetCurrentDateTime = "GetCurrentDateTime"; + public const string GetCurrentTicks = "GetCurrentTicks"; + public const string GetCurrentTimestamp = "GetCurrentTimestamp"; + public const string IndexOf = "INDEX_OF"; + public const string IntAdd = "IntAdd"; + public const string IntBitwiseAnd = "IntBitwiseAnd"; + public const string IntBitwiseLeftShift = "IntBitwiseLeftShift"; + public const string IntBitwiseNot = "IntBitwiseNot"; + public const string IntBitwiseOr = "IntBitwiseOr"; + public const string IntBitwiseRightShift = "IntBitwiseRightShift"; + public const string IntBitwiseXor = "IntBitwiseXor"; + public const string IntDiv = "IntDiv"; + public const string IntMod = "IntMod"; + public const string IntMul = "IntMul"; + public const string IntSub = "IntSub"; + public const string IsArray = "IS_ARRAY"; + public const string IsBool = "IS_BOOL"; + public const string IsDefined = "IS_DEFINED"; + public const string IsFiniteNumber = "IS_FINITE_NUMBER"; + public const string IsInteger = "IS_INTEGER"; + public const string IsNull = "IS_NULL"; + public const string IsNumber = "IS_NUMBER"; + public const string IsObject = "IS_OBJECT"; + public const string IsPrimitive = "IS_PRIMITIVE"; + public const string IsString = "IS_STRING"; + public const string Left = "LEFT"; + public const string Length = "LENGTH"; + public const string Like = "LIKE"; + public const string Log = "LOG"; + public const string Log10 = "LOG10"; + public const string Lower = "LOWER"; + public const string Ltrim = "LTRIM"; + public const string Max = "MAX"; + public const string Min = "MIN"; + public const string ObjectToArray = "ObjectToArray"; + public const string Pi = "PI"; + public const string Power = "POWER"; + public const string Radians = "RADIANS"; + public const string Rand = "RAND"; + public const string Replace = "REPLACE"; + public const string Replicate = "REPLICATE"; + public const string Reverse = "REVERSE"; + public const string Right = "RIGHT"; + public const string Round = "ROUND"; + public const string Rtrim = "RTRIM"; + public const string Sign = "SIGN"; + public const string Sin = "SIN"; + public const string Sqrt = "SQRT"; + public const string Square = "SQUARE"; + public const string Startswith = "STARTSWITH"; + public const string StDistance = "ST_DISTANCE"; + public const string StIntersects = "ST_INTERSECTS"; + public const string StIsvalid = "ST_ISVALID"; + public const string StIsvaliddetailed = "ST_ISVALIDDETAILED"; + public const string StWithin = "ST_WITHIN"; + public const string StringEquals = "StringEquals"; + public const string StringToArray = "StringToArray"; + public const string StringToBoolean = "StringToBoolean"; + public const string StringToNull = "StringToNull"; + public const string StringToNumber = "StringToNumber"; + public const string StringToObject = "StringToObject"; + public const string Substring = "SUBSTRING"; + public const string Sum = "SUM"; public const string Tan = "TAN"; - public const string TicksToDateTime = "TicksToDateTime"; + public const string TicksToDateTime = "TicksToDateTime"; public const string TimestampToDateTime = "TimestampToDateTime"; #pragma warning disable CS0108 // Member hides inherited member; missing new keyword public const string ToString = "ToString"; #pragma warning restore CS0108 // Member hides inherited member; missing new keyword - public const string Trim = "TRIM"; - public const string Trunc = "TRUNC"; - public const string Upper = "UPPER"; - } - - public static class Identifiers - { - public static readonly SqlIdentifier InternalCompareBsonBinaryData = SqlIdentifier.Create(Names.InternalCompareBsonBinaryData); - public static readonly SqlIdentifier InternalCompareObjects = SqlIdentifier.Create(Names.InternalCompareObjects); - public static readonly SqlIdentifier InternalEvalEq = SqlIdentifier.Create(Names.InternalEvalEq); - public static readonly SqlIdentifier InternalEvalGt = SqlIdentifier.Create(Names.InternalEvalGt); - public static readonly SqlIdentifier InternalEvalGte = SqlIdentifier.Create(Names.InternalEvalGte); - public static readonly SqlIdentifier InternalEvalIn = SqlIdentifier.Create(Names.InternalEvalIn); - public static readonly SqlIdentifier InternalEvalLt = SqlIdentifier.Create(Names.InternalEvalLt); - public static readonly SqlIdentifier InternalEvalLte = SqlIdentifier.Create(Names.InternalEvalLte); - public static readonly SqlIdentifier InternalEvalNeq = SqlIdentifier.Create(Names.InternalEvalNeq); - public static readonly SqlIdentifier InternalEvalNin = SqlIdentifier.Create(Names.InternalEvalNin); - public static readonly SqlIdentifier InternalObjectToArray = SqlIdentifier.Create(Names.InternalObjectToArray); - public static readonly SqlIdentifier InternalProxyProjection = SqlIdentifier.Create(Names.InternalProxyProjection); - public static readonly SqlIdentifier InternalRegexMatch = SqlIdentifier.Create(Names.InternalRegexMatch); - public static readonly SqlIdentifier InternalStDistance = SqlIdentifier.Create(Names.InternalStDistance); - public static readonly SqlIdentifier InternalStIntersects = SqlIdentifier.Create(Names.InternalStIntersects); - public static readonly SqlIdentifier InternalStWithin = SqlIdentifier.Create(Names.InternalStWithin); - public static readonly SqlIdentifier InternalTryArrayContains = SqlIdentifier.Create(Names.InternalTryArrayContains); - public static readonly SqlIdentifier Abs = SqlIdentifier.Create(Names.Abs); - public static readonly SqlIdentifier Acos = SqlIdentifier.Create(Names.Acos); - public static readonly SqlIdentifier All = SqlIdentifier.Create(Names.All); - public static readonly SqlIdentifier Any = SqlIdentifier.Create(Names.Any); - public static readonly SqlIdentifier Array = SqlIdentifier.Create(Names.Array); - public static readonly SqlIdentifier ArrayConcat = SqlIdentifier.Create(Names.ArrayConcat); - public static readonly SqlIdentifier ArrayContains = SqlIdentifier.Create(Names.ArrayContains); - public static readonly SqlIdentifier ArrayLength = SqlIdentifier.Create(Names.ArrayLength); - public static readonly SqlIdentifier ArraySlice = SqlIdentifier.Create(Names.ArraySlice); - public static readonly SqlIdentifier Asin = SqlIdentifier.Create(Names.Asin); - public static readonly SqlIdentifier Atan = SqlIdentifier.Create(Names.Atan); - public static readonly SqlIdentifier Atn2 = SqlIdentifier.Create(Names.Atn2); - public static readonly SqlIdentifier Avg = SqlIdentifier.Create(Names.Avg); - public static readonly SqlIdentifier Binary = SqlIdentifier.Create(Names.Binary); - public static readonly SqlIdentifier Float32 = SqlIdentifier.Create(Names.Float32); - public static readonly SqlIdentifier Float64 = SqlIdentifier.Create(Names.Float64); - public static readonly SqlIdentifier Guid = SqlIdentifier.Create(Names.Guid); - public static readonly SqlIdentifier Int16 = SqlIdentifier.Create(Names.Int16); - public static readonly SqlIdentifier Int32 = SqlIdentifier.Create(Names.Int32); - public static readonly SqlIdentifier Int64 = SqlIdentifier.Create(Names.Int64); - public static readonly SqlIdentifier Int8 = SqlIdentifier.Create(Names.Int8); - public static readonly SqlIdentifier List = SqlIdentifier.Create(Names.List); - public static readonly SqlIdentifier ListContains = SqlIdentifier.Create(Names.ListContains); - public static readonly SqlIdentifier Map = SqlIdentifier.Create(Names.Map); - public static readonly SqlIdentifier MapContains = SqlIdentifier.Create(Names.MapContains); - public static readonly SqlIdentifier MapContainsKey = SqlIdentifier.Create(Names.MapContainsKey); - public static readonly SqlIdentifier MapContainsValue = SqlIdentifier.Create(Names.MapContainsValue); - public static readonly SqlIdentifier Set = SqlIdentifier.Create(Names.Set); - public static readonly SqlIdentifier SetContains = SqlIdentifier.Create(Names.SetContains); - public static readonly SqlIdentifier Tuple = SqlIdentifier.Create(Names.Tuple); - public static readonly SqlIdentifier Udt = SqlIdentifier.Create(Names.Udt); - public static readonly SqlIdentifier UInt32 = SqlIdentifier.Create(Names.UInt32); - public static readonly SqlIdentifier Ceiling = SqlIdentifier.Create(Names.Ceiling); - public static readonly SqlIdentifier Concat = SqlIdentifier.Create(Names.Concat); - public static readonly SqlIdentifier Contains = SqlIdentifier.Create(Names.Contains); - public static readonly SqlIdentifier Cos = SqlIdentifier.Create(Names.Cos); - public static readonly SqlIdentifier Cot = SqlIdentifier.Create(Names.Cot); - public static readonly SqlIdentifier Count = SqlIdentifier.Create(Names.Count); - public static readonly SqlIdentifier DateTimeAdd = SqlIdentifier.Create(Names.DateTimeAdd); - public static readonly SqlIdentifier DateTimeDiff = SqlIdentifier.Create(Names.DateTimeDiff); - public static readonly SqlIdentifier DateTimeFromParts = SqlIdentifier.Create(Names.DateTimeFromParts); - public static readonly SqlIdentifier DateTimePart = SqlIdentifier.Create(Names.DateTimePart); - public static readonly SqlIdentifier DateTimeToTicks = SqlIdentifier.Create(Names.DateTimeToTicks); - public static readonly SqlIdentifier DateTimeToTimestamp = SqlIdentifier.Create(Names.DateTimeToTimestamp); - public static readonly SqlIdentifier Degrees = SqlIdentifier.Create(Names.Degrees); - public static readonly SqlIdentifier Documentid = SqlIdentifier.Create(Names.Documentid); - public static readonly SqlIdentifier Endswith = SqlIdentifier.Create(Names.Endswith); - public static readonly SqlIdentifier Exp = SqlIdentifier.Create(Names.Exp); - public static readonly SqlIdentifier Floor = SqlIdentifier.Create(Names.Floor); - public static readonly SqlIdentifier GetCurrentDateTime = SqlIdentifier.Create(Names.GetCurrentDateTime); - public static readonly SqlIdentifier GetCurrentTicks = SqlIdentifier.Create(Names.GetCurrentTicks); - public static readonly SqlIdentifier GetCurrentTimestamp = SqlIdentifier.Create(Names.GetCurrentTimestamp); - public static readonly SqlIdentifier IndexOf = SqlIdentifier.Create(Names.IndexOf); - public static readonly SqlIdentifier IsArray = SqlIdentifier.Create(Names.IsArray); - public static readonly SqlIdentifier IsBool = SqlIdentifier.Create(Names.IsBool); - public static readonly SqlIdentifier IsDefined = SqlIdentifier.Create(Names.IsDefined); - public static readonly SqlIdentifier IsFiniteNumber = SqlIdentifier.Create(Names.IsFiniteNumber); - public static readonly SqlIdentifier IsNull = SqlIdentifier.Create(Names.IsNull); - public static readonly SqlIdentifier IsNumber = SqlIdentifier.Create(Names.IsNumber); - public static readonly SqlIdentifier IsObject = SqlIdentifier.Create(Names.IsObject); - public static readonly SqlIdentifier IsPrimitive = SqlIdentifier.Create(Names.IsPrimitive); - public static readonly SqlIdentifier IsString = SqlIdentifier.Create(Names.IsString); - public static readonly SqlIdentifier Left = SqlIdentifier.Create(Names.Left); - public static readonly SqlIdentifier Length = SqlIdentifier.Create(Names.Length); - public static readonly SqlIdentifier Like = SqlIdentifier.Create(Names.Like); - public static readonly SqlIdentifier Log = SqlIdentifier.Create(Names.Log); - public static readonly SqlIdentifier Log10 = SqlIdentifier.Create(Names.Log10); - public static readonly SqlIdentifier Lower = SqlIdentifier.Create(Names.Lower); - public static readonly SqlIdentifier Ltrim = SqlIdentifier.Create(Names.Ltrim); - public static readonly SqlIdentifier Max = SqlIdentifier.Create(Names.Max); - public static readonly SqlIdentifier Min = SqlIdentifier.Create(Names.Min); - public static readonly SqlIdentifier ObjectToArray = SqlIdentifier.Create(Names.ObjectToArray); - public static readonly SqlIdentifier Pi = SqlIdentifier.Create(Names.Pi); - public static readonly SqlIdentifier Power = SqlIdentifier.Create(Names.Power); - public static readonly SqlIdentifier Radians = SqlIdentifier.Create(Names.Radians); - public static readonly SqlIdentifier Rand = SqlIdentifier.Create(Names.Rand); - public static readonly SqlIdentifier Replace = SqlIdentifier.Create(Names.Replace); - public static readonly SqlIdentifier Replicate = SqlIdentifier.Create(Names.Replicate); - public static readonly SqlIdentifier Reverse = SqlIdentifier.Create(Names.Reverse); - public static readonly SqlIdentifier Right = SqlIdentifier.Create(Names.Right); - public static readonly SqlIdentifier Round = SqlIdentifier.Create(Names.Round); - public static readonly SqlIdentifier Rtrim = SqlIdentifier.Create(Names.Rtrim); - public static readonly SqlIdentifier Sign = SqlIdentifier.Create(Names.Sign); - public static readonly SqlIdentifier Sin = SqlIdentifier.Create(Names.Sin); - public static readonly SqlIdentifier Sqrt = SqlIdentifier.Create(Names.Sqrt); - public static readonly SqlIdentifier Square = SqlIdentifier.Create(Names.Square); - public static readonly SqlIdentifier Startswith = SqlIdentifier.Create(Names.Startswith); - public static readonly SqlIdentifier StDistance = SqlIdentifier.Create(Names.StDistance); - public static readonly SqlIdentifier StIntersects = SqlIdentifier.Create(Names.StIntersects); - public static readonly SqlIdentifier StIsvalid = SqlIdentifier.Create(Names.StIsvalid); - public static readonly SqlIdentifier StIsvaliddetailed = SqlIdentifier.Create(Names.StIsvaliddetailed); - public static readonly SqlIdentifier StWithin = SqlIdentifier.Create(Names.StWithin); - public static readonly SqlIdentifier StringEquals = SqlIdentifier.Create(Names.StringEquals); - public static readonly SqlIdentifier StringToArray = SqlIdentifier.Create(Names.StringToArray); - public static readonly SqlIdentifier StringToBoolean = SqlIdentifier.Create(Names.StringToBoolean); - public static readonly SqlIdentifier StringToNull = SqlIdentifier.Create(Names.StringToNull); - public static readonly SqlIdentifier StringToNumber = SqlIdentifier.Create(Names.StringToNumber); - public static readonly SqlIdentifier StringToObject = SqlIdentifier.Create(Names.StringToObject); - public static readonly SqlIdentifier Substring = SqlIdentifier.Create(Names.Substring); - public static readonly SqlIdentifier Sum = SqlIdentifier.Create(Names.Sum); + public const string Trim = "TRIM"; + public const string Trunc = "TRUNC"; + public const string Upper = "UPPER"; + } + + public static class Identifiers + { + public static readonly SqlIdentifier InternalCompareBsonBinaryData = SqlIdentifier.Create(Names.InternalCompareBsonBinaryData); + public static readonly SqlIdentifier InternalCompareObjects = SqlIdentifier.Create(Names.InternalCompareObjects); + public static readonly SqlIdentifier InternalEvalEq = SqlIdentifier.Create(Names.InternalEvalEq); + public static readonly SqlIdentifier InternalEvalGt = SqlIdentifier.Create(Names.InternalEvalGt); + public static readonly SqlIdentifier InternalEvalGte = SqlIdentifier.Create(Names.InternalEvalGte); + public static readonly SqlIdentifier InternalEvalIn = SqlIdentifier.Create(Names.InternalEvalIn); + public static readonly SqlIdentifier InternalEvalLt = SqlIdentifier.Create(Names.InternalEvalLt); + public static readonly SqlIdentifier InternalEvalLte = SqlIdentifier.Create(Names.InternalEvalLte); + public static readonly SqlIdentifier InternalEvalNeq = SqlIdentifier.Create(Names.InternalEvalNeq); + public static readonly SqlIdentifier InternalEvalNin = SqlIdentifier.Create(Names.InternalEvalNin); + public static readonly SqlIdentifier InternalObjectToArray = SqlIdentifier.Create(Names.InternalObjectToArray); + public static readonly SqlIdentifier InternalProxyProjection = SqlIdentifier.Create(Names.InternalProxyProjection); + public static readonly SqlIdentifier InternalRegexMatch = SqlIdentifier.Create(Names.InternalRegexMatch); + public static readonly SqlIdentifier InternalStDistance = SqlIdentifier.Create(Names.InternalStDistance); + public static readonly SqlIdentifier InternalStIntersects = SqlIdentifier.Create(Names.InternalStIntersects); + public static readonly SqlIdentifier InternalStWithin = SqlIdentifier.Create(Names.InternalStWithin); + public static readonly SqlIdentifier InternalTryArrayContains = SqlIdentifier.Create(Names.InternalTryArrayContains); + public static readonly SqlIdentifier Abs = SqlIdentifier.Create(Names.Abs); + public static readonly SqlIdentifier Acos = SqlIdentifier.Create(Names.Acos); + public static readonly SqlIdentifier All = SqlIdentifier.Create(Names.All); + public static readonly SqlIdentifier Any = SqlIdentifier.Create(Names.Any); + public static readonly SqlIdentifier Array = SqlIdentifier.Create(Names.Array); + public static readonly SqlIdentifier ArrayConcat = SqlIdentifier.Create(Names.ArrayConcat); + public static readonly SqlIdentifier ArrayContains = SqlIdentifier.Create(Names.ArrayContains); + public static readonly SqlIdentifier ArrayLength = SqlIdentifier.Create(Names.ArrayLength); + public static readonly SqlIdentifier ArraySlice = SqlIdentifier.Create(Names.ArraySlice); + public static readonly SqlIdentifier Asin = SqlIdentifier.Create(Names.Asin); + public static readonly SqlIdentifier Atan = SqlIdentifier.Create(Names.Atan); + public static readonly SqlIdentifier Atn2 = SqlIdentifier.Create(Names.Atn2); + public static readonly SqlIdentifier Avg = SqlIdentifier.Create(Names.Avg); + public static readonly SqlIdentifier Binary = SqlIdentifier.Create(Names.Binary); + public static readonly SqlIdentifier Float32 = SqlIdentifier.Create(Names.Float32); + public static readonly SqlIdentifier Float64 = SqlIdentifier.Create(Names.Float64); + public static readonly SqlIdentifier Guid = SqlIdentifier.Create(Names.Guid); + public static readonly SqlIdentifier Int16 = SqlIdentifier.Create(Names.Int16); + public static readonly SqlIdentifier Int32 = SqlIdentifier.Create(Names.Int32); + public static readonly SqlIdentifier Int64 = SqlIdentifier.Create(Names.Int64); + public static readonly SqlIdentifier Int8 = SqlIdentifier.Create(Names.Int8); + public static readonly SqlIdentifier List = SqlIdentifier.Create(Names.List); + public static readonly SqlIdentifier ListContains = SqlIdentifier.Create(Names.ListContains); + public static readonly SqlIdentifier Map = SqlIdentifier.Create(Names.Map); + public static readonly SqlIdentifier MapContains = SqlIdentifier.Create(Names.MapContains); + public static readonly SqlIdentifier MapContainsKey = SqlIdentifier.Create(Names.MapContainsKey); + public static readonly SqlIdentifier MapContainsValue = SqlIdentifier.Create(Names.MapContainsValue); + public static readonly SqlIdentifier Set = SqlIdentifier.Create(Names.Set); + public static readonly SqlIdentifier SetContains = SqlIdentifier.Create(Names.SetContains); + public static readonly SqlIdentifier Tuple = SqlIdentifier.Create(Names.Tuple); + public static readonly SqlIdentifier Udt = SqlIdentifier.Create(Names.Udt); + public static readonly SqlIdentifier UInt32 = SqlIdentifier.Create(Names.UInt32); + public static readonly SqlIdentifier Ceiling = SqlIdentifier.Create(Names.Ceiling); + public static readonly SqlIdentifier Concat = SqlIdentifier.Create(Names.Concat); + public static readonly SqlIdentifier Contains = SqlIdentifier.Create(Names.Contains); + public static readonly SqlIdentifier Cos = SqlIdentifier.Create(Names.Cos); + public static readonly SqlIdentifier Cot = SqlIdentifier.Create(Names.Cot); + public static readonly SqlIdentifier Count = SqlIdentifier.Create(Names.Count); + public static readonly SqlIdentifier DateTimeAdd = SqlIdentifier.Create(Names.DateTimeAdd); + public static readonly SqlIdentifier DateTimeDiff = SqlIdentifier.Create(Names.DateTimeDiff); + public static readonly SqlIdentifier DateTimeFromParts = SqlIdentifier.Create(Names.DateTimeFromParts); + public static readonly SqlIdentifier DateTimePart = SqlIdentifier.Create(Names.DateTimePart); + public static readonly SqlIdentifier DateTimeToTicks = SqlIdentifier.Create(Names.DateTimeToTicks); + public static readonly SqlIdentifier DateTimeToTimestamp = SqlIdentifier.Create(Names.DateTimeToTimestamp); + public static readonly SqlIdentifier Degrees = SqlIdentifier.Create(Names.Degrees); + public static readonly SqlIdentifier Documentid = SqlIdentifier.Create(Names.Documentid); + public static readonly SqlIdentifier Endswith = SqlIdentifier.Create(Names.Endswith); + public static readonly SqlIdentifier Exp = SqlIdentifier.Create(Names.Exp); + public static readonly SqlIdentifier Floor = SqlIdentifier.Create(Names.Floor); + public static readonly SqlIdentifier GetCurrentDateTime = SqlIdentifier.Create(Names.GetCurrentDateTime); + public static readonly SqlIdentifier GetCurrentTicks = SqlIdentifier.Create(Names.GetCurrentTicks); + public static readonly SqlIdentifier GetCurrentTimestamp = SqlIdentifier.Create(Names.GetCurrentTimestamp); + public static readonly SqlIdentifier IndexOf = SqlIdentifier.Create(Names.IndexOf); + public static readonly SqlIdentifier IntAdd = SqlIdentifier.Create(Names.IntAdd); + public static readonly SqlIdentifier IntBitwiseAnd = SqlIdentifier.Create(Names.IntBitwiseAnd); + public static readonly SqlIdentifier IntBitwiseLeftShift = SqlIdentifier.Create(Names.IntBitwiseLeftShift); + public static readonly SqlIdentifier IntBitwiseNot = SqlIdentifier.Create(Names.IntBitwiseNot); + public static readonly SqlIdentifier IntBitwiseOr = SqlIdentifier.Create(Names.IntBitwiseOr); + public static readonly SqlIdentifier IntBitwiseRightShift = SqlIdentifier.Create(Names.IntBitwiseRightShift); + public static readonly SqlIdentifier IntBitwiseXor = SqlIdentifier.Create(Names.IntBitwiseXor); + public static readonly SqlIdentifier IntDiv = SqlIdentifier.Create(Names.IntDiv); + public static readonly SqlIdentifier IntMod = SqlIdentifier.Create(Names.IntMod); + public static readonly SqlIdentifier IntMul = SqlIdentifier.Create(Names.IntMul); + public static readonly SqlIdentifier IntSub = SqlIdentifier.Create(Names.IntSub); + public static readonly SqlIdentifier IsArray = SqlIdentifier.Create(Names.IsArray); + public static readonly SqlIdentifier IsBool = SqlIdentifier.Create(Names.IsBool); + public static readonly SqlIdentifier IsDefined = SqlIdentifier.Create(Names.IsDefined); + public static readonly SqlIdentifier IsFiniteNumber = SqlIdentifier.Create(Names.IsFiniteNumber); + public static readonly SqlIdentifier IsInteger = SqlIdentifier.Create(Names.IsInteger); + public static readonly SqlIdentifier IsNull = SqlIdentifier.Create(Names.IsNull); + public static readonly SqlIdentifier IsNumber = SqlIdentifier.Create(Names.IsNumber); + public static readonly SqlIdentifier IsObject = SqlIdentifier.Create(Names.IsObject); + public static readonly SqlIdentifier IsPrimitive = SqlIdentifier.Create(Names.IsPrimitive); + public static readonly SqlIdentifier IsString = SqlIdentifier.Create(Names.IsString); + public static readonly SqlIdentifier Left = SqlIdentifier.Create(Names.Left); + public static readonly SqlIdentifier Length = SqlIdentifier.Create(Names.Length); + public static readonly SqlIdentifier Like = SqlIdentifier.Create(Names.Like); + public static readonly SqlIdentifier Log = SqlIdentifier.Create(Names.Log); + public static readonly SqlIdentifier Log10 = SqlIdentifier.Create(Names.Log10); + public static readonly SqlIdentifier Lower = SqlIdentifier.Create(Names.Lower); + public static readonly SqlIdentifier Ltrim = SqlIdentifier.Create(Names.Ltrim); + public static readonly SqlIdentifier Max = SqlIdentifier.Create(Names.Max); + public static readonly SqlIdentifier Min = SqlIdentifier.Create(Names.Min); + public static readonly SqlIdentifier ObjectToArray = SqlIdentifier.Create(Names.ObjectToArray); + public static readonly SqlIdentifier Pi = SqlIdentifier.Create(Names.Pi); + public static readonly SqlIdentifier Power = SqlIdentifier.Create(Names.Power); + public static readonly SqlIdentifier Radians = SqlIdentifier.Create(Names.Radians); + public static readonly SqlIdentifier Rand = SqlIdentifier.Create(Names.Rand); + public static readonly SqlIdentifier Replace = SqlIdentifier.Create(Names.Replace); + public static readonly SqlIdentifier Replicate = SqlIdentifier.Create(Names.Replicate); + public static readonly SqlIdentifier Reverse = SqlIdentifier.Create(Names.Reverse); + public static readonly SqlIdentifier Right = SqlIdentifier.Create(Names.Right); + public static readonly SqlIdentifier Round = SqlIdentifier.Create(Names.Round); + public static readonly SqlIdentifier Rtrim = SqlIdentifier.Create(Names.Rtrim); + public static readonly SqlIdentifier Sign = SqlIdentifier.Create(Names.Sign); + public static readonly SqlIdentifier Sin = SqlIdentifier.Create(Names.Sin); + public static readonly SqlIdentifier Sqrt = SqlIdentifier.Create(Names.Sqrt); + public static readonly SqlIdentifier Square = SqlIdentifier.Create(Names.Square); + public static readonly SqlIdentifier Startswith = SqlIdentifier.Create(Names.Startswith); + public static readonly SqlIdentifier StDistance = SqlIdentifier.Create(Names.StDistance); + public static readonly SqlIdentifier StIntersects = SqlIdentifier.Create(Names.StIntersects); + public static readonly SqlIdentifier StIsvalid = SqlIdentifier.Create(Names.StIsvalid); + public static readonly SqlIdentifier StIsvaliddetailed = SqlIdentifier.Create(Names.StIsvaliddetailed); + public static readonly SqlIdentifier StWithin = SqlIdentifier.Create(Names.StWithin); + public static readonly SqlIdentifier StringEquals = SqlIdentifier.Create(Names.StringEquals); + public static readonly SqlIdentifier StringToArray = SqlIdentifier.Create(Names.StringToArray); + public static readonly SqlIdentifier StringToBoolean = SqlIdentifier.Create(Names.StringToBoolean); + public static readonly SqlIdentifier StringToNull = SqlIdentifier.Create(Names.StringToNull); + public static readonly SqlIdentifier StringToNumber = SqlIdentifier.Create(Names.StringToNumber); + public static readonly SqlIdentifier StringToObject = SqlIdentifier.Create(Names.StringToObject); + public static readonly SqlIdentifier Substring = SqlIdentifier.Create(Names.Substring); + public static readonly SqlIdentifier Sum = SqlIdentifier.Create(Names.Sum); public static readonly SqlIdentifier Tan = SqlIdentifier.Create(Names.Tan); - public static readonly SqlIdentifier TicksToDateTime = SqlIdentifier.Create(Names.TicksToDateTime); + public static readonly SqlIdentifier TicksToDateTime = SqlIdentifier.Create(Names.TicksToDateTime); public static readonly SqlIdentifier TimestampToDateTime = SqlIdentifier.Create(Names.TimestampToDateTime); #pragma warning disable CS0108 // Member hides inherited member; missing new keyword public static readonly SqlIdentifier ToString = SqlIdentifier.Create(Names.ToString); #pragma warning restore CS0108 // Member hides inherited member; missing new keyword - public static readonly SqlIdentifier Trim = SqlIdentifier.Create(Names.Trim); - public static readonly SqlIdentifier Trunc = SqlIdentifier.Create(Names.Trunc); - public static readonly SqlIdentifier Upper = SqlIdentifier.Create(Names.Upper); - } - } -} + public static readonly SqlIdentifier Trim = SqlIdentifier.Create(Names.Trim); + public static readonly SqlIdentifier Trunc = SqlIdentifier.Create(Names.Trunc); + public static readonly SqlIdentifier Upper = SqlIdentifier.Create(Names.Upper); + } + } +} From 9d188224fa668f06fff360aba06e2ed08735172f Mon Sep 17 00:00:00 2001 From: Minh Le Date: Tue, 30 Mar 2021 13:56:23 -0700 Subject: [PATCH 03/15] make some grammar change --- .../src/Query/Core/Parser/CstToAstVisitor.cs | 14 +- .../src/Query/Core/Parser/sql.g4 | 7 +- .../src/Query/Core/Parser/sqlBaseVisitor.cs | 4 +- .../src/Query/Core/Parser/sqlParser.cs | 696 +++++++++--------- 4 files changed, 355 insertions(+), 366 deletions(-) diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs index a8baf912df..788da8e851 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs @@ -601,21 +601,15 @@ public override SqlObject VisitLike_scalar_expression([NotNull] sqlParser.Like_s SqlScalarExpression expression = (SqlScalarExpression)this.Visit(context.binary_scalar_expression()[0]); SqlScalarExpression pattern = (SqlScalarExpression)this.Visit(context.binary_scalar_expression()[1]); bool not = context.K_NOT() != null; - SqlStringLiteral escapeSequence = (SqlStringLiteral)this.Visit(context.opt_escape()); + SqlStringLiteral escapeSequence = (context.escape_expression() != null) ? (SqlStringLiteral)this.Visit(context.escape_expression()) : null; + return SqlLikeScalarExpression.Create(expression, pattern, not, escapeSequence); } - public override SqlObject VisitOpt_escape([NotNull] sqlParser.Opt_escapeContext context) { + public override SqlObject VisitEscape_expression([NotNull] sqlParser.Escape_expressionContext context) { Contract.Requires(context != null); - if (context.K_ESCAPE() == null) - { - return null; - } - else - { - return (SqlStringLiteral)this.Visit(context.STRING_LITERAL()); - } + return (SqlStringLiteral)this.Visit(context.STRING_LITERAL()); } public override SqlObject VisitLiteralScalarExpression([NotNull] sqlParser.LiteralScalarExpressionContext context) diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sql.g4 b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sql.g4 index 913e2ce80c..9257ded987 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sql.g4 +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sql.g4 @@ -96,12 +96,11 @@ in_scalar_expression ; like_scalar_expression - : binary_scalar_expression K_NOT? K_LIKE binary_scalar_expression opt_escape + : binary_scalar_expression K_NOT? K_LIKE binary_scalar_expression escape_expression? ; -opt_escape - : - | K_ESCAPE STRING_LITERAL +escape_expression + : K_ESCAPE STRING_LITERAL ; binary_scalar_expression diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlBaseVisitor.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlBaseVisitor.cs index 39a8b29a8f..47d267746a 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlBaseVisitor.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlBaseVisitor.cs @@ -397,7 +397,7 @@ public partial class sqlBaseVisitor : AbstractParseTreeVisitor, /// The visitor result. public virtual Result VisitLike_scalar_expression([NotNull] sqlParser.Like_scalar_expressionContext context) { return VisitChildren(context); } /// - /// Visit a parse tree produced by . + /// Visit a parse tree produced by . /// /// The default implementation returns the result of calling /// on . @@ -405,7 +405,7 @@ public partial class sqlBaseVisitor : AbstractParseTreeVisitor, /// /// The parse tree. /// The visitor result. - public virtual Result VisitOpt_escape([NotNull] sqlParser.Opt_escapeContext context) { return VisitChildren(context); } + public virtual Result VisitEscape_expression([NotNull] sqlParser.Escape_expressionContext context) { return VisitChildren(context); } /// /// Visit a parse tree produced by . /// diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlParser.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlParser.cs index 9edb4e0a59..2c60f1cee6 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlParser.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlParser.cs @@ -54,7 +54,7 @@ public const int RULE_order_by_items = 16, RULE_order_by_item = 17, RULE_sort_order = 18, RULE_offset_limit_clause = 19, RULE_offset_count = 20, RULE_limit_count = 21, RULE_scalar_expression = 22, RULE_logical_scalar_expression = 23, RULE_in_scalar_expression = 24, - RULE_like_scalar_expression = 25, RULE_opt_escape = 26, RULE_binary_scalar_expression = 27, + RULE_like_scalar_expression = 25, RULE_escape_expression = 26, RULE_binary_scalar_expression = 27, RULE_multiplicative_operator = 28, RULE_additive_operator = 29, RULE_relational_operator = 30, RULE_equality_operator = 31, RULE_bitwise_and_operator = 32, RULE_bitwise_exclusive_or_operator = 33, RULE_bitwise_inclusive_or_operator = 34, RULE_string_concat_operator = 35, @@ -68,11 +68,11 @@ public const int "group_by_clause", "order_by_clause", "order_by_items", "order_by_item", "sort_order", "offset_limit_clause", "offset_count", "limit_count", "scalar_expression", "logical_scalar_expression", "in_scalar_expression", "like_scalar_expression", - "opt_escape", "binary_scalar_expression", "multiplicative_operator", "additive_operator", - "relational_operator", "equality_operator", "bitwise_and_operator", "bitwise_exclusive_or_operator", - "bitwise_inclusive_or_operator", "string_concat_operator", "unary_scalar_expression", - "unary_operator", "primary_expression", "scalar_expression_list", "object_property_list", - "object_property", "literal" + "escape_expression", "binary_scalar_expression", "multiplicative_operator", + "additive_operator", "relational_operator", "equality_operator", "bitwise_and_operator", + "bitwise_exclusive_or_operator", "bitwise_inclusive_or_operator", "string_concat_operator", + "unary_scalar_expression", "unary_operator", "primary_expression", "scalar_expression_list", + "object_property_list", "object_property", "literal" }; private static readonly string[] _LiteralNames = { @@ -2014,10 +2014,10 @@ public Binary_scalar_expressionContext binary_scalar_expression(int i) { return GetRuleContext(i); } public ITerminalNode K_LIKE() { return GetToken(sqlParser.K_LIKE, 0); } - public Opt_escapeContext opt_escape() { - return GetRuleContext(0); - } public ITerminalNode K_NOT() { return GetToken(sqlParser.K_NOT, 0); } + public Escape_expressionContext escape_expression() { + return GetRuleContext(0); + } public Like_scalar_expressionContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { @@ -2058,7 +2058,15 @@ public Like_scalar_expressionContext like_scalar_expression() { State = 268; Match(K_LIKE); State = 269; binary_scalar_expression(0); - State = 270; opt_escape(); + State = 271; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,26,Context) ) { + case 1: + { + State = 270; escape_expression(); + } + break; + } } } catch (RecognitionException re) { @@ -2072,49 +2080,38 @@ public Like_scalar_expressionContext like_scalar_expression() { return _localctx; } - public partial class Opt_escapeContext : ParserRuleContext { + public partial class Escape_expressionContext : ParserRuleContext { public ITerminalNode K_ESCAPE() { return GetToken(sqlParser.K_ESCAPE, 0); } public ITerminalNode STRING_LITERAL() { return GetToken(sqlParser.STRING_LITERAL, 0); } - public Opt_escapeContext(ParserRuleContext parent, int invokingState) + public Escape_expressionContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { } - public override int RuleIndex { get { return RULE_opt_escape; } } + public override int RuleIndex { get { return RULE_escape_expression; } } public override void EnterRule(IParseTreeListener listener) { IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterOpt_escape(this); + if (typedListener != null) typedListener.EnterEscape_expression(this); } public override void ExitRule(IParseTreeListener listener) { IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitOpt_escape(this); + if (typedListener != null) typedListener.ExitEscape_expression(this); } public override TResult Accept(IParseTreeVisitor visitor) { IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitOpt_escape(this); + if (typedVisitor != null) return typedVisitor.VisitEscape_expression(this); else return visitor.VisitChildren(this); } } [RuleVersion(0)] - public Opt_escapeContext opt_escape() { - Opt_escapeContext _localctx = new Opt_escapeContext(Context, State); - EnterRule(_localctx, 52, RULE_opt_escape); + public Escape_expressionContext escape_expression() { + Escape_expressionContext _localctx = new Escape_expressionContext(Context, State); + EnterRule(_localctx, 52, RULE_escape_expression); try { - State = 275; - ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,26,Context) ) { - case 1: - EnterOuterAlt(_localctx, 1); - { - } - break; - case 2: - EnterOuterAlt(_localctx, 2); - { - State = 273; Match(K_ESCAPE); - State = 274; Match(STRING_LITERAL); - } - break; + EnterOuterAlt(_localctx, 1); + { + State = 273; Match(K_ESCAPE); + State = 274; Match(STRING_LITERAL); } } catch (RecognitionException re) { @@ -2201,10 +2198,10 @@ private Binary_scalar_expressionContext binary_scalar_expression(int _p) { EnterOuterAlt(_localctx, 1); { { - State = 278; unary_scalar_expression(); + State = 277; unary_scalar_expression(); } Context.Stop = TokenStream.LT(-1); - State = 320; + State = 319; ErrorHandler.Sync(this); _alt = Interpreter.AdaptivePredict(TokenStream,28,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { @@ -2213,113 +2210,113 @@ private Binary_scalar_expressionContext binary_scalar_expression(int _p) { TriggerExitRuleEvent(); _prevctx = _localctx; { - State = 318; + State = 317; ErrorHandler.Sync(this); switch ( Interpreter.AdaptivePredict(TokenStream,27,Context) ) { case 1: { _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 280; + State = 279; if (!(Precpred(Context, 10))) throw new FailedPredicateException(this, "Precpred(Context, 10)"); - State = 281; multiplicative_operator(); - State = 282; binary_scalar_expression(11); + State = 280; multiplicative_operator(); + State = 281; binary_scalar_expression(11); } break; case 2: { _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 284; + State = 283; if (!(Precpred(Context, 9))) throw new FailedPredicateException(this, "Precpred(Context, 9)"); - State = 285; additive_operator(); - State = 286; binary_scalar_expression(10); + State = 284; additive_operator(); + State = 285; binary_scalar_expression(10); } break; case 3: { _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 288; + State = 287; if (!(Precpred(Context, 8))) throw new FailedPredicateException(this, "Precpred(Context, 8)"); - State = 289; relational_operator(); - State = 290; binary_scalar_expression(9); + State = 288; relational_operator(); + State = 289; binary_scalar_expression(9); } break; case 4: { _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 292; + State = 291; if (!(Precpred(Context, 7))) throw new FailedPredicateException(this, "Precpred(Context, 7)"); - State = 293; equality_operator(); - State = 294; binary_scalar_expression(8); + State = 292; equality_operator(); + State = 293; binary_scalar_expression(8); } break; case 5: { _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 296; + State = 295; if (!(Precpred(Context, 6))) throw new FailedPredicateException(this, "Precpred(Context, 6)"); - State = 297; bitwise_and_operator(); - State = 298; binary_scalar_expression(7); + State = 296; bitwise_and_operator(); + State = 297; binary_scalar_expression(7); } break; case 6: { _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 300; + State = 299; if (!(Precpred(Context, 5))) throw new FailedPredicateException(this, "Precpred(Context, 5)"); - State = 301; bitwise_exclusive_or_operator(); - State = 302; binary_scalar_expression(6); + State = 300; bitwise_exclusive_or_operator(); + State = 301; binary_scalar_expression(6); } break; case 7: { _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 304; + State = 303; if (!(Precpred(Context, 4))) throw new FailedPredicateException(this, "Precpred(Context, 4)"); - State = 305; bitwise_inclusive_or_operator(); - State = 306; binary_scalar_expression(5); + State = 304; bitwise_inclusive_or_operator(); + State = 305; binary_scalar_expression(5); } break; case 8: { _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 308; + State = 307; if (!(Precpred(Context, 3))) throw new FailedPredicateException(this, "Precpred(Context, 3)"); - State = 309; Match(K_AND); - State = 310; binary_scalar_expression(4); + State = 308; Match(K_AND); + State = 309; binary_scalar_expression(4); } break; case 9: { _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 311; + State = 310; if (!(Precpred(Context, 2))) throw new FailedPredicateException(this, "Precpred(Context, 2)"); - State = 312; Match(K_OR); - State = 313; binary_scalar_expression(3); + State = 311; Match(K_OR); + State = 312; binary_scalar_expression(3); } break; case 10: { _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 314; + State = 313; if (!(Precpred(Context, 1))) throw new FailedPredicateException(this, "Precpred(Context, 1)"); - State = 315; string_concat_operator(); - State = 316; binary_scalar_expression(2); + State = 314; string_concat_operator(); + State = 315; binary_scalar_expression(2); } break; } } } - State = 322; + State = 321; ErrorHandler.Sync(this); _alt = Interpreter.AdaptivePredict(TokenStream,28,Context); } @@ -2365,7 +2362,7 @@ public Multiplicative_operatorContext multiplicative_operator() { try { EnterOuterAlt(_localctx, 1); { - State = 323; + State = 322; _la = TokenStream.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << T__10) | (1L << T__11))) != 0)) ) { ErrorHandler.RecoverInline(this); @@ -2416,7 +2413,7 @@ public Additive_operatorContext additive_operator() { try { EnterOuterAlt(_localctx, 1); { - State = 325; + State = 324; _la = TokenStream.LA(1); if ( !(_la==T__12 || _la==T__13) ) { ErrorHandler.RecoverInline(this); @@ -2467,7 +2464,7 @@ public Relational_operatorContext relational_operator() { try { EnterOuterAlt(_localctx, 1); { - State = 327; + State = 326; _la = TokenStream.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__14) | (1L << T__15) | (1L << T__16) | (1L << T__17))) != 0)) ) { ErrorHandler.RecoverInline(this); @@ -2518,7 +2515,7 @@ public Equality_operatorContext equality_operator() { try { EnterOuterAlt(_localctx, 1); { - State = 329; + State = 328; _la = TokenStream.LA(1); if ( !(_la==T__18 || _la==T__19) ) { ErrorHandler.RecoverInline(this); @@ -2568,7 +2565,7 @@ public Bitwise_and_operatorContext bitwise_and_operator() { try { EnterOuterAlt(_localctx, 1); { - State = 331; Match(T__20); + State = 330; Match(T__20); } } catch (RecognitionException re) { @@ -2610,7 +2607,7 @@ public Bitwise_exclusive_or_operatorContext bitwise_exclusive_or_operator() { try { EnterOuterAlt(_localctx, 1); { - State = 333; Match(T__21); + State = 332; Match(T__21); } } catch (RecognitionException re) { @@ -2652,7 +2649,7 @@ public Bitwise_inclusive_or_operatorContext bitwise_inclusive_or_operator() { try { EnterOuterAlt(_localctx, 1); { - State = 335; Match(T__22); + State = 334; Match(T__22); } } catch (RecognitionException re) { @@ -2694,7 +2691,7 @@ public String_concat_operatorContext string_concat_operator() { try { EnterOuterAlt(_localctx, 1); { - State = 337; Match(T__23); + State = 336; Match(T__23); } } catch (RecognitionException re) { @@ -2743,7 +2740,7 @@ public Unary_scalar_expressionContext unary_scalar_expression() { Unary_scalar_expressionContext _localctx = new Unary_scalar_expressionContext(Context, State); EnterRule(_localctx, 72, RULE_unary_scalar_expression); try { - State = 343; + State = 342; ErrorHandler.Sync(this); switch (TokenStream.LA(1)) { case T__2: @@ -2762,7 +2759,7 @@ public Unary_scalar_expressionContext unary_scalar_expression() { case PARAMETER: EnterOuterAlt(_localctx, 1); { - State = 339; primary_expression(0); + State = 338; primary_expression(0); } break; case T__12: @@ -2771,8 +2768,8 @@ public Unary_scalar_expressionContext unary_scalar_expression() { case K_NOT: EnterOuterAlt(_localctx, 2); { - State = 340; unary_operator(); - State = 341; unary_scalar_expression(); + State = 339; unary_operator(); + State = 340; unary_scalar_expression(); } break; default: @@ -2820,7 +2817,7 @@ public Unary_operatorContext unary_operator() { try { EnterOuterAlt(_localctx, 1); { - State = 345; + State = 344; _la = TokenStream.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__12) | (1L << T__13) | (1L << T__24) | (1L << K_NOT))) != 0)) ) { ErrorHandler.RecoverInline(this); @@ -3104,7 +3101,7 @@ private Primary_expressionContext primary_expression(int _p) { int _alt; EnterOuterAlt(_localctx, 1); { - State = 389; + State = 388; ErrorHandler.Sync(this); switch ( Interpreter.AdaptivePredict(TokenStream,34,Context) ) { case 1: @@ -3113,7 +3110,7 @@ private Primary_expressionContext primary_expression(int _p) { Context = _localctx; _prevctx = _localctx; - State = 348; Match(IDENTIFIER); + State = 347; Match(IDENTIFIER); } break; case 2: @@ -3121,7 +3118,7 @@ private Primary_expressionContext primary_expression(int _p) { _localctx = new ParameterRefScalarExpressionContext(_localctx); Context = _localctx; _prevctx = _localctx; - State = 349; Match(PARAMETER); + State = 348; Match(PARAMETER); } break; case 3: @@ -3129,7 +3126,7 @@ private Primary_expressionContext primary_expression(int _p) { _localctx = new LiteralScalarExpressionContext(_localctx); Context = _localctx; _prevctx = _localctx; - State = 350; literal(); + State = 349; literal(); } break; case 4: @@ -3137,17 +3134,17 @@ private Primary_expressionContext primary_expression(int _p) { _localctx = new ArrayCreateScalarExpressionContext(_localctx); Context = _localctx; _prevctx = _localctx; - State = 351; Match(T__5); - State = 353; + State = 350; Match(T__5); + State = 352; ErrorHandler.Sync(this); _la = TokenStream.LA(1); if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__5) | (1L << T__12) | (1L << T__13) | (1L << T__24) | (1L << T__25) | (1L << K_ARRAY) | (1L << K_EXISTS) | (1L << K_FALSE) | (1L << K_NOT) | (1L << K_NULL) | (1L << K_TRUE) | (1L << K_UDF) | (1L << K_UNDEFINED) | (1L << NUMERIC_LITERAL) | (1L << STRING_LITERAL) | (1L << IDENTIFIER) | (1L << PARAMETER))) != 0)) { { - State = 352; scalar_expression_list(); + State = 351; scalar_expression_list(); } } - State = 355; Match(T__6); + State = 354; Match(T__6); } break; case 5: @@ -3155,17 +3152,17 @@ private Primary_expressionContext primary_expression(int _p) { _localctx = new ObjectCreateScalarExpressionContext(_localctx); Context = _localctx; _prevctx = _localctx; - State = 356; Match(T__25); - State = 358; + State = 355; Match(T__25); + State = 357; ErrorHandler.Sync(this); _la = TokenStream.LA(1); if (_la==STRING_LITERAL) { { - State = 357; object_property_list(); + State = 356; object_property_list(); } } - State = 360; Match(T__26); + State = 359; Match(T__26); } break; case 6: @@ -3173,28 +3170,28 @@ private Primary_expressionContext primary_expression(int _p) { _localctx = new FunctionCallScalarExpressionContext(_localctx); Context = _localctx; _prevctx = _localctx; - State = 363; + State = 362; ErrorHandler.Sync(this); _la = TokenStream.LA(1); if (_la==K_UDF) { { - State = 361; Match(K_UDF); - State = 362; Match(T__4); + State = 360; Match(K_UDF); + State = 361; Match(T__4); } } - State = 365; Match(IDENTIFIER); - State = 366; Match(T__2); - State = 368; + State = 364; Match(IDENTIFIER); + State = 365; Match(T__2); + State = 367; ErrorHandler.Sync(this); _la = TokenStream.LA(1); if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__5) | (1L << T__12) | (1L << T__13) | (1L << T__24) | (1L << T__25) | (1L << K_ARRAY) | (1L << K_EXISTS) | (1L << K_FALSE) | (1L << K_NOT) | (1L << K_NULL) | (1L << K_TRUE) | (1L << K_UDF) | (1L << K_UNDEFINED) | (1L << NUMERIC_LITERAL) | (1L << STRING_LITERAL) | (1L << IDENTIFIER) | (1L << PARAMETER))) != 0)) { { - State = 367; scalar_expression_list(); + State = 366; scalar_expression_list(); } } - State = 370; Match(T__3); + State = 369; Match(T__3); } break; case 7: @@ -3202,9 +3199,9 @@ private Primary_expressionContext primary_expression(int _p) { _localctx = new ParenthesizedScalarExperessionContext(_localctx); Context = _localctx; _prevctx = _localctx; - State = 371; Match(T__2); - State = 372; scalar_expression(0); - State = 373; Match(T__3); + State = 370; Match(T__2); + State = 371; scalar_expression(0); + State = 372; Match(T__3); } break; case 8: @@ -3212,9 +3209,9 @@ private Primary_expressionContext primary_expression(int _p) { _localctx = new SubqueryScalarExpressionContext(_localctx); Context = _localctx; _prevctx = _localctx; - State = 375; Match(T__2); - State = 376; sql_query(); - State = 377; Match(T__3); + State = 374; Match(T__2); + State = 375; sql_query(); + State = 376; Match(T__3); } break; case 9: @@ -3222,10 +3219,10 @@ private Primary_expressionContext primary_expression(int _p) { _localctx = new ExistsScalarExpressionContext(_localctx); Context = _localctx; _prevctx = _localctx; - State = 379; Match(K_EXISTS); - State = 380; Match(T__2); - State = 381; sql_query(); - State = 382; Match(T__3); + State = 378; Match(K_EXISTS); + State = 379; Match(T__2); + State = 380; sql_query(); + State = 381; Match(T__3); } break; case 10: @@ -3233,15 +3230,15 @@ private Primary_expressionContext primary_expression(int _p) { _localctx = new ArrayScalarExpressionContext(_localctx); Context = _localctx; _prevctx = _localctx; - State = 384; Match(K_ARRAY); - State = 385; Match(T__2); - State = 386; sql_query(); - State = 387; Match(T__3); + State = 383; Match(K_ARRAY); + State = 384; Match(T__2); + State = 385; sql_query(); + State = 386; Match(T__3); } break; } Context.Stop = TokenStream.LT(-1); - State = 401; + State = 400; ErrorHandler.Sync(this); _alt = Interpreter.AdaptivePredict(TokenStream,36,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { @@ -3250,34 +3247,34 @@ private Primary_expressionContext primary_expression(int _p) { TriggerExitRuleEvent(); _prevctx = _localctx; { - State = 399; + State = 398; ErrorHandler.Sync(this); switch ( Interpreter.AdaptivePredict(TokenStream,35,Context) ) { case 1: { _localctx = new PropertyRefScalarExpressionRecursiveContext(new Primary_expressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_primary_expression); - State = 391; + State = 390; if (!(Precpred(Context, 4))) throw new FailedPredicateException(this, "Precpred(Context, 4)"); - State = 392; Match(T__4); - State = 393; Match(IDENTIFIER); + State = 391; Match(T__4); + State = 392; Match(IDENTIFIER); } break; case 2: { _localctx = new MemberIndexerScalarExpressionContext(new Primary_expressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_primary_expression); - State = 394; + State = 393; if (!(Precpred(Context, 3))) throw new FailedPredicateException(this, "Precpred(Context, 3)"); - State = 395; Match(T__5); - State = 396; scalar_expression(0); - State = 397; Match(T__6); + State = 394; Match(T__5); + State = 395; scalar_expression(0); + State = 396; Match(T__6); } break; } } } - State = 403; + State = 402; ErrorHandler.Sync(this); _alt = Interpreter.AdaptivePredict(TokenStream,36,Context); } @@ -3329,18 +3326,18 @@ public Scalar_expression_listContext scalar_expression_list() { try { EnterOuterAlt(_localctx, 1); { - State = 404; scalar_expression(0); - State = 409; + State = 403; scalar_expression(0); + State = 408; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==T__1) { { { - State = 405; Match(T__1); - State = 406; scalar_expression(0); + State = 404; Match(T__1); + State = 405; scalar_expression(0); } } - State = 411; + State = 410; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } @@ -3392,18 +3389,18 @@ public Object_property_listContext object_property_list() { try { EnterOuterAlt(_localctx, 1); { - State = 412; object_property(); - State = 417; + State = 411; object_property(); + State = 416; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==T__1) { { { - State = 413; Match(T__1); - State = 414; object_property(); + State = 412; Match(T__1); + State = 413; object_property(); } } - State = 419; + State = 418; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } @@ -3452,9 +3449,9 @@ public Object_propertyContext object_property() { try { EnterOuterAlt(_localctx, 1); { - State = 420; Match(STRING_LITERAL); - State = 421; Match(T__8); - State = 422; scalar_expression(0); + State = 419; Match(STRING_LITERAL); + State = 420; Match(T__8); + State = 421; scalar_expression(0); } } catch (RecognitionException re) { @@ -3503,7 +3500,7 @@ public LiteralContext literal() { try { EnterOuterAlt(_localctx, 1); { - State = 424; + State = 423; _la = TokenStream.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << K_FALSE) | (1L << K_NULL) | (1L << K_TRUE) | (1L << K_UNDEFINED) | (1L << NUMERIC_LITERAL) | (1L << STRING_LITERAL))) != 0)) ) { ErrorHandler.RecoverInline(this); @@ -3581,7 +3578,7 @@ private bool primary_expression_sempred(Primary_expressionContext _localctx, int private static char[] _serializedATN = { '\x3', '\x608B', '\xA72A', '\x8133', '\xB9ED', '\x417C', '\x3BE7', '\x7786', - '\x5964', '\x3', '?', '\x1AD', '\x4', '\x2', '\t', '\x2', '\x4', '\x3', + '\x5964', '\x3', '?', '\x1AC', '\x4', '\x2', '\t', '\x2', '\x4', '\x3', '\t', '\x3', '\x4', '\x4', '\t', '\x4', '\x4', '\x5', '\t', '\x5', '\x4', '\x6', '\t', '\x6', '\x4', '\a', '\t', '\a', '\x4', '\b', '\t', '\b', '\x4', '\t', '\t', '\t', '\x4', '\n', '\t', '\n', '\x4', '\v', '\t', '\v', @@ -3635,8 +3632,8 @@ private bool primary_expression_sempred(Primary_expressionContext _localctx, int '\x3', '\x1A', '\x5', '\x1A', '\x104', '\n', '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x3', '\x1B', '\x3', '\x1B', '\x5', '\x1B', '\x10D', '\n', '\x1B', '\x3', '\x1B', '\x3', '\x1B', - '\x3', '\x1B', '\x3', '\x1B', '\x3', '\x1C', '\x3', '\x1C', '\x3', '\x1C', - '\x5', '\x1C', '\x116', '\n', '\x1C', '\x3', '\x1D', '\x3', '\x1D', '\x3', + '\x3', '\x1B', '\x5', '\x1B', '\x112', '\n', '\x1B', '\x3', '\x1C', '\x3', + '\x1C', '\x3', '\x1C', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', @@ -3644,97 +3641,97 @@ private bool primary_expression_sempred(Primary_expressionContext _localctx, int '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', - '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\a', '\x1D', '\x141', - '\n', '\x1D', '\f', '\x1D', '\xE', '\x1D', '\x144', '\v', '\x1D', '\x3', - '\x1E', '\x3', '\x1E', '\x3', '\x1F', '\x3', '\x1F', '\x3', ' ', '\x3', - ' ', '\x3', '!', '\x3', '!', '\x3', '\"', '\x3', '\"', '\x3', '#', '\x3', - '#', '\x3', '$', '\x3', '$', '\x3', '%', '\x3', '%', '\x3', '&', '\x3', - '&', '\x3', '&', '\x3', '&', '\x5', '&', '\x15A', '\n', '&', '\x3', '\'', - '\x3', '\'', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', - '\x3', '(', '\x5', '(', '\x164', '\n', '(', '\x3', '(', '\x3', '(', '\x3', - '(', '\x5', '(', '\x169', '\n', '(', '\x3', '(', '\x3', '(', '\x3', '(', - '\x5', '(', '\x16E', '\n', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x5', - '(', '\x173', '\n', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', + '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\a', '\x1D', '\x140', '\n', '\x1D', + '\f', '\x1D', '\xE', '\x1D', '\x143', '\v', '\x1D', '\x3', '\x1E', '\x3', + '\x1E', '\x3', '\x1F', '\x3', '\x1F', '\x3', ' ', '\x3', ' ', '\x3', '!', + '\x3', '!', '\x3', '\"', '\x3', '\"', '\x3', '#', '\x3', '#', '\x3', '$', + '\x3', '$', '\x3', '%', '\x3', '%', '\x3', '&', '\x3', '&', '\x3', '&', + '\x3', '&', '\x5', '&', '\x159', '\n', '&', '\x3', '\'', '\x3', '\'', + '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', + '\x5', '(', '\x163', '\n', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x5', + '(', '\x168', '\n', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x5', '(', + '\x16D', '\n', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x5', '(', '\x172', + '\n', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', - '\x3', '(', '\x3', '(', '\x3', '(', '\x5', '(', '\x188', '\n', '(', '\x3', + '\x3', '(', '\x3', '(', '\x5', '(', '\x187', '\n', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', - '(', '\x3', '(', '\a', '(', '\x192', '\n', '(', '\f', '(', '\xE', '(', - '\x195', '\v', '(', '\x3', ')', '\x3', ')', '\x3', ')', '\a', ')', '\x19A', - '\n', ')', '\f', ')', '\xE', ')', '\x19D', '\v', ')', '\x3', '*', '\x3', - '*', '\x3', '*', '\a', '*', '\x1A2', '\n', '*', '\f', '*', '\xE', '*', - '\x1A5', '\v', '*', '\x3', '+', '\x3', '+', '\x3', '+', '\x3', '+', '\x3', - ',', '\x3', ',', '\x3', ',', '\x2', '\a', '\x16', '\x1A', '.', '\x38', - 'N', '-', '\x2', '\x4', '\x6', '\b', '\n', '\f', '\xE', '\x10', '\x12', - '\x14', '\x16', '\x18', '\x1A', '\x1C', '\x1E', ' ', '\"', '$', '&', '(', - '*', ',', '.', '\x30', '\x32', '\x34', '\x36', '\x38', ':', '<', '>', - '@', '\x42', '\x44', '\x46', 'H', 'J', 'L', 'N', 'P', 'R', 'T', 'V', '\x2', - '\n', '\x4', '\x2', '<', '<', '?', '?', '\x4', '\x2', '!', '!', '$', '$', - '\x4', '\x2', '\x3', '\x3', '\r', '\xE', '\x3', '\x2', '\xF', '\x10', - '\x3', '\x2', '\x11', '\x14', '\x3', '\x2', '\x15', '\x16', '\x5', '\x2', - '\xF', '\x10', '\x1B', '\x1B', '/', '/', '\a', '\x2', '(', '(', '\x30', - '\x30', '\x36', '\x36', '\x38', '\x38', '<', '=', '\x2', '\x1BB', '\x2', - 'X', '\x3', '\x2', '\x2', '\x2', '\x4', '[', '\x3', '\x2', '\x2', '\x2', - '\x6', 'k', '\x3', '\x2', '\x2', '\x2', '\b', 't', '\x3', '\x2', '\x2', - '\x2', '\n', 'z', '\x3', '\x2', '\x2', '\x2', '\f', '|', '\x3', '\x2', - '\x2', '\x2', '\xE', '~', '\x3', '\x2', '\x2', '\x2', '\x10', '\x81', - '\x3', '\x2', '\x2', '\x2', '\x12', '\x89', '\x3', '\x2', '\x2', '\x2', - '\x14', '\x8E', '\x3', '\x2', '\x2', '\x2', '\x16', '\x9A', '\x3', '\x2', - '\x2', '\x2', '\x18', '\xAC', '\x3', '\x2', '\x2', '\x2', '\x1A', '\xAE', - '\x3', '\x2', '\x2', '\x2', '\x1C', '\xBF', '\x3', '\x2', '\x2', '\x2', - '\x1E', '\xC2', '\x3', '\x2', '\x2', '\x2', ' ', '\xC6', '\x3', '\x2', - '\x2', '\x2', '\"', '\xCA', '\x3', '\x2', '\x2', '\x2', '$', '\xD2', '\x3', - '\x2', '\x2', '\x2', '&', '\xD6', '\x3', '\x2', '\x2', '\x2', '(', '\xD8', - '\x3', '\x2', '\x2', '\x2', '*', '\xDD', '\x3', '\x2', '\x2', '\x2', ',', - '\xDF', '\x3', '\x2', '\x2', '\x2', '.', '\xEC', '\x3', '\x2', '\x2', - '\x2', '\x30', '\xFF', '\x3', '\x2', '\x2', '\x2', '\x32', '\x101', '\x3', - '\x2', '\x2', '\x2', '\x34', '\x10A', '\x3', '\x2', '\x2', '\x2', '\x36', - '\x115', '\x3', '\x2', '\x2', '\x2', '\x38', '\x117', '\x3', '\x2', '\x2', - '\x2', ':', '\x145', '\x3', '\x2', '\x2', '\x2', '<', '\x147', '\x3', - '\x2', '\x2', '\x2', '>', '\x149', '\x3', '\x2', '\x2', '\x2', '@', '\x14B', - '\x3', '\x2', '\x2', '\x2', '\x42', '\x14D', '\x3', '\x2', '\x2', '\x2', - '\x44', '\x14F', '\x3', '\x2', '\x2', '\x2', '\x46', '\x151', '\x3', '\x2', - '\x2', '\x2', 'H', '\x153', '\x3', '\x2', '\x2', '\x2', 'J', '\x159', - '\x3', '\x2', '\x2', '\x2', 'L', '\x15B', '\x3', '\x2', '\x2', '\x2', - 'N', '\x187', '\x3', '\x2', '\x2', '\x2', 'P', '\x196', '\x3', '\x2', - '\x2', '\x2', 'R', '\x19E', '\x3', '\x2', '\x2', '\x2', 'T', '\x1A6', - '\x3', '\x2', '\x2', '\x2', 'V', '\x1AA', '\x3', '\x2', '\x2', '\x2', - 'X', 'Y', '\x5', '\x4', '\x3', '\x2', 'Y', 'Z', '\a', '\x2', '\x2', '\x3', - 'Z', '\x3', '\x3', '\x2', '\x2', '\x2', '[', ']', '\x5', '\x6', '\x4', - '\x2', '\\', '^', '\x5', '\x14', '\v', '\x2', ']', '\\', '\x3', '\x2', - '\x2', '\x2', ']', '^', '\x3', '\x2', '\x2', '\x2', '^', '`', '\x3', '\x2', - '\x2', '\x2', '_', '\x61', '\x5', '\x1C', '\xF', '\x2', '`', '_', '\x3', - '\x2', '\x2', '\x2', '`', '\x61', '\x3', '\x2', '\x2', '\x2', '\x61', - '\x63', '\x3', '\x2', '\x2', '\x2', '\x62', '\x64', '\x5', '\x1E', '\x10', - '\x2', '\x63', '\x62', '\x3', '\x2', '\x2', '\x2', '\x63', '\x64', '\x3', - '\x2', '\x2', '\x2', '\x64', '\x66', '\x3', '\x2', '\x2', '\x2', '\x65', - 'g', '\x5', ' ', '\x11', '\x2', '\x66', '\x65', '\x3', '\x2', '\x2', '\x2', - '\x66', 'g', '\x3', '\x2', '\x2', '\x2', 'g', 'i', '\x3', '\x2', '\x2', - '\x2', 'h', 'j', '\x5', '(', '\x15', '\x2', 'i', 'h', '\x3', '\x2', '\x2', - '\x2', 'i', 'j', '\x3', '\x2', '\x2', '\x2', 'j', '\x5', '\x3', '\x2', - '\x2', '\x2', 'k', 'm', '\a', '\x34', '\x2', '\x2', 'l', 'n', '\a', '%', - '\x2', '\x2', 'm', 'l', '\x3', '\x2', '\x2', '\x2', 'm', 'n', '\x3', '\x2', - '\x2', '\x2', 'n', 'p', '\x3', '\x2', '\x2', '\x2', 'o', 'q', '\x5', '\b', - '\x5', '\x2', 'p', 'o', '\x3', '\x2', '\x2', '\x2', 'p', 'q', '\x3', '\x2', - '\x2', '\x2', 'q', 'r', '\x3', '\x2', '\x2', '\x2', 'r', 's', '\x5', '\n', - '\x6', '\x2', 's', '\a', '\x3', '\x2', '\x2', '\x2', 't', 'u', '\a', '\x35', - '\x2', '\x2', 'u', 'v', '\t', '\x2', '\x2', '\x2', 'v', '\t', '\x3', '\x2', - '\x2', '\x2', 'w', '{', '\x5', '\f', '\a', '\x2', 'x', '{', '\x5', '\xE', - '\b', '\x2', 'y', '{', '\x5', '\x10', '\t', '\x2', 'z', 'w', '\x3', '\x2', - '\x2', '\x2', 'z', 'x', '\x3', '\x2', '\x2', '\x2', 'z', 'y', '\x3', '\x2', - '\x2', '\x2', '{', '\v', '\x3', '\x2', '\x2', '\x2', '|', '}', '\a', '\x3', - '\x2', '\x2', '}', '\r', '\x3', '\x2', '\x2', '\x2', '~', '\x7F', '\a', - '\x39', '\x2', '\x2', '\x7F', '\x80', '\x5', '.', '\x18', '\x2', '\x80', - '\xF', '\x3', '\x2', '\x2', '\x2', '\x81', '\x86', '\x5', '\x12', '\n', - '\x2', '\x82', '\x83', '\a', '\x4', '\x2', '\x2', '\x83', '\x85', '\x5', - '\x12', '\n', '\x2', '\x84', '\x82', '\x3', '\x2', '\x2', '\x2', '\x85', - '\x88', '\x3', '\x2', '\x2', '\x2', '\x86', '\x84', '\x3', '\x2', '\x2', - '\x2', '\x86', '\x87', '\x3', '\x2', '\x2', '\x2', '\x87', '\x11', '\x3', - '\x2', '\x2', '\x2', '\x88', '\x86', '\x3', '\x2', '\x2', '\x2', '\x89', - '\x8C', '\x5', '.', '\x18', '\x2', '\x8A', '\x8B', '\a', ' ', '\x2', '\x2', - '\x8B', '\x8D', '\a', '>', '\x2', '\x2', '\x8C', '\x8A', '\x3', '\x2', - '\x2', '\x2', '\x8C', '\x8D', '\x3', '\x2', '\x2', '\x2', '\x8D', '\x13', - '\x3', '\x2', '\x2', '\x2', '\x8E', '\x8F', '\a', ')', '\x2', '\x2', '\x8F', + '(', '\a', '(', '\x191', '\n', '(', '\f', '(', '\xE', '(', '\x194', '\v', + '(', '\x3', ')', '\x3', ')', '\x3', ')', '\a', ')', '\x199', '\n', ')', + '\f', ')', '\xE', ')', '\x19C', '\v', ')', '\x3', '*', '\x3', '*', '\x3', + '*', '\a', '*', '\x1A1', '\n', '*', '\f', '*', '\xE', '*', '\x1A4', '\v', + '*', '\x3', '+', '\x3', '+', '\x3', '+', '\x3', '+', '\x3', ',', '\x3', + ',', '\x3', ',', '\x2', '\a', '\x16', '\x1A', '.', '\x38', 'N', '-', '\x2', + '\x4', '\x6', '\b', '\n', '\f', '\xE', '\x10', '\x12', '\x14', '\x16', + '\x18', '\x1A', '\x1C', '\x1E', ' ', '\"', '$', '&', '(', '*', ',', '.', + '\x30', '\x32', '\x34', '\x36', '\x38', ':', '<', '>', '@', '\x42', '\x44', + '\x46', 'H', 'J', 'L', 'N', 'P', 'R', 'T', 'V', '\x2', '\n', '\x4', '\x2', + '<', '<', '?', '?', '\x4', '\x2', '!', '!', '$', '$', '\x4', '\x2', '\x3', + '\x3', '\r', '\xE', '\x3', '\x2', '\xF', '\x10', '\x3', '\x2', '\x11', + '\x14', '\x3', '\x2', '\x15', '\x16', '\x5', '\x2', '\xF', '\x10', '\x1B', + '\x1B', '/', '/', '\a', '\x2', '(', '(', '\x30', '\x30', '\x36', '\x36', + '\x38', '\x38', '<', '=', '\x2', '\x1BA', '\x2', 'X', '\x3', '\x2', '\x2', + '\x2', '\x4', '[', '\x3', '\x2', '\x2', '\x2', '\x6', 'k', '\x3', '\x2', + '\x2', '\x2', '\b', 't', '\x3', '\x2', '\x2', '\x2', '\n', 'z', '\x3', + '\x2', '\x2', '\x2', '\f', '|', '\x3', '\x2', '\x2', '\x2', '\xE', '~', + '\x3', '\x2', '\x2', '\x2', '\x10', '\x81', '\x3', '\x2', '\x2', '\x2', + '\x12', '\x89', '\x3', '\x2', '\x2', '\x2', '\x14', '\x8E', '\x3', '\x2', + '\x2', '\x2', '\x16', '\x9A', '\x3', '\x2', '\x2', '\x2', '\x18', '\xAC', + '\x3', '\x2', '\x2', '\x2', '\x1A', '\xAE', '\x3', '\x2', '\x2', '\x2', + '\x1C', '\xBF', '\x3', '\x2', '\x2', '\x2', '\x1E', '\xC2', '\x3', '\x2', + '\x2', '\x2', ' ', '\xC6', '\x3', '\x2', '\x2', '\x2', '\"', '\xCA', '\x3', + '\x2', '\x2', '\x2', '$', '\xD2', '\x3', '\x2', '\x2', '\x2', '&', '\xD6', + '\x3', '\x2', '\x2', '\x2', '(', '\xD8', '\x3', '\x2', '\x2', '\x2', '*', + '\xDD', '\x3', '\x2', '\x2', '\x2', ',', '\xDF', '\x3', '\x2', '\x2', + '\x2', '.', '\xEC', '\x3', '\x2', '\x2', '\x2', '\x30', '\xFF', '\x3', + '\x2', '\x2', '\x2', '\x32', '\x101', '\x3', '\x2', '\x2', '\x2', '\x34', + '\x10A', '\x3', '\x2', '\x2', '\x2', '\x36', '\x113', '\x3', '\x2', '\x2', + '\x2', '\x38', '\x116', '\x3', '\x2', '\x2', '\x2', ':', '\x144', '\x3', + '\x2', '\x2', '\x2', '<', '\x146', '\x3', '\x2', '\x2', '\x2', '>', '\x148', + '\x3', '\x2', '\x2', '\x2', '@', '\x14A', '\x3', '\x2', '\x2', '\x2', + '\x42', '\x14C', '\x3', '\x2', '\x2', '\x2', '\x44', '\x14E', '\x3', '\x2', + '\x2', '\x2', '\x46', '\x150', '\x3', '\x2', '\x2', '\x2', 'H', '\x152', + '\x3', '\x2', '\x2', '\x2', 'J', '\x158', '\x3', '\x2', '\x2', '\x2', + 'L', '\x15A', '\x3', '\x2', '\x2', '\x2', 'N', '\x186', '\x3', '\x2', + '\x2', '\x2', 'P', '\x195', '\x3', '\x2', '\x2', '\x2', 'R', '\x19D', + '\x3', '\x2', '\x2', '\x2', 'T', '\x1A5', '\x3', '\x2', '\x2', '\x2', + 'V', '\x1A9', '\x3', '\x2', '\x2', '\x2', 'X', 'Y', '\x5', '\x4', '\x3', + '\x2', 'Y', 'Z', '\a', '\x2', '\x2', '\x3', 'Z', '\x3', '\x3', '\x2', + '\x2', '\x2', '[', ']', '\x5', '\x6', '\x4', '\x2', '\\', '^', '\x5', + '\x14', '\v', '\x2', ']', '\\', '\x3', '\x2', '\x2', '\x2', ']', '^', + '\x3', '\x2', '\x2', '\x2', '^', '`', '\x3', '\x2', '\x2', '\x2', '_', + '\x61', '\x5', '\x1C', '\xF', '\x2', '`', '_', '\x3', '\x2', '\x2', '\x2', + '`', '\x61', '\x3', '\x2', '\x2', '\x2', '\x61', '\x63', '\x3', '\x2', + '\x2', '\x2', '\x62', '\x64', '\x5', '\x1E', '\x10', '\x2', '\x63', '\x62', + '\x3', '\x2', '\x2', '\x2', '\x63', '\x64', '\x3', '\x2', '\x2', '\x2', + '\x64', '\x66', '\x3', '\x2', '\x2', '\x2', '\x65', 'g', '\x5', ' ', '\x11', + '\x2', '\x66', '\x65', '\x3', '\x2', '\x2', '\x2', '\x66', 'g', '\x3', + '\x2', '\x2', '\x2', 'g', 'i', '\x3', '\x2', '\x2', '\x2', 'h', 'j', '\x5', + '(', '\x15', '\x2', 'i', 'h', '\x3', '\x2', '\x2', '\x2', 'i', 'j', '\x3', + '\x2', '\x2', '\x2', 'j', '\x5', '\x3', '\x2', '\x2', '\x2', 'k', 'm', + '\a', '\x34', '\x2', '\x2', 'l', 'n', '\a', '%', '\x2', '\x2', 'm', 'l', + '\x3', '\x2', '\x2', '\x2', 'm', 'n', '\x3', '\x2', '\x2', '\x2', 'n', + 'p', '\x3', '\x2', '\x2', '\x2', 'o', 'q', '\x5', '\b', '\x5', '\x2', + 'p', 'o', '\x3', '\x2', '\x2', '\x2', 'p', 'q', '\x3', '\x2', '\x2', '\x2', + 'q', 'r', '\x3', '\x2', '\x2', '\x2', 'r', 's', '\x5', '\n', '\x6', '\x2', + 's', '\a', '\x3', '\x2', '\x2', '\x2', 't', 'u', '\a', '\x35', '\x2', + '\x2', 'u', 'v', '\t', '\x2', '\x2', '\x2', 'v', '\t', '\x3', '\x2', '\x2', + '\x2', 'w', '{', '\x5', '\f', '\a', '\x2', 'x', '{', '\x5', '\xE', '\b', + '\x2', 'y', '{', '\x5', '\x10', '\t', '\x2', 'z', 'w', '\x3', '\x2', '\x2', + '\x2', 'z', 'x', '\x3', '\x2', '\x2', '\x2', 'z', 'y', '\x3', '\x2', '\x2', + '\x2', '{', '\v', '\x3', '\x2', '\x2', '\x2', '|', '}', '\a', '\x3', '\x2', + '\x2', '}', '\r', '\x3', '\x2', '\x2', '\x2', '~', '\x7F', '\a', '\x39', + '\x2', '\x2', '\x7F', '\x80', '\x5', '.', '\x18', '\x2', '\x80', '\xF', + '\x3', '\x2', '\x2', '\x2', '\x81', '\x86', '\x5', '\x12', '\n', '\x2', + '\x82', '\x83', '\a', '\x4', '\x2', '\x2', '\x83', '\x85', '\x5', '\x12', + '\n', '\x2', '\x84', '\x82', '\x3', '\x2', '\x2', '\x2', '\x85', '\x88', + '\x3', '\x2', '\x2', '\x2', '\x86', '\x84', '\x3', '\x2', '\x2', '\x2', + '\x86', '\x87', '\x3', '\x2', '\x2', '\x2', '\x87', '\x11', '\x3', '\x2', + '\x2', '\x2', '\x88', '\x86', '\x3', '\x2', '\x2', '\x2', '\x89', '\x8C', + '\x5', '.', '\x18', '\x2', '\x8A', '\x8B', '\a', ' ', '\x2', '\x2', '\x8B', + '\x8D', '\a', '>', '\x2', '\x2', '\x8C', '\x8A', '\x3', '\x2', '\x2', + '\x2', '\x8C', '\x8D', '\x3', '\x2', '\x2', '\x2', '\x8D', '\x13', '\x3', + '\x2', '\x2', '\x2', '\x8E', '\x8F', '\a', ')', '\x2', '\x2', '\x8F', '\x90', '\x5', '\x16', '\f', '\x2', '\x90', '\x15', '\x3', '\x2', '\x2', '\x2', '\x91', '\x92', '\b', '\f', '\x1', '\x2', '\x92', '\x95', '\x5', '\x18', '\r', '\x2', '\x93', '\x94', '\a', ' ', '\x2', '\x2', '\x94', @@ -3822,126 +3819,125 @@ private bool primary_expression_sempred(Primary_expressionContext _localctx, int '\x2', '\x10B', '\x10D', '\a', '/', '\x2', '\x2', '\x10C', '\x10B', '\x3', '\x2', '\x2', '\x2', '\x10C', '\x10D', '\x3', '\x2', '\x2', '\x2', '\x10D', '\x10E', '\x3', '\x2', '\x2', '\x2', '\x10E', '\x10F', '\a', '-', '\x2', - '\x2', '\x10F', '\x110', '\x5', '\x38', '\x1D', '\x2', '\x110', '\x111', - '\x5', '\x36', '\x1C', '\x2', '\x111', '\x35', '\x3', '\x2', '\x2', '\x2', - '\x112', '\x116', '\x3', '\x2', '\x2', '\x2', '\x113', '\x114', '\a', - '&', '\x2', '\x2', '\x114', '\x116', '\a', '=', '\x2', '\x2', '\x115', - '\x112', '\x3', '\x2', '\x2', '\x2', '\x115', '\x113', '\x3', '\x2', '\x2', - '\x2', '\x116', '\x37', '\x3', '\x2', '\x2', '\x2', '\x117', '\x118', - '\b', '\x1D', '\x1', '\x2', '\x118', '\x119', '\x5', 'J', '&', '\x2', - '\x119', '\x142', '\x3', '\x2', '\x2', '\x2', '\x11A', '\x11B', '\f', - '\f', '\x2', '\x2', '\x11B', '\x11C', '\x5', ':', '\x1E', '\x2', '\x11C', - '\x11D', '\x5', '\x38', '\x1D', '\r', '\x11D', '\x141', '\x3', '\x2', - '\x2', '\x2', '\x11E', '\x11F', '\f', '\v', '\x2', '\x2', '\x11F', '\x120', - '\x5', '<', '\x1F', '\x2', '\x120', '\x121', '\x5', '\x38', '\x1D', '\f', - '\x121', '\x141', '\x3', '\x2', '\x2', '\x2', '\x122', '\x123', '\f', - '\n', '\x2', '\x2', '\x123', '\x124', '\x5', '>', ' ', '\x2', '\x124', - '\x125', '\x5', '\x38', '\x1D', '\v', '\x125', '\x141', '\x3', '\x2', - '\x2', '\x2', '\x126', '\x127', '\f', '\t', '\x2', '\x2', '\x127', '\x128', - '\x5', '@', '!', '\x2', '\x128', '\x129', '\x5', '\x38', '\x1D', '\n', - '\x129', '\x141', '\x3', '\x2', '\x2', '\x2', '\x12A', '\x12B', '\f', - '\b', '\x2', '\x2', '\x12B', '\x12C', '\x5', '\x42', '\"', '\x2', '\x12C', - '\x12D', '\x5', '\x38', '\x1D', '\t', '\x12D', '\x141', '\x3', '\x2', - '\x2', '\x2', '\x12E', '\x12F', '\f', '\a', '\x2', '\x2', '\x12F', '\x130', - '\x5', '\x44', '#', '\x2', '\x130', '\x131', '\x5', '\x38', '\x1D', '\b', - '\x131', '\x141', '\x3', '\x2', '\x2', '\x2', '\x132', '\x133', '\f', - '\x6', '\x2', '\x2', '\x133', '\x134', '\x5', '\x46', '$', '\x2', '\x134', - '\x135', '\x5', '\x38', '\x1D', '\a', '\x135', '\x141', '\x3', '\x2', - '\x2', '\x2', '\x136', '\x137', '\f', '\x5', '\x2', '\x2', '\x137', '\x138', - '\a', '\x1E', '\x2', '\x2', '\x138', '\x141', '\x5', '\x38', '\x1D', '\x6', - '\x139', '\x13A', '\f', '\x4', '\x2', '\x2', '\x13A', '\x13B', '\a', '\x32', - '\x2', '\x2', '\x13B', '\x141', '\x5', '\x38', '\x1D', '\x5', '\x13C', - '\x13D', '\f', '\x3', '\x2', '\x2', '\x13D', '\x13E', '\x5', 'H', '%', - '\x2', '\x13E', '\x13F', '\x5', '\x38', '\x1D', '\x4', '\x13F', '\x141', - '\x3', '\x2', '\x2', '\x2', '\x140', '\x11A', '\x3', '\x2', '\x2', '\x2', - '\x140', '\x11E', '\x3', '\x2', '\x2', '\x2', '\x140', '\x122', '\x3', - '\x2', '\x2', '\x2', '\x140', '\x126', '\x3', '\x2', '\x2', '\x2', '\x140', - '\x12A', '\x3', '\x2', '\x2', '\x2', '\x140', '\x12E', '\x3', '\x2', '\x2', - '\x2', '\x140', '\x132', '\x3', '\x2', '\x2', '\x2', '\x140', '\x136', - '\x3', '\x2', '\x2', '\x2', '\x140', '\x139', '\x3', '\x2', '\x2', '\x2', - '\x140', '\x13C', '\x3', '\x2', '\x2', '\x2', '\x141', '\x144', '\x3', - '\x2', '\x2', '\x2', '\x142', '\x140', '\x3', '\x2', '\x2', '\x2', '\x142', - '\x143', '\x3', '\x2', '\x2', '\x2', '\x143', '\x39', '\x3', '\x2', '\x2', - '\x2', '\x144', '\x142', '\x3', '\x2', '\x2', '\x2', '\x145', '\x146', - '\t', '\x4', '\x2', '\x2', '\x146', ';', '\x3', '\x2', '\x2', '\x2', '\x147', - '\x148', '\t', '\x5', '\x2', '\x2', '\x148', '=', '\x3', '\x2', '\x2', - '\x2', '\x149', '\x14A', '\t', '\x6', '\x2', '\x2', '\x14A', '?', '\x3', - '\x2', '\x2', '\x2', '\x14B', '\x14C', '\t', '\a', '\x2', '\x2', '\x14C', - '\x41', '\x3', '\x2', '\x2', '\x2', '\x14D', '\x14E', '\a', '\x17', '\x2', - '\x2', '\x14E', '\x43', '\x3', '\x2', '\x2', '\x2', '\x14F', '\x150', - '\a', '\x18', '\x2', '\x2', '\x150', '\x45', '\x3', '\x2', '\x2', '\x2', - '\x151', '\x152', '\a', '\x19', '\x2', '\x2', '\x152', 'G', '\x3', '\x2', - '\x2', '\x2', '\x153', '\x154', '\a', '\x1A', '\x2', '\x2', '\x154', 'I', - '\x3', '\x2', '\x2', '\x2', '\x155', '\x15A', '\x5', 'N', '(', '\x2', - '\x156', '\x157', '\x5', 'L', '\'', '\x2', '\x157', '\x158', '\x5', 'J', - '&', '\x2', '\x158', '\x15A', '\x3', '\x2', '\x2', '\x2', '\x159', '\x155', - '\x3', '\x2', '\x2', '\x2', '\x159', '\x156', '\x3', '\x2', '\x2', '\x2', - '\x15A', 'K', '\x3', '\x2', '\x2', '\x2', '\x15B', '\x15C', '\t', '\b', - '\x2', '\x2', '\x15C', 'M', '\x3', '\x2', '\x2', '\x2', '\x15D', '\x15E', - '\b', '(', '\x1', '\x2', '\x15E', '\x188', '\a', '>', '\x2', '\x2', '\x15F', - '\x188', '\a', '?', '\x2', '\x2', '\x160', '\x188', '\x5', 'V', ',', '\x2', - '\x161', '\x163', '\a', '\b', '\x2', '\x2', '\x162', '\x164', '\x5', 'P', - ')', '\x2', '\x163', '\x162', '\x3', '\x2', '\x2', '\x2', '\x163', '\x164', - '\x3', '\x2', '\x2', '\x2', '\x164', '\x165', '\x3', '\x2', '\x2', '\x2', - '\x165', '\x188', '\a', '\t', '\x2', '\x2', '\x166', '\x168', '\a', '\x1C', - '\x2', '\x2', '\x167', '\x169', '\x5', 'R', '*', '\x2', '\x168', '\x167', - '\x3', '\x2', '\x2', '\x2', '\x168', '\x169', '\x3', '\x2', '\x2', '\x2', - '\x169', '\x16A', '\x3', '\x2', '\x2', '\x2', '\x16A', '\x188', '\a', - '\x1D', '\x2', '\x2', '\x16B', '\x16C', '\a', '\x37', '\x2', '\x2', '\x16C', - '\x16E', '\a', '\a', '\x2', '\x2', '\x16D', '\x16B', '\x3', '\x2', '\x2', - '\x2', '\x16D', '\x16E', '\x3', '\x2', '\x2', '\x2', '\x16E', '\x16F', - '\x3', '\x2', '\x2', '\x2', '\x16F', '\x170', '\a', '>', '\x2', '\x2', - '\x170', '\x172', '\a', '\x5', '\x2', '\x2', '\x171', '\x173', '\x5', - 'P', ')', '\x2', '\x172', '\x171', '\x3', '\x2', '\x2', '\x2', '\x172', - '\x173', '\x3', '\x2', '\x2', '\x2', '\x173', '\x174', '\x3', '\x2', '\x2', - '\x2', '\x174', '\x188', '\a', '\x6', '\x2', '\x2', '\x175', '\x176', - '\a', '\x5', '\x2', '\x2', '\x176', '\x177', '\x5', '.', '\x18', '\x2', - '\x177', '\x178', '\a', '\x6', '\x2', '\x2', '\x178', '\x188', '\x3', - '\x2', '\x2', '\x2', '\x179', '\x17A', '\a', '\x5', '\x2', '\x2', '\x17A', - '\x17B', '\x5', '\x4', '\x3', '\x2', '\x17B', '\x17C', '\a', '\x6', '\x2', - '\x2', '\x17C', '\x188', '\x3', '\x2', '\x2', '\x2', '\x17D', '\x17E', - '\a', '\'', '\x2', '\x2', '\x17E', '\x17F', '\a', '\x5', '\x2', '\x2', - '\x17F', '\x180', '\x5', '\x4', '\x3', '\x2', '\x180', '\x181', '\a', - '\x6', '\x2', '\x2', '\x181', '\x188', '\x3', '\x2', '\x2', '\x2', '\x182', - '\x183', '\a', '\x1F', '\x2', '\x2', '\x183', '\x184', '\a', '\x5', '\x2', - '\x2', '\x184', '\x185', '\x5', '\x4', '\x3', '\x2', '\x185', '\x186', - '\a', '\x6', '\x2', '\x2', '\x186', '\x188', '\x3', '\x2', '\x2', '\x2', - '\x187', '\x15D', '\x3', '\x2', '\x2', '\x2', '\x187', '\x15F', '\x3', - '\x2', '\x2', '\x2', '\x187', '\x160', '\x3', '\x2', '\x2', '\x2', '\x187', - '\x161', '\x3', '\x2', '\x2', '\x2', '\x187', '\x166', '\x3', '\x2', '\x2', - '\x2', '\x187', '\x16D', '\x3', '\x2', '\x2', '\x2', '\x187', '\x175', - '\x3', '\x2', '\x2', '\x2', '\x187', '\x179', '\x3', '\x2', '\x2', '\x2', - '\x187', '\x17D', '\x3', '\x2', '\x2', '\x2', '\x187', '\x182', '\x3', - '\x2', '\x2', '\x2', '\x188', '\x193', '\x3', '\x2', '\x2', '\x2', '\x189', - '\x18A', '\f', '\x6', '\x2', '\x2', '\x18A', '\x18B', '\a', '\a', '\x2', - '\x2', '\x18B', '\x192', '\a', '>', '\x2', '\x2', '\x18C', '\x18D', '\f', - '\x5', '\x2', '\x2', '\x18D', '\x18E', '\a', '\b', '\x2', '\x2', '\x18E', - '\x18F', '\x5', '.', '\x18', '\x2', '\x18F', '\x190', '\a', '\t', '\x2', - '\x2', '\x190', '\x192', '\x3', '\x2', '\x2', '\x2', '\x191', '\x189', - '\x3', '\x2', '\x2', '\x2', '\x191', '\x18C', '\x3', '\x2', '\x2', '\x2', - '\x192', '\x195', '\x3', '\x2', '\x2', '\x2', '\x193', '\x191', '\x3', - '\x2', '\x2', '\x2', '\x193', '\x194', '\x3', '\x2', '\x2', '\x2', '\x194', - 'O', '\x3', '\x2', '\x2', '\x2', '\x195', '\x193', '\x3', '\x2', '\x2', - '\x2', '\x196', '\x19B', '\x5', '.', '\x18', '\x2', '\x197', '\x198', - '\a', '\x4', '\x2', '\x2', '\x198', '\x19A', '\x5', '.', '\x18', '\x2', - '\x199', '\x197', '\x3', '\x2', '\x2', '\x2', '\x19A', '\x19D', '\x3', - '\x2', '\x2', '\x2', '\x19B', '\x199', '\x3', '\x2', '\x2', '\x2', '\x19B', - '\x19C', '\x3', '\x2', '\x2', '\x2', '\x19C', 'Q', '\x3', '\x2', '\x2', - '\x2', '\x19D', '\x19B', '\x3', '\x2', '\x2', '\x2', '\x19E', '\x1A3', - '\x5', 'T', '+', '\x2', '\x19F', '\x1A0', '\a', '\x4', '\x2', '\x2', '\x1A0', - '\x1A2', '\x5', 'T', '+', '\x2', '\x1A1', '\x19F', '\x3', '\x2', '\x2', - '\x2', '\x1A2', '\x1A5', '\x3', '\x2', '\x2', '\x2', '\x1A3', '\x1A1', - '\x3', '\x2', '\x2', '\x2', '\x1A3', '\x1A4', '\x3', '\x2', '\x2', '\x2', - '\x1A4', 'S', '\x3', '\x2', '\x2', '\x2', '\x1A5', '\x1A3', '\x3', '\x2', - '\x2', '\x2', '\x1A6', '\x1A7', '\a', '=', '\x2', '\x2', '\x1A7', '\x1A8', - '\a', '\v', '\x2', '\x2', '\x1A8', '\x1A9', '\x5', '.', '\x18', '\x2', - '\x1A9', 'U', '\x3', '\x2', '\x2', '\x2', '\x1AA', '\x1AB', '\t', '\t', - '\x2', '\x2', '\x1AB', 'W', '\x3', '\x2', '\x2', '\x2', ')', ']', '`', - '\x63', '\x66', 'i', 'm', 'p', 'z', '\x86', '\x8C', '\x95', '\x9A', '\xA1', - '\xA6', '\xAC', '\xBA', '\xBC', '\xCF', '\xD4', '\xE5', '\xEC', '\xF7', - '\xF9', '\xFF', '\x103', '\x10C', '\x115', '\x140', '\x142', '\x159', - '\x163', '\x168', '\x16D', '\x172', '\x187', '\x191', '\x193', '\x19B', - '\x1A3', + '\x2', '\x10F', '\x111', '\x5', '\x38', '\x1D', '\x2', '\x110', '\x112', + '\x5', '\x36', '\x1C', '\x2', '\x111', '\x110', '\x3', '\x2', '\x2', '\x2', + '\x111', '\x112', '\x3', '\x2', '\x2', '\x2', '\x112', '\x35', '\x3', + '\x2', '\x2', '\x2', '\x113', '\x114', '\a', '&', '\x2', '\x2', '\x114', + '\x115', '\a', '=', '\x2', '\x2', '\x115', '\x37', '\x3', '\x2', '\x2', + '\x2', '\x116', '\x117', '\b', '\x1D', '\x1', '\x2', '\x117', '\x118', + '\x5', 'J', '&', '\x2', '\x118', '\x141', '\x3', '\x2', '\x2', '\x2', + '\x119', '\x11A', '\f', '\f', '\x2', '\x2', '\x11A', '\x11B', '\x5', ':', + '\x1E', '\x2', '\x11B', '\x11C', '\x5', '\x38', '\x1D', '\r', '\x11C', + '\x140', '\x3', '\x2', '\x2', '\x2', '\x11D', '\x11E', '\f', '\v', '\x2', + '\x2', '\x11E', '\x11F', '\x5', '<', '\x1F', '\x2', '\x11F', '\x120', + '\x5', '\x38', '\x1D', '\f', '\x120', '\x140', '\x3', '\x2', '\x2', '\x2', + '\x121', '\x122', '\f', '\n', '\x2', '\x2', '\x122', '\x123', '\x5', '>', + ' ', '\x2', '\x123', '\x124', '\x5', '\x38', '\x1D', '\v', '\x124', '\x140', + '\x3', '\x2', '\x2', '\x2', '\x125', '\x126', '\f', '\t', '\x2', '\x2', + '\x126', '\x127', '\x5', '@', '!', '\x2', '\x127', '\x128', '\x5', '\x38', + '\x1D', '\n', '\x128', '\x140', '\x3', '\x2', '\x2', '\x2', '\x129', '\x12A', + '\f', '\b', '\x2', '\x2', '\x12A', '\x12B', '\x5', '\x42', '\"', '\x2', + '\x12B', '\x12C', '\x5', '\x38', '\x1D', '\t', '\x12C', '\x140', '\x3', + '\x2', '\x2', '\x2', '\x12D', '\x12E', '\f', '\a', '\x2', '\x2', '\x12E', + '\x12F', '\x5', '\x44', '#', '\x2', '\x12F', '\x130', '\x5', '\x38', '\x1D', + '\b', '\x130', '\x140', '\x3', '\x2', '\x2', '\x2', '\x131', '\x132', + '\f', '\x6', '\x2', '\x2', '\x132', '\x133', '\x5', '\x46', '$', '\x2', + '\x133', '\x134', '\x5', '\x38', '\x1D', '\a', '\x134', '\x140', '\x3', + '\x2', '\x2', '\x2', '\x135', '\x136', '\f', '\x5', '\x2', '\x2', '\x136', + '\x137', '\a', '\x1E', '\x2', '\x2', '\x137', '\x140', '\x5', '\x38', + '\x1D', '\x6', '\x138', '\x139', '\f', '\x4', '\x2', '\x2', '\x139', '\x13A', + '\a', '\x32', '\x2', '\x2', '\x13A', '\x140', '\x5', '\x38', '\x1D', '\x5', + '\x13B', '\x13C', '\f', '\x3', '\x2', '\x2', '\x13C', '\x13D', '\x5', + 'H', '%', '\x2', '\x13D', '\x13E', '\x5', '\x38', '\x1D', '\x4', '\x13E', + '\x140', '\x3', '\x2', '\x2', '\x2', '\x13F', '\x119', '\x3', '\x2', '\x2', + '\x2', '\x13F', '\x11D', '\x3', '\x2', '\x2', '\x2', '\x13F', '\x121', + '\x3', '\x2', '\x2', '\x2', '\x13F', '\x125', '\x3', '\x2', '\x2', '\x2', + '\x13F', '\x129', '\x3', '\x2', '\x2', '\x2', '\x13F', '\x12D', '\x3', + '\x2', '\x2', '\x2', '\x13F', '\x131', '\x3', '\x2', '\x2', '\x2', '\x13F', + '\x135', '\x3', '\x2', '\x2', '\x2', '\x13F', '\x138', '\x3', '\x2', '\x2', + '\x2', '\x13F', '\x13B', '\x3', '\x2', '\x2', '\x2', '\x140', '\x143', + '\x3', '\x2', '\x2', '\x2', '\x141', '\x13F', '\x3', '\x2', '\x2', '\x2', + '\x141', '\x142', '\x3', '\x2', '\x2', '\x2', '\x142', '\x39', '\x3', + '\x2', '\x2', '\x2', '\x143', '\x141', '\x3', '\x2', '\x2', '\x2', '\x144', + '\x145', '\t', '\x4', '\x2', '\x2', '\x145', ';', '\x3', '\x2', '\x2', + '\x2', '\x146', '\x147', '\t', '\x5', '\x2', '\x2', '\x147', '=', '\x3', + '\x2', '\x2', '\x2', '\x148', '\x149', '\t', '\x6', '\x2', '\x2', '\x149', + '?', '\x3', '\x2', '\x2', '\x2', '\x14A', '\x14B', '\t', '\a', '\x2', + '\x2', '\x14B', '\x41', '\x3', '\x2', '\x2', '\x2', '\x14C', '\x14D', + '\a', '\x17', '\x2', '\x2', '\x14D', '\x43', '\x3', '\x2', '\x2', '\x2', + '\x14E', '\x14F', '\a', '\x18', '\x2', '\x2', '\x14F', '\x45', '\x3', + '\x2', '\x2', '\x2', '\x150', '\x151', '\a', '\x19', '\x2', '\x2', '\x151', + 'G', '\x3', '\x2', '\x2', '\x2', '\x152', '\x153', '\a', '\x1A', '\x2', + '\x2', '\x153', 'I', '\x3', '\x2', '\x2', '\x2', '\x154', '\x159', '\x5', + 'N', '(', '\x2', '\x155', '\x156', '\x5', 'L', '\'', '\x2', '\x156', '\x157', + '\x5', 'J', '&', '\x2', '\x157', '\x159', '\x3', '\x2', '\x2', '\x2', + '\x158', '\x154', '\x3', '\x2', '\x2', '\x2', '\x158', '\x155', '\x3', + '\x2', '\x2', '\x2', '\x159', 'K', '\x3', '\x2', '\x2', '\x2', '\x15A', + '\x15B', '\t', '\b', '\x2', '\x2', '\x15B', 'M', '\x3', '\x2', '\x2', + '\x2', '\x15C', '\x15D', '\b', '(', '\x1', '\x2', '\x15D', '\x187', '\a', + '>', '\x2', '\x2', '\x15E', '\x187', '\a', '?', '\x2', '\x2', '\x15F', + '\x187', '\x5', 'V', ',', '\x2', '\x160', '\x162', '\a', '\b', '\x2', + '\x2', '\x161', '\x163', '\x5', 'P', ')', '\x2', '\x162', '\x161', '\x3', + '\x2', '\x2', '\x2', '\x162', '\x163', '\x3', '\x2', '\x2', '\x2', '\x163', + '\x164', '\x3', '\x2', '\x2', '\x2', '\x164', '\x187', '\a', '\t', '\x2', + '\x2', '\x165', '\x167', '\a', '\x1C', '\x2', '\x2', '\x166', '\x168', + '\x5', 'R', '*', '\x2', '\x167', '\x166', '\x3', '\x2', '\x2', '\x2', + '\x167', '\x168', '\x3', '\x2', '\x2', '\x2', '\x168', '\x169', '\x3', + '\x2', '\x2', '\x2', '\x169', '\x187', '\a', '\x1D', '\x2', '\x2', '\x16A', + '\x16B', '\a', '\x37', '\x2', '\x2', '\x16B', '\x16D', '\a', '\a', '\x2', + '\x2', '\x16C', '\x16A', '\x3', '\x2', '\x2', '\x2', '\x16C', '\x16D', + '\x3', '\x2', '\x2', '\x2', '\x16D', '\x16E', '\x3', '\x2', '\x2', '\x2', + '\x16E', '\x16F', '\a', '>', '\x2', '\x2', '\x16F', '\x171', '\a', '\x5', + '\x2', '\x2', '\x170', '\x172', '\x5', 'P', ')', '\x2', '\x171', '\x170', + '\x3', '\x2', '\x2', '\x2', '\x171', '\x172', '\x3', '\x2', '\x2', '\x2', + '\x172', '\x173', '\x3', '\x2', '\x2', '\x2', '\x173', '\x187', '\a', + '\x6', '\x2', '\x2', '\x174', '\x175', '\a', '\x5', '\x2', '\x2', '\x175', + '\x176', '\x5', '.', '\x18', '\x2', '\x176', '\x177', '\a', '\x6', '\x2', + '\x2', '\x177', '\x187', '\x3', '\x2', '\x2', '\x2', '\x178', '\x179', + '\a', '\x5', '\x2', '\x2', '\x179', '\x17A', '\x5', '\x4', '\x3', '\x2', + '\x17A', '\x17B', '\a', '\x6', '\x2', '\x2', '\x17B', '\x187', '\x3', + '\x2', '\x2', '\x2', '\x17C', '\x17D', '\a', '\'', '\x2', '\x2', '\x17D', + '\x17E', '\a', '\x5', '\x2', '\x2', '\x17E', '\x17F', '\x5', '\x4', '\x3', + '\x2', '\x17F', '\x180', '\a', '\x6', '\x2', '\x2', '\x180', '\x187', + '\x3', '\x2', '\x2', '\x2', '\x181', '\x182', '\a', '\x1F', '\x2', '\x2', + '\x182', '\x183', '\a', '\x5', '\x2', '\x2', '\x183', '\x184', '\x5', + '\x4', '\x3', '\x2', '\x184', '\x185', '\a', '\x6', '\x2', '\x2', '\x185', + '\x187', '\x3', '\x2', '\x2', '\x2', '\x186', '\x15C', '\x3', '\x2', '\x2', + '\x2', '\x186', '\x15E', '\x3', '\x2', '\x2', '\x2', '\x186', '\x15F', + '\x3', '\x2', '\x2', '\x2', '\x186', '\x160', '\x3', '\x2', '\x2', '\x2', + '\x186', '\x165', '\x3', '\x2', '\x2', '\x2', '\x186', '\x16C', '\x3', + '\x2', '\x2', '\x2', '\x186', '\x174', '\x3', '\x2', '\x2', '\x2', '\x186', + '\x178', '\x3', '\x2', '\x2', '\x2', '\x186', '\x17C', '\x3', '\x2', '\x2', + '\x2', '\x186', '\x181', '\x3', '\x2', '\x2', '\x2', '\x187', '\x192', + '\x3', '\x2', '\x2', '\x2', '\x188', '\x189', '\f', '\x6', '\x2', '\x2', + '\x189', '\x18A', '\a', '\a', '\x2', '\x2', '\x18A', '\x191', '\a', '>', + '\x2', '\x2', '\x18B', '\x18C', '\f', '\x5', '\x2', '\x2', '\x18C', '\x18D', + '\a', '\b', '\x2', '\x2', '\x18D', '\x18E', '\x5', '.', '\x18', '\x2', + '\x18E', '\x18F', '\a', '\t', '\x2', '\x2', '\x18F', '\x191', '\x3', '\x2', + '\x2', '\x2', '\x190', '\x188', '\x3', '\x2', '\x2', '\x2', '\x190', '\x18B', + '\x3', '\x2', '\x2', '\x2', '\x191', '\x194', '\x3', '\x2', '\x2', '\x2', + '\x192', '\x190', '\x3', '\x2', '\x2', '\x2', '\x192', '\x193', '\x3', + '\x2', '\x2', '\x2', '\x193', 'O', '\x3', '\x2', '\x2', '\x2', '\x194', + '\x192', '\x3', '\x2', '\x2', '\x2', '\x195', '\x19A', '\x5', '.', '\x18', + '\x2', '\x196', '\x197', '\a', '\x4', '\x2', '\x2', '\x197', '\x199', + '\x5', '.', '\x18', '\x2', '\x198', '\x196', '\x3', '\x2', '\x2', '\x2', + '\x199', '\x19C', '\x3', '\x2', '\x2', '\x2', '\x19A', '\x198', '\x3', + '\x2', '\x2', '\x2', '\x19A', '\x19B', '\x3', '\x2', '\x2', '\x2', '\x19B', + 'Q', '\x3', '\x2', '\x2', '\x2', '\x19C', '\x19A', '\x3', '\x2', '\x2', + '\x2', '\x19D', '\x1A2', '\x5', 'T', '+', '\x2', '\x19E', '\x19F', '\a', + '\x4', '\x2', '\x2', '\x19F', '\x1A1', '\x5', 'T', '+', '\x2', '\x1A0', + '\x19E', '\x3', '\x2', '\x2', '\x2', '\x1A1', '\x1A4', '\x3', '\x2', '\x2', + '\x2', '\x1A2', '\x1A0', '\x3', '\x2', '\x2', '\x2', '\x1A2', '\x1A3', + '\x3', '\x2', '\x2', '\x2', '\x1A3', 'S', '\x3', '\x2', '\x2', '\x2', + '\x1A4', '\x1A2', '\x3', '\x2', '\x2', '\x2', '\x1A5', '\x1A6', '\a', + '=', '\x2', '\x2', '\x1A6', '\x1A7', '\a', '\v', '\x2', '\x2', '\x1A7', + '\x1A8', '\x5', '.', '\x18', '\x2', '\x1A8', 'U', '\x3', '\x2', '\x2', + '\x2', '\x1A9', '\x1AA', '\t', '\t', '\x2', '\x2', '\x1AA', 'W', '\x3', + '\x2', '\x2', '\x2', ')', ']', '`', '\x63', '\x66', 'i', 'm', 'p', 'z', + '\x86', '\x8C', '\x95', '\x9A', '\xA1', '\xA6', '\xAC', '\xBA', '\xBC', + '\xCF', '\xD4', '\xE5', '\xEC', '\xF7', '\xF9', '\xFF', '\x103', '\x10C', + '\x111', '\x13F', '\x141', '\x158', '\x162', '\x167', '\x16C', '\x171', + '\x186', '\x190', '\x192', '\x19A', '\x1A2', }; public static readonly ATN _ATN = From 9bd7692502cc9b69b5b91ff3608e3652406164f2 Mon Sep 17 00:00:00 2001 From: Minh Le Date: Tue, 30 Mar 2021 16:58:34 -0700 Subject: [PATCH 04/15] fix a missing if statement --- .../src/Query/Core/Parser/CstToAstVisitor.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs index 788da8e851..dbb1caed60 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs @@ -787,6 +787,10 @@ public override SqlObject VisitLogical_scalar_expression([NotNull] sqlParser.Log { sqlObject = this.Visit(context.in_scalar_expression()); } + else if (context.like_scalar_expression() != null) + { + sqlObject = this.Visit(context.like_scalar_expression()); + } else { throw new NotImplementedException(); From 3cb8d15678dd98c7354bccc537d44e03a2245a59 Mon Sep 17 00:00:00 2001 From: Minh Le Date: Tue, 20 Apr 2021 14:22:49 -0700 Subject: [PATCH 05/15] address code review --- .../Query/Core/Pipeline/CosmosQueryExecutionContextFactory.cs | 2 +- .../src/SqlObjects/Visitors/SqlObjectTextSerializer.cs | 2 +- .../src/SqlObjects/Visitors/SqlObjectVisitor{TArg,TOutput}.cs | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Pipeline/CosmosQueryExecutionContextFactory.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Pipeline/CosmosQueryExecutionContextFactory.cs index fe6f271e93..feff750f35 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Pipeline/CosmosQueryExecutionContextFactory.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Pipeline/CosmosQueryExecutionContextFactory.cs @@ -774,7 +774,7 @@ public override bool Visit(SqlParameterRefScalarExpression scalarExpression) public override bool Visit(SqlLikeScalarExpression scalarExpression) { - throw new NotImplementedException(); + return false; } } } diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectTextSerializer.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectTextSerializer.cs index 63e3a22325..c4d3dfa68d 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectTextSerializer.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectTextSerializer.cs @@ -284,7 +284,7 @@ public override void Visit(SqlLimitSpec sqlObject) public override void Visit(SqlLikeScalarExpression sqlObject) { - this.writer.Write("("); // why? + this.writer.Write("("); sqlObject.Expression.Accept(this); diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectVisitor{TArg,TOutput}.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectVisitor{TArg,TOutput}.cs index 54497927b8..eda7022f3b 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectVisitor{TArg,TOutput}.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectVisitor{TArg,TOutput}.cs @@ -32,7 +32,6 @@ abstract class SqlObjectVisitor public abstract TOutput Visit(SqlInScalarExpression sqlObject, TArg input); public abstract TOutput Visit(SqlJoinCollectionExpression sqlObject, TArg input); public abstract TOutput Visit(SqlLikeScalarExpression sqlObject, TArg input); - public abstract TOutput Visit(SqlLimitSpec sqlObject, TArg input); public abstract TOutput Visit(SqlLiteralScalarExpression sqlObject, TArg input); public abstract TOutput Visit(SqlMemberIndexerScalarExpression sqlObject, TArg input); From 4e9240d333f50be024a063841a765db9ed32734b Mon Sep 17 00:00:00 2001 From: Minh Le Date: Tue, 20 Apr 2021 14:52:34 -0700 Subject: [PATCH 06/15] modify grammar file to fix bug --- Microsoft.Azure.Cosmos/src/Query/Core/Parser/sql.g4 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sql.g4 b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sql.g4 index 9257ded987..ae7b5509d5 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sql.g4 +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sql.g4 @@ -89,6 +89,8 @@ logical_scalar_expression : binary_scalar_expression | in_scalar_expression | like_scalar_expression + | logical_scalar_expression K_AND logical_scalar_expression + | logical_scalar_expression K_OR logical_scalar_expression ; in_scalar_expression @@ -259,7 +261,7 @@ fragment SAFECODEPOINT ; IDENTIFIER - : [a-zA-Z_][a-zA-Z_]*DIGIT* + : [a-zA-Z_]([a-zA-Z_]|DIGIT)* ; PARAMETER From e81caa7c8aa5644f389ee869ce84a3922760e526 Mon Sep 17 00:00:00 2001 From: Minh Le Date: Tue, 20 Apr 2021 15:05:59 -0700 Subject: [PATCH 07/15] Regenerate the appropriate files for grammar --- .../src/Query/Core/Parser/IsqlListener.cs | 1349 +++++++++-------- .../src/Query/Core/Parser/IsqlVisitor.cs | 803 +++++----- .../src/Query/Core/Parser/sqlBaseListener.cs | 856 +++++++++++ .../src/Query/Core/Parser/sqlBaseVisitor.cs | 2 +- .../src/Query/Core/Parser/sqlLexer.cs | 294 ++-- .../src/Query/Core/Parser/sqlParser.cs | 984 ++++++------ 6 files changed, 2625 insertions(+), 1663 deletions(-) create mode 100644 Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlBaseListener.cs diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/IsqlListener.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/IsqlListener.cs index 3882ca42fb..2d5f837940 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/IsqlListener.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/IsqlListener.cs @@ -1,4 +1,4 @@ -//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ // // This code was generated by a tool. // ANTLR Version: 4.7.2 @@ -8,7 +8,7 @@ // //------------------------------------------------------------------------------ -// Generated from C:\CosmosSQLANTLR\CosmosSqlAntlr\CosmosSqlAntlr\sql.g4 by ANTLR 4.7.2 +// Generated from sql.g4 by ANTLR 4.7.2 // Unreachable code detected #pragma warning disable 0162 @@ -21,672 +21,693 @@ using Antlr4.Runtime.Misc; using IParseTreeListener = Antlr4.Runtime.Tree.IParseTreeListener; +using IToken = Antlr4.Runtime.IToken; /// /// This interface defines a complete listener for a parse tree produced by /// . /// [System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.7.2")] -internal interface IsqlListener : IParseTreeListener -{ - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterProgram([NotNull] sqlParser.ProgramContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitProgram([NotNull] sqlParser.ProgramContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterSql_query([NotNull] sqlParser.Sql_queryContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitSql_query([NotNull] sqlParser.Sql_queryContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterSelect_clause([NotNull] sqlParser.Select_clauseContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitSelect_clause([NotNull] sqlParser.Select_clauseContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterTop_spec([NotNull] sqlParser.Top_specContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitTop_spec([NotNull] sqlParser.Top_specContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterSelection([NotNull] sqlParser.SelectionContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitSelection([NotNull] sqlParser.SelectionContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterSelect_star_spec([NotNull] sqlParser.Select_star_specContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitSelect_star_spec([NotNull] sqlParser.Select_star_specContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterSelect_value_spec([NotNull] sqlParser.Select_value_specContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitSelect_value_spec([NotNull] sqlParser.Select_value_specContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterSelect_list_spec([NotNull] sqlParser.Select_list_specContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitSelect_list_spec([NotNull] sqlParser.Select_list_specContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterSelect_item([NotNull] sqlParser.Select_itemContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitSelect_item([NotNull] sqlParser.Select_itemContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterFrom_clause([NotNull] sqlParser.From_clauseContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitFrom_clause([NotNull] sqlParser.From_clauseContext context); - /// - /// Enter a parse tree produced by the JoinCollectionExpression - /// labeled alternative in . - /// - /// The parse tree. - void EnterJoinCollectionExpression([NotNull] sqlParser.JoinCollectionExpressionContext context); - /// - /// Exit a parse tree produced by the JoinCollectionExpression - /// labeled alternative in . - /// - /// The parse tree. - void ExitJoinCollectionExpression([NotNull] sqlParser.JoinCollectionExpressionContext context); - /// - /// Enter a parse tree produced by the AliasedCollectionExpression - /// labeled alternative in . - /// - /// The parse tree. - void EnterAliasedCollectionExpression([NotNull] sqlParser.AliasedCollectionExpressionContext context); - /// - /// Exit a parse tree produced by the AliasedCollectionExpression - /// labeled alternative in . - /// - /// The parse tree. - void ExitAliasedCollectionExpression([NotNull] sqlParser.AliasedCollectionExpressionContext context); - /// - /// Enter a parse tree produced by the ArrayIteratorCollectionExpression - /// labeled alternative in . - /// - /// The parse tree. - void EnterArrayIteratorCollectionExpression([NotNull] sqlParser.ArrayIteratorCollectionExpressionContext context); - /// - /// Exit a parse tree produced by the ArrayIteratorCollectionExpression - /// labeled alternative in . - /// - /// The parse tree. - void ExitArrayIteratorCollectionExpression([NotNull] sqlParser.ArrayIteratorCollectionExpressionContext context); - /// - /// Enter a parse tree produced by the InputPathCollection - /// labeled alternative in . - /// - /// The parse tree. - void EnterInputPathCollection([NotNull] sqlParser.InputPathCollectionContext context); - /// - /// Exit a parse tree produced by the InputPathCollection - /// labeled alternative in . - /// - /// The parse tree. - void ExitInputPathCollection([NotNull] sqlParser.InputPathCollectionContext context); - /// - /// Enter a parse tree produced by the SubqueryCollection - /// labeled alternative in . - /// - /// The parse tree. - void EnterSubqueryCollection([NotNull] sqlParser.SubqueryCollectionContext context); - /// - /// Exit a parse tree produced by the SubqueryCollection - /// labeled alternative in . - /// - /// The parse tree. - void ExitSubqueryCollection([NotNull] sqlParser.SubqueryCollectionContext context); - /// - /// Enter a parse tree produced by the StringPathExpression - /// labeled alternative in . - /// - /// The parse tree. - void EnterStringPathExpression([NotNull] sqlParser.StringPathExpressionContext context); - /// - /// Exit a parse tree produced by the StringPathExpression - /// labeled alternative in . - /// - /// The parse tree. - void ExitStringPathExpression([NotNull] sqlParser.StringPathExpressionContext context); - /// - /// Enter a parse tree produced by the EpsilonPathExpression - /// labeled alternative in . - /// - /// The parse tree. - void EnterEpsilonPathExpression([NotNull] sqlParser.EpsilonPathExpressionContext context); - /// - /// Exit a parse tree produced by the EpsilonPathExpression - /// labeled alternative in . - /// - /// The parse tree. - void ExitEpsilonPathExpression([NotNull] sqlParser.EpsilonPathExpressionContext context); - /// - /// Enter a parse tree produced by the IdentifierPathExpression - /// labeled alternative in . - /// - /// The parse tree. - void EnterIdentifierPathExpression([NotNull] sqlParser.IdentifierPathExpressionContext context); - /// - /// Exit a parse tree produced by the IdentifierPathExpression - /// labeled alternative in . - /// - /// The parse tree. - void ExitIdentifierPathExpression([NotNull] sqlParser.IdentifierPathExpressionContext context); - /// - /// Enter a parse tree produced by the NumberPathExpression - /// labeled alternative in . - /// - /// The parse tree. - void EnterNumberPathExpression([NotNull] sqlParser.NumberPathExpressionContext context); - /// - /// Exit a parse tree produced by the NumberPathExpression - /// labeled alternative in . - /// - /// The parse tree. - void ExitNumberPathExpression([NotNull] sqlParser.NumberPathExpressionContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterWhere_clause([NotNull] sqlParser.Where_clauseContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitWhere_clause([NotNull] sqlParser.Where_clauseContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterGroup_by_clause([NotNull] sqlParser.Group_by_clauseContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitGroup_by_clause([NotNull] sqlParser.Group_by_clauseContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterOrder_by_clause([NotNull] sqlParser.Order_by_clauseContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitOrder_by_clause([NotNull] sqlParser.Order_by_clauseContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterOrder_by_items([NotNull] sqlParser.Order_by_itemsContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitOrder_by_items([NotNull] sqlParser.Order_by_itemsContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterOrder_by_item([NotNull] sqlParser.Order_by_itemContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitOrder_by_item([NotNull] sqlParser.Order_by_itemContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterSort_order([NotNull] sqlParser.Sort_orderContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitSort_order([NotNull] sqlParser.Sort_orderContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterOffset_limit_clause([NotNull] sqlParser.Offset_limit_clauseContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitOffset_limit_clause([NotNull] sqlParser.Offset_limit_clauseContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterOffset_count([NotNull] sqlParser.Offset_countContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitOffset_count([NotNull] sqlParser.Offset_countContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterLimit_count([NotNull] sqlParser.Limit_countContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitLimit_count([NotNull] sqlParser.Limit_countContext context); - /// - /// Enter a parse tree produced by the LogicalScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - void EnterLogicalScalarExpression([NotNull] sqlParser.LogicalScalarExpressionContext context); - /// - /// Exit a parse tree produced by the LogicalScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - void ExitLogicalScalarExpression([NotNull] sqlParser.LogicalScalarExpressionContext context); - /// - /// Enter a parse tree produced by the ConditionalScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - void EnterConditionalScalarExpression([NotNull] sqlParser.ConditionalScalarExpressionContext context); - /// - /// Exit a parse tree produced by the ConditionalScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - void ExitConditionalScalarExpression([NotNull] sqlParser.ConditionalScalarExpressionContext context); - /// - /// Enter a parse tree produced by the CoalesceScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - void EnterCoalesceScalarExpression([NotNull] sqlParser.CoalesceScalarExpressionContext context); - /// - /// Exit a parse tree produced by the CoalesceScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - void ExitCoalesceScalarExpression([NotNull] sqlParser.CoalesceScalarExpressionContext context); - /// - /// Enter a parse tree produced by the BetweenScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - void EnterBetweenScalarExpression([NotNull] sqlParser.BetweenScalarExpressionContext context); - /// - /// Exit a parse tree produced by the BetweenScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - void ExitBetweenScalarExpression([NotNull] sqlParser.BetweenScalarExpressionContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterLogical_scalar_expression([NotNull] sqlParser.Logical_scalar_expressionContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitLogical_scalar_expression([NotNull] sqlParser.Logical_scalar_expressionContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterIn_scalar_expression([NotNull] sqlParser.In_scalar_expressionContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitIn_scalar_expression([NotNull] sqlParser.In_scalar_expressionContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterBinary_scalar_expression([NotNull] sqlParser.Binary_scalar_expressionContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitBinary_scalar_expression([NotNull] sqlParser.Binary_scalar_expressionContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterMultiplicative_operator([NotNull] sqlParser.Multiplicative_operatorContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitMultiplicative_operator([NotNull] sqlParser.Multiplicative_operatorContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterAdditive_operator([NotNull] sqlParser.Additive_operatorContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitAdditive_operator([NotNull] sqlParser.Additive_operatorContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterRelational_operator([NotNull] sqlParser.Relational_operatorContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitRelational_operator([NotNull] sqlParser.Relational_operatorContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterEquality_operator([NotNull] sqlParser.Equality_operatorContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitEquality_operator([NotNull] sqlParser.Equality_operatorContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterBitwise_and_operator([NotNull] sqlParser.Bitwise_and_operatorContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitBitwise_and_operator([NotNull] sqlParser.Bitwise_and_operatorContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterBitwise_exclusive_or_operator([NotNull] sqlParser.Bitwise_exclusive_or_operatorContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitBitwise_exclusive_or_operator([NotNull] sqlParser.Bitwise_exclusive_or_operatorContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterBitwise_inclusive_or_operator([NotNull] sqlParser.Bitwise_inclusive_or_operatorContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitBitwise_inclusive_or_operator([NotNull] sqlParser.Bitwise_inclusive_or_operatorContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterString_concat_operator([NotNull] sqlParser.String_concat_operatorContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitString_concat_operator([NotNull] sqlParser.String_concat_operatorContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterUnary_scalar_expression([NotNull] sqlParser.Unary_scalar_expressionContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitUnary_scalar_expression([NotNull] sqlParser.Unary_scalar_expressionContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterUnary_operator([NotNull] sqlParser.Unary_operatorContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitUnary_operator([NotNull] sqlParser.Unary_operatorContext context); - /// - /// Enter a parse tree produced by the SubqueryScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - void EnterSubqueryScalarExpression([NotNull] sqlParser.SubqueryScalarExpressionContext context); - /// - /// Exit a parse tree produced by the SubqueryScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - void ExitSubqueryScalarExpression([NotNull] sqlParser.SubqueryScalarExpressionContext context); - /// - /// Enter a parse tree produced by the PropertyRefScalarExpressionBase - /// labeled alternative in . - /// - /// The parse tree. - void EnterPropertyRefScalarExpressionBase([NotNull] sqlParser.PropertyRefScalarExpressionBaseContext context); - /// - /// Exit a parse tree produced by the PropertyRefScalarExpressionBase - /// labeled alternative in . - /// - /// The parse tree. - void ExitPropertyRefScalarExpressionBase([NotNull] sqlParser.PropertyRefScalarExpressionBaseContext context); - /// - /// Enter a parse tree produced by the FunctionCallScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - void EnterFunctionCallScalarExpression([NotNull] sqlParser.FunctionCallScalarExpressionContext context); - /// - /// Exit a parse tree produced by the FunctionCallScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - void ExitFunctionCallScalarExpression([NotNull] sqlParser.FunctionCallScalarExpressionContext context); - /// - /// Enter a parse tree produced by the LiteralScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - void EnterLiteralScalarExpression([NotNull] sqlParser.LiteralScalarExpressionContext context); - /// - /// Exit a parse tree produced by the LiteralScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - void ExitLiteralScalarExpression([NotNull] sqlParser.LiteralScalarExpressionContext context); - /// - /// Enter a parse tree produced by the ObjectCreateScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - void EnterObjectCreateScalarExpression([NotNull] sqlParser.ObjectCreateScalarExpressionContext context); - /// - /// Exit a parse tree produced by the ObjectCreateScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - void ExitObjectCreateScalarExpression([NotNull] sqlParser.ObjectCreateScalarExpressionContext context); - /// - /// Enter a parse tree produced by the ParenthesizedScalarExperession - /// labeled alternative in . - /// - /// The parse tree. - void EnterParenthesizedScalarExperession([NotNull] sqlParser.ParenthesizedScalarExperessionContext context); - /// - /// Exit a parse tree produced by the ParenthesizedScalarExperession - /// labeled alternative in . - /// - /// The parse tree. - void ExitParenthesizedScalarExperession([NotNull] sqlParser.ParenthesizedScalarExperessionContext context); - /// - /// Enter a parse tree produced by the ParameterRefScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - void EnterParameterRefScalarExpression([NotNull] sqlParser.ParameterRefScalarExpressionContext context); - /// - /// Exit a parse tree produced by the ParameterRefScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - void ExitParameterRefScalarExpression([NotNull] sqlParser.ParameterRefScalarExpressionContext context); - /// - /// Enter a parse tree produced by the ArrayCreateScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - void EnterArrayCreateScalarExpression([NotNull] sqlParser.ArrayCreateScalarExpressionContext context); - /// - /// Exit a parse tree produced by the ArrayCreateScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - void ExitArrayCreateScalarExpression([NotNull] sqlParser.ArrayCreateScalarExpressionContext context); - /// - /// Enter a parse tree produced by the ExistsScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - void EnterExistsScalarExpression([NotNull] sqlParser.ExistsScalarExpressionContext context); - /// - /// Exit a parse tree produced by the ExistsScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - void ExitExistsScalarExpression([NotNull] sqlParser.ExistsScalarExpressionContext context); - /// - /// Enter a parse tree produced by the ArrayScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - void EnterArrayScalarExpression([NotNull] sqlParser.ArrayScalarExpressionContext context); - /// - /// Exit a parse tree produced by the ArrayScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - void ExitArrayScalarExpression([NotNull] sqlParser.ArrayScalarExpressionContext context); - /// - /// Enter a parse tree produced by the MemberIndexerScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - void EnterMemberIndexerScalarExpression([NotNull] sqlParser.MemberIndexerScalarExpressionContext context); - /// - /// Exit a parse tree produced by the MemberIndexerScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - void ExitMemberIndexerScalarExpression([NotNull] sqlParser.MemberIndexerScalarExpressionContext context); - /// - /// Enter a parse tree produced by the PropertyRefScalarExpressionRecursive - /// labeled alternative in . - /// - /// The parse tree. - void EnterPropertyRefScalarExpressionRecursive([NotNull] sqlParser.PropertyRefScalarExpressionRecursiveContext context); - /// - /// Exit a parse tree produced by the PropertyRefScalarExpressionRecursive - /// labeled alternative in . - /// - /// The parse tree. - void ExitPropertyRefScalarExpressionRecursive([NotNull] sqlParser.PropertyRefScalarExpressionRecursiveContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterScalar_expression_list([NotNull] sqlParser.Scalar_expression_listContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitScalar_expression_list([NotNull] sqlParser.Scalar_expression_listContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterObject_property_list([NotNull] sqlParser.Object_property_listContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitObject_property_list([NotNull] sqlParser.Object_property_listContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterObject_property([NotNull] sqlParser.Object_propertyContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitObject_property([NotNull] sqlParser.Object_propertyContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterLiteral([NotNull] sqlParser.LiteralContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitLiteral([NotNull] sqlParser.LiteralContext context); +[System.CLSCompliant(false)] +public interface IsqlListener : IParseTreeListener { + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterProgram([NotNull] sqlParser.ProgramContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitProgram([NotNull] sqlParser.ProgramContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterSql_query([NotNull] sqlParser.Sql_queryContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitSql_query([NotNull] sqlParser.Sql_queryContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterSelect_clause([NotNull] sqlParser.Select_clauseContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitSelect_clause([NotNull] sqlParser.Select_clauseContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterTop_spec([NotNull] sqlParser.Top_specContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitTop_spec([NotNull] sqlParser.Top_specContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterSelection([NotNull] sqlParser.SelectionContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitSelection([NotNull] sqlParser.SelectionContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterSelect_star_spec([NotNull] sqlParser.Select_star_specContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitSelect_star_spec([NotNull] sqlParser.Select_star_specContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterSelect_value_spec([NotNull] sqlParser.Select_value_specContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitSelect_value_spec([NotNull] sqlParser.Select_value_specContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterSelect_list_spec([NotNull] sqlParser.Select_list_specContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitSelect_list_spec([NotNull] sqlParser.Select_list_specContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterSelect_item([NotNull] sqlParser.Select_itemContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitSelect_item([NotNull] sqlParser.Select_itemContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterFrom_clause([NotNull] sqlParser.From_clauseContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitFrom_clause([NotNull] sqlParser.From_clauseContext context); + /// + /// Enter a parse tree produced by the JoinCollectionExpression + /// labeled alternative in . + /// + /// The parse tree. + void EnterJoinCollectionExpression([NotNull] sqlParser.JoinCollectionExpressionContext context); + /// + /// Exit a parse tree produced by the JoinCollectionExpression + /// labeled alternative in . + /// + /// The parse tree. + void ExitJoinCollectionExpression([NotNull] sqlParser.JoinCollectionExpressionContext context); + /// + /// Enter a parse tree produced by the AliasedCollectionExpression + /// labeled alternative in . + /// + /// The parse tree. + void EnterAliasedCollectionExpression([NotNull] sqlParser.AliasedCollectionExpressionContext context); + /// + /// Exit a parse tree produced by the AliasedCollectionExpression + /// labeled alternative in . + /// + /// The parse tree. + void ExitAliasedCollectionExpression([NotNull] sqlParser.AliasedCollectionExpressionContext context); + /// + /// Enter a parse tree produced by the ArrayIteratorCollectionExpression + /// labeled alternative in . + /// + /// The parse tree. + void EnterArrayIteratorCollectionExpression([NotNull] sqlParser.ArrayIteratorCollectionExpressionContext context); + /// + /// Exit a parse tree produced by the ArrayIteratorCollectionExpression + /// labeled alternative in . + /// + /// The parse tree. + void ExitArrayIteratorCollectionExpression([NotNull] sqlParser.ArrayIteratorCollectionExpressionContext context); + /// + /// Enter a parse tree produced by the InputPathCollection + /// labeled alternative in . + /// + /// The parse tree. + void EnterInputPathCollection([NotNull] sqlParser.InputPathCollectionContext context); + /// + /// Exit a parse tree produced by the InputPathCollection + /// labeled alternative in . + /// + /// The parse tree. + void ExitInputPathCollection([NotNull] sqlParser.InputPathCollectionContext context); + /// + /// Enter a parse tree produced by the SubqueryCollection + /// labeled alternative in . + /// + /// The parse tree. + void EnterSubqueryCollection([NotNull] sqlParser.SubqueryCollectionContext context); + /// + /// Exit a parse tree produced by the SubqueryCollection + /// labeled alternative in . + /// + /// The parse tree. + void ExitSubqueryCollection([NotNull] sqlParser.SubqueryCollectionContext context); + /// + /// Enter a parse tree produced by the StringPathExpression + /// labeled alternative in . + /// + /// The parse tree. + void EnterStringPathExpression([NotNull] sqlParser.StringPathExpressionContext context); + /// + /// Exit a parse tree produced by the StringPathExpression + /// labeled alternative in . + /// + /// The parse tree. + void ExitStringPathExpression([NotNull] sqlParser.StringPathExpressionContext context); + /// + /// Enter a parse tree produced by the EpsilonPathExpression + /// labeled alternative in . + /// + /// The parse tree. + void EnterEpsilonPathExpression([NotNull] sqlParser.EpsilonPathExpressionContext context); + /// + /// Exit a parse tree produced by the EpsilonPathExpression + /// labeled alternative in . + /// + /// The parse tree. + void ExitEpsilonPathExpression([NotNull] sqlParser.EpsilonPathExpressionContext context); + /// + /// Enter a parse tree produced by the IdentifierPathExpression + /// labeled alternative in . + /// + /// The parse tree. + void EnterIdentifierPathExpression([NotNull] sqlParser.IdentifierPathExpressionContext context); + /// + /// Exit a parse tree produced by the IdentifierPathExpression + /// labeled alternative in . + /// + /// The parse tree. + void ExitIdentifierPathExpression([NotNull] sqlParser.IdentifierPathExpressionContext context); + /// + /// Enter a parse tree produced by the NumberPathExpression + /// labeled alternative in . + /// + /// The parse tree. + void EnterNumberPathExpression([NotNull] sqlParser.NumberPathExpressionContext context); + /// + /// Exit a parse tree produced by the NumberPathExpression + /// labeled alternative in . + /// + /// The parse tree. + void ExitNumberPathExpression([NotNull] sqlParser.NumberPathExpressionContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterWhere_clause([NotNull] sqlParser.Where_clauseContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitWhere_clause([NotNull] sqlParser.Where_clauseContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterGroup_by_clause([NotNull] sqlParser.Group_by_clauseContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitGroup_by_clause([NotNull] sqlParser.Group_by_clauseContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterOrder_by_clause([NotNull] sqlParser.Order_by_clauseContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitOrder_by_clause([NotNull] sqlParser.Order_by_clauseContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterOrder_by_items([NotNull] sqlParser.Order_by_itemsContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitOrder_by_items([NotNull] sqlParser.Order_by_itemsContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterOrder_by_item([NotNull] sqlParser.Order_by_itemContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitOrder_by_item([NotNull] sqlParser.Order_by_itemContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterSort_order([NotNull] sqlParser.Sort_orderContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitSort_order([NotNull] sqlParser.Sort_orderContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterOffset_limit_clause([NotNull] sqlParser.Offset_limit_clauseContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitOffset_limit_clause([NotNull] sqlParser.Offset_limit_clauseContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterOffset_count([NotNull] sqlParser.Offset_countContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitOffset_count([NotNull] sqlParser.Offset_countContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterLimit_count([NotNull] sqlParser.Limit_countContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitLimit_count([NotNull] sqlParser.Limit_countContext context); + /// + /// Enter a parse tree produced by the LogicalScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + void EnterLogicalScalarExpression([NotNull] sqlParser.LogicalScalarExpressionContext context); + /// + /// Exit a parse tree produced by the LogicalScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + void ExitLogicalScalarExpression([NotNull] sqlParser.LogicalScalarExpressionContext context); + /// + /// Enter a parse tree produced by the ConditionalScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + void EnterConditionalScalarExpression([NotNull] sqlParser.ConditionalScalarExpressionContext context); + /// + /// Exit a parse tree produced by the ConditionalScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + void ExitConditionalScalarExpression([NotNull] sqlParser.ConditionalScalarExpressionContext context); + /// + /// Enter a parse tree produced by the CoalesceScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + void EnterCoalesceScalarExpression([NotNull] sqlParser.CoalesceScalarExpressionContext context); + /// + /// Exit a parse tree produced by the CoalesceScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + void ExitCoalesceScalarExpression([NotNull] sqlParser.CoalesceScalarExpressionContext context); + /// + /// Enter a parse tree produced by the BetweenScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + void EnterBetweenScalarExpression([NotNull] sqlParser.BetweenScalarExpressionContext context); + /// + /// Exit a parse tree produced by the BetweenScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + void ExitBetweenScalarExpression([NotNull] sqlParser.BetweenScalarExpressionContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterLogical_scalar_expression([NotNull] sqlParser.Logical_scalar_expressionContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitLogical_scalar_expression([NotNull] sqlParser.Logical_scalar_expressionContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterIn_scalar_expression([NotNull] sqlParser.In_scalar_expressionContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitIn_scalar_expression([NotNull] sqlParser.In_scalar_expressionContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterLike_scalar_expression([NotNull] sqlParser.Like_scalar_expressionContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitLike_scalar_expression([NotNull] sqlParser.Like_scalar_expressionContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterEscape_expression([NotNull] sqlParser.Escape_expressionContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitEscape_expression([NotNull] sqlParser.Escape_expressionContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterBinary_scalar_expression([NotNull] sqlParser.Binary_scalar_expressionContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitBinary_scalar_expression([NotNull] sqlParser.Binary_scalar_expressionContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterMultiplicative_operator([NotNull] sqlParser.Multiplicative_operatorContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitMultiplicative_operator([NotNull] sqlParser.Multiplicative_operatorContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterAdditive_operator([NotNull] sqlParser.Additive_operatorContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitAdditive_operator([NotNull] sqlParser.Additive_operatorContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterRelational_operator([NotNull] sqlParser.Relational_operatorContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitRelational_operator([NotNull] sqlParser.Relational_operatorContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterEquality_operator([NotNull] sqlParser.Equality_operatorContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitEquality_operator([NotNull] sqlParser.Equality_operatorContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterBitwise_and_operator([NotNull] sqlParser.Bitwise_and_operatorContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitBitwise_and_operator([NotNull] sqlParser.Bitwise_and_operatorContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterBitwise_exclusive_or_operator([NotNull] sqlParser.Bitwise_exclusive_or_operatorContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitBitwise_exclusive_or_operator([NotNull] sqlParser.Bitwise_exclusive_or_operatorContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterBitwise_inclusive_or_operator([NotNull] sqlParser.Bitwise_inclusive_or_operatorContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitBitwise_inclusive_or_operator([NotNull] sqlParser.Bitwise_inclusive_or_operatorContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterString_concat_operator([NotNull] sqlParser.String_concat_operatorContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitString_concat_operator([NotNull] sqlParser.String_concat_operatorContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterUnary_scalar_expression([NotNull] sqlParser.Unary_scalar_expressionContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitUnary_scalar_expression([NotNull] sqlParser.Unary_scalar_expressionContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterUnary_operator([NotNull] sqlParser.Unary_operatorContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitUnary_operator([NotNull] sqlParser.Unary_operatorContext context); + /// + /// Enter a parse tree produced by the SubqueryScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + void EnterSubqueryScalarExpression([NotNull] sqlParser.SubqueryScalarExpressionContext context); + /// + /// Exit a parse tree produced by the SubqueryScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + void ExitSubqueryScalarExpression([NotNull] sqlParser.SubqueryScalarExpressionContext context); + /// + /// Enter a parse tree produced by the PropertyRefScalarExpressionBase + /// labeled alternative in . + /// + /// The parse tree. + void EnterPropertyRefScalarExpressionBase([NotNull] sqlParser.PropertyRefScalarExpressionBaseContext context); + /// + /// Exit a parse tree produced by the PropertyRefScalarExpressionBase + /// labeled alternative in . + /// + /// The parse tree. + void ExitPropertyRefScalarExpressionBase([NotNull] sqlParser.PropertyRefScalarExpressionBaseContext context); + /// + /// Enter a parse tree produced by the FunctionCallScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + void EnterFunctionCallScalarExpression([NotNull] sqlParser.FunctionCallScalarExpressionContext context); + /// + /// Exit a parse tree produced by the FunctionCallScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + void ExitFunctionCallScalarExpression([NotNull] sqlParser.FunctionCallScalarExpressionContext context); + /// + /// Enter a parse tree produced by the LiteralScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + void EnterLiteralScalarExpression([NotNull] sqlParser.LiteralScalarExpressionContext context); + /// + /// Exit a parse tree produced by the LiteralScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + void ExitLiteralScalarExpression([NotNull] sqlParser.LiteralScalarExpressionContext context); + /// + /// Enter a parse tree produced by the ObjectCreateScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + void EnterObjectCreateScalarExpression([NotNull] sqlParser.ObjectCreateScalarExpressionContext context); + /// + /// Exit a parse tree produced by the ObjectCreateScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + void ExitObjectCreateScalarExpression([NotNull] sqlParser.ObjectCreateScalarExpressionContext context); + /// + /// Enter a parse tree produced by the ParenthesizedScalarExperession + /// labeled alternative in . + /// + /// The parse tree. + void EnterParenthesizedScalarExperession([NotNull] sqlParser.ParenthesizedScalarExperessionContext context); + /// + /// Exit a parse tree produced by the ParenthesizedScalarExperession + /// labeled alternative in . + /// + /// The parse tree. + void ExitParenthesizedScalarExperession([NotNull] sqlParser.ParenthesizedScalarExperessionContext context); + /// + /// Enter a parse tree produced by the ParameterRefScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + void EnterParameterRefScalarExpression([NotNull] sqlParser.ParameterRefScalarExpressionContext context); + /// + /// Exit a parse tree produced by the ParameterRefScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + void ExitParameterRefScalarExpression([NotNull] sqlParser.ParameterRefScalarExpressionContext context); + /// + /// Enter a parse tree produced by the ArrayCreateScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + void EnterArrayCreateScalarExpression([NotNull] sqlParser.ArrayCreateScalarExpressionContext context); + /// + /// Exit a parse tree produced by the ArrayCreateScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + void ExitArrayCreateScalarExpression([NotNull] sqlParser.ArrayCreateScalarExpressionContext context); + /// + /// Enter a parse tree produced by the ExistsScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + void EnterExistsScalarExpression([NotNull] sqlParser.ExistsScalarExpressionContext context); + /// + /// Exit a parse tree produced by the ExistsScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + void ExitExistsScalarExpression([NotNull] sqlParser.ExistsScalarExpressionContext context); + /// + /// Enter a parse tree produced by the ArrayScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + void EnterArrayScalarExpression([NotNull] sqlParser.ArrayScalarExpressionContext context); + /// + /// Exit a parse tree produced by the ArrayScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + void ExitArrayScalarExpression([NotNull] sqlParser.ArrayScalarExpressionContext context); + /// + /// Enter a parse tree produced by the MemberIndexerScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + void EnterMemberIndexerScalarExpression([NotNull] sqlParser.MemberIndexerScalarExpressionContext context); + /// + /// Exit a parse tree produced by the MemberIndexerScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + void ExitMemberIndexerScalarExpression([NotNull] sqlParser.MemberIndexerScalarExpressionContext context); + /// + /// Enter a parse tree produced by the PropertyRefScalarExpressionRecursive + /// labeled alternative in . + /// + /// The parse tree. + void EnterPropertyRefScalarExpressionRecursive([NotNull] sqlParser.PropertyRefScalarExpressionRecursiveContext context); + /// + /// Exit a parse tree produced by the PropertyRefScalarExpressionRecursive + /// labeled alternative in . + /// + /// The parse tree. + void ExitPropertyRefScalarExpressionRecursive([NotNull] sqlParser.PropertyRefScalarExpressionRecursiveContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterScalar_expression_list([NotNull] sqlParser.Scalar_expression_listContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitScalar_expression_list([NotNull] sqlParser.Scalar_expression_listContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterObject_property_list([NotNull] sqlParser.Object_property_listContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitObject_property_list([NotNull] sqlParser.Object_property_listContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterObject_property([NotNull] sqlParser.Object_propertyContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitObject_property([NotNull] sqlParser.Object_propertyContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterLiteral([NotNull] sqlParser.LiteralContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitLiteral([NotNull] sqlParser.LiteralContext context); } diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/IsqlVisitor.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/IsqlVisitor.cs index 1164836e0e..d8e8741881 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/IsqlVisitor.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/IsqlVisitor.cs @@ -1,4 +1,4 @@ -//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ // // This code was generated by a tool. // ANTLR Version: 4.7.2 @@ -8,7 +8,7 @@ // //------------------------------------------------------------------------------ -// Generated from C:\CosmosSQLANTLR\CosmosSqlAntlr\CosmosSqlAntlr\sql.g4 by ANTLR 4.7.2 +// Generated from sql.g4 by ANTLR 4.7.2 // Unreachable code detected #pragma warning disable 0162 @@ -21,6 +21,7 @@ using Antlr4.Runtime.Misc; using Antlr4.Runtime.Tree; +using IToken = Antlr4.Runtime.IToken; /// /// This interface defines a complete generic visitor for a parse tree produced @@ -28,397 +29,409 @@ /// /// The return type of the visit operation. [System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.7.2")] -internal interface IsqlVisitor : IParseTreeVisitor -{ - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitProgram([NotNull] sqlParser.ProgramContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitSql_query([NotNull] sqlParser.Sql_queryContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitSelect_clause([NotNull] sqlParser.Select_clauseContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitTop_spec([NotNull] sqlParser.Top_specContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitSelection([NotNull] sqlParser.SelectionContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitSelect_star_spec([NotNull] sqlParser.Select_star_specContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitSelect_value_spec([NotNull] sqlParser.Select_value_specContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitSelect_list_spec([NotNull] sqlParser.Select_list_specContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitSelect_item([NotNull] sqlParser.Select_itemContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitFrom_clause([NotNull] sqlParser.From_clauseContext context); - /// - /// Visit a parse tree produced by the JoinCollectionExpression - /// labeled alternative in . - /// - /// The parse tree. - /// The visitor result. - Result VisitJoinCollectionExpression([NotNull] sqlParser.JoinCollectionExpressionContext context); - /// - /// Visit a parse tree produced by the AliasedCollectionExpression - /// labeled alternative in . - /// - /// The parse tree. - /// The visitor result. - Result VisitAliasedCollectionExpression([NotNull] sqlParser.AliasedCollectionExpressionContext context); - /// - /// Visit a parse tree produced by the ArrayIteratorCollectionExpression - /// labeled alternative in . - /// - /// The parse tree. - /// The visitor result. - Result VisitArrayIteratorCollectionExpression([NotNull] sqlParser.ArrayIteratorCollectionExpressionContext context); - /// - /// Visit a parse tree produced by the InputPathCollection - /// labeled alternative in . - /// - /// The parse tree. - /// The visitor result. - Result VisitInputPathCollection([NotNull] sqlParser.InputPathCollectionContext context); - /// - /// Visit a parse tree produced by the SubqueryCollection - /// labeled alternative in . - /// - /// The parse tree. - /// The visitor result. - Result VisitSubqueryCollection([NotNull] sqlParser.SubqueryCollectionContext context); - /// - /// Visit a parse tree produced by the StringPathExpression - /// labeled alternative in . - /// - /// The parse tree. - /// The visitor result. - Result VisitStringPathExpression([NotNull] sqlParser.StringPathExpressionContext context); - /// - /// Visit a parse tree produced by the EpsilonPathExpression - /// labeled alternative in . - /// - /// The parse tree. - /// The visitor result. - Result VisitEpsilonPathExpression([NotNull] sqlParser.EpsilonPathExpressionContext context); - /// - /// Visit a parse tree produced by the IdentifierPathExpression - /// labeled alternative in . - /// - /// The parse tree. - /// The visitor result. - Result VisitIdentifierPathExpression([NotNull] sqlParser.IdentifierPathExpressionContext context); - /// - /// Visit a parse tree produced by the NumberPathExpression - /// labeled alternative in . - /// - /// The parse tree. - /// The visitor result. - Result VisitNumberPathExpression([NotNull] sqlParser.NumberPathExpressionContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitWhere_clause([NotNull] sqlParser.Where_clauseContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitGroup_by_clause([NotNull] sqlParser.Group_by_clauseContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitOrder_by_clause([NotNull] sqlParser.Order_by_clauseContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitOrder_by_items([NotNull] sqlParser.Order_by_itemsContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitOrder_by_item([NotNull] sqlParser.Order_by_itemContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitSort_order([NotNull] sqlParser.Sort_orderContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitOffset_limit_clause([NotNull] sqlParser.Offset_limit_clauseContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitOffset_count([NotNull] sqlParser.Offset_countContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitLimit_count([NotNull] sqlParser.Limit_countContext context); - /// - /// Visit a parse tree produced by the LogicalScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - /// The visitor result. - Result VisitLogicalScalarExpression([NotNull] sqlParser.LogicalScalarExpressionContext context); - /// - /// Visit a parse tree produced by the ConditionalScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - /// The visitor result. - Result VisitConditionalScalarExpression([NotNull] sqlParser.ConditionalScalarExpressionContext context); - /// - /// Visit a parse tree produced by the CoalesceScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - /// The visitor result. - Result VisitCoalesceScalarExpression([NotNull] sqlParser.CoalesceScalarExpressionContext context); - /// - /// Visit a parse tree produced by the BetweenScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - /// The visitor result. - Result VisitBetweenScalarExpression([NotNull] sqlParser.BetweenScalarExpressionContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitLogical_scalar_expression([NotNull] sqlParser.Logical_scalar_expressionContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitIn_scalar_expression([NotNull] sqlParser.In_scalar_expressionContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitBinary_scalar_expression([NotNull] sqlParser.Binary_scalar_expressionContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitMultiplicative_operator([NotNull] sqlParser.Multiplicative_operatorContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitAdditive_operator([NotNull] sqlParser.Additive_operatorContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitRelational_operator([NotNull] sqlParser.Relational_operatorContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitEquality_operator([NotNull] sqlParser.Equality_operatorContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitBitwise_and_operator([NotNull] sqlParser.Bitwise_and_operatorContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitBitwise_exclusive_or_operator([NotNull] sqlParser.Bitwise_exclusive_or_operatorContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitBitwise_inclusive_or_operator([NotNull] sqlParser.Bitwise_inclusive_or_operatorContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitString_concat_operator([NotNull] sqlParser.String_concat_operatorContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitUnary_scalar_expression([NotNull] sqlParser.Unary_scalar_expressionContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitUnary_operator([NotNull] sqlParser.Unary_operatorContext context); - /// - /// Visit a parse tree produced by the SubqueryScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - /// The visitor result. - Result VisitSubqueryScalarExpression([NotNull] sqlParser.SubqueryScalarExpressionContext context); - /// - /// Visit a parse tree produced by the PropertyRefScalarExpressionBase - /// labeled alternative in . - /// - /// The parse tree. - /// The visitor result. - Result VisitPropertyRefScalarExpressionBase([NotNull] sqlParser.PropertyRefScalarExpressionBaseContext context); - /// - /// Visit a parse tree produced by the FunctionCallScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - /// The visitor result. - Result VisitFunctionCallScalarExpression([NotNull] sqlParser.FunctionCallScalarExpressionContext context); - /// - /// Visit a parse tree produced by the LiteralScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - /// The visitor result. - Result VisitLiteralScalarExpression([NotNull] sqlParser.LiteralScalarExpressionContext context); - /// - /// Visit a parse tree produced by the ObjectCreateScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - /// The visitor result. - Result VisitObjectCreateScalarExpression([NotNull] sqlParser.ObjectCreateScalarExpressionContext context); - /// - /// Visit a parse tree produced by the ParenthesizedScalarExperession - /// labeled alternative in . - /// - /// The parse tree. - /// The visitor result. - Result VisitParenthesizedScalarExperession([NotNull] sqlParser.ParenthesizedScalarExperessionContext context); - /// - /// Visit a parse tree produced by the ParameterRefScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - /// The visitor result. - Result VisitParameterRefScalarExpression([NotNull] sqlParser.ParameterRefScalarExpressionContext context); - /// - /// Visit a parse tree produced by the ArrayCreateScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - /// The visitor result. - Result VisitArrayCreateScalarExpression([NotNull] sqlParser.ArrayCreateScalarExpressionContext context); - /// - /// Visit a parse tree produced by the ExistsScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - /// The visitor result. - Result VisitExistsScalarExpression([NotNull] sqlParser.ExistsScalarExpressionContext context); - /// - /// Visit a parse tree produced by the ArrayScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - /// The visitor result. - Result VisitArrayScalarExpression([NotNull] sqlParser.ArrayScalarExpressionContext context); - /// - /// Visit a parse tree produced by the MemberIndexerScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - /// The visitor result. - Result VisitMemberIndexerScalarExpression([NotNull] sqlParser.MemberIndexerScalarExpressionContext context); - /// - /// Visit a parse tree produced by the PropertyRefScalarExpressionRecursive - /// labeled alternative in . - /// - /// The parse tree. - /// The visitor result. - Result VisitPropertyRefScalarExpressionRecursive([NotNull] sqlParser.PropertyRefScalarExpressionRecursiveContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitScalar_expression_list([NotNull] sqlParser.Scalar_expression_listContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitObject_property_list([NotNull] sqlParser.Object_property_listContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitObject_property([NotNull] sqlParser.Object_propertyContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitLiteral([NotNull] sqlParser.LiteralContext context); +[System.CLSCompliant(false)] +internal interface IsqlVisitor : IParseTreeVisitor { + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitProgram([NotNull] sqlParser.ProgramContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSql_query([NotNull] sqlParser.Sql_queryContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSelect_clause([NotNull] sqlParser.Select_clauseContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitTop_spec([NotNull] sqlParser.Top_specContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSelection([NotNull] sqlParser.SelectionContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSelect_star_spec([NotNull] sqlParser.Select_star_specContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSelect_value_spec([NotNull] sqlParser.Select_value_specContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSelect_list_spec([NotNull] sqlParser.Select_list_specContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSelect_item([NotNull] sqlParser.Select_itemContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitFrom_clause([NotNull] sqlParser.From_clauseContext context); + /// + /// Visit a parse tree produced by the JoinCollectionExpression + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitJoinCollectionExpression([NotNull] sqlParser.JoinCollectionExpressionContext context); + /// + /// Visit a parse tree produced by the AliasedCollectionExpression + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitAliasedCollectionExpression([NotNull] sqlParser.AliasedCollectionExpressionContext context); + /// + /// Visit a parse tree produced by the ArrayIteratorCollectionExpression + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitArrayIteratorCollectionExpression([NotNull] sqlParser.ArrayIteratorCollectionExpressionContext context); + /// + /// Visit a parse tree produced by the InputPathCollection + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitInputPathCollection([NotNull] sqlParser.InputPathCollectionContext context); + /// + /// Visit a parse tree produced by the SubqueryCollection + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitSubqueryCollection([NotNull] sqlParser.SubqueryCollectionContext context); + /// + /// Visit a parse tree produced by the StringPathExpression + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitStringPathExpression([NotNull] sqlParser.StringPathExpressionContext context); + /// + /// Visit a parse tree produced by the EpsilonPathExpression + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitEpsilonPathExpression([NotNull] sqlParser.EpsilonPathExpressionContext context); + /// + /// Visit a parse tree produced by the IdentifierPathExpression + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitIdentifierPathExpression([NotNull] sqlParser.IdentifierPathExpressionContext context); + /// + /// Visit a parse tree produced by the NumberPathExpression + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitNumberPathExpression([NotNull] sqlParser.NumberPathExpressionContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitWhere_clause([NotNull] sqlParser.Where_clauseContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitGroup_by_clause([NotNull] sqlParser.Group_by_clauseContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitOrder_by_clause([NotNull] sqlParser.Order_by_clauseContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitOrder_by_items([NotNull] sqlParser.Order_by_itemsContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitOrder_by_item([NotNull] sqlParser.Order_by_itemContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitSort_order([NotNull] sqlParser.Sort_orderContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitOffset_limit_clause([NotNull] sqlParser.Offset_limit_clauseContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitOffset_count([NotNull] sqlParser.Offset_countContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitLimit_count([NotNull] sqlParser.Limit_countContext context); + /// + /// Visit a parse tree produced by the LogicalScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitLogicalScalarExpression([NotNull] sqlParser.LogicalScalarExpressionContext context); + /// + /// Visit a parse tree produced by the ConditionalScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitConditionalScalarExpression([NotNull] sqlParser.ConditionalScalarExpressionContext context); + /// + /// Visit a parse tree produced by the CoalesceScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitCoalesceScalarExpression([NotNull] sqlParser.CoalesceScalarExpressionContext context); + /// + /// Visit a parse tree produced by the BetweenScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitBetweenScalarExpression([NotNull] sqlParser.BetweenScalarExpressionContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitLogical_scalar_expression([NotNull] sqlParser.Logical_scalar_expressionContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitIn_scalar_expression([NotNull] sqlParser.In_scalar_expressionContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitLike_scalar_expression([NotNull] sqlParser.Like_scalar_expressionContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitEscape_expression([NotNull] sqlParser.Escape_expressionContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitBinary_scalar_expression([NotNull] sqlParser.Binary_scalar_expressionContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitMultiplicative_operator([NotNull] sqlParser.Multiplicative_operatorContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitAdditive_operator([NotNull] sqlParser.Additive_operatorContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitRelational_operator([NotNull] sqlParser.Relational_operatorContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitEquality_operator([NotNull] sqlParser.Equality_operatorContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitBitwise_and_operator([NotNull] sqlParser.Bitwise_and_operatorContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitBitwise_exclusive_or_operator([NotNull] sqlParser.Bitwise_exclusive_or_operatorContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitBitwise_inclusive_or_operator([NotNull] sqlParser.Bitwise_inclusive_or_operatorContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitString_concat_operator([NotNull] sqlParser.String_concat_operatorContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitUnary_scalar_expression([NotNull] sqlParser.Unary_scalar_expressionContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitUnary_operator([NotNull] sqlParser.Unary_operatorContext context); + /// + /// Visit a parse tree produced by the SubqueryScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitSubqueryScalarExpression([NotNull] sqlParser.SubqueryScalarExpressionContext context); + /// + /// Visit a parse tree produced by the PropertyRefScalarExpressionBase + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitPropertyRefScalarExpressionBase([NotNull] sqlParser.PropertyRefScalarExpressionBaseContext context); + /// + /// Visit a parse tree produced by the FunctionCallScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitFunctionCallScalarExpression([NotNull] sqlParser.FunctionCallScalarExpressionContext context); + /// + /// Visit a parse tree produced by the LiteralScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitLiteralScalarExpression([NotNull] sqlParser.LiteralScalarExpressionContext context); + /// + /// Visit a parse tree produced by the ObjectCreateScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitObjectCreateScalarExpression([NotNull] sqlParser.ObjectCreateScalarExpressionContext context); + /// + /// Visit a parse tree produced by the ParenthesizedScalarExperession + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitParenthesizedScalarExperession([NotNull] sqlParser.ParenthesizedScalarExperessionContext context); + /// + /// Visit a parse tree produced by the ParameterRefScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitParameterRefScalarExpression([NotNull] sqlParser.ParameterRefScalarExpressionContext context); + /// + /// Visit a parse tree produced by the ArrayCreateScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitArrayCreateScalarExpression([NotNull] sqlParser.ArrayCreateScalarExpressionContext context); + /// + /// Visit a parse tree produced by the ExistsScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitExistsScalarExpression([NotNull] sqlParser.ExistsScalarExpressionContext context); + /// + /// Visit a parse tree produced by the ArrayScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitArrayScalarExpression([NotNull] sqlParser.ArrayScalarExpressionContext context); + /// + /// Visit a parse tree produced by the MemberIndexerScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitMemberIndexerScalarExpression([NotNull] sqlParser.MemberIndexerScalarExpressionContext context); + /// + /// Visit a parse tree produced by the PropertyRefScalarExpressionRecursive + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitPropertyRefScalarExpressionRecursive([NotNull] sqlParser.PropertyRefScalarExpressionRecursiveContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitScalar_expression_list([NotNull] sqlParser.Scalar_expression_listContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitObject_property_list([NotNull] sqlParser.Object_property_listContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitObject_property([NotNull] sqlParser.Object_propertyContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitLiteral([NotNull] sqlParser.LiteralContext context); } diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlBaseListener.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlBaseListener.cs new file mode 100644 index 0000000000..fd2cc21996 --- /dev/null +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlBaseListener.cs @@ -0,0 +1,856 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// ANTLR Version: 4.7.2 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +// Generated from sql.g4 by ANTLR 4.7.2 + +// Unreachable code detected +#pragma warning disable 0162 +// The variable '...' is assigned but its value is never used +#pragma warning disable 0219 +// Missing XML comment for publicly visible type or member '...' +#pragma warning disable 1591 +// Ambiguous reference in cref attribute +#pragma warning disable 419 + + +using Antlr4.Runtime.Misc; +using IErrorNode = Antlr4.Runtime.Tree.IErrorNode; +using ITerminalNode = Antlr4.Runtime.Tree.ITerminalNode; +using IToken = Antlr4.Runtime.IToken; +using ParserRuleContext = Antlr4.Runtime.ParserRuleContext; + +/// +/// This class provides an empty implementation of , +/// which can be extended to create a listener which only needs to handle a subset +/// of the available methods. +/// +[System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.7.2")] +[System.CLSCompliant(false)] +internal partial class sqlBaseListener : IsqlListener { + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterProgram([NotNull] sqlParser.ProgramContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitProgram([NotNull] sqlParser.ProgramContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterSql_query([NotNull] sqlParser.Sql_queryContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitSql_query([NotNull] sqlParser.Sql_queryContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterSelect_clause([NotNull] sqlParser.Select_clauseContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitSelect_clause([NotNull] sqlParser.Select_clauseContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterTop_spec([NotNull] sqlParser.Top_specContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitTop_spec([NotNull] sqlParser.Top_specContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterSelection([NotNull] sqlParser.SelectionContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitSelection([NotNull] sqlParser.SelectionContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterSelect_star_spec([NotNull] sqlParser.Select_star_specContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitSelect_star_spec([NotNull] sqlParser.Select_star_specContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterSelect_value_spec([NotNull] sqlParser.Select_value_specContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitSelect_value_spec([NotNull] sqlParser.Select_value_specContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterSelect_list_spec([NotNull] sqlParser.Select_list_specContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitSelect_list_spec([NotNull] sqlParser.Select_list_specContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterSelect_item([NotNull] sqlParser.Select_itemContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitSelect_item([NotNull] sqlParser.Select_itemContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterFrom_clause([NotNull] sqlParser.From_clauseContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitFrom_clause([NotNull] sqlParser.From_clauseContext context) { } + /// + /// Enter a parse tree produced by the JoinCollectionExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterJoinCollectionExpression([NotNull] sqlParser.JoinCollectionExpressionContext context) { } + /// + /// Exit a parse tree produced by the JoinCollectionExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitJoinCollectionExpression([NotNull] sqlParser.JoinCollectionExpressionContext context) { } + /// + /// Enter a parse tree produced by the AliasedCollectionExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterAliasedCollectionExpression([NotNull] sqlParser.AliasedCollectionExpressionContext context) { } + /// + /// Exit a parse tree produced by the AliasedCollectionExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitAliasedCollectionExpression([NotNull] sqlParser.AliasedCollectionExpressionContext context) { } + /// + /// Enter a parse tree produced by the ArrayIteratorCollectionExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterArrayIteratorCollectionExpression([NotNull] sqlParser.ArrayIteratorCollectionExpressionContext context) { } + /// + /// Exit a parse tree produced by the ArrayIteratorCollectionExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitArrayIteratorCollectionExpression([NotNull] sqlParser.ArrayIteratorCollectionExpressionContext context) { } + /// + /// Enter a parse tree produced by the InputPathCollection + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterInputPathCollection([NotNull] sqlParser.InputPathCollectionContext context) { } + /// + /// Exit a parse tree produced by the InputPathCollection + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitInputPathCollection([NotNull] sqlParser.InputPathCollectionContext context) { } + /// + /// Enter a parse tree produced by the SubqueryCollection + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterSubqueryCollection([NotNull] sqlParser.SubqueryCollectionContext context) { } + /// + /// Exit a parse tree produced by the SubqueryCollection + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitSubqueryCollection([NotNull] sqlParser.SubqueryCollectionContext context) { } + /// + /// Enter a parse tree produced by the StringPathExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterStringPathExpression([NotNull] sqlParser.StringPathExpressionContext context) { } + /// + /// Exit a parse tree produced by the StringPathExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitStringPathExpression([NotNull] sqlParser.StringPathExpressionContext context) { } + /// + /// Enter a parse tree produced by the EpsilonPathExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterEpsilonPathExpression([NotNull] sqlParser.EpsilonPathExpressionContext context) { } + /// + /// Exit a parse tree produced by the EpsilonPathExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitEpsilonPathExpression([NotNull] sqlParser.EpsilonPathExpressionContext context) { } + /// + /// Enter a parse tree produced by the IdentifierPathExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterIdentifierPathExpression([NotNull] sqlParser.IdentifierPathExpressionContext context) { } + /// + /// Exit a parse tree produced by the IdentifierPathExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitIdentifierPathExpression([NotNull] sqlParser.IdentifierPathExpressionContext context) { } + /// + /// Enter a parse tree produced by the NumberPathExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterNumberPathExpression([NotNull] sqlParser.NumberPathExpressionContext context) { } + /// + /// Exit a parse tree produced by the NumberPathExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitNumberPathExpression([NotNull] sqlParser.NumberPathExpressionContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterWhere_clause([NotNull] sqlParser.Where_clauseContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitWhere_clause([NotNull] sqlParser.Where_clauseContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterGroup_by_clause([NotNull] sqlParser.Group_by_clauseContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitGroup_by_clause([NotNull] sqlParser.Group_by_clauseContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterOrder_by_clause([NotNull] sqlParser.Order_by_clauseContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitOrder_by_clause([NotNull] sqlParser.Order_by_clauseContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterOrder_by_items([NotNull] sqlParser.Order_by_itemsContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitOrder_by_items([NotNull] sqlParser.Order_by_itemsContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterOrder_by_item([NotNull] sqlParser.Order_by_itemContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitOrder_by_item([NotNull] sqlParser.Order_by_itemContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterSort_order([NotNull] sqlParser.Sort_orderContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitSort_order([NotNull] sqlParser.Sort_orderContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterOffset_limit_clause([NotNull] sqlParser.Offset_limit_clauseContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitOffset_limit_clause([NotNull] sqlParser.Offset_limit_clauseContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterOffset_count([NotNull] sqlParser.Offset_countContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitOffset_count([NotNull] sqlParser.Offset_countContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterLimit_count([NotNull] sqlParser.Limit_countContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitLimit_count([NotNull] sqlParser.Limit_countContext context) { } + /// + /// Enter a parse tree produced by the LogicalScalarExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterLogicalScalarExpression([NotNull] sqlParser.LogicalScalarExpressionContext context) { } + /// + /// Exit a parse tree produced by the LogicalScalarExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitLogicalScalarExpression([NotNull] sqlParser.LogicalScalarExpressionContext context) { } + /// + /// Enter a parse tree produced by the ConditionalScalarExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterConditionalScalarExpression([NotNull] sqlParser.ConditionalScalarExpressionContext context) { } + /// + /// Exit a parse tree produced by the ConditionalScalarExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitConditionalScalarExpression([NotNull] sqlParser.ConditionalScalarExpressionContext context) { } + /// + /// Enter a parse tree produced by the CoalesceScalarExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterCoalesceScalarExpression([NotNull] sqlParser.CoalesceScalarExpressionContext context) { } + /// + /// Exit a parse tree produced by the CoalesceScalarExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitCoalesceScalarExpression([NotNull] sqlParser.CoalesceScalarExpressionContext context) { } + /// + /// Enter a parse tree produced by the BetweenScalarExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterBetweenScalarExpression([NotNull] sqlParser.BetweenScalarExpressionContext context) { } + /// + /// Exit a parse tree produced by the BetweenScalarExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitBetweenScalarExpression([NotNull] sqlParser.BetweenScalarExpressionContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterLogical_scalar_expression([NotNull] sqlParser.Logical_scalar_expressionContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitLogical_scalar_expression([NotNull] sqlParser.Logical_scalar_expressionContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterIn_scalar_expression([NotNull] sqlParser.In_scalar_expressionContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitIn_scalar_expression([NotNull] sqlParser.In_scalar_expressionContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterLike_scalar_expression([NotNull] sqlParser.Like_scalar_expressionContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitLike_scalar_expression([NotNull] sqlParser.Like_scalar_expressionContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterEscape_expression([NotNull] sqlParser.Escape_expressionContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitEscape_expression([NotNull] sqlParser.Escape_expressionContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterBinary_scalar_expression([NotNull] sqlParser.Binary_scalar_expressionContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitBinary_scalar_expression([NotNull] sqlParser.Binary_scalar_expressionContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterMultiplicative_operator([NotNull] sqlParser.Multiplicative_operatorContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitMultiplicative_operator([NotNull] sqlParser.Multiplicative_operatorContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterAdditive_operator([NotNull] sqlParser.Additive_operatorContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitAdditive_operator([NotNull] sqlParser.Additive_operatorContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterRelational_operator([NotNull] sqlParser.Relational_operatorContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitRelational_operator([NotNull] sqlParser.Relational_operatorContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterEquality_operator([NotNull] sqlParser.Equality_operatorContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitEquality_operator([NotNull] sqlParser.Equality_operatorContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterBitwise_and_operator([NotNull] sqlParser.Bitwise_and_operatorContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitBitwise_and_operator([NotNull] sqlParser.Bitwise_and_operatorContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterBitwise_exclusive_or_operator([NotNull] sqlParser.Bitwise_exclusive_or_operatorContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitBitwise_exclusive_or_operator([NotNull] sqlParser.Bitwise_exclusive_or_operatorContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterBitwise_inclusive_or_operator([NotNull] sqlParser.Bitwise_inclusive_or_operatorContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitBitwise_inclusive_or_operator([NotNull] sqlParser.Bitwise_inclusive_or_operatorContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterString_concat_operator([NotNull] sqlParser.String_concat_operatorContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitString_concat_operator([NotNull] sqlParser.String_concat_operatorContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterUnary_scalar_expression([NotNull] sqlParser.Unary_scalar_expressionContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitUnary_scalar_expression([NotNull] sqlParser.Unary_scalar_expressionContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterUnary_operator([NotNull] sqlParser.Unary_operatorContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitUnary_operator([NotNull] sqlParser.Unary_operatorContext context) { } + /// + /// Enter a parse tree produced by the SubqueryScalarExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterSubqueryScalarExpression([NotNull] sqlParser.SubqueryScalarExpressionContext context) { } + /// + /// Exit a parse tree produced by the SubqueryScalarExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitSubqueryScalarExpression([NotNull] sqlParser.SubqueryScalarExpressionContext context) { } + /// + /// Enter a parse tree produced by the PropertyRefScalarExpressionBase + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterPropertyRefScalarExpressionBase([NotNull] sqlParser.PropertyRefScalarExpressionBaseContext context) { } + /// + /// Exit a parse tree produced by the PropertyRefScalarExpressionBase + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitPropertyRefScalarExpressionBase([NotNull] sqlParser.PropertyRefScalarExpressionBaseContext context) { } + /// + /// Enter a parse tree produced by the FunctionCallScalarExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterFunctionCallScalarExpression([NotNull] sqlParser.FunctionCallScalarExpressionContext context) { } + /// + /// Exit a parse tree produced by the FunctionCallScalarExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitFunctionCallScalarExpression([NotNull] sqlParser.FunctionCallScalarExpressionContext context) { } + /// + /// Enter a parse tree produced by the LiteralScalarExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterLiteralScalarExpression([NotNull] sqlParser.LiteralScalarExpressionContext context) { } + /// + /// Exit a parse tree produced by the LiteralScalarExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitLiteralScalarExpression([NotNull] sqlParser.LiteralScalarExpressionContext context) { } + /// + /// Enter a parse tree produced by the ObjectCreateScalarExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterObjectCreateScalarExpression([NotNull] sqlParser.ObjectCreateScalarExpressionContext context) { } + /// + /// Exit a parse tree produced by the ObjectCreateScalarExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitObjectCreateScalarExpression([NotNull] sqlParser.ObjectCreateScalarExpressionContext context) { } + /// + /// Enter a parse tree produced by the ParenthesizedScalarExperession + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterParenthesizedScalarExperession([NotNull] sqlParser.ParenthesizedScalarExperessionContext context) { } + /// + /// Exit a parse tree produced by the ParenthesizedScalarExperession + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitParenthesizedScalarExperession([NotNull] sqlParser.ParenthesizedScalarExperessionContext context) { } + /// + /// Enter a parse tree produced by the ParameterRefScalarExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterParameterRefScalarExpression([NotNull] sqlParser.ParameterRefScalarExpressionContext context) { } + /// + /// Exit a parse tree produced by the ParameterRefScalarExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitParameterRefScalarExpression([NotNull] sqlParser.ParameterRefScalarExpressionContext context) { } + /// + /// Enter a parse tree produced by the ArrayCreateScalarExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterArrayCreateScalarExpression([NotNull] sqlParser.ArrayCreateScalarExpressionContext context) { } + /// + /// Exit a parse tree produced by the ArrayCreateScalarExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitArrayCreateScalarExpression([NotNull] sqlParser.ArrayCreateScalarExpressionContext context) { } + /// + /// Enter a parse tree produced by the ExistsScalarExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterExistsScalarExpression([NotNull] sqlParser.ExistsScalarExpressionContext context) { } + /// + /// Exit a parse tree produced by the ExistsScalarExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitExistsScalarExpression([NotNull] sqlParser.ExistsScalarExpressionContext context) { } + /// + /// Enter a parse tree produced by the ArrayScalarExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterArrayScalarExpression([NotNull] sqlParser.ArrayScalarExpressionContext context) { } + /// + /// Exit a parse tree produced by the ArrayScalarExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitArrayScalarExpression([NotNull] sqlParser.ArrayScalarExpressionContext context) { } + /// + /// Enter a parse tree produced by the MemberIndexerScalarExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterMemberIndexerScalarExpression([NotNull] sqlParser.MemberIndexerScalarExpressionContext context) { } + /// + /// Exit a parse tree produced by the MemberIndexerScalarExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitMemberIndexerScalarExpression([NotNull] sqlParser.MemberIndexerScalarExpressionContext context) { } + /// + /// Enter a parse tree produced by the PropertyRefScalarExpressionRecursive + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterPropertyRefScalarExpressionRecursive([NotNull] sqlParser.PropertyRefScalarExpressionRecursiveContext context) { } + /// + /// Exit a parse tree produced by the PropertyRefScalarExpressionRecursive + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitPropertyRefScalarExpressionRecursive([NotNull] sqlParser.PropertyRefScalarExpressionRecursiveContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterScalar_expression_list([NotNull] sqlParser.Scalar_expression_listContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitScalar_expression_list([NotNull] sqlParser.Scalar_expression_listContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterObject_property_list([NotNull] sqlParser.Object_property_listContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitObject_property_list([NotNull] sqlParser.Object_property_listContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterObject_property([NotNull] sqlParser.Object_propertyContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitObject_property([NotNull] sqlParser.Object_propertyContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterLiteral([NotNull] sqlParser.LiteralContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitLiteral([NotNull] sqlParser.LiteralContext context) { } + + /// + /// The default implementation does nothing. + public virtual void EnterEveryRule([NotNull] ParserRuleContext context) { } + /// + /// The default implementation does nothing. + public virtual void ExitEveryRule([NotNull] ParserRuleContext context) { } + /// + /// The default implementation does nothing. + public virtual void VisitTerminal([NotNull] ITerminalNode node) { } + /// + /// The default implementation does nothing. + public virtual void VisitErrorNode([NotNull] IErrorNode node) { } +} diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlBaseVisitor.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlBaseVisitor.cs index 47d267746a..63a97d6174 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlBaseVisitor.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlBaseVisitor.cs @@ -32,7 +32,7 @@ /// The return type of the visit operation. [System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.7.2")] [System.CLSCompliant(false)] -public partial class sqlBaseVisitor : AbstractParseTreeVisitor, IsqlVisitor { +internal partial class sqlBaseVisitor : AbstractParseTreeVisitor, IsqlVisitor { /// /// Visit a parse tree produced by . /// diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlLexer.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlLexer.cs index 8242da6e47..5e22c97b2c 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlLexer.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlLexer.cs @@ -29,7 +29,7 @@ [System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.7.2")] [System.CLSCompliant(false)] -public partial class sqlLexer : Lexer { +internal partial class sqlLexer : Lexer { protected static DFA[] decisionToDFA; protected static PredictionContextCache sharedContextCache = new PredictionContextCache(); public const int @@ -121,7 +121,7 @@ static sqlLexer() { } private static char[] _serializedATN = { '\x3', '\x608B', '\xA72A', '\x8133', '\xB9ED', '\x417C', '\x3BE7', '\x7786', - '\x5964', '\x2', '?', '\x237', '\b', '\x1', '\x4', '\x2', '\t', '\x2', + '\x5964', '\x2', '?', '\x232', '\b', '\x1', '\x4', '\x2', '\t', '\x2', '\x4', '\x3', '\t', '\x3', '\x4', '\x4', '\t', '\x4', '\x4', '\x5', '\t', '\x5', '\x4', '\x6', '\t', '\x6', '\x4', '\a', '\t', '\a', '\x4', '\b', '\t', '\b', '\x4', '\t', '\t', '\t', '\x4', '\n', '\t', '\n', '\x4', '\v', @@ -212,88 +212,87 @@ static sqlLexer() { '<', '\x1E1', '\n', '<', '\x3', '=', '\x3', '=', '\x3', '=', '\x5', '=', '\x1E6', '\n', '=', '\x3', '>', '\x3', '>', '\x3', '>', '\x3', '>', '\x3', '>', '\x3', '>', '\x3', '?', '\x3', '?', '\x3', '@', '\x3', '@', '\x3', - '\x41', '\x3', '\x41', '\a', '\x41', '\x1F4', '\n', '\x41', '\f', '\x41', - '\xE', '\x41', '\x1F7', '\v', '\x41', '\x3', '\x41', '\a', '\x41', '\x1FA', - '\n', '\x41', '\f', '\x41', '\xE', '\x41', '\x1FD', '\v', '\x41', '\x3', - '\x42', '\x3', '\x42', '\x3', '\x42', '\x3', '\x43', '\x3', '\x43', '\x3', - '\x44', '\x3', '\x44', '\x3', '\x45', '\x3', '\x45', '\x3', '\x46', '\x3', - '\x46', '\x3', 'G', '\x3', 'G', '\x3', 'H', '\x3', 'H', '\x3', 'I', '\x3', - 'I', '\x3', 'J', '\x3', 'J', '\x3', 'K', '\x3', 'K', '\x3', 'L', '\x3', - 'L', '\x3', 'M', '\x3', 'M', '\x3', 'N', '\x3', 'N', '\x3', 'O', '\x3', - 'O', '\x3', 'P', '\x3', 'P', '\x3', 'Q', '\x3', 'Q', '\x3', 'R', '\x3', - 'R', '\x3', 'S', '\x3', 'S', '\x3', 'T', '\x3', 'T', '\x3', 'U', '\x3', - 'U', '\x3', 'V', '\x3', 'V', '\x3', 'W', '\x3', 'W', '\x3', 'X', '\x3', - 'X', '\x3', 'Y', '\x3', 'Y', '\x3', 'Z', '\x3', 'Z', '\x3', '[', '\x3', - '[', '\x3', '\\', '\x3', '\\', '\x3', ']', '\x3', ']', '\x2', '\x2', '^', - '\x3', '\x3', '\x5', '\x4', '\a', '\x5', '\t', '\x6', '\v', '\a', '\r', - '\b', '\xF', '\t', '\x11', '\n', '\x13', '\v', '\x15', '\f', '\x17', '\r', - '\x19', '\xE', '\x1B', '\xF', '\x1D', '\x10', '\x1F', '\x11', '!', '\x12', - '#', '\x13', '%', '\x14', '\'', '\x15', ')', '\x16', '+', '\x17', '-', - '\x18', '/', '\x19', '\x31', '\x1A', '\x33', '\x1B', '\x35', '\x1C', '\x37', - '\x1D', '\x39', '\x1E', ';', '\x1F', '=', ' ', '?', '!', '\x41', '\"', - '\x43', '#', '\x45', '$', 'G', '%', 'I', '&', 'K', '\'', 'M', '(', 'O', - ')', 'Q', '*', 'S', '+', 'U', ',', 'W', '-', 'Y', '.', '[', '/', ']', - '\x30', '_', '\x31', '\x61', '\x32', '\x63', '\x33', '\x65', '\x34', 'g', - '\x35', 'i', '\x36', 'k', '\x37', 'm', '\x38', 'o', '\x39', 'q', ':', - 's', ';', 'u', '<', 'w', '=', 'y', '\x2', '{', '\x2', '}', '\x2', '\x7F', - '\x2', '\x81', '>', '\x83', '?', '\x85', '\x2', '\x87', '\x2', '\x89', - '\x2', '\x8B', '\x2', '\x8D', '\x2', '\x8F', '\x2', '\x91', '\x2', '\x93', - '\x2', '\x95', '\x2', '\x97', '\x2', '\x99', '\x2', '\x9B', '\x2', '\x9D', - '\x2', '\x9F', '\x2', '\xA1', '\x2', '\xA3', '\x2', '\xA5', '\x2', '\xA7', - '\x2', '\xA9', '\x2', '\xAB', '\x2', '\xAD', '\x2', '\xAF', '\x2', '\xB1', - '\x2', '\xB3', '\x2', '\xB5', '\x2', '\xB7', '\x2', '\xB9', '\x2', '\x3', - '\x2', '#', '\x5', '\x2', '\v', '\f', '\xF', '\xF', '\"', '\"', '\x4', - '\x2', '-', '-', '/', '/', '\n', '\x2', '$', '$', '\x31', '\x31', '^', - '^', '\x64', '\x64', 'h', 'h', 'p', 'p', 't', 't', 'v', 'v', '\x5', '\x2', - '\x32', ';', '\x43', 'H', '\x63', 'h', '\x5', '\x2', '\x2', '!', '$', - '$', '^', '^', '\x5', '\x2', '\x43', '\\', '\x61', '\x61', '\x63', '|', - '\x3', '\x2', '\x32', ';', '\x4', '\x2', '\x43', '\x43', '\x63', '\x63', - '\x4', '\x2', '\x44', '\x44', '\x64', '\x64', '\x4', '\x2', '\x45', '\x45', - '\x65', '\x65', '\x4', '\x2', '\x46', '\x46', '\x66', '\x66', '\x4', '\x2', - 'G', 'G', 'g', 'g', '\x4', '\x2', 'H', 'H', 'h', 'h', '\x4', '\x2', 'I', - 'I', 'i', 'i', '\x4', '\x2', 'J', 'J', 'j', 'j', '\x4', '\x2', 'K', 'K', - 'k', 'k', '\x4', '\x2', 'L', 'L', 'l', 'l', '\x4', '\x2', 'M', 'M', 'm', - 'm', '\x4', '\x2', 'N', 'N', 'n', 'n', '\x4', '\x2', 'O', 'O', 'o', 'o', - '\x4', '\x2', 'P', 'P', 'p', 'p', '\x4', '\x2', 'Q', 'Q', 'q', 'q', '\x4', - '\x2', 'R', 'R', 'r', 'r', '\x4', '\x2', 'S', 'S', 's', 's', '\x4', '\x2', - 'T', 'T', 't', 't', '\x4', '\x2', 'U', 'U', 'u', 'u', '\x4', '\x2', 'V', - 'V', 'v', 'v', '\x4', '\x2', 'W', 'W', 'w', 'w', '\x4', '\x2', 'X', 'X', - 'x', 'x', '\x4', '\x2', 'Y', 'Y', 'y', 'y', '\x4', '\x2', 'Z', 'Z', 'z', - 'z', '\x4', '\x2', '[', '[', '{', '{', '\x4', '\x2', '\\', '\\', '|', - '|', '\x2', '\x22D', '\x2', '\x3', '\x3', '\x2', '\x2', '\x2', '\x2', - '\x5', '\x3', '\x2', '\x2', '\x2', '\x2', '\a', '\x3', '\x2', '\x2', '\x2', - '\x2', '\t', '\x3', '\x2', '\x2', '\x2', '\x2', '\v', '\x3', '\x2', '\x2', - '\x2', '\x2', '\r', '\x3', '\x2', '\x2', '\x2', '\x2', '\xF', '\x3', '\x2', - '\x2', '\x2', '\x2', '\x11', '\x3', '\x2', '\x2', '\x2', '\x2', '\x13', - '\x3', '\x2', '\x2', '\x2', '\x2', '\x15', '\x3', '\x2', '\x2', '\x2', - '\x2', '\x17', '\x3', '\x2', '\x2', '\x2', '\x2', '\x19', '\x3', '\x2', - '\x2', '\x2', '\x2', '\x1B', '\x3', '\x2', '\x2', '\x2', '\x2', '\x1D', - '\x3', '\x2', '\x2', '\x2', '\x2', '\x1F', '\x3', '\x2', '\x2', '\x2', - '\x2', '!', '\x3', '\x2', '\x2', '\x2', '\x2', '#', '\x3', '\x2', '\x2', - '\x2', '\x2', '%', '\x3', '\x2', '\x2', '\x2', '\x2', '\'', '\x3', '\x2', - '\x2', '\x2', '\x2', ')', '\x3', '\x2', '\x2', '\x2', '\x2', '+', '\x3', - '\x2', '\x2', '\x2', '\x2', '-', '\x3', '\x2', '\x2', '\x2', '\x2', '/', - '\x3', '\x2', '\x2', '\x2', '\x2', '\x31', '\x3', '\x2', '\x2', '\x2', - '\x2', '\x33', '\x3', '\x2', '\x2', '\x2', '\x2', '\x35', '\x3', '\x2', - '\x2', '\x2', '\x2', '\x37', '\x3', '\x2', '\x2', '\x2', '\x2', '\x39', - '\x3', '\x2', '\x2', '\x2', '\x2', ';', '\x3', '\x2', '\x2', '\x2', '\x2', - '=', '\x3', '\x2', '\x2', '\x2', '\x2', '?', '\x3', '\x2', '\x2', '\x2', - '\x2', '\x41', '\x3', '\x2', '\x2', '\x2', '\x2', '\x43', '\x3', '\x2', - '\x2', '\x2', '\x2', '\x45', '\x3', '\x2', '\x2', '\x2', '\x2', 'G', '\x3', - '\x2', '\x2', '\x2', '\x2', 'I', '\x3', '\x2', '\x2', '\x2', '\x2', 'K', - '\x3', '\x2', '\x2', '\x2', '\x2', 'M', '\x3', '\x2', '\x2', '\x2', '\x2', - 'O', '\x3', '\x2', '\x2', '\x2', '\x2', 'Q', '\x3', '\x2', '\x2', '\x2', - '\x2', 'S', '\x3', '\x2', '\x2', '\x2', '\x2', 'U', '\x3', '\x2', '\x2', - '\x2', '\x2', 'W', '\x3', '\x2', '\x2', '\x2', '\x2', 'Y', '\x3', '\x2', - '\x2', '\x2', '\x2', '[', '\x3', '\x2', '\x2', '\x2', '\x2', ']', '\x3', - '\x2', '\x2', '\x2', '\x2', '_', '\x3', '\x2', '\x2', '\x2', '\x2', '\x61', - '\x3', '\x2', '\x2', '\x2', '\x2', '\x63', '\x3', '\x2', '\x2', '\x2', - '\x2', '\x65', '\x3', '\x2', '\x2', '\x2', '\x2', 'g', '\x3', '\x2', '\x2', - '\x2', '\x2', 'i', '\x3', '\x2', '\x2', '\x2', '\x2', 'k', '\x3', '\x2', - '\x2', '\x2', '\x2', 'm', '\x3', '\x2', '\x2', '\x2', '\x2', 'o', '\x3', - '\x2', '\x2', '\x2', '\x2', 'q', '\x3', '\x2', '\x2', '\x2', '\x2', 's', - '\x3', '\x2', '\x2', '\x2', '\x2', 'u', '\x3', '\x2', '\x2', '\x2', '\x2', - 'w', '\x3', '\x2', '\x2', '\x2', '\x2', '\x81', '\x3', '\x2', '\x2', '\x2', + '\x41', '\x3', '\x41', '\x3', '\x41', '\a', '\x41', '\x1F5', '\n', '\x41', + '\f', '\x41', '\xE', '\x41', '\x1F8', '\v', '\x41', '\x3', '\x42', '\x3', + '\x42', '\x3', '\x42', '\x3', '\x43', '\x3', '\x43', '\x3', '\x44', '\x3', + '\x44', '\x3', '\x45', '\x3', '\x45', '\x3', '\x46', '\x3', '\x46', '\x3', + 'G', '\x3', 'G', '\x3', 'H', '\x3', 'H', '\x3', 'I', '\x3', 'I', '\x3', + 'J', '\x3', 'J', '\x3', 'K', '\x3', 'K', '\x3', 'L', '\x3', 'L', '\x3', + 'M', '\x3', 'M', '\x3', 'N', '\x3', 'N', '\x3', 'O', '\x3', 'O', '\x3', + 'P', '\x3', 'P', '\x3', 'Q', '\x3', 'Q', '\x3', 'R', '\x3', 'R', '\x3', + 'S', '\x3', 'S', '\x3', 'T', '\x3', 'T', '\x3', 'U', '\x3', 'U', '\x3', + 'V', '\x3', 'V', '\x3', 'W', '\x3', 'W', '\x3', 'X', '\x3', 'X', '\x3', + 'Y', '\x3', 'Y', '\x3', 'Z', '\x3', 'Z', '\x3', '[', '\x3', '[', '\x3', + '\\', '\x3', '\\', '\x3', ']', '\x3', ']', '\x2', '\x2', '^', '\x3', '\x3', + '\x5', '\x4', '\a', '\x5', '\t', '\x6', '\v', '\a', '\r', '\b', '\xF', + '\t', '\x11', '\n', '\x13', '\v', '\x15', '\f', '\x17', '\r', '\x19', + '\xE', '\x1B', '\xF', '\x1D', '\x10', '\x1F', '\x11', '!', '\x12', '#', + '\x13', '%', '\x14', '\'', '\x15', ')', '\x16', '+', '\x17', '-', '\x18', + '/', '\x19', '\x31', '\x1A', '\x33', '\x1B', '\x35', '\x1C', '\x37', '\x1D', + '\x39', '\x1E', ';', '\x1F', '=', ' ', '?', '!', '\x41', '\"', '\x43', + '#', '\x45', '$', 'G', '%', 'I', '&', 'K', '\'', 'M', '(', 'O', ')', 'Q', + '*', 'S', '+', 'U', ',', 'W', '-', 'Y', '.', '[', '/', ']', '\x30', '_', + '\x31', '\x61', '\x32', '\x63', '\x33', '\x65', '\x34', 'g', '\x35', 'i', + '\x36', 'k', '\x37', 'm', '\x38', 'o', '\x39', 'q', ':', 's', ';', 'u', + '<', 'w', '=', 'y', '\x2', '{', '\x2', '}', '\x2', '\x7F', '\x2', '\x81', + '>', '\x83', '?', '\x85', '\x2', '\x87', '\x2', '\x89', '\x2', '\x8B', + '\x2', '\x8D', '\x2', '\x8F', '\x2', '\x91', '\x2', '\x93', '\x2', '\x95', + '\x2', '\x97', '\x2', '\x99', '\x2', '\x9B', '\x2', '\x9D', '\x2', '\x9F', + '\x2', '\xA1', '\x2', '\xA3', '\x2', '\xA5', '\x2', '\xA7', '\x2', '\xA9', + '\x2', '\xAB', '\x2', '\xAD', '\x2', '\xAF', '\x2', '\xB1', '\x2', '\xB3', + '\x2', '\xB5', '\x2', '\xB7', '\x2', '\xB9', '\x2', '\x3', '\x2', '#', + '\x5', '\x2', '\v', '\f', '\xF', '\xF', '\"', '\"', '\x4', '\x2', '-', + '-', '/', '/', '\n', '\x2', '$', '$', '\x31', '\x31', '^', '^', '\x64', + '\x64', 'h', 'h', 'p', 'p', 't', 't', 'v', 'v', '\x5', '\x2', '\x32', + ';', '\x43', 'H', '\x63', 'h', '\x5', '\x2', '\x2', '!', '$', '$', '^', + '^', '\x5', '\x2', '\x43', '\\', '\x61', '\x61', '\x63', '|', '\x3', '\x2', + '\x32', ';', '\x4', '\x2', '\x43', '\x43', '\x63', '\x63', '\x4', '\x2', + '\x44', '\x44', '\x64', '\x64', '\x4', '\x2', '\x45', '\x45', '\x65', + '\x65', '\x4', '\x2', '\x46', '\x46', '\x66', '\x66', '\x4', '\x2', 'G', + 'G', 'g', 'g', '\x4', '\x2', 'H', 'H', 'h', 'h', '\x4', '\x2', 'I', 'I', + 'i', 'i', '\x4', '\x2', 'J', 'J', 'j', 'j', '\x4', '\x2', 'K', 'K', 'k', + 'k', '\x4', '\x2', 'L', 'L', 'l', 'l', '\x4', '\x2', 'M', 'M', 'm', 'm', + '\x4', '\x2', 'N', 'N', 'n', 'n', '\x4', '\x2', 'O', 'O', 'o', 'o', '\x4', + '\x2', 'P', 'P', 'p', 'p', '\x4', '\x2', 'Q', 'Q', 'q', 'q', '\x4', '\x2', + 'R', 'R', 'r', 'r', '\x4', '\x2', 'S', 'S', 's', 's', '\x4', '\x2', 'T', + 'T', 't', 't', '\x4', '\x2', 'U', 'U', 'u', 'u', '\x4', '\x2', 'V', 'V', + 'v', 'v', '\x4', '\x2', 'W', 'W', 'w', 'w', '\x4', '\x2', 'X', 'X', 'x', + 'x', '\x4', '\x2', 'Y', 'Y', 'y', 'y', '\x4', '\x2', 'Z', 'Z', 'z', 'z', + '\x4', '\x2', '[', '[', '{', '{', '\x4', '\x2', '\\', '\\', '|', '|', + '\x2', '\x228', '\x2', '\x3', '\x3', '\x2', '\x2', '\x2', '\x2', '\x5', + '\x3', '\x2', '\x2', '\x2', '\x2', '\a', '\x3', '\x2', '\x2', '\x2', '\x2', + '\t', '\x3', '\x2', '\x2', '\x2', '\x2', '\v', '\x3', '\x2', '\x2', '\x2', + '\x2', '\r', '\x3', '\x2', '\x2', '\x2', '\x2', '\xF', '\x3', '\x2', '\x2', + '\x2', '\x2', '\x11', '\x3', '\x2', '\x2', '\x2', '\x2', '\x13', '\x3', + '\x2', '\x2', '\x2', '\x2', '\x15', '\x3', '\x2', '\x2', '\x2', '\x2', + '\x17', '\x3', '\x2', '\x2', '\x2', '\x2', '\x19', '\x3', '\x2', '\x2', + '\x2', '\x2', '\x1B', '\x3', '\x2', '\x2', '\x2', '\x2', '\x1D', '\x3', + '\x2', '\x2', '\x2', '\x2', '\x1F', '\x3', '\x2', '\x2', '\x2', '\x2', + '!', '\x3', '\x2', '\x2', '\x2', '\x2', '#', '\x3', '\x2', '\x2', '\x2', + '\x2', '%', '\x3', '\x2', '\x2', '\x2', '\x2', '\'', '\x3', '\x2', '\x2', + '\x2', '\x2', ')', '\x3', '\x2', '\x2', '\x2', '\x2', '+', '\x3', '\x2', + '\x2', '\x2', '\x2', '-', '\x3', '\x2', '\x2', '\x2', '\x2', '/', '\x3', + '\x2', '\x2', '\x2', '\x2', '\x31', '\x3', '\x2', '\x2', '\x2', '\x2', + '\x33', '\x3', '\x2', '\x2', '\x2', '\x2', '\x35', '\x3', '\x2', '\x2', + '\x2', '\x2', '\x37', '\x3', '\x2', '\x2', '\x2', '\x2', '\x39', '\x3', + '\x2', '\x2', '\x2', '\x2', ';', '\x3', '\x2', '\x2', '\x2', '\x2', '=', + '\x3', '\x2', '\x2', '\x2', '\x2', '?', '\x3', '\x2', '\x2', '\x2', '\x2', + '\x41', '\x3', '\x2', '\x2', '\x2', '\x2', '\x43', '\x3', '\x2', '\x2', + '\x2', '\x2', '\x45', '\x3', '\x2', '\x2', '\x2', '\x2', 'G', '\x3', '\x2', + '\x2', '\x2', '\x2', 'I', '\x3', '\x2', '\x2', '\x2', '\x2', 'K', '\x3', + '\x2', '\x2', '\x2', '\x2', 'M', '\x3', '\x2', '\x2', '\x2', '\x2', 'O', + '\x3', '\x2', '\x2', '\x2', '\x2', 'Q', '\x3', '\x2', '\x2', '\x2', '\x2', + 'S', '\x3', '\x2', '\x2', '\x2', '\x2', 'U', '\x3', '\x2', '\x2', '\x2', + '\x2', 'W', '\x3', '\x2', '\x2', '\x2', '\x2', 'Y', '\x3', '\x2', '\x2', + '\x2', '\x2', '[', '\x3', '\x2', '\x2', '\x2', '\x2', ']', '\x3', '\x2', + '\x2', '\x2', '\x2', '_', '\x3', '\x2', '\x2', '\x2', '\x2', '\x61', '\x3', + '\x2', '\x2', '\x2', '\x2', '\x63', '\x3', '\x2', '\x2', '\x2', '\x2', + '\x65', '\x3', '\x2', '\x2', '\x2', '\x2', 'g', '\x3', '\x2', '\x2', '\x2', + '\x2', 'i', '\x3', '\x2', '\x2', '\x2', '\x2', 'k', '\x3', '\x2', '\x2', + '\x2', '\x2', 'm', '\x3', '\x2', '\x2', '\x2', '\x2', 'o', '\x3', '\x2', + '\x2', '\x2', '\x2', 'q', '\x3', '\x2', '\x2', '\x2', '\x2', 's', '\x3', + '\x2', '\x2', '\x2', '\x2', 'u', '\x3', '\x2', '\x2', '\x2', '\x2', 'w', + '\x3', '\x2', '\x2', '\x2', '\x2', '\x81', '\x3', '\x2', '\x2', '\x2', '\x2', '\x83', '\x3', '\x2', '\x2', '\x2', '\x3', '\xBB', '\x3', '\x2', '\x2', '\x2', '\x5', '\xBD', '\x3', '\x2', '\x2', '\x2', '\a', '\xBF', '\x3', '\x2', '\x2', '\x2', '\t', '\xC1', '\x3', '\x2', '\x2', '\x2', @@ -332,23 +331,23 @@ static sqlLexer() { 'w', '\x1E0', '\x3', '\x2', '\x2', '\x2', 'y', '\x1E2', '\x3', '\x2', '\x2', '\x2', '{', '\x1E7', '\x3', '\x2', '\x2', '\x2', '}', '\x1ED', '\x3', '\x2', '\x2', '\x2', '\x7F', '\x1EF', '\x3', '\x2', '\x2', '\x2', - '\x81', '\x1F1', '\x3', '\x2', '\x2', '\x2', '\x83', '\x1FE', '\x3', '\x2', - '\x2', '\x2', '\x85', '\x201', '\x3', '\x2', '\x2', '\x2', '\x87', '\x203', - '\x3', '\x2', '\x2', '\x2', '\x89', '\x205', '\x3', '\x2', '\x2', '\x2', - '\x8B', '\x207', '\x3', '\x2', '\x2', '\x2', '\x8D', '\x209', '\x3', '\x2', - '\x2', '\x2', '\x8F', '\x20B', '\x3', '\x2', '\x2', '\x2', '\x91', '\x20D', - '\x3', '\x2', '\x2', '\x2', '\x93', '\x20F', '\x3', '\x2', '\x2', '\x2', - '\x95', '\x211', '\x3', '\x2', '\x2', '\x2', '\x97', '\x213', '\x3', '\x2', - '\x2', '\x2', '\x99', '\x215', '\x3', '\x2', '\x2', '\x2', '\x9B', '\x217', - '\x3', '\x2', '\x2', '\x2', '\x9D', '\x219', '\x3', '\x2', '\x2', '\x2', - '\x9F', '\x21B', '\x3', '\x2', '\x2', '\x2', '\xA1', '\x21D', '\x3', '\x2', - '\x2', '\x2', '\xA3', '\x21F', '\x3', '\x2', '\x2', '\x2', '\xA5', '\x221', - '\x3', '\x2', '\x2', '\x2', '\xA7', '\x223', '\x3', '\x2', '\x2', '\x2', - '\xA9', '\x225', '\x3', '\x2', '\x2', '\x2', '\xAB', '\x227', '\x3', '\x2', - '\x2', '\x2', '\xAD', '\x229', '\x3', '\x2', '\x2', '\x2', '\xAF', '\x22B', - '\x3', '\x2', '\x2', '\x2', '\xB1', '\x22D', '\x3', '\x2', '\x2', '\x2', - '\xB3', '\x22F', '\x3', '\x2', '\x2', '\x2', '\xB5', '\x231', '\x3', '\x2', - '\x2', '\x2', '\xB7', '\x233', '\x3', '\x2', '\x2', '\x2', '\xB9', '\x235', + '\x81', '\x1F1', '\x3', '\x2', '\x2', '\x2', '\x83', '\x1F9', '\x3', '\x2', + '\x2', '\x2', '\x85', '\x1FC', '\x3', '\x2', '\x2', '\x2', '\x87', '\x1FE', + '\x3', '\x2', '\x2', '\x2', '\x89', '\x200', '\x3', '\x2', '\x2', '\x2', + '\x8B', '\x202', '\x3', '\x2', '\x2', '\x2', '\x8D', '\x204', '\x3', '\x2', + '\x2', '\x2', '\x8F', '\x206', '\x3', '\x2', '\x2', '\x2', '\x91', '\x208', + '\x3', '\x2', '\x2', '\x2', '\x93', '\x20A', '\x3', '\x2', '\x2', '\x2', + '\x95', '\x20C', '\x3', '\x2', '\x2', '\x2', '\x97', '\x20E', '\x3', '\x2', + '\x2', '\x2', '\x99', '\x210', '\x3', '\x2', '\x2', '\x2', '\x9B', '\x212', + '\x3', '\x2', '\x2', '\x2', '\x9D', '\x214', '\x3', '\x2', '\x2', '\x2', + '\x9F', '\x216', '\x3', '\x2', '\x2', '\x2', '\xA1', '\x218', '\x3', '\x2', + '\x2', '\x2', '\xA3', '\x21A', '\x3', '\x2', '\x2', '\x2', '\xA5', '\x21C', + '\x3', '\x2', '\x2', '\x2', '\xA7', '\x21E', '\x3', '\x2', '\x2', '\x2', + '\xA9', '\x220', '\x3', '\x2', '\x2', '\x2', '\xAB', '\x222', '\x3', '\x2', + '\x2', '\x2', '\xAD', '\x224', '\x3', '\x2', '\x2', '\x2', '\xAF', '\x226', + '\x3', '\x2', '\x2', '\x2', '\xB1', '\x228', '\x3', '\x2', '\x2', '\x2', + '\xB3', '\x22A', '\x3', '\x2', '\x2', '\x2', '\xB5', '\x22C', '\x3', '\x2', + '\x2', '\x2', '\xB7', '\x22E', '\x3', '\x2', '\x2', '\x2', '\xB9', '\x230', '\x3', '\x2', '\x2', '\x2', '\xBB', '\xBC', '\a', ',', '\x2', '\x2', '\xBC', '\x4', '\x3', '\x2', '\x2', '\x2', '\xBD', '\xBE', '\a', '.', '\x2', '\x2', '\xBE', '\x6', '\x3', '\x2', '\x2', '\x2', '\xBF', '\xC0', '\a', '*', @@ -550,54 +549,51 @@ static sqlLexer() { '|', '\x3', '\x2', '\x2', '\x2', '\x1ED', '\x1EE', '\t', '\x5', '\x2', '\x2', '\x1EE', '~', '\x3', '\x2', '\x2', '\x2', '\x1EF', '\x1F0', '\n', '\x6', '\x2', '\x2', '\x1F0', '\x80', '\x3', '\x2', '\x2', '\x2', '\x1F1', - '\x1F5', '\t', '\a', '\x2', '\x2', '\x1F2', '\x1F4', '\t', '\a', '\x2', - '\x2', '\x1F3', '\x1F2', '\x3', '\x2', '\x2', '\x2', '\x1F4', '\x1F7', - '\x3', '\x2', '\x2', '\x2', '\x1F5', '\x1F3', '\x3', '\x2', '\x2', '\x2', - '\x1F5', '\x1F6', '\x3', '\x2', '\x2', '\x2', '\x1F6', '\x1FB', '\x3', - '\x2', '\x2', '\x2', '\x1F7', '\x1F5', '\x3', '\x2', '\x2', '\x2', '\x1F8', - '\x1FA', '\x5', '\x85', '\x43', '\x2', '\x1F9', '\x1F8', '\x3', '\x2', - '\x2', '\x2', '\x1FA', '\x1FD', '\x3', '\x2', '\x2', '\x2', '\x1FB', '\x1F9', - '\x3', '\x2', '\x2', '\x2', '\x1FB', '\x1FC', '\x3', '\x2', '\x2', '\x2', - '\x1FC', '\x82', '\x3', '\x2', '\x2', '\x2', '\x1FD', '\x1FB', '\x3', - '\x2', '\x2', '\x2', '\x1FE', '\x1FF', '\a', '\x42', '\x2', '\x2', '\x1FF', - '\x200', '\x5', '\x81', '\x41', '\x2', '\x200', '\x84', '\x3', '\x2', - '\x2', '\x2', '\x201', '\x202', '\t', '\b', '\x2', '\x2', '\x202', '\x86', - '\x3', '\x2', '\x2', '\x2', '\x203', '\x204', '\t', '\t', '\x2', '\x2', - '\x204', '\x88', '\x3', '\x2', '\x2', '\x2', '\x205', '\x206', '\t', '\n', - '\x2', '\x2', '\x206', '\x8A', '\x3', '\x2', '\x2', '\x2', '\x207', '\x208', - '\t', '\v', '\x2', '\x2', '\x208', '\x8C', '\x3', '\x2', '\x2', '\x2', - '\x209', '\x20A', '\t', '\f', '\x2', '\x2', '\x20A', '\x8E', '\x3', '\x2', - '\x2', '\x2', '\x20B', '\x20C', '\t', '\r', '\x2', '\x2', '\x20C', '\x90', - '\x3', '\x2', '\x2', '\x2', '\x20D', '\x20E', '\t', '\xE', '\x2', '\x2', - '\x20E', '\x92', '\x3', '\x2', '\x2', '\x2', '\x20F', '\x210', '\t', '\xF', - '\x2', '\x2', '\x210', '\x94', '\x3', '\x2', '\x2', '\x2', '\x211', '\x212', - '\t', '\x10', '\x2', '\x2', '\x212', '\x96', '\x3', '\x2', '\x2', '\x2', - '\x213', '\x214', '\t', '\x11', '\x2', '\x2', '\x214', '\x98', '\x3', - '\x2', '\x2', '\x2', '\x215', '\x216', '\t', '\x12', '\x2', '\x2', '\x216', - '\x9A', '\x3', '\x2', '\x2', '\x2', '\x217', '\x218', '\t', '\x13', '\x2', - '\x2', '\x218', '\x9C', '\x3', '\x2', '\x2', '\x2', '\x219', '\x21A', - '\t', '\x14', '\x2', '\x2', '\x21A', '\x9E', '\x3', '\x2', '\x2', '\x2', - '\x21B', '\x21C', '\t', '\x15', '\x2', '\x2', '\x21C', '\xA0', '\x3', - '\x2', '\x2', '\x2', '\x21D', '\x21E', '\t', '\x16', '\x2', '\x2', '\x21E', - '\xA2', '\x3', '\x2', '\x2', '\x2', '\x21F', '\x220', '\t', '\x17', '\x2', - '\x2', '\x220', '\xA4', '\x3', '\x2', '\x2', '\x2', '\x221', '\x222', - '\t', '\x18', '\x2', '\x2', '\x222', '\xA6', '\x3', '\x2', '\x2', '\x2', - '\x223', '\x224', '\t', '\x19', '\x2', '\x2', '\x224', '\xA8', '\x3', - '\x2', '\x2', '\x2', '\x225', '\x226', '\t', '\x1A', '\x2', '\x2', '\x226', - '\xAA', '\x3', '\x2', '\x2', '\x2', '\x227', '\x228', '\t', '\x1B', '\x2', - '\x2', '\x228', '\xAC', '\x3', '\x2', '\x2', '\x2', '\x229', '\x22A', - '\t', '\x1C', '\x2', '\x2', '\x22A', '\xAE', '\x3', '\x2', '\x2', '\x2', - '\x22B', '\x22C', '\t', '\x1D', '\x2', '\x2', '\x22C', '\xB0', '\x3', - '\x2', '\x2', '\x2', '\x22D', '\x22E', '\t', '\x1E', '\x2', '\x2', '\x22E', - '\xB2', '\x3', '\x2', '\x2', '\x2', '\x22F', '\x230', '\t', '\x1F', '\x2', - '\x2', '\x230', '\xB4', '\x3', '\x2', '\x2', '\x2', '\x231', '\x232', - '\t', ' ', '\x2', '\x2', '\x232', '\xB6', '\x3', '\x2', '\x2', '\x2', - '\x233', '\x234', '\t', '!', '\x2', '\x2', '\x234', '\xB8', '\x3', '\x2', - '\x2', '\x2', '\x235', '\x236', '\t', '\"', '\x2', '\x2', '\x236', '\xBA', - '\x3', '\x2', '\x2', '\x2', '\x19', '\x2', '\x198', '\x19D', '\x1A2', - '\x1A8', '\x1AB', '\x1AF', '\x1B4', '\x1B6', '\x1B9', '\x1BF', '\x1C3', - '\x1C8', '\x1CA', '\x1CC', '\x1D1', '\x1D3', '\x1DA', '\x1DC', '\x1E0', - '\x1E5', '\x1F5', '\x1FB', '\x3', '\b', '\x2', '\x2', + '\x1F6', '\t', '\a', '\x2', '\x2', '\x1F2', '\x1F5', '\t', '\a', '\x2', + '\x2', '\x1F3', '\x1F5', '\x5', '\x85', '\x43', '\x2', '\x1F4', '\x1F2', + '\x3', '\x2', '\x2', '\x2', '\x1F4', '\x1F3', '\x3', '\x2', '\x2', '\x2', + '\x1F5', '\x1F8', '\x3', '\x2', '\x2', '\x2', '\x1F6', '\x1F4', '\x3', + '\x2', '\x2', '\x2', '\x1F6', '\x1F7', '\x3', '\x2', '\x2', '\x2', '\x1F7', + '\x82', '\x3', '\x2', '\x2', '\x2', '\x1F8', '\x1F6', '\x3', '\x2', '\x2', + '\x2', '\x1F9', '\x1FA', '\a', '\x42', '\x2', '\x2', '\x1FA', '\x1FB', + '\x5', '\x81', '\x41', '\x2', '\x1FB', '\x84', '\x3', '\x2', '\x2', '\x2', + '\x1FC', '\x1FD', '\t', '\b', '\x2', '\x2', '\x1FD', '\x86', '\x3', '\x2', + '\x2', '\x2', '\x1FE', '\x1FF', '\t', '\t', '\x2', '\x2', '\x1FF', '\x88', + '\x3', '\x2', '\x2', '\x2', '\x200', '\x201', '\t', '\n', '\x2', '\x2', + '\x201', '\x8A', '\x3', '\x2', '\x2', '\x2', '\x202', '\x203', '\t', '\v', + '\x2', '\x2', '\x203', '\x8C', '\x3', '\x2', '\x2', '\x2', '\x204', '\x205', + '\t', '\f', '\x2', '\x2', '\x205', '\x8E', '\x3', '\x2', '\x2', '\x2', + '\x206', '\x207', '\t', '\r', '\x2', '\x2', '\x207', '\x90', '\x3', '\x2', + '\x2', '\x2', '\x208', '\x209', '\t', '\xE', '\x2', '\x2', '\x209', '\x92', + '\x3', '\x2', '\x2', '\x2', '\x20A', '\x20B', '\t', '\xF', '\x2', '\x2', + '\x20B', '\x94', '\x3', '\x2', '\x2', '\x2', '\x20C', '\x20D', '\t', '\x10', + '\x2', '\x2', '\x20D', '\x96', '\x3', '\x2', '\x2', '\x2', '\x20E', '\x20F', + '\t', '\x11', '\x2', '\x2', '\x20F', '\x98', '\x3', '\x2', '\x2', '\x2', + '\x210', '\x211', '\t', '\x12', '\x2', '\x2', '\x211', '\x9A', '\x3', + '\x2', '\x2', '\x2', '\x212', '\x213', '\t', '\x13', '\x2', '\x2', '\x213', + '\x9C', '\x3', '\x2', '\x2', '\x2', '\x214', '\x215', '\t', '\x14', '\x2', + '\x2', '\x215', '\x9E', '\x3', '\x2', '\x2', '\x2', '\x216', '\x217', + '\t', '\x15', '\x2', '\x2', '\x217', '\xA0', '\x3', '\x2', '\x2', '\x2', + '\x218', '\x219', '\t', '\x16', '\x2', '\x2', '\x219', '\xA2', '\x3', + '\x2', '\x2', '\x2', '\x21A', '\x21B', '\t', '\x17', '\x2', '\x2', '\x21B', + '\xA4', '\x3', '\x2', '\x2', '\x2', '\x21C', '\x21D', '\t', '\x18', '\x2', + '\x2', '\x21D', '\xA6', '\x3', '\x2', '\x2', '\x2', '\x21E', '\x21F', + '\t', '\x19', '\x2', '\x2', '\x21F', '\xA8', '\x3', '\x2', '\x2', '\x2', + '\x220', '\x221', '\t', '\x1A', '\x2', '\x2', '\x221', '\xAA', '\x3', + '\x2', '\x2', '\x2', '\x222', '\x223', '\t', '\x1B', '\x2', '\x2', '\x223', + '\xAC', '\x3', '\x2', '\x2', '\x2', '\x224', '\x225', '\t', '\x1C', '\x2', + '\x2', '\x225', '\xAE', '\x3', '\x2', '\x2', '\x2', '\x226', '\x227', + '\t', '\x1D', '\x2', '\x2', '\x227', '\xB0', '\x3', '\x2', '\x2', '\x2', + '\x228', '\x229', '\t', '\x1E', '\x2', '\x2', '\x229', '\xB2', '\x3', + '\x2', '\x2', '\x2', '\x22A', '\x22B', '\t', '\x1F', '\x2', '\x2', '\x22B', + '\xB4', '\x3', '\x2', '\x2', '\x2', '\x22C', '\x22D', '\t', ' ', '\x2', + '\x2', '\x22D', '\xB6', '\x3', '\x2', '\x2', '\x2', '\x22E', '\x22F', + '\t', '!', '\x2', '\x2', '\x22F', '\xB8', '\x3', '\x2', '\x2', '\x2', + '\x230', '\x231', '\t', '\"', '\x2', '\x2', '\x231', '\xBA', '\x3', '\x2', + '\x2', '\x2', '\x19', '\x2', '\x198', '\x19D', '\x1A2', '\x1A8', '\x1AB', + '\x1AF', '\x1B4', '\x1B6', '\x1B9', '\x1BF', '\x1C3', '\x1C8', '\x1CA', + '\x1CC', '\x1D1', '\x1D3', '\x1DA', '\x1DC', '\x1E0', '\x1E5', '\x1F4', + '\x1F6', '\x3', '\b', '\x2', '\x2', }; public static readonly ATN _ATN = diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlParser.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlParser.cs index 2c60f1cee6..aed0644e7e 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlParser.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlParser.cs @@ -32,7 +32,7 @@ [System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.7.2")] [System.CLSCompliant(false)] -public partial class sqlParser : Parser { +internal partial class sqlParser : Parser { protected static DFA[] decisionToDFA; protected static PredictionContextCache sharedContextCache = new PredictionContextCache(); public const int @@ -1793,7 +1793,7 @@ private Scalar_expressionContext scalar_expression(int _p) { Context = _localctx; _prevctx = _localctx; - State = 224; logical_scalar_expression(); + State = 224; logical_scalar_expression(0); } break; case 2: @@ -1883,6 +1883,14 @@ public In_scalar_expressionContext in_scalar_expression() { public Like_scalar_expressionContext like_scalar_expression() { return GetRuleContext(0); } + public Logical_scalar_expressionContext[] logical_scalar_expression() { + return GetRuleContexts(); + } + public Logical_scalar_expressionContext logical_scalar_expression(int i) { + return GetRuleContext(i); + } + public ITerminalNode K_AND() { return GetToken(sqlParser.K_AND, 0); } + public ITerminalNode K_OR() { return GetToken(sqlParser.K_OR, 0); } public Logical_scalar_expressionContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { @@ -1905,31 +1913,80 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public Logical_scalar_expressionContext logical_scalar_expression() { - Logical_scalar_expressionContext _localctx = new Logical_scalar_expressionContext(Context, State); - EnterRule(_localctx, 46, RULE_logical_scalar_expression); + return logical_scalar_expression(0); + } + + private Logical_scalar_expressionContext logical_scalar_expression(int _p) { + ParserRuleContext _parentctx = Context; + int _parentState = State; + Logical_scalar_expressionContext _localctx = new Logical_scalar_expressionContext(Context, _parentState); + Logical_scalar_expressionContext _prevctx = _localctx; + int _startState = 46; + EnterRecursionRule(_localctx, 46, RULE_logical_scalar_expression, _p); try { - State = 253; + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 254; ErrorHandler.Sync(this); switch ( Interpreter.AdaptivePredict(TokenStream,23,Context) ) { case 1: - EnterOuterAlt(_localctx, 1); { - State = 250; binary_scalar_expression(0); + State = 251; binary_scalar_expression(0); } break; case 2: - EnterOuterAlt(_localctx, 2); { - State = 251; in_scalar_expression(); + State = 252; in_scalar_expression(); } break; case 3: - EnterOuterAlt(_localctx, 3); { - State = 252; like_scalar_expression(); + State = 253; like_scalar_expression(); } break; } + Context.Stop = TokenStream.LT(-1); + State = 264; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,25,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( ParseListeners!=null ) + TriggerExitRuleEvent(); + _prevctx = _localctx; + { + State = 262; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,24,Context) ) { + case 1: + { + _localctx = new Logical_scalar_expressionContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_logical_scalar_expression); + State = 256; + if (!(Precpred(Context, 2))) throw new FailedPredicateException(this, "Precpred(Context, 2)"); + State = 257; Match(K_AND); + State = 258; logical_scalar_expression(3); + } + break; + case 2: + { + _localctx = new Logical_scalar_expressionContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_logical_scalar_expression); + State = 259; + if (!(Precpred(Context, 1))) throw new FailedPredicateException(this, "Precpred(Context, 1)"); + State = 260; Match(K_OR); + State = 261; logical_scalar_expression(2); + } + break; + } + } + } + State = 266; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,25,Context); + } + } } catch (RecognitionException re) { _localctx.exception = re; @@ -1937,7 +1994,7 @@ public Logical_scalar_expressionContext logical_scalar_expression() { ErrorHandler.Recover(this, re); } finally { - ExitRule(); + UnrollRecursionContexts(_parentctx); } return _localctx; } @@ -1979,20 +2036,20 @@ public In_scalar_expressionContext in_scalar_expression() { try { EnterOuterAlt(_localctx, 1); { - State = 255; binary_scalar_expression(0); - State = 257; + State = 267; binary_scalar_expression(0); + State = 269; ErrorHandler.Sync(this); _la = TokenStream.LA(1); if (_la==K_NOT) { { - State = 256; Match(K_NOT); + State = 268; Match(K_NOT); } } - State = 259; Match(K_IN); - State = 260; Match(T__2); - State = 261; scalar_expression_list(); - State = 262; Match(T__3); + State = 271; Match(K_IN); + State = 272; Match(T__2); + State = 273; scalar_expression_list(); + State = 274; Match(T__3); } } catch (RecognitionException re) { @@ -2046,24 +2103,24 @@ public Like_scalar_expressionContext like_scalar_expression() { try { EnterOuterAlt(_localctx, 1); { - State = 264; binary_scalar_expression(0); - State = 266; + State = 276; binary_scalar_expression(0); + State = 278; ErrorHandler.Sync(this); _la = TokenStream.LA(1); if (_la==K_NOT) { { - State = 265; Match(K_NOT); + State = 277; Match(K_NOT); } } - State = 268; Match(K_LIKE); - State = 269; binary_scalar_expression(0); - State = 271; + State = 280; Match(K_LIKE); + State = 281; binary_scalar_expression(0); + State = 283; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,26,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,28,Context) ) { case 1: { - State = 270; escape_expression(); + State = 282; escape_expression(); } break; } @@ -2110,8 +2167,8 @@ public Escape_expressionContext escape_expression() { try { EnterOuterAlt(_localctx, 1); { - State = 273; Match(K_ESCAPE); - State = 274; Match(STRING_LITERAL); + State = 285; Match(K_ESCAPE); + State = 286; Match(STRING_LITERAL); } } catch (RecognitionException re) { @@ -2198,127 +2255,127 @@ private Binary_scalar_expressionContext binary_scalar_expression(int _p) { EnterOuterAlt(_localctx, 1); { { - State = 277; unary_scalar_expression(); + State = 289; unary_scalar_expression(); } Context.Stop = TokenStream.LT(-1); - State = 319; + State = 331; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,28,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,30,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { if ( ParseListeners!=null ) TriggerExitRuleEvent(); _prevctx = _localctx; { - State = 317; + State = 329; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,27,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,29,Context) ) { case 1: { _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 279; + State = 291; if (!(Precpred(Context, 10))) throw new FailedPredicateException(this, "Precpred(Context, 10)"); - State = 280; multiplicative_operator(); - State = 281; binary_scalar_expression(11); + State = 292; multiplicative_operator(); + State = 293; binary_scalar_expression(11); } break; case 2: { _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 283; + State = 295; if (!(Precpred(Context, 9))) throw new FailedPredicateException(this, "Precpred(Context, 9)"); - State = 284; additive_operator(); - State = 285; binary_scalar_expression(10); + State = 296; additive_operator(); + State = 297; binary_scalar_expression(10); } break; case 3: { _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 287; + State = 299; if (!(Precpred(Context, 8))) throw new FailedPredicateException(this, "Precpred(Context, 8)"); - State = 288; relational_operator(); - State = 289; binary_scalar_expression(9); + State = 300; relational_operator(); + State = 301; binary_scalar_expression(9); } break; case 4: { _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 291; + State = 303; if (!(Precpred(Context, 7))) throw new FailedPredicateException(this, "Precpred(Context, 7)"); - State = 292; equality_operator(); - State = 293; binary_scalar_expression(8); + State = 304; equality_operator(); + State = 305; binary_scalar_expression(8); } break; case 5: { _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 295; + State = 307; if (!(Precpred(Context, 6))) throw new FailedPredicateException(this, "Precpred(Context, 6)"); - State = 296; bitwise_and_operator(); - State = 297; binary_scalar_expression(7); + State = 308; bitwise_and_operator(); + State = 309; binary_scalar_expression(7); } break; case 6: { _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 299; + State = 311; if (!(Precpred(Context, 5))) throw new FailedPredicateException(this, "Precpred(Context, 5)"); - State = 300; bitwise_exclusive_or_operator(); - State = 301; binary_scalar_expression(6); + State = 312; bitwise_exclusive_or_operator(); + State = 313; binary_scalar_expression(6); } break; case 7: { _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 303; + State = 315; if (!(Precpred(Context, 4))) throw new FailedPredicateException(this, "Precpred(Context, 4)"); - State = 304; bitwise_inclusive_or_operator(); - State = 305; binary_scalar_expression(5); + State = 316; bitwise_inclusive_or_operator(); + State = 317; binary_scalar_expression(5); } break; case 8: { _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 307; + State = 319; if (!(Precpred(Context, 3))) throw new FailedPredicateException(this, "Precpred(Context, 3)"); - State = 308; Match(K_AND); - State = 309; binary_scalar_expression(4); + State = 320; Match(K_AND); + State = 321; binary_scalar_expression(4); } break; case 9: { _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 310; + State = 322; if (!(Precpred(Context, 2))) throw new FailedPredicateException(this, "Precpred(Context, 2)"); - State = 311; Match(K_OR); - State = 312; binary_scalar_expression(3); + State = 323; Match(K_OR); + State = 324; binary_scalar_expression(3); } break; case 10: { _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 313; + State = 325; if (!(Precpred(Context, 1))) throw new FailedPredicateException(this, "Precpred(Context, 1)"); - State = 314; string_concat_operator(); - State = 315; binary_scalar_expression(2); + State = 326; string_concat_operator(); + State = 327; binary_scalar_expression(2); } break; } } } - State = 321; + State = 333; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,28,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,30,Context); } } } @@ -2362,7 +2419,7 @@ public Multiplicative_operatorContext multiplicative_operator() { try { EnterOuterAlt(_localctx, 1); { - State = 322; + State = 334; _la = TokenStream.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << T__10) | (1L << T__11))) != 0)) ) { ErrorHandler.RecoverInline(this); @@ -2413,7 +2470,7 @@ public Additive_operatorContext additive_operator() { try { EnterOuterAlt(_localctx, 1); { - State = 324; + State = 336; _la = TokenStream.LA(1); if ( !(_la==T__12 || _la==T__13) ) { ErrorHandler.RecoverInline(this); @@ -2464,7 +2521,7 @@ public Relational_operatorContext relational_operator() { try { EnterOuterAlt(_localctx, 1); { - State = 326; + State = 338; _la = TokenStream.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__14) | (1L << T__15) | (1L << T__16) | (1L << T__17))) != 0)) ) { ErrorHandler.RecoverInline(this); @@ -2515,7 +2572,7 @@ public Equality_operatorContext equality_operator() { try { EnterOuterAlt(_localctx, 1); { - State = 328; + State = 340; _la = TokenStream.LA(1); if ( !(_la==T__18 || _la==T__19) ) { ErrorHandler.RecoverInline(this); @@ -2565,7 +2622,7 @@ public Bitwise_and_operatorContext bitwise_and_operator() { try { EnterOuterAlt(_localctx, 1); { - State = 330; Match(T__20); + State = 342; Match(T__20); } } catch (RecognitionException re) { @@ -2607,7 +2664,7 @@ public Bitwise_exclusive_or_operatorContext bitwise_exclusive_or_operator() { try { EnterOuterAlt(_localctx, 1); { - State = 332; Match(T__21); + State = 344; Match(T__21); } } catch (RecognitionException re) { @@ -2649,7 +2706,7 @@ public Bitwise_inclusive_or_operatorContext bitwise_inclusive_or_operator() { try { EnterOuterAlt(_localctx, 1); { - State = 334; Match(T__22); + State = 346; Match(T__22); } } catch (RecognitionException re) { @@ -2691,7 +2748,7 @@ public String_concat_operatorContext string_concat_operator() { try { EnterOuterAlt(_localctx, 1); { - State = 336; Match(T__23); + State = 348; Match(T__23); } } catch (RecognitionException re) { @@ -2740,7 +2797,7 @@ public Unary_scalar_expressionContext unary_scalar_expression() { Unary_scalar_expressionContext _localctx = new Unary_scalar_expressionContext(Context, State); EnterRule(_localctx, 72, RULE_unary_scalar_expression); try { - State = 342; + State = 354; ErrorHandler.Sync(this); switch (TokenStream.LA(1)) { case T__2: @@ -2759,7 +2816,7 @@ public Unary_scalar_expressionContext unary_scalar_expression() { case PARAMETER: EnterOuterAlt(_localctx, 1); { - State = 338; primary_expression(0); + State = 350; primary_expression(0); } break; case T__12: @@ -2768,8 +2825,8 @@ public Unary_scalar_expressionContext unary_scalar_expression() { case K_NOT: EnterOuterAlt(_localctx, 2); { - State = 339; unary_operator(); - State = 340; unary_scalar_expression(); + State = 351; unary_operator(); + State = 352; unary_scalar_expression(); } break; default: @@ -2817,7 +2874,7 @@ public Unary_operatorContext unary_operator() { try { EnterOuterAlt(_localctx, 1); { - State = 344; + State = 356; _la = TokenStream.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__12) | (1L << T__13) | (1L << T__24) | (1L << K_NOT))) != 0)) ) { ErrorHandler.RecoverInline(this); @@ -3101,16 +3158,16 @@ private Primary_expressionContext primary_expression(int _p) { int _alt; EnterOuterAlt(_localctx, 1); { - State = 388; + State = 400; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,34,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,36,Context) ) { case 1: { _localctx = new PropertyRefScalarExpressionBaseContext(_localctx); Context = _localctx; _prevctx = _localctx; - State = 347; Match(IDENTIFIER); + State = 359; Match(IDENTIFIER); } break; case 2: @@ -3118,7 +3175,7 @@ private Primary_expressionContext primary_expression(int _p) { _localctx = new ParameterRefScalarExpressionContext(_localctx); Context = _localctx; _prevctx = _localctx; - State = 348; Match(PARAMETER); + State = 360; Match(PARAMETER); } break; case 3: @@ -3126,7 +3183,7 @@ private Primary_expressionContext primary_expression(int _p) { _localctx = new LiteralScalarExpressionContext(_localctx); Context = _localctx; _prevctx = _localctx; - State = 349; literal(); + State = 361; literal(); } break; case 4: @@ -3134,17 +3191,17 @@ private Primary_expressionContext primary_expression(int _p) { _localctx = new ArrayCreateScalarExpressionContext(_localctx); Context = _localctx; _prevctx = _localctx; - State = 350; Match(T__5); - State = 352; + State = 362; Match(T__5); + State = 364; ErrorHandler.Sync(this); _la = TokenStream.LA(1); if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__5) | (1L << T__12) | (1L << T__13) | (1L << T__24) | (1L << T__25) | (1L << K_ARRAY) | (1L << K_EXISTS) | (1L << K_FALSE) | (1L << K_NOT) | (1L << K_NULL) | (1L << K_TRUE) | (1L << K_UDF) | (1L << K_UNDEFINED) | (1L << NUMERIC_LITERAL) | (1L << STRING_LITERAL) | (1L << IDENTIFIER) | (1L << PARAMETER))) != 0)) { { - State = 351; scalar_expression_list(); + State = 363; scalar_expression_list(); } } - State = 354; Match(T__6); + State = 366; Match(T__6); } break; case 5: @@ -3152,17 +3209,17 @@ private Primary_expressionContext primary_expression(int _p) { _localctx = new ObjectCreateScalarExpressionContext(_localctx); Context = _localctx; _prevctx = _localctx; - State = 355; Match(T__25); - State = 357; + State = 367; Match(T__25); + State = 369; ErrorHandler.Sync(this); _la = TokenStream.LA(1); if (_la==STRING_LITERAL) { { - State = 356; object_property_list(); + State = 368; object_property_list(); } } - State = 359; Match(T__26); + State = 371; Match(T__26); } break; case 6: @@ -3170,28 +3227,28 @@ private Primary_expressionContext primary_expression(int _p) { _localctx = new FunctionCallScalarExpressionContext(_localctx); Context = _localctx; _prevctx = _localctx; - State = 362; + State = 374; ErrorHandler.Sync(this); _la = TokenStream.LA(1); if (_la==K_UDF) { { - State = 360; Match(K_UDF); - State = 361; Match(T__4); + State = 372; Match(K_UDF); + State = 373; Match(T__4); } } - State = 364; Match(IDENTIFIER); - State = 365; Match(T__2); - State = 367; + State = 376; Match(IDENTIFIER); + State = 377; Match(T__2); + State = 379; ErrorHandler.Sync(this); _la = TokenStream.LA(1); if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__5) | (1L << T__12) | (1L << T__13) | (1L << T__24) | (1L << T__25) | (1L << K_ARRAY) | (1L << K_EXISTS) | (1L << K_FALSE) | (1L << K_NOT) | (1L << K_NULL) | (1L << K_TRUE) | (1L << K_UDF) | (1L << K_UNDEFINED) | (1L << NUMERIC_LITERAL) | (1L << STRING_LITERAL) | (1L << IDENTIFIER) | (1L << PARAMETER))) != 0)) { { - State = 366; scalar_expression_list(); + State = 378; scalar_expression_list(); } } - State = 369; Match(T__3); + State = 381; Match(T__3); } break; case 7: @@ -3199,9 +3256,9 @@ private Primary_expressionContext primary_expression(int _p) { _localctx = new ParenthesizedScalarExperessionContext(_localctx); Context = _localctx; _prevctx = _localctx; - State = 370; Match(T__2); - State = 371; scalar_expression(0); - State = 372; Match(T__3); + State = 382; Match(T__2); + State = 383; scalar_expression(0); + State = 384; Match(T__3); } break; case 8: @@ -3209,9 +3266,9 @@ private Primary_expressionContext primary_expression(int _p) { _localctx = new SubqueryScalarExpressionContext(_localctx); Context = _localctx; _prevctx = _localctx; - State = 374; Match(T__2); - State = 375; sql_query(); - State = 376; Match(T__3); + State = 386; Match(T__2); + State = 387; sql_query(); + State = 388; Match(T__3); } break; case 9: @@ -3219,10 +3276,10 @@ private Primary_expressionContext primary_expression(int _p) { _localctx = new ExistsScalarExpressionContext(_localctx); Context = _localctx; _prevctx = _localctx; - State = 378; Match(K_EXISTS); - State = 379; Match(T__2); - State = 380; sql_query(); - State = 381; Match(T__3); + State = 390; Match(K_EXISTS); + State = 391; Match(T__2); + State = 392; sql_query(); + State = 393; Match(T__3); } break; case 10: @@ -3230,53 +3287,53 @@ private Primary_expressionContext primary_expression(int _p) { _localctx = new ArrayScalarExpressionContext(_localctx); Context = _localctx; _prevctx = _localctx; - State = 383; Match(K_ARRAY); - State = 384; Match(T__2); - State = 385; sql_query(); - State = 386; Match(T__3); + State = 395; Match(K_ARRAY); + State = 396; Match(T__2); + State = 397; sql_query(); + State = 398; Match(T__3); } break; } Context.Stop = TokenStream.LT(-1); - State = 400; + State = 412; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,36,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,38,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { if ( ParseListeners!=null ) TriggerExitRuleEvent(); _prevctx = _localctx; { - State = 398; + State = 410; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,35,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,37,Context) ) { case 1: { _localctx = new PropertyRefScalarExpressionRecursiveContext(new Primary_expressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_primary_expression); - State = 390; + State = 402; if (!(Precpred(Context, 4))) throw new FailedPredicateException(this, "Precpred(Context, 4)"); - State = 391; Match(T__4); - State = 392; Match(IDENTIFIER); + State = 403; Match(T__4); + State = 404; Match(IDENTIFIER); } break; case 2: { _localctx = new MemberIndexerScalarExpressionContext(new Primary_expressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_primary_expression); - State = 393; + State = 405; if (!(Precpred(Context, 3))) throw new FailedPredicateException(this, "Precpred(Context, 3)"); - State = 394; Match(T__5); - State = 395; scalar_expression(0); - State = 396; Match(T__6); + State = 406; Match(T__5); + State = 407; scalar_expression(0); + State = 408; Match(T__6); } break; } } } - State = 402; + State = 414; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,36,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,38,Context); } } } @@ -3326,18 +3383,18 @@ public Scalar_expression_listContext scalar_expression_list() { try { EnterOuterAlt(_localctx, 1); { - State = 403; scalar_expression(0); - State = 408; + State = 415; scalar_expression(0); + State = 420; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==T__1) { { { - State = 404; Match(T__1); - State = 405; scalar_expression(0); + State = 416; Match(T__1); + State = 417; scalar_expression(0); } } - State = 410; + State = 422; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } @@ -3389,18 +3446,18 @@ public Object_property_listContext object_property_list() { try { EnterOuterAlt(_localctx, 1); { - State = 411; object_property(); - State = 416; + State = 423; object_property(); + State = 428; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==T__1) { { { - State = 412; Match(T__1); - State = 413; object_property(); + State = 424; Match(T__1); + State = 425; object_property(); } } - State = 418; + State = 430; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } @@ -3449,9 +3506,9 @@ public Object_propertyContext object_property() { try { EnterOuterAlt(_localctx, 1); { - State = 419; Match(STRING_LITERAL); - State = 420; Match(T__8); - State = 421; scalar_expression(0); + State = 431; Match(STRING_LITERAL); + State = 432; Match(T__8); + State = 433; scalar_expression(0); } } catch (RecognitionException re) { @@ -3500,7 +3557,7 @@ public LiteralContext literal() { try { EnterOuterAlt(_localctx, 1); { - State = 423; + State = 435; _la = TokenStream.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << K_FALSE) | (1L << K_NULL) | (1L << K_TRUE) | (1L << K_UNDEFINED) | (1L << NUMERIC_LITERAL) | (1L << STRING_LITERAL))) != 0)) ) { ErrorHandler.RecoverInline(this); @@ -3527,6 +3584,7 @@ public override bool Sempred(RuleContext _localctx, int ruleIndex, int predIndex case 10: return collection_expression_sempred((Collection_expressionContext)_localctx, predIndex); case 12: return path_expression_sempred((Path_expressionContext)_localctx, predIndex); case 22: return scalar_expression_sempred((Scalar_expressionContext)_localctx, predIndex); + case 23: return logical_scalar_expression_sempred((Logical_scalar_expressionContext)_localctx, predIndex); case 27: return binary_scalar_expression_sempred((Binary_scalar_expressionContext)_localctx, predIndex); case 38: return primary_expression_sempred((Primary_expressionContext)_localctx, predIndex); } @@ -3553,32 +3611,39 @@ private bool scalar_expression_sempred(Scalar_expressionContext _localctx, int p } return true; } + private bool logical_scalar_expression_sempred(Logical_scalar_expressionContext _localctx, int predIndex) { + switch (predIndex) { + case 6: return Precpred(Context, 2); + case 7: return Precpred(Context, 1); + } + return true; + } private bool binary_scalar_expression_sempred(Binary_scalar_expressionContext _localctx, int predIndex) { switch (predIndex) { - case 6: return Precpred(Context, 10); - case 7: return Precpred(Context, 9); - case 8: return Precpred(Context, 8); - case 9: return Precpred(Context, 7); - case 10: return Precpred(Context, 6); - case 11: return Precpred(Context, 5); - case 12: return Precpred(Context, 4); - case 13: return Precpred(Context, 3); - case 14: return Precpred(Context, 2); - case 15: return Precpred(Context, 1); + case 8: return Precpred(Context, 10); + case 9: return Precpred(Context, 9); + case 10: return Precpred(Context, 8); + case 11: return Precpred(Context, 7); + case 12: return Precpred(Context, 6); + case 13: return Precpred(Context, 5); + case 14: return Precpred(Context, 4); + case 15: return Precpred(Context, 3); + case 16: return Precpred(Context, 2); + case 17: return Precpred(Context, 1); } return true; } private bool primary_expression_sempred(Primary_expressionContext _localctx, int predIndex) { switch (predIndex) { - case 16: return Precpred(Context, 4); - case 17: return Precpred(Context, 3); + case 18: return Precpred(Context, 4); + case 19: return Precpred(Context, 3); } return true; } private static char[] _serializedATN = { '\x3', '\x608B', '\xA72A', '\x8133', '\xB9ED', '\x417C', '\x3BE7', '\x7786', - '\x5964', '\x3', '?', '\x1AC', '\x4', '\x2', '\t', '\x2', '\x4', '\x3', + '\x5964', '\x3', '?', '\x1B8', '\x4', '\x2', '\t', '\x2', '\x4', '\x3', '\t', '\x3', '\x4', '\x4', '\t', '\x4', '\x4', '\x5', '\t', '\x5', '\x4', '\x6', '\t', '\x6', '\x4', '\a', '\t', '\a', '\x4', '\b', '\t', '\b', '\x4', '\t', '\t', '\t', '\x4', '\n', '\t', '\n', '\x4', '\v', '\t', '\v', @@ -3628,12 +3693,14 @@ private bool primary_expression_sempred(Primary_expressionContext _localctx, int '\x18', '\x3', '\x18', '\x3', '\x18', '\x3', '\x18', '\x3', '\x18', '\x3', '\x18', '\x3', '\x18', '\x3', '\x18', '\a', '\x18', '\xF8', '\n', '\x18', '\f', '\x18', '\xE', '\x18', '\xFB', '\v', '\x18', '\x3', '\x19', '\x3', - '\x19', '\x3', '\x19', '\x5', '\x19', '\x100', '\n', '\x19', '\x3', '\x1A', - '\x3', '\x1A', '\x5', '\x1A', '\x104', '\n', '\x1A', '\x3', '\x1A', '\x3', - '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x3', '\x1B', '\x3', - '\x1B', '\x5', '\x1B', '\x10D', '\n', '\x1B', '\x3', '\x1B', '\x3', '\x1B', - '\x3', '\x1B', '\x5', '\x1B', '\x112', '\n', '\x1B', '\x3', '\x1C', '\x3', - '\x1C', '\x3', '\x1C', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', + '\x19', '\x3', '\x19', '\x3', '\x19', '\x5', '\x19', '\x101', '\n', '\x19', + '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', + '\x3', '\x19', '\a', '\x19', '\x109', '\n', '\x19', '\f', '\x19', '\xE', + '\x19', '\x10C', '\v', '\x19', '\x3', '\x1A', '\x3', '\x1A', '\x5', '\x1A', + '\x110', '\n', '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x3', + '\x1A', '\x3', '\x1A', '\x3', '\x1B', '\x3', '\x1B', '\x5', '\x1B', '\x119', + '\n', '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x5', '\x1B', + '\x11E', '\n', '\x1B', '\x3', '\x1C', '\x3', '\x1C', '\x3', '\x1C', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', @@ -3641,303 +3708,312 @@ private bool primary_expression_sempred(Primary_expressionContext _localctx, int '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', - '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\a', '\x1D', '\x140', '\n', '\x1D', - '\f', '\x1D', '\xE', '\x1D', '\x143', '\v', '\x1D', '\x3', '\x1E', '\x3', - '\x1E', '\x3', '\x1F', '\x3', '\x1F', '\x3', ' ', '\x3', ' ', '\x3', '!', - '\x3', '!', '\x3', '\"', '\x3', '\"', '\x3', '#', '\x3', '#', '\x3', '$', - '\x3', '$', '\x3', '%', '\x3', '%', '\x3', '&', '\x3', '&', '\x3', '&', - '\x3', '&', '\x5', '&', '\x159', '\n', '&', '\x3', '\'', '\x3', '\'', - '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', - '\x5', '(', '\x163', '\n', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x5', - '(', '\x168', '\n', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x5', '(', - '\x16D', '\n', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x5', '(', '\x172', - '\n', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', + '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', + '\x1D', '\a', '\x1D', '\x14C', '\n', '\x1D', '\f', '\x1D', '\xE', '\x1D', + '\x14F', '\v', '\x1D', '\x3', '\x1E', '\x3', '\x1E', '\x3', '\x1F', '\x3', + '\x1F', '\x3', ' ', '\x3', ' ', '\x3', '!', '\x3', '!', '\x3', '\"', '\x3', + '\"', '\x3', '#', '\x3', '#', '\x3', '$', '\x3', '$', '\x3', '%', '\x3', + '%', '\x3', '&', '\x3', '&', '\x3', '&', '\x3', '&', '\x5', '&', '\x165', + '\n', '&', '\x3', '\'', '\x3', '\'', '\x3', '(', '\x3', '(', '\x3', '(', + '\x3', '(', '\x3', '(', '\x3', '(', '\x5', '(', '\x16F', '\n', '(', '\x3', + '(', '\x3', '(', '\x3', '(', '\x5', '(', '\x174', '\n', '(', '\x3', '(', + '\x3', '(', '\x3', '(', '\x5', '(', '\x179', '\n', '(', '\x3', '(', '\x3', + '(', '\x3', '(', '\x5', '(', '\x17E', '\n', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', - '\x3', '(', '\x3', '(', '\x5', '(', '\x187', '\n', '(', '\x3', '(', '\x3', - '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', - '(', '\a', '(', '\x191', '\n', '(', '\f', '(', '\xE', '(', '\x194', '\v', - '(', '\x3', ')', '\x3', ')', '\x3', ')', '\a', ')', '\x199', '\n', ')', - '\f', ')', '\xE', ')', '\x19C', '\v', ')', '\x3', '*', '\x3', '*', '\x3', - '*', '\a', '*', '\x1A1', '\n', '*', '\f', '*', '\xE', '*', '\x1A4', '\v', - '*', '\x3', '+', '\x3', '+', '\x3', '+', '\x3', '+', '\x3', ',', '\x3', - ',', '\x3', ',', '\x2', '\a', '\x16', '\x1A', '.', '\x38', 'N', '-', '\x2', - '\x4', '\x6', '\b', '\n', '\f', '\xE', '\x10', '\x12', '\x14', '\x16', - '\x18', '\x1A', '\x1C', '\x1E', ' ', '\"', '$', '&', '(', '*', ',', '.', - '\x30', '\x32', '\x34', '\x36', '\x38', ':', '<', '>', '@', '\x42', '\x44', - '\x46', 'H', 'J', 'L', 'N', 'P', 'R', 'T', 'V', '\x2', '\n', '\x4', '\x2', - '<', '<', '?', '?', '\x4', '\x2', '!', '!', '$', '$', '\x4', '\x2', '\x3', - '\x3', '\r', '\xE', '\x3', '\x2', '\xF', '\x10', '\x3', '\x2', '\x11', - '\x14', '\x3', '\x2', '\x15', '\x16', '\x5', '\x2', '\xF', '\x10', '\x1B', - '\x1B', '/', '/', '\a', '\x2', '(', '(', '\x30', '\x30', '\x36', '\x36', - '\x38', '\x38', '<', '=', '\x2', '\x1BA', '\x2', 'X', '\x3', '\x2', '\x2', - '\x2', '\x4', '[', '\x3', '\x2', '\x2', '\x2', '\x6', 'k', '\x3', '\x2', - '\x2', '\x2', '\b', 't', '\x3', '\x2', '\x2', '\x2', '\n', 'z', '\x3', - '\x2', '\x2', '\x2', '\f', '|', '\x3', '\x2', '\x2', '\x2', '\xE', '~', - '\x3', '\x2', '\x2', '\x2', '\x10', '\x81', '\x3', '\x2', '\x2', '\x2', - '\x12', '\x89', '\x3', '\x2', '\x2', '\x2', '\x14', '\x8E', '\x3', '\x2', - '\x2', '\x2', '\x16', '\x9A', '\x3', '\x2', '\x2', '\x2', '\x18', '\xAC', - '\x3', '\x2', '\x2', '\x2', '\x1A', '\xAE', '\x3', '\x2', '\x2', '\x2', - '\x1C', '\xBF', '\x3', '\x2', '\x2', '\x2', '\x1E', '\xC2', '\x3', '\x2', - '\x2', '\x2', ' ', '\xC6', '\x3', '\x2', '\x2', '\x2', '\"', '\xCA', '\x3', - '\x2', '\x2', '\x2', '$', '\xD2', '\x3', '\x2', '\x2', '\x2', '&', '\xD6', - '\x3', '\x2', '\x2', '\x2', '(', '\xD8', '\x3', '\x2', '\x2', '\x2', '*', - '\xDD', '\x3', '\x2', '\x2', '\x2', ',', '\xDF', '\x3', '\x2', '\x2', - '\x2', '.', '\xEC', '\x3', '\x2', '\x2', '\x2', '\x30', '\xFF', '\x3', - '\x2', '\x2', '\x2', '\x32', '\x101', '\x3', '\x2', '\x2', '\x2', '\x34', - '\x10A', '\x3', '\x2', '\x2', '\x2', '\x36', '\x113', '\x3', '\x2', '\x2', - '\x2', '\x38', '\x116', '\x3', '\x2', '\x2', '\x2', ':', '\x144', '\x3', - '\x2', '\x2', '\x2', '<', '\x146', '\x3', '\x2', '\x2', '\x2', '>', '\x148', - '\x3', '\x2', '\x2', '\x2', '@', '\x14A', '\x3', '\x2', '\x2', '\x2', - '\x42', '\x14C', '\x3', '\x2', '\x2', '\x2', '\x44', '\x14E', '\x3', '\x2', - '\x2', '\x2', '\x46', '\x150', '\x3', '\x2', '\x2', '\x2', 'H', '\x152', - '\x3', '\x2', '\x2', '\x2', 'J', '\x158', '\x3', '\x2', '\x2', '\x2', - 'L', '\x15A', '\x3', '\x2', '\x2', '\x2', 'N', '\x186', '\x3', '\x2', - '\x2', '\x2', 'P', '\x195', '\x3', '\x2', '\x2', '\x2', 'R', '\x19D', - '\x3', '\x2', '\x2', '\x2', 'T', '\x1A5', '\x3', '\x2', '\x2', '\x2', - 'V', '\x1A9', '\x3', '\x2', '\x2', '\x2', 'X', 'Y', '\x5', '\x4', '\x3', - '\x2', 'Y', 'Z', '\a', '\x2', '\x2', '\x3', 'Z', '\x3', '\x3', '\x2', - '\x2', '\x2', '[', ']', '\x5', '\x6', '\x4', '\x2', '\\', '^', '\x5', - '\x14', '\v', '\x2', ']', '\\', '\x3', '\x2', '\x2', '\x2', ']', '^', - '\x3', '\x2', '\x2', '\x2', '^', '`', '\x3', '\x2', '\x2', '\x2', '_', - '\x61', '\x5', '\x1C', '\xF', '\x2', '`', '_', '\x3', '\x2', '\x2', '\x2', - '`', '\x61', '\x3', '\x2', '\x2', '\x2', '\x61', '\x63', '\x3', '\x2', - '\x2', '\x2', '\x62', '\x64', '\x5', '\x1E', '\x10', '\x2', '\x63', '\x62', - '\x3', '\x2', '\x2', '\x2', '\x63', '\x64', '\x3', '\x2', '\x2', '\x2', - '\x64', '\x66', '\x3', '\x2', '\x2', '\x2', '\x65', 'g', '\x5', ' ', '\x11', - '\x2', '\x66', '\x65', '\x3', '\x2', '\x2', '\x2', '\x66', 'g', '\x3', - '\x2', '\x2', '\x2', 'g', 'i', '\x3', '\x2', '\x2', '\x2', 'h', 'j', '\x5', - '(', '\x15', '\x2', 'i', 'h', '\x3', '\x2', '\x2', '\x2', 'i', 'j', '\x3', - '\x2', '\x2', '\x2', 'j', '\x5', '\x3', '\x2', '\x2', '\x2', 'k', 'm', - '\a', '\x34', '\x2', '\x2', 'l', 'n', '\a', '%', '\x2', '\x2', 'm', 'l', - '\x3', '\x2', '\x2', '\x2', 'm', 'n', '\x3', '\x2', '\x2', '\x2', 'n', - 'p', '\x3', '\x2', '\x2', '\x2', 'o', 'q', '\x5', '\b', '\x5', '\x2', - 'p', 'o', '\x3', '\x2', '\x2', '\x2', 'p', 'q', '\x3', '\x2', '\x2', '\x2', - 'q', 'r', '\x3', '\x2', '\x2', '\x2', 'r', 's', '\x5', '\n', '\x6', '\x2', - 's', '\a', '\x3', '\x2', '\x2', '\x2', 't', 'u', '\a', '\x35', '\x2', - '\x2', 'u', 'v', '\t', '\x2', '\x2', '\x2', 'v', '\t', '\x3', '\x2', '\x2', - '\x2', 'w', '{', '\x5', '\f', '\a', '\x2', 'x', '{', '\x5', '\xE', '\b', - '\x2', 'y', '{', '\x5', '\x10', '\t', '\x2', 'z', 'w', '\x3', '\x2', '\x2', - '\x2', 'z', 'x', '\x3', '\x2', '\x2', '\x2', 'z', 'y', '\x3', '\x2', '\x2', - '\x2', '{', '\v', '\x3', '\x2', '\x2', '\x2', '|', '}', '\a', '\x3', '\x2', - '\x2', '}', '\r', '\x3', '\x2', '\x2', '\x2', '~', '\x7F', '\a', '\x39', - '\x2', '\x2', '\x7F', '\x80', '\x5', '.', '\x18', '\x2', '\x80', '\xF', - '\x3', '\x2', '\x2', '\x2', '\x81', '\x86', '\x5', '\x12', '\n', '\x2', - '\x82', '\x83', '\a', '\x4', '\x2', '\x2', '\x83', '\x85', '\x5', '\x12', - '\n', '\x2', '\x84', '\x82', '\x3', '\x2', '\x2', '\x2', '\x85', '\x88', - '\x3', '\x2', '\x2', '\x2', '\x86', '\x84', '\x3', '\x2', '\x2', '\x2', - '\x86', '\x87', '\x3', '\x2', '\x2', '\x2', '\x87', '\x11', '\x3', '\x2', - '\x2', '\x2', '\x88', '\x86', '\x3', '\x2', '\x2', '\x2', '\x89', '\x8C', - '\x5', '.', '\x18', '\x2', '\x8A', '\x8B', '\a', ' ', '\x2', '\x2', '\x8B', - '\x8D', '\a', '>', '\x2', '\x2', '\x8C', '\x8A', '\x3', '\x2', '\x2', - '\x2', '\x8C', '\x8D', '\x3', '\x2', '\x2', '\x2', '\x8D', '\x13', '\x3', - '\x2', '\x2', '\x2', '\x8E', '\x8F', '\a', ')', '\x2', '\x2', '\x8F', - '\x90', '\x5', '\x16', '\f', '\x2', '\x90', '\x15', '\x3', '\x2', '\x2', - '\x2', '\x91', '\x92', '\b', '\f', '\x1', '\x2', '\x92', '\x95', '\x5', - '\x18', '\r', '\x2', '\x93', '\x94', '\a', ' ', '\x2', '\x2', '\x94', - '\x96', '\a', '>', '\x2', '\x2', '\x95', '\x93', '\x3', '\x2', '\x2', - '\x2', '\x95', '\x96', '\x3', '\x2', '\x2', '\x2', '\x96', '\x9B', '\x3', - '\x2', '\x2', '\x2', '\x97', '\x98', '\a', '>', '\x2', '\x2', '\x98', - '\x99', '\a', '+', '\x2', '\x2', '\x99', '\x9B', '\x5', '\x18', '\r', - '\x2', '\x9A', '\x91', '\x3', '\x2', '\x2', '\x2', '\x9A', '\x97', '\x3', - '\x2', '\x2', '\x2', '\x9B', '\xA1', '\x3', '\x2', '\x2', '\x2', '\x9C', - '\x9D', '\f', '\x3', '\x2', '\x2', '\x9D', '\x9E', '\a', ',', '\x2', '\x2', - '\x9E', '\xA0', '\x5', '\x16', '\f', '\x4', '\x9F', '\x9C', '\x3', '\x2', - '\x2', '\x2', '\xA0', '\xA3', '\x3', '\x2', '\x2', '\x2', '\xA1', '\x9F', - '\x3', '\x2', '\x2', '\x2', '\xA1', '\xA2', '\x3', '\x2', '\x2', '\x2', - '\xA2', '\x17', '\x3', '\x2', '\x2', '\x2', '\xA3', '\xA1', '\x3', '\x2', - '\x2', '\x2', '\xA4', '\xA6', '\a', '>', '\x2', '\x2', '\xA5', '\xA7', - '\x5', '\x1A', '\xE', '\x2', '\xA6', '\xA5', '\x3', '\x2', '\x2', '\x2', - '\xA6', '\xA7', '\x3', '\x2', '\x2', '\x2', '\xA7', '\xAD', '\x3', '\x2', - '\x2', '\x2', '\xA8', '\xA9', '\a', '\x5', '\x2', '\x2', '\xA9', '\xAA', - '\x5', '\x4', '\x3', '\x2', '\xAA', '\xAB', '\a', '\x6', '\x2', '\x2', - '\xAB', '\xAD', '\x3', '\x2', '\x2', '\x2', '\xAC', '\xA4', '\x3', '\x2', - '\x2', '\x2', '\xAC', '\xA8', '\x3', '\x2', '\x2', '\x2', '\xAD', '\x19', - '\x3', '\x2', '\x2', '\x2', '\xAE', '\xBC', '\b', '\xE', '\x1', '\x2', - '\xAF', '\xB0', '\f', '\x6', '\x2', '\x2', '\xB0', '\xB1', '\a', '\a', - '\x2', '\x2', '\xB1', '\xBB', '\a', '>', '\x2', '\x2', '\xB2', '\xB3', - '\f', '\x5', '\x2', '\x2', '\xB3', '\xB4', '\a', '\b', '\x2', '\x2', '\xB4', - '\xB5', '\a', '<', '\x2', '\x2', '\xB5', '\xBB', '\a', '\t', '\x2', '\x2', - '\xB6', '\xB7', '\f', '\x4', '\x2', '\x2', '\xB7', '\xB8', '\a', '\b', - '\x2', '\x2', '\xB8', '\xB9', '\a', '=', '\x2', '\x2', '\xB9', '\xBB', - '\a', '\t', '\x2', '\x2', '\xBA', '\xAF', '\x3', '\x2', '\x2', '\x2', - '\xBA', '\xB2', '\x3', '\x2', '\x2', '\x2', '\xBA', '\xB6', '\x3', '\x2', - '\x2', '\x2', '\xBB', '\xBE', '\x3', '\x2', '\x2', '\x2', '\xBC', '\xBA', - '\x3', '\x2', '\x2', '\x2', '\xBC', '\xBD', '\x3', '\x2', '\x2', '\x2', - '\xBD', '\x1B', '\x3', '\x2', '\x2', '\x2', '\xBE', '\xBC', '\x3', '\x2', - '\x2', '\x2', '\xBF', '\xC0', '\a', ':', '\x2', '\x2', '\xC0', '\xC1', - '\x5', '.', '\x18', '\x2', '\xC1', '\x1D', '\x3', '\x2', '\x2', '\x2', - '\xC2', '\xC3', '\a', '*', '\x2', '\x2', '\xC3', '\xC4', '\a', '#', '\x2', - '\x2', '\xC4', '\xC5', '\x5', 'P', ')', '\x2', '\xC5', '\x1F', '\x3', - '\x2', '\x2', '\x2', '\xC6', '\xC7', '\a', '\x33', '\x2', '\x2', '\xC7', - '\xC8', '\a', '#', '\x2', '\x2', '\xC8', '\xC9', '\x5', '\"', '\x12', - '\x2', '\xC9', '!', '\x3', '\x2', '\x2', '\x2', '\xCA', '\xCF', '\x5', - '$', '\x13', '\x2', '\xCB', '\xCC', '\a', '\x4', '\x2', '\x2', '\xCC', - '\xCE', '\x5', '$', '\x13', '\x2', '\xCD', '\xCB', '\x3', '\x2', '\x2', - '\x2', '\xCE', '\xD1', '\x3', '\x2', '\x2', '\x2', '\xCF', '\xCD', '\x3', - '\x2', '\x2', '\x2', '\xCF', '\xD0', '\x3', '\x2', '\x2', '\x2', '\xD0', - '#', '\x3', '\x2', '\x2', '\x2', '\xD1', '\xCF', '\x3', '\x2', '\x2', - '\x2', '\xD2', '\xD4', '\x5', '.', '\x18', '\x2', '\xD3', '\xD5', '\x5', - '&', '\x14', '\x2', '\xD4', '\xD3', '\x3', '\x2', '\x2', '\x2', '\xD4', - '\xD5', '\x3', '\x2', '\x2', '\x2', '\xD5', '%', '\x3', '\x2', '\x2', - '\x2', '\xD6', '\xD7', '\t', '\x3', '\x2', '\x2', '\xD7', '\'', '\x3', - '\x2', '\x2', '\x2', '\xD8', '\xD9', '\a', '\x31', '\x2', '\x2', '\xD9', - '\xDA', '\x5', '*', '\x16', '\x2', '\xDA', '\xDB', '\a', '.', '\x2', '\x2', - '\xDB', '\xDC', '\x5', ',', '\x17', '\x2', '\xDC', ')', '\x3', '\x2', - '\x2', '\x2', '\xDD', '\xDE', '\t', '\x2', '\x2', '\x2', '\xDE', '+', - '\x3', '\x2', '\x2', '\x2', '\xDF', '\xE0', '\t', '\x2', '\x2', '\x2', - '\xE0', '-', '\x3', '\x2', '\x2', '\x2', '\xE1', '\xE2', '\b', '\x18', - '\x1', '\x2', '\xE2', '\xED', '\x5', '\x30', '\x19', '\x2', '\xE3', '\xE5', - '\x5', '\x38', '\x1D', '\x2', '\xE4', '\xE6', '\a', '/', '\x2', '\x2', - '\xE5', '\xE4', '\x3', '\x2', '\x2', '\x2', '\xE5', '\xE6', '\x3', '\x2', - '\x2', '\x2', '\xE6', '\xE7', '\x3', '\x2', '\x2', '\x2', '\xE7', '\xE8', - '\a', '\"', '\x2', '\x2', '\xE8', '\xE9', '\x5', '\x38', '\x1D', '\x2', - '\xE9', '\xEA', '\a', '\x1E', '\x2', '\x2', '\xEA', '\xEB', '\x5', '\x38', - '\x1D', '\x2', '\xEB', '\xED', '\x3', '\x2', '\x2', '\x2', '\xEC', '\xE1', - '\x3', '\x2', '\x2', '\x2', '\xEC', '\xE3', '\x3', '\x2', '\x2', '\x2', - '\xED', '\xF9', '\x3', '\x2', '\x2', '\x2', '\xEE', '\xEF', '\f', '\x6', - '\x2', '\x2', '\xEF', '\xF0', '\a', '\n', '\x2', '\x2', '\xF0', '\xF1', - '\x5', '.', '\x18', '\x2', '\xF1', '\xF2', '\a', '\v', '\x2', '\x2', '\xF2', - '\xF3', '\x5', '.', '\x18', '\a', '\xF3', '\xF8', '\x3', '\x2', '\x2', - '\x2', '\xF4', '\xF5', '\f', '\x5', '\x2', '\x2', '\xF5', '\xF6', '\a', - '\f', '\x2', '\x2', '\xF6', '\xF8', '\x5', '.', '\x18', '\x6', '\xF7', - '\xEE', '\x3', '\x2', '\x2', '\x2', '\xF7', '\xF4', '\x3', '\x2', '\x2', - '\x2', '\xF8', '\xFB', '\x3', '\x2', '\x2', '\x2', '\xF9', '\xF7', '\x3', - '\x2', '\x2', '\x2', '\xF9', '\xFA', '\x3', '\x2', '\x2', '\x2', '\xFA', - '/', '\x3', '\x2', '\x2', '\x2', '\xFB', '\xF9', '\x3', '\x2', '\x2', - '\x2', '\xFC', '\x100', '\x5', '\x38', '\x1D', '\x2', '\xFD', '\x100', - '\x5', '\x32', '\x1A', '\x2', '\xFE', '\x100', '\x5', '\x34', '\x1B', - '\x2', '\xFF', '\xFC', '\x3', '\x2', '\x2', '\x2', '\xFF', '\xFD', '\x3', - '\x2', '\x2', '\x2', '\xFF', '\xFE', '\x3', '\x2', '\x2', '\x2', '\x100', - '\x31', '\x3', '\x2', '\x2', '\x2', '\x101', '\x103', '\x5', '\x38', '\x1D', - '\x2', '\x102', '\x104', '\a', '/', '\x2', '\x2', '\x103', '\x102', '\x3', - '\x2', '\x2', '\x2', '\x103', '\x104', '\x3', '\x2', '\x2', '\x2', '\x104', - '\x105', '\x3', '\x2', '\x2', '\x2', '\x105', '\x106', '\a', '+', '\x2', - '\x2', '\x106', '\x107', '\a', '\x5', '\x2', '\x2', '\x107', '\x108', - '\x5', 'P', ')', '\x2', '\x108', '\x109', '\a', '\x6', '\x2', '\x2', '\x109', - '\x33', '\x3', '\x2', '\x2', '\x2', '\x10A', '\x10C', '\x5', '\x38', '\x1D', - '\x2', '\x10B', '\x10D', '\a', '/', '\x2', '\x2', '\x10C', '\x10B', '\x3', - '\x2', '\x2', '\x2', '\x10C', '\x10D', '\x3', '\x2', '\x2', '\x2', '\x10D', - '\x10E', '\x3', '\x2', '\x2', '\x2', '\x10E', '\x10F', '\a', '-', '\x2', - '\x2', '\x10F', '\x111', '\x5', '\x38', '\x1D', '\x2', '\x110', '\x112', - '\x5', '\x36', '\x1C', '\x2', '\x111', '\x110', '\x3', '\x2', '\x2', '\x2', - '\x111', '\x112', '\x3', '\x2', '\x2', '\x2', '\x112', '\x35', '\x3', - '\x2', '\x2', '\x2', '\x113', '\x114', '\a', '&', '\x2', '\x2', '\x114', - '\x115', '\a', '=', '\x2', '\x2', '\x115', '\x37', '\x3', '\x2', '\x2', - '\x2', '\x116', '\x117', '\b', '\x1D', '\x1', '\x2', '\x117', '\x118', - '\x5', 'J', '&', '\x2', '\x118', '\x141', '\x3', '\x2', '\x2', '\x2', - '\x119', '\x11A', '\f', '\f', '\x2', '\x2', '\x11A', '\x11B', '\x5', ':', - '\x1E', '\x2', '\x11B', '\x11C', '\x5', '\x38', '\x1D', '\r', '\x11C', - '\x140', '\x3', '\x2', '\x2', '\x2', '\x11D', '\x11E', '\f', '\v', '\x2', - '\x2', '\x11E', '\x11F', '\x5', '<', '\x1F', '\x2', '\x11F', '\x120', - '\x5', '\x38', '\x1D', '\f', '\x120', '\x140', '\x3', '\x2', '\x2', '\x2', - '\x121', '\x122', '\f', '\n', '\x2', '\x2', '\x122', '\x123', '\x5', '>', - ' ', '\x2', '\x123', '\x124', '\x5', '\x38', '\x1D', '\v', '\x124', '\x140', - '\x3', '\x2', '\x2', '\x2', '\x125', '\x126', '\f', '\t', '\x2', '\x2', - '\x126', '\x127', '\x5', '@', '!', '\x2', '\x127', '\x128', '\x5', '\x38', - '\x1D', '\n', '\x128', '\x140', '\x3', '\x2', '\x2', '\x2', '\x129', '\x12A', - '\f', '\b', '\x2', '\x2', '\x12A', '\x12B', '\x5', '\x42', '\"', '\x2', - '\x12B', '\x12C', '\x5', '\x38', '\x1D', '\t', '\x12C', '\x140', '\x3', - '\x2', '\x2', '\x2', '\x12D', '\x12E', '\f', '\a', '\x2', '\x2', '\x12E', - '\x12F', '\x5', '\x44', '#', '\x2', '\x12F', '\x130', '\x5', '\x38', '\x1D', - '\b', '\x130', '\x140', '\x3', '\x2', '\x2', '\x2', '\x131', '\x132', - '\f', '\x6', '\x2', '\x2', '\x132', '\x133', '\x5', '\x46', '$', '\x2', - '\x133', '\x134', '\x5', '\x38', '\x1D', '\a', '\x134', '\x140', '\x3', - '\x2', '\x2', '\x2', '\x135', '\x136', '\f', '\x5', '\x2', '\x2', '\x136', - '\x137', '\a', '\x1E', '\x2', '\x2', '\x137', '\x140', '\x5', '\x38', - '\x1D', '\x6', '\x138', '\x139', '\f', '\x4', '\x2', '\x2', '\x139', '\x13A', - '\a', '\x32', '\x2', '\x2', '\x13A', '\x140', '\x5', '\x38', '\x1D', '\x5', - '\x13B', '\x13C', '\f', '\x3', '\x2', '\x2', '\x13C', '\x13D', '\x5', - 'H', '%', '\x2', '\x13D', '\x13E', '\x5', '\x38', '\x1D', '\x4', '\x13E', - '\x140', '\x3', '\x2', '\x2', '\x2', '\x13F', '\x119', '\x3', '\x2', '\x2', - '\x2', '\x13F', '\x11D', '\x3', '\x2', '\x2', '\x2', '\x13F', '\x121', - '\x3', '\x2', '\x2', '\x2', '\x13F', '\x125', '\x3', '\x2', '\x2', '\x2', - '\x13F', '\x129', '\x3', '\x2', '\x2', '\x2', '\x13F', '\x12D', '\x3', - '\x2', '\x2', '\x2', '\x13F', '\x131', '\x3', '\x2', '\x2', '\x2', '\x13F', - '\x135', '\x3', '\x2', '\x2', '\x2', '\x13F', '\x138', '\x3', '\x2', '\x2', - '\x2', '\x13F', '\x13B', '\x3', '\x2', '\x2', '\x2', '\x140', '\x143', - '\x3', '\x2', '\x2', '\x2', '\x141', '\x13F', '\x3', '\x2', '\x2', '\x2', - '\x141', '\x142', '\x3', '\x2', '\x2', '\x2', '\x142', '\x39', '\x3', - '\x2', '\x2', '\x2', '\x143', '\x141', '\x3', '\x2', '\x2', '\x2', '\x144', - '\x145', '\t', '\x4', '\x2', '\x2', '\x145', ';', '\x3', '\x2', '\x2', - '\x2', '\x146', '\x147', '\t', '\x5', '\x2', '\x2', '\x147', '=', '\x3', - '\x2', '\x2', '\x2', '\x148', '\x149', '\t', '\x6', '\x2', '\x2', '\x149', - '?', '\x3', '\x2', '\x2', '\x2', '\x14A', '\x14B', '\t', '\a', '\x2', - '\x2', '\x14B', '\x41', '\x3', '\x2', '\x2', '\x2', '\x14C', '\x14D', - '\a', '\x17', '\x2', '\x2', '\x14D', '\x43', '\x3', '\x2', '\x2', '\x2', - '\x14E', '\x14F', '\a', '\x18', '\x2', '\x2', '\x14F', '\x45', '\x3', - '\x2', '\x2', '\x2', '\x150', '\x151', '\a', '\x19', '\x2', '\x2', '\x151', - 'G', '\x3', '\x2', '\x2', '\x2', '\x152', '\x153', '\a', '\x1A', '\x2', - '\x2', '\x153', 'I', '\x3', '\x2', '\x2', '\x2', '\x154', '\x159', '\x5', - 'N', '(', '\x2', '\x155', '\x156', '\x5', 'L', '\'', '\x2', '\x156', '\x157', - '\x5', 'J', '&', '\x2', '\x157', '\x159', '\x3', '\x2', '\x2', '\x2', - '\x158', '\x154', '\x3', '\x2', '\x2', '\x2', '\x158', '\x155', '\x3', - '\x2', '\x2', '\x2', '\x159', 'K', '\x3', '\x2', '\x2', '\x2', '\x15A', - '\x15B', '\t', '\b', '\x2', '\x2', '\x15B', 'M', '\x3', '\x2', '\x2', - '\x2', '\x15C', '\x15D', '\b', '(', '\x1', '\x2', '\x15D', '\x187', '\a', - '>', '\x2', '\x2', '\x15E', '\x187', '\a', '?', '\x2', '\x2', '\x15F', - '\x187', '\x5', 'V', ',', '\x2', '\x160', '\x162', '\a', '\b', '\x2', - '\x2', '\x161', '\x163', '\x5', 'P', ')', '\x2', '\x162', '\x161', '\x3', - '\x2', '\x2', '\x2', '\x162', '\x163', '\x3', '\x2', '\x2', '\x2', '\x163', - '\x164', '\x3', '\x2', '\x2', '\x2', '\x164', '\x187', '\a', '\t', '\x2', - '\x2', '\x165', '\x167', '\a', '\x1C', '\x2', '\x2', '\x166', '\x168', - '\x5', 'R', '*', '\x2', '\x167', '\x166', '\x3', '\x2', '\x2', '\x2', - '\x167', '\x168', '\x3', '\x2', '\x2', '\x2', '\x168', '\x169', '\x3', - '\x2', '\x2', '\x2', '\x169', '\x187', '\a', '\x1D', '\x2', '\x2', '\x16A', - '\x16B', '\a', '\x37', '\x2', '\x2', '\x16B', '\x16D', '\a', '\a', '\x2', - '\x2', '\x16C', '\x16A', '\x3', '\x2', '\x2', '\x2', '\x16C', '\x16D', - '\x3', '\x2', '\x2', '\x2', '\x16D', '\x16E', '\x3', '\x2', '\x2', '\x2', - '\x16E', '\x16F', '\a', '>', '\x2', '\x2', '\x16F', '\x171', '\a', '\x5', - '\x2', '\x2', '\x170', '\x172', '\x5', 'P', ')', '\x2', '\x171', '\x170', - '\x3', '\x2', '\x2', '\x2', '\x171', '\x172', '\x3', '\x2', '\x2', '\x2', - '\x172', '\x173', '\x3', '\x2', '\x2', '\x2', '\x173', '\x187', '\a', - '\x6', '\x2', '\x2', '\x174', '\x175', '\a', '\x5', '\x2', '\x2', '\x175', - '\x176', '\x5', '.', '\x18', '\x2', '\x176', '\x177', '\a', '\x6', '\x2', - '\x2', '\x177', '\x187', '\x3', '\x2', '\x2', '\x2', '\x178', '\x179', - '\a', '\x5', '\x2', '\x2', '\x179', '\x17A', '\x5', '\x4', '\x3', '\x2', - '\x17A', '\x17B', '\a', '\x6', '\x2', '\x2', '\x17B', '\x187', '\x3', - '\x2', '\x2', '\x2', '\x17C', '\x17D', '\a', '\'', '\x2', '\x2', '\x17D', - '\x17E', '\a', '\x5', '\x2', '\x2', '\x17E', '\x17F', '\x5', '\x4', '\x3', - '\x2', '\x17F', '\x180', '\a', '\x6', '\x2', '\x2', '\x180', '\x187', - '\x3', '\x2', '\x2', '\x2', '\x181', '\x182', '\a', '\x1F', '\x2', '\x2', - '\x182', '\x183', '\a', '\x5', '\x2', '\x2', '\x183', '\x184', '\x5', - '\x4', '\x3', '\x2', '\x184', '\x185', '\a', '\x6', '\x2', '\x2', '\x185', - '\x187', '\x3', '\x2', '\x2', '\x2', '\x186', '\x15C', '\x3', '\x2', '\x2', - '\x2', '\x186', '\x15E', '\x3', '\x2', '\x2', '\x2', '\x186', '\x15F', - '\x3', '\x2', '\x2', '\x2', '\x186', '\x160', '\x3', '\x2', '\x2', '\x2', - '\x186', '\x165', '\x3', '\x2', '\x2', '\x2', '\x186', '\x16C', '\x3', - '\x2', '\x2', '\x2', '\x186', '\x174', '\x3', '\x2', '\x2', '\x2', '\x186', - '\x178', '\x3', '\x2', '\x2', '\x2', '\x186', '\x17C', '\x3', '\x2', '\x2', - '\x2', '\x186', '\x181', '\x3', '\x2', '\x2', '\x2', '\x187', '\x192', - '\x3', '\x2', '\x2', '\x2', '\x188', '\x189', '\f', '\x6', '\x2', '\x2', - '\x189', '\x18A', '\a', '\a', '\x2', '\x2', '\x18A', '\x191', '\a', '>', - '\x2', '\x2', '\x18B', '\x18C', '\f', '\x5', '\x2', '\x2', '\x18C', '\x18D', - '\a', '\b', '\x2', '\x2', '\x18D', '\x18E', '\x5', '.', '\x18', '\x2', - '\x18E', '\x18F', '\a', '\t', '\x2', '\x2', '\x18F', '\x191', '\x3', '\x2', - '\x2', '\x2', '\x190', '\x188', '\x3', '\x2', '\x2', '\x2', '\x190', '\x18B', - '\x3', '\x2', '\x2', '\x2', '\x191', '\x194', '\x3', '\x2', '\x2', '\x2', - '\x192', '\x190', '\x3', '\x2', '\x2', '\x2', '\x192', '\x193', '\x3', - '\x2', '\x2', '\x2', '\x193', 'O', '\x3', '\x2', '\x2', '\x2', '\x194', - '\x192', '\x3', '\x2', '\x2', '\x2', '\x195', '\x19A', '\x5', '.', '\x18', - '\x2', '\x196', '\x197', '\a', '\x4', '\x2', '\x2', '\x197', '\x199', - '\x5', '.', '\x18', '\x2', '\x198', '\x196', '\x3', '\x2', '\x2', '\x2', - '\x199', '\x19C', '\x3', '\x2', '\x2', '\x2', '\x19A', '\x198', '\x3', - '\x2', '\x2', '\x2', '\x19A', '\x19B', '\x3', '\x2', '\x2', '\x2', '\x19B', - 'Q', '\x3', '\x2', '\x2', '\x2', '\x19C', '\x19A', '\x3', '\x2', '\x2', - '\x2', '\x19D', '\x1A2', '\x5', 'T', '+', '\x2', '\x19E', '\x19F', '\a', - '\x4', '\x2', '\x2', '\x19F', '\x1A1', '\x5', 'T', '+', '\x2', '\x1A0', - '\x19E', '\x3', '\x2', '\x2', '\x2', '\x1A1', '\x1A4', '\x3', '\x2', '\x2', - '\x2', '\x1A2', '\x1A0', '\x3', '\x2', '\x2', '\x2', '\x1A2', '\x1A3', - '\x3', '\x2', '\x2', '\x2', '\x1A3', 'S', '\x3', '\x2', '\x2', '\x2', - '\x1A4', '\x1A2', '\x3', '\x2', '\x2', '\x2', '\x1A5', '\x1A6', '\a', - '=', '\x2', '\x2', '\x1A6', '\x1A7', '\a', '\v', '\x2', '\x2', '\x1A7', - '\x1A8', '\x5', '.', '\x18', '\x2', '\x1A8', 'U', '\x3', '\x2', '\x2', - '\x2', '\x1A9', '\x1AA', '\t', '\t', '\x2', '\x2', '\x1AA', 'W', '\x3', - '\x2', '\x2', '\x2', ')', ']', '`', '\x63', '\x66', 'i', 'm', 'p', 'z', + '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x5', '(', + '\x193', '\n', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', + '(', '\x3', '(', '\x3', '(', '\x3', '(', '\a', '(', '\x19D', '\n', '(', + '\f', '(', '\xE', '(', '\x1A0', '\v', '(', '\x3', ')', '\x3', ')', '\x3', + ')', '\a', ')', '\x1A5', '\n', ')', '\f', ')', '\xE', ')', '\x1A8', '\v', + ')', '\x3', '*', '\x3', '*', '\x3', '*', '\a', '*', '\x1AD', '\n', '*', + '\f', '*', '\xE', '*', '\x1B0', '\v', '*', '\x3', '+', '\x3', '+', '\x3', + '+', '\x3', '+', '\x3', ',', '\x3', ',', '\x3', ',', '\x2', '\b', '\x16', + '\x1A', '.', '\x30', '\x38', 'N', '-', '\x2', '\x4', '\x6', '\b', '\n', + '\f', '\xE', '\x10', '\x12', '\x14', '\x16', '\x18', '\x1A', '\x1C', '\x1E', + ' ', '\"', '$', '&', '(', '*', ',', '.', '\x30', '\x32', '\x34', '\x36', + '\x38', ':', '<', '>', '@', '\x42', '\x44', '\x46', 'H', 'J', 'L', 'N', + 'P', 'R', 'T', 'V', '\x2', '\n', '\x4', '\x2', '<', '<', '?', '?', '\x4', + '\x2', '!', '!', '$', '$', '\x4', '\x2', '\x3', '\x3', '\r', '\xE', '\x3', + '\x2', '\xF', '\x10', '\x3', '\x2', '\x11', '\x14', '\x3', '\x2', '\x15', + '\x16', '\x5', '\x2', '\xF', '\x10', '\x1B', '\x1B', '/', '/', '\a', '\x2', + '(', '(', '\x30', '\x30', '\x36', '\x36', '\x38', '\x38', '<', '=', '\x2', + '\x1C8', '\x2', 'X', '\x3', '\x2', '\x2', '\x2', '\x4', '[', '\x3', '\x2', + '\x2', '\x2', '\x6', 'k', '\x3', '\x2', '\x2', '\x2', '\b', 't', '\x3', + '\x2', '\x2', '\x2', '\n', 'z', '\x3', '\x2', '\x2', '\x2', '\f', '|', + '\x3', '\x2', '\x2', '\x2', '\xE', '~', '\x3', '\x2', '\x2', '\x2', '\x10', + '\x81', '\x3', '\x2', '\x2', '\x2', '\x12', '\x89', '\x3', '\x2', '\x2', + '\x2', '\x14', '\x8E', '\x3', '\x2', '\x2', '\x2', '\x16', '\x9A', '\x3', + '\x2', '\x2', '\x2', '\x18', '\xAC', '\x3', '\x2', '\x2', '\x2', '\x1A', + '\xAE', '\x3', '\x2', '\x2', '\x2', '\x1C', '\xBF', '\x3', '\x2', '\x2', + '\x2', '\x1E', '\xC2', '\x3', '\x2', '\x2', '\x2', ' ', '\xC6', '\x3', + '\x2', '\x2', '\x2', '\"', '\xCA', '\x3', '\x2', '\x2', '\x2', '$', '\xD2', + '\x3', '\x2', '\x2', '\x2', '&', '\xD6', '\x3', '\x2', '\x2', '\x2', '(', + '\xD8', '\x3', '\x2', '\x2', '\x2', '*', '\xDD', '\x3', '\x2', '\x2', + '\x2', ',', '\xDF', '\x3', '\x2', '\x2', '\x2', '.', '\xEC', '\x3', '\x2', + '\x2', '\x2', '\x30', '\x100', '\x3', '\x2', '\x2', '\x2', '\x32', '\x10D', + '\x3', '\x2', '\x2', '\x2', '\x34', '\x116', '\x3', '\x2', '\x2', '\x2', + '\x36', '\x11F', '\x3', '\x2', '\x2', '\x2', '\x38', '\x122', '\x3', '\x2', + '\x2', '\x2', ':', '\x150', '\x3', '\x2', '\x2', '\x2', '<', '\x152', + '\x3', '\x2', '\x2', '\x2', '>', '\x154', '\x3', '\x2', '\x2', '\x2', + '@', '\x156', '\x3', '\x2', '\x2', '\x2', '\x42', '\x158', '\x3', '\x2', + '\x2', '\x2', '\x44', '\x15A', '\x3', '\x2', '\x2', '\x2', '\x46', '\x15C', + '\x3', '\x2', '\x2', '\x2', 'H', '\x15E', '\x3', '\x2', '\x2', '\x2', + 'J', '\x164', '\x3', '\x2', '\x2', '\x2', 'L', '\x166', '\x3', '\x2', + '\x2', '\x2', 'N', '\x192', '\x3', '\x2', '\x2', '\x2', 'P', '\x1A1', + '\x3', '\x2', '\x2', '\x2', 'R', '\x1A9', '\x3', '\x2', '\x2', '\x2', + 'T', '\x1B1', '\x3', '\x2', '\x2', '\x2', 'V', '\x1B5', '\x3', '\x2', + '\x2', '\x2', 'X', 'Y', '\x5', '\x4', '\x3', '\x2', 'Y', 'Z', '\a', '\x2', + '\x2', '\x3', 'Z', '\x3', '\x3', '\x2', '\x2', '\x2', '[', ']', '\x5', + '\x6', '\x4', '\x2', '\\', '^', '\x5', '\x14', '\v', '\x2', ']', '\\', + '\x3', '\x2', '\x2', '\x2', ']', '^', '\x3', '\x2', '\x2', '\x2', '^', + '`', '\x3', '\x2', '\x2', '\x2', '_', '\x61', '\x5', '\x1C', '\xF', '\x2', + '`', '_', '\x3', '\x2', '\x2', '\x2', '`', '\x61', '\x3', '\x2', '\x2', + '\x2', '\x61', '\x63', '\x3', '\x2', '\x2', '\x2', '\x62', '\x64', '\x5', + '\x1E', '\x10', '\x2', '\x63', '\x62', '\x3', '\x2', '\x2', '\x2', '\x63', + '\x64', '\x3', '\x2', '\x2', '\x2', '\x64', '\x66', '\x3', '\x2', '\x2', + '\x2', '\x65', 'g', '\x5', ' ', '\x11', '\x2', '\x66', '\x65', '\x3', + '\x2', '\x2', '\x2', '\x66', 'g', '\x3', '\x2', '\x2', '\x2', 'g', 'i', + '\x3', '\x2', '\x2', '\x2', 'h', 'j', '\x5', '(', '\x15', '\x2', 'i', + 'h', '\x3', '\x2', '\x2', '\x2', 'i', 'j', '\x3', '\x2', '\x2', '\x2', + 'j', '\x5', '\x3', '\x2', '\x2', '\x2', 'k', 'm', '\a', '\x34', '\x2', + '\x2', 'l', 'n', '\a', '%', '\x2', '\x2', 'm', 'l', '\x3', '\x2', '\x2', + '\x2', 'm', 'n', '\x3', '\x2', '\x2', '\x2', 'n', 'p', '\x3', '\x2', '\x2', + '\x2', 'o', 'q', '\x5', '\b', '\x5', '\x2', 'p', 'o', '\x3', '\x2', '\x2', + '\x2', 'p', 'q', '\x3', '\x2', '\x2', '\x2', 'q', 'r', '\x3', '\x2', '\x2', + '\x2', 'r', 's', '\x5', '\n', '\x6', '\x2', 's', '\a', '\x3', '\x2', '\x2', + '\x2', 't', 'u', '\a', '\x35', '\x2', '\x2', 'u', 'v', '\t', '\x2', '\x2', + '\x2', 'v', '\t', '\x3', '\x2', '\x2', '\x2', 'w', '{', '\x5', '\f', '\a', + '\x2', 'x', '{', '\x5', '\xE', '\b', '\x2', 'y', '{', '\x5', '\x10', '\t', + '\x2', 'z', 'w', '\x3', '\x2', '\x2', '\x2', 'z', 'x', '\x3', '\x2', '\x2', + '\x2', 'z', 'y', '\x3', '\x2', '\x2', '\x2', '{', '\v', '\x3', '\x2', + '\x2', '\x2', '|', '}', '\a', '\x3', '\x2', '\x2', '}', '\r', '\x3', '\x2', + '\x2', '\x2', '~', '\x7F', '\a', '\x39', '\x2', '\x2', '\x7F', '\x80', + '\x5', '.', '\x18', '\x2', '\x80', '\xF', '\x3', '\x2', '\x2', '\x2', + '\x81', '\x86', '\x5', '\x12', '\n', '\x2', '\x82', '\x83', '\a', '\x4', + '\x2', '\x2', '\x83', '\x85', '\x5', '\x12', '\n', '\x2', '\x84', '\x82', + '\x3', '\x2', '\x2', '\x2', '\x85', '\x88', '\x3', '\x2', '\x2', '\x2', + '\x86', '\x84', '\x3', '\x2', '\x2', '\x2', '\x86', '\x87', '\x3', '\x2', + '\x2', '\x2', '\x87', '\x11', '\x3', '\x2', '\x2', '\x2', '\x88', '\x86', + '\x3', '\x2', '\x2', '\x2', '\x89', '\x8C', '\x5', '.', '\x18', '\x2', + '\x8A', '\x8B', '\a', ' ', '\x2', '\x2', '\x8B', '\x8D', '\a', '>', '\x2', + '\x2', '\x8C', '\x8A', '\x3', '\x2', '\x2', '\x2', '\x8C', '\x8D', '\x3', + '\x2', '\x2', '\x2', '\x8D', '\x13', '\x3', '\x2', '\x2', '\x2', '\x8E', + '\x8F', '\a', ')', '\x2', '\x2', '\x8F', '\x90', '\x5', '\x16', '\f', + '\x2', '\x90', '\x15', '\x3', '\x2', '\x2', '\x2', '\x91', '\x92', '\b', + '\f', '\x1', '\x2', '\x92', '\x95', '\x5', '\x18', '\r', '\x2', '\x93', + '\x94', '\a', ' ', '\x2', '\x2', '\x94', '\x96', '\a', '>', '\x2', '\x2', + '\x95', '\x93', '\x3', '\x2', '\x2', '\x2', '\x95', '\x96', '\x3', '\x2', + '\x2', '\x2', '\x96', '\x9B', '\x3', '\x2', '\x2', '\x2', '\x97', '\x98', + '\a', '>', '\x2', '\x2', '\x98', '\x99', '\a', '+', '\x2', '\x2', '\x99', + '\x9B', '\x5', '\x18', '\r', '\x2', '\x9A', '\x91', '\x3', '\x2', '\x2', + '\x2', '\x9A', '\x97', '\x3', '\x2', '\x2', '\x2', '\x9B', '\xA1', '\x3', + '\x2', '\x2', '\x2', '\x9C', '\x9D', '\f', '\x3', '\x2', '\x2', '\x9D', + '\x9E', '\a', ',', '\x2', '\x2', '\x9E', '\xA0', '\x5', '\x16', '\f', + '\x4', '\x9F', '\x9C', '\x3', '\x2', '\x2', '\x2', '\xA0', '\xA3', '\x3', + '\x2', '\x2', '\x2', '\xA1', '\x9F', '\x3', '\x2', '\x2', '\x2', '\xA1', + '\xA2', '\x3', '\x2', '\x2', '\x2', '\xA2', '\x17', '\x3', '\x2', '\x2', + '\x2', '\xA3', '\xA1', '\x3', '\x2', '\x2', '\x2', '\xA4', '\xA6', '\a', + '>', '\x2', '\x2', '\xA5', '\xA7', '\x5', '\x1A', '\xE', '\x2', '\xA6', + '\xA5', '\x3', '\x2', '\x2', '\x2', '\xA6', '\xA7', '\x3', '\x2', '\x2', + '\x2', '\xA7', '\xAD', '\x3', '\x2', '\x2', '\x2', '\xA8', '\xA9', '\a', + '\x5', '\x2', '\x2', '\xA9', '\xAA', '\x5', '\x4', '\x3', '\x2', '\xAA', + '\xAB', '\a', '\x6', '\x2', '\x2', '\xAB', '\xAD', '\x3', '\x2', '\x2', + '\x2', '\xAC', '\xA4', '\x3', '\x2', '\x2', '\x2', '\xAC', '\xA8', '\x3', + '\x2', '\x2', '\x2', '\xAD', '\x19', '\x3', '\x2', '\x2', '\x2', '\xAE', + '\xBC', '\b', '\xE', '\x1', '\x2', '\xAF', '\xB0', '\f', '\x6', '\x2', + '\x2', '\xB0', '\xB1', '\a', '\a', '\x2', '\x2', '\xB1', '\xBB', '\a', + '>', '\x2', '\x2', '\xB2', '\xB3', '\f', '\x5', '\x2', '\x2', '\xB3', + '\xB4', '\a', '\b', '\x2', '\x2', '\xB4', '\xB5', '\a', '<', '\x2', '\x2', + '\xB5', '\xBB', '\a', '\t', '\x2', '\x2', '\xB6', '\xB7', '\f', '\x4', + '\x2', '\x2', '\xB7', '\xB8', '\a', '\b', '\x2', '\x2', '\xB8', '\xB9', + '\a', '=', '\x2', '\x2', '\xB9', '\xBB', '\a', '\t', '\x2', '\x2', '\xBA', + '\xAF', '\x3', '\x2', '\x2', '\x2', '\xBA', '\xB2', '\x3', '\x2', '\x2', + '\x2', '\xBA', '\xB6', '\x3', '\x2', '\x2', '\x2', '\xBB', '\xBE', '\x3', + '\x2', '\x2', '\x2', '\xBC', '\xBA', '\x3', '\x2', '\x2', '\x2', '\xBC', + '\xBD', '\x3', '\x2', '\x2', '\x2', '\xBD', '\x1B', '\x3', '\x2', '\x2', + '\x2', '\xBE', '\xBC', '\x3', '\x2', '\x2', '\x2', '\xBF', '\xC0', '\a', + ':', '\x2', '\x2', '\xC0', '\xC1', '\x5', '.', '\x18', '\x2', '\xC1', + '\x1D', '\x3', '\x2', '\x2', '\x2', '\xC2', '\xC3', '\a', '*', '\x2', + '\x2', '\xC3', '\xC4', '\a', '#', '\x2', '\x2', '\xC4', '\xC5', '\x5', + 'P', ')', '\x2', '\xC5', '\x1F', '\x3', '\x2', '\x2', '\x2', '\xC6', '\xC7', + '\a', '\x33', '\x2', '\x2', '\xC7', '\xC8', '\a', '#', '\x2', '\x2', '\xC8', + '\xC9', '\x5', '\"', '\x12', '\x2', '\xC9', '!', '\x3', '\x2', '\x2', + '\x2', '\xCA', '\xCF', '\x5', '$', '\x13', '\x2', '\xCB', '\xCC', '\a', + '\x4', '\x2', '\x2', '\xCC', '\xCE', '\x5', '$', '\x13', '\x2', '\xCD', + '\xCB', '\x3', '\x2', '\x2', '\x2', '\xCE', '\xD1', '\x3', '\x2', '\x2', + '\x2', '\xCF', '\xCD', '\x3', '\x2', '\x2', '\x2', '\xCF', '\xD0', '\x3', + '\x2', '\x2', '\x2', '\xD0', '#', '\x3', '\x2', '\x2', '\x2', '\xD1', + '\xCF', '\x3', '\x2', '\x2', '\x2', '\xD2', '\xD4', '\x5', '.', '\x18', + '\x2', '\xD3', '\xD5', '\x5', '&', '\x14', '\x2', '\xD4', '\xD3', '\x3', + '\x2', '\x2', '\x2', '\xD4', '\xD5', '\x3', '\x2', '\x2', '\x2', '\xD5', + '%', '\x3', '\x2', '\x2', '\x2', '\xD6', '\xD7', '\t', '\x3', '\x2', '\x2', + '\xD7', '\'', '\x3', '\x2', '\x2', '\x2', '\xD8', '\xD9', '\a', '\x31', + '\x2', '\x2', '\xD9', '\xDA', '\x5', '*', '\x16', '\x2', '\xDA', '\xDB', + '\a', '.', '\x2', '\x2', '\xDB', '\xDC', '\x5', ',', '\x17', '\x2', '\xDC', + ')', '\x3', '\x2', '\x2', '\x2', '\xDD', '\xDE', '\t', '\x2', '\x2', '\x2', + '\xDE', '+', '\x3', '\x2', '\x2', '\x2', '\xDF', '\xE0', '\t', '\x2', + '\x2', '\x2', '\xE0', '-', '\x3', '\x2', '\x2', '\x2', '\xE1', '\xE2', + '\b', '\x18', '\x1', '\x2', '\xE2', '\xED', '\x5', '\x30', '\x19', '\x2', + '\xE3', '\xE5', '\x5', '\x38', '\x1D', '\x2', '\xE4', '\xE6', '\a', '/', + '\x2', '\x2', '\xE5', '\xE4', '\x3', '\x2', '\x2', '\x2', '\xE5', '\xE6', + '\x3', '\x2', '\x2', '\x2', '\xE6', '\xE7', '\x3', '\x2', '\x2', '\x2', + '\xE7', '\xE8', '\a', '\"', '\x2', '\x2', '\xE8', '\xE9', '\x5', '\x38', + '\x1D', '\x2', '\xE9', '\xEA', '\a', '\x1E', '\x2', '\x2', '\xEA', '\xEB', + '\x5', '\x38', '\x1D', '\x2', '\xEB', '\xED', '\x3', '\x2', '\x2', '\x2', + '\xEC', '\xE1', '\x3', '\x2', '\x2', '\x2', '\xEC', '\xE3', '\x3', '\x2', + '\x2', '\x2', '\xED', '\xF9', '\x3', '\x2', '\x2', '\x2', '\xEE', '\xEF', + '\f', '\x6', '\x2', '\x2', '\xEF', '\xF0', '\a', '\n', '\x2', '\x2', '\xF0', + '\xF1', '\x5', '.', '\x18', '\x2', '\xF1', '\xF2', '\a', '\v', '\x2', + '\x2', '\xF2', '\xF3', '\x5', '.', '\x18', '\a', '\xF3', '\xF8', '\x3', + '\x2', '\x2', '\x2', '\xF4', '\xF5', '\f', '\x5', '\x2', '\x2', '\xF5', + '\xF6', '\a', '\f', '\x2', '\x2', '\xF6', '\xF8', '\x5', '.', '\x18', + '\x6', '\xF7', '\xEE', '\x3', '\x2', '\x2', '\x2', '\xF7', '\xF4', '\x3', + '\x2', '\x2', '\x2', '\xF8', '\xFB', '\x3', '\x2', '\x2', '\x2', '\xF9', + '\xF7', '\x3', '\x2', '\x2', '\x2', '\xF9', '\xFA', '\x3', '\x2', '\x2', + '\x2', '\xFA', '/', '\x3', '\x2', '\x2', '\x2', '\xFB', '\xF9', '\x3', + '\x2', '\x2', '\x2', '\xFC', '\xFD', '\b', '\x19', '\x1', '\x2', '\xFD', + '\x101', '\x5', '\x38', '\x1D', '\x2', '\xFE', '\x101', '\x5', '\x32', + '\x1A', '\x2', '\xFF', '\x101', '\x5', '\x34', '\x1B', '\x2', '\x100', + '\xFC', '\x3', '\x2', '\x2', '\x2', '\x100', '\xFE', '\x3', '\x2', '\x2', + '\x2', '\x100', '\xFF', '\x3', '\x2', '\x2', '\x2', '\x101', '\x10A', + '\x3', '\x2', '\x2', '\x2', '\x102', '\x103', '\f', '\x4', '\x2', '\x2', + '\x103', '\x104', '\a', '\x1E', '\x2', '\x2', '\x104', '\x109', '\x5', + '\x30', '\x19', '\x5', '\x105', '\x106', '\f', '\x3', '\x2', '\x2', '\x106', + '\x107', '\a', '\x32', '\x2', '\x2', '\x107', '\x109', '\x5', '\x30', + '\x19', '\x4', '\x108', '\x102', '\x3', '\x2', '\x2', '\x2', '\x108', + '\x105', '\x3', '\x2', '\x2', '\x2', '\x109', '\x10C', '\x3', '\x2', '\x2', + '\x2', '\x10A', '\x108', '\x3', '\x2', '\x2', '\x2', '\x10A', '\x10B', + '\x3', '\x2', '\x2', '\x2', '\x10B', '\x31', '\x3', '\x2', '\x2', '\x2', + '\x10C', '\x10A', '\x3', '\x2', '\x2', '\x2', '\x10D', '\x10F', '\x5', + '\x38', '\x1D', '\x2', '\x10E', '\x110', '\a', '/', '\x2', '\x2', '\x10F', + '\x10E', '\x3', '\x2', '\x2', '\x2', '\x10F', '\x110', '\x3', '\x2', '\x2', + '\x2', '\x110', '\x111', '\x3', '\x2', '\x2', '\x2', '\x111', '\x112', + '\a', '+', '\x2', '\x2', '\x112', '\x113', '\a', '\x5', '\x2', '\x2', + '\x113', '\x114', '\x5', 'P', ')', '\x2', '\x114', '\x115', '\a', '\x6', + '\x2', '\x2', '\x115', '\x33', '\x3', '\x2', '\x2', '\x2', '\x116', '\x118', + '\x5', '\x38', '\x1D', '\x2', '\x117', '\x119', '\a', '/', '\x2', '\x2', + '\x118', '\x117', '\x3', '\x2', '\x2', '\x2', '\x118', '\x119', '\x3', + '\x2', '\x2', '\x2', '\x119', '\x11A', '\x3', '\x2', '\x2', '\x2', '\x11A', + '\x11B', '\a', '-', '\x2', '\x2', '\x11B', '\x11D', '\x5', '\x38', '\x1D', + '\x2', '\x11C', '\x11E', '\x5', '\x36', '\x1C', '\x2', '\x11D', '\x11C', + '\x3', '\x2', '\x2', '\x2', '\x11D', '\x11E', '\x3', '\x2', '\x2', '\x2', + '\x11E', '\x35', '\x3', '\x2', '\x2', '\x2', '\x11F', '\x120', '\a', '&', + '\x2', '\x2', '\x120', '\x121', '\a', '=', '\x2', '\x2', '\x121', '\x37', + '\x3', '\x2', '\x2', '\x2', '\x122', '\x123', '\b', '\x1D', '\x1', '\x2', + '\x123', '\x124', '\x5', 'J', '&', '\x2', '\x124', '\x14D', '\x3', '\x2', + '\x2', '\x2', '\x125', '\x126', '\f', '\f', '\x2', '\x2', '\x126', '\x127', + '\x5', ':', '\x1E', '\x2', '\x127', '\x128', '\x5', '\x38', '\x1D', '\r', + '\x128', '\x14C', '\x3', '\x2', '\x2', '\x2', '\x129', '\x12A', '\f', + '\v', '\x2', '\x2', '\x12A', '\x12B', '\x5', '<', '\x1F', '\x2', '\x12B', + '\x12C', '\x5', '\x38', '\x1D', '\f', '\x12C', '\x14C', '\x3', '\x2', + '\x2', '\x2', '\x12D', '\x12E', '\f', '\n', '\x2', '\x2', '\x12E', '\x12F', + '\x5', '>', ' ', '\x2', '\x12F', '\x130', '\x5', '\x38', '\x1D', '\v', + '\x130', '\x14C', '\x3', '\x2', '\x2', '\x2', '\x131', '\x132', '\f', + '\t', '\x2', '\x2', '\x132', '\x133', '\x5', '@', '!', '\x2', '\x133', + '\x134', '\x5', '\x38', '\x1D', '\n', '\x134', '\x14C', '\x3', '\x2', + '\x2', '\x2', '\x135', '\x136', '\f', '\b', '\x2', '\x2', '\x136', '\x137', + '\x5', '\x42', '\"', '\x2', '\x137', '\x138', '\x5', '\x38', '\x1D', '\t', + '\x138', '\x14C', '\x3', '\x2', '\x2', '\x2', '\x139', '\x13A', '\f', + '\a', '\x2', '\x2', '\x13A', '\x13B', '\x5', '\x44', '#', '\x2', '\x13B', + '\x13C', '\x5', '\x38', '\x1D', '\b', '\x13C', '\x14C', '\x3', '\x2', + '\x2', '\x2', '\x13D', '\x13E', '\f', '\x6', '\x2', '\x2', '\x13E', '\x13F', + '\x5', '\x46', '$', '\x2', '\x13F', '\x140', '\x5', '\x38', '\x1D', '\a', + '\x140', '\x14C', '\x3', '\x2', '\x2', '\x2', '\x141', '\x142', '\f', + '\x5', '\x2', '\x2', '\x142', '\x143', '\a', '\x1E', '\x2', '\x2', '\x143', + '\x14C', '\x5', '\x38', '\x1D', '\x6', '\x144', '\x145', '\f', '\x4', + '\x2', '\x2', '\x145', '\x146', '\a', '\x32', '\x2', '\x2', '\x146', '\x14C', + '\x5', '\x38', '\x1D', '\x5', '\x147', '\x148', '\f', '\x3', '\x2', '\x2', + '\x148', '\x149', '\x5', 'H', '%', '\x2', '\x149', '\x14A', '\x5', '\x38', + '\x1D', '\x4', '\x14A', '\x14C', '\x3', '\x2', '\x2', '\x2', '\x14B', + '\x125', '\x3', '\x2', '\x2', '\x2', '\x14B', '\x129', '\x3', '\x2', '\x2', + '\x2', '\x14B', '\x12D', '\x3', '\x2', '\x2', '\x2', '\x14B', '\x131', + '\x3', '\x2', '\x2', '\x2', '\x14B', '\x135', '\x3', '\x2', '\x2', '\x2', + '\x14B', '\x139', '\x3', '\x2', '\x2', '\x2', '\x14B', '\x13D', '\x3', + '\x2', '\x2', '\x2', '\x14B', '\x141', '\x3', '\x2', '\x2', '\x2', '\x14B', + '\x144', '\x3', '\x2', '\x2', '\x2', '\x14B', '\x147', '\x3', '\x2', '\x2', + '\x2', '\x14C', '\x14F', '\x3', '\x2', '\x2', '\x2', '\x14D', '\x14B', + '\x3', '\x2', '\x2', '\x2', '\x14D', '\x14E', '\x3', '\x2', '\x2', '\x2', + '\x14E', '\x39', '\x3', '\x2', '\x2', '\x2', '\x14F', '\x14D', '\x3', + '\x2', '\x2', '\x2', '\x150', '\x151', '\t', '\x4', '\x2', '\x2', '\x151', + ';', '\x3', '\x2', '\x2', '\x2', '\x152', '\x153', '\t', '\x5', '\x2', + '\x2', '\x153', '=', '\x3', '\x2', '\x2', '\x2', '\x154', '\x155', '\t', + '\x6', '\x2', '\x2', '\x155', '?', '\x3', '\x2', '\x2', '\x2', '\x156', + '\x157', '\t', '\a', '\x2', '\x2', '\x157', '\x41', '\x3', '\x2', '\x2', + '\x2', '\x158', '\x159', '\a', '\x17', '\x2', '\x2', '\x159', '\x43', + '\x3', '\x2', '\x2', '\x2', '\x15A', '\x15B', '\a', '\x18', '\x2', '\x2', + '\x15B', '\x45', '\x3', '\x2', '\x2', '\x2', '\x15C', '\x15D', '\a', '\x19', + '\x2', '\x2', '\x15D', 'G', '\x3', '\x2', '\x2', '\x2', '\x15E', '\x15F', + '\a', '\x1A', '\x2', '\x2', '\x15F', 'I', '\x3', '\x2', '\x2', '\x2', + '\x160', '\x165', '\x5', 'N', '(', '\x2', '\x161', '\x162', '\x5', 'L', + '\'', '\x2', '\x162', '\x163', '\x5', 'J', '&', '\x2', '\x163', '\x165', + '\x3', '\x2', '\x2', '\x2', '\x164', '\x160', '\x3', '\x2', '\x2', '\x2', + '\x164', '\x161', '\x3', '\x2', '\x2', '\x2', '\x165', 'K', '\x3', '\x2', + '\x2', '\x2', '\x166', '\x167', '\t', '\b', '\x2', '\x2', '\x167', 'M', + '\x3', '\x2', '\x2', '\x2', '\x168', '\x169', '\b', '(', '\x1', '\x2', + '\x169', '\x193', '\a', '>', '\x2', '\x2', '\x16A', '\x193', '\a', '?', + '\x2', '\x2', '\x16B', '\x193', '\x5', 'V', ',', '\x2', '\x16C', '\x16E', + '\a', '\b', '\x2', '\x2', '\x16D', '\x16F', '\x5', 'P', ')', '\x2', '\x16E', + '\x16D', '\x3', '\x2', '\x2', '\x2', '\x16E', '\x16F', '\x3', '\x2', '\x2', + '\x2', '\x16F', '\x170', '\x3', '\x2', '\x2', '\x2', '\x170', '\x193', + '\a', '\t', '\x2', '\x2', '\x171', '\x173', '\a', '\x1C', '\x2', '\x2', + '\x172', '\x174', '\x5', 'R', '*', '\x2', '\x173', '\x172', '\x3', '\x2', + '\x2', '\x2', '\x173', '\x174', '\x3', '\x2', '\x2', '\x2', '\x174', '\x175', + '\x3', '\x2', '\x2', '\x2', '\x175', '\x193', '\a', '\x1D', '\x2', '\x2', + '\x176', '\x177', '\a', '\x37', '\x2', '\x2', '\x177', '\x179', '\a', + '\a', '\x2', '\x2', '\x178', '\x176', '\x3', '\x2', '\x2', '\x2', '\x178', + '\x179', '\x3', '\x2', '\x2', '\x2', '\x179', '\x17A', '\x3', '\x2', '\x2', + '\x2', '\x17A', '\x17B', '\a', '>', '\x2', '\x2', '\x17B', '\x17D', '\a', + '\x5', '\x2', '\x2', '\x17C', '\x17E', '\x5', 'P', ')', '\x2', '\x17D', + '\x17C', '\x3', '\x2', '\x2', '\x2', '\x17D', '\x17E', '\x3', '\x2', '\x2', + '\x2', '\x17E', '\x17F', '\x3', '\x2', '\x2', '\x2', '\x17F', '\x193', + '\a', '\x6', '\x2', '\x2', '\x180', '\x181', '\a', '\x5', '\x2', '\x2', + '\x181', '\x182', '\x5', '.', '\x18', '\x2', '\x182', '\x183', '\a', '\x6', + '\x2', '\x2', '\x183', '\x193', '\x3', '\x2', '\x2', '\x2', '\x184', '\x185', + '\a', '\x5', '\x2', '\x2', '\x185', '\x186', '\x5', '\x4', '\x3', '\x2', + '\x186', '\x187', '\a', '\x6', '\x2', '\x2', '\x187', '\x193', '\x3', + '\x2', '\x2', '\x2', '\x188', '\x189', '\a', '\'', '\x2', '\x2', '\x189', + '\x18A', '\a', '\x5', '\x2', '\x2', '\x18A', '\x18B', '\x5', '\x4', '\x3', + '\x2', '\x18B', '\x18C', '\a', '\x6', '\x2', '\x2', '\x18C', '\x193', + '\x3', '\x2', '\x2', '\x2', '\x18D', '\x18E', '\a', '\x1F', '\x2', '\x2', + '\x18E', '\x18F', '\a', '\x5', '\x2', '\x2', '\x18F', '\x190', '\x5', + '\x4', '\x3', '\x2', '\x190', '\x191', '\a', '\x6', '\x2', '\x2', '\x191', + '\x193', '\x3', '\x2', '\x2', '\x2', '\x192', '\x168', '\x3', '\x2', '\x2', + '\x2', '\x192', '\x16A', '\x3', '\x2', '\x2', '\x2', '\x192', '\x16B', + '\x3', '\x2', '\x2', '\x2', '\x192', '\x16C', '\x3', '\x2', '\x2', '\x2', + '\x192', '\x171', '\x3', '\x2', '\x2', '\x2', '\x192', '\x178', '\x3', + '\x2', '\x2', '\x2', '\x192', '\x180', '\x3', '\x2', '\x2', '\x2', '\x192', + '\x184', '\x3', '\x2', '\x2', '\x2', '\x192', '\x188', '\x3', '\x2', '\x2', + '\x2', '\x192', '\x18D', '\x3', '\x2', '\x2', '\x2', '\x193', '\x19E', + '\x3', '\x2', '\x2', '\x2', '\x194', '\x195', '\f', '\x6', '\x2', '\x2', + '\x195', '\x196', '\a', '\a', '\x2', '\x2', '\x196', '\x19D', '\a', '>', + '\x2', '\x2', '\x197', '\x198', '\f', '\x5', '\x2', '\x2', '\x198', '\x199', + '\a', '\b', '\x2', '\x2', '\x199', '\x19A', '\x5', '.', '\x18', '\x2', + '\x19A', '\x19B', '\a', '\t', '\x2', '\x2', '\x19B', '\x19D', '\x3', '\x2', + '\x2', '\x2', '\x19C', '\x194', '\x3', '\x2', '\x2', '\x2', '\x19C', '\x197', + '\x3', '\x2', '\x2', '\x2', '\x19D', '\x1A0', '\x3', '\x2', '\x2', '\x2', + '\x19E', '\x19C', '\x3', '\x2', '\x2', '\x2', '\x19E', '\x19F', '\x3', + '\x2', '\x2', '\x2', '\x19F', 'O', '\x3', '\x2', '\x2', '\x2', '\x1A0', + '\x19E', '\x3', '\x2', '\x2', '\x2', '\x1A1', '\x1A6', '\x5', '.', '\x18', + '\x2', '\x1A2', '\x1A3', '\a', '\x4', '\x2', '\x2', '\x1A3', '\x1A5', + '\x5', '.', '\x18', '\x2', '\x1A4', '\x1A2', '\x3', '\x2', '\x2', '\x2', + '\x1A5', '\x1A8', '\x3', '\x2', '\x2', '\x2', '\x1A6', '\x1A4', '\x3', + '\x2', '\x2', '\x2', '\x1A6', '\x1A7', '\x3', '\x2', '\x2', '\x2', '\x1A7', + 'Q', '\x3', '\x2', '\x2', '\x2', '\x1A8', '\x1A6', '\x3', '\x2', '\x2', + '\x2', '\x1A9', '\x1AE', '\x5', 'T', '+', '\x2', '\x1AA', '\x1AB', '\a', + '\x4', '\x2', '\x2', '\x1AB', '\x1AD', '\x5', 'T', '+', '\x2', '\x1AC', + '\x1AA', '\x3', '\x2', '\x2', '\x2', '\x1AD', '\x1B0', '\x3', '\x2', '\x2', + '\x2', '\x1AE', '\x1AC', '\x3', '\x2', '\x2', '\x2', '\x1AE', '\x1AF', + '\x3', '\x2', '\x2', '\x2', '\x1AF', 'S', '\x3', '\x2', '\x2', '\x2', + '\x1B0', '\x1AE', '\x3', '\x2', '\x2', '\x2', '\x1B1', '\x1B2', '\a', + '=', '\x2', '\x2', '\x1B2', '\x1B3', '\a', '\v', '\x2', '\x2', '\x1B3', + '\x1B4', '\x5', '.', '\x18', '\x2', '\x1B4', 'U', '\x3', '\x2', '\x2', + '\x2', '\x1B5', '\x1B6', '\t', '\t', '\x2', '\x2', '\x1B6', 'W', '\x3', + '\x2', '\x2', '\x2', '+', ']', '`', '\x63', '\x66', 'i', 'm', 'p', 'z', '\x86', '\x8C', '\x95', '\x9A', '\xA1', '\xA6', '\xAC', '\xBA', '\xBC', - '\xCF', '\xD4', '\xE5', '\xEC', '\xF7', '\xF9', '\xFF', '\x103', '\x10C', - '\x111', '\x13F', '\x141', '\x158', '\x162', '\x167', '\x16C', '\x171', - '\x186', '\x190', '\x192', '\x19A', '\x1A2', + '\xCF', '\xD4', '\xE5', '\xEC', '\xF7', '\xF9', '\x100', '\x108', '\x10A', + '\x10F', '\x118', '\x11D', '\x14B', '\x14D', '\x164', '\x16E', '\x173', + '\x178', '\x17D', '\x192', '\x19C', '\x19E', '\x1A6', '\x1AE', }; public static readonly ATN _ATN = From aa6e0d1aed91293b23c7f0d549a9b0dec8ad8257 Mon Sep 17 00:00:00 2001 From: Minh Le Date: Tue, 20 Apr 2021 15:19:31 -0700 Subject: [PATCH 08/15] changing public to private in IsqlListener --- Microsoft.Azure.Cosmos/src/Query/Core/Parser/IsqlListener.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/IsqlListener.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/IsqlListener.cs index 2d5f837940..96f0672fd7 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/IsqlListener.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/IsqlListener.cs @@ -29,7 +29,7 @@ /// [System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.7.2")] [System.CLSCompliant(false)] -public interface IsqlListener : IParseTreeListener { +internal interface IsqlListener : IParseTreeListener { /// /// Enter a parse tree produced by . /// From 31e5c6b4f119f7c6b12e2749fdb444ba9e958a74 Mon Sep 17 00:00:00 2001 From: Minh Le Date: Tue, 20 Apr 2021 15:24:14 -0700 Subject: [PATCH 09/15] clean up some build errors --- .../src/Query/Core/Parser/CstToAstVisitor.cs | 3 ++- Microsoft.Azure.Cosmos/src/Query/Core/Parser/IsqlListener.cs | 1 - Microsoft.Azure.Cosmos/src/Query/Core/Parser/IsqlVisitor.cs | 1 - .../src/Query/Core/Parser/sqlBaseListener.cs | 1 - Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlBaseVisitor.cs | 1 - Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlLexer.cs | 1 - Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlParser.cs | 1 - 7 files changed, 2 insertions(+), 7 deletions(-) diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs index dbb1caed60..e18829f075 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs @@ -606,7 +606,8 @@ public override SqlObject VisitLike_scalar_expression([NotNull] sqlParser.Like_s return SqlLikeScalarExpression.Create(expression, pattern, not, escapeSequence); } - public override SqlObject VisitEscape_expression([NotNull] sqlParser.Escape_expressionContext context) { + public override SqlObject VisitEscape_expression([NotNull] sqlParser.Escape_expressionContext context) + { Contract.Requires(context != null); return (SqlStringLiteral)this.Visit(context.STRING_LITERAL()); diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/IsqlListener.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/IsqlListener.cs index 96f0672fd7..ed0eb42e76 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/IsqlListener.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/IsqlListener.cs @@ -28,7 +28,6 @@ /// . /// [System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.7.2")] -[System.CLSCompliant(false)] internal interface IsqlListener : IParseTreeListener { /// /// Enter a parse tree produced by . diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/IsqlVisitor.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/IsqlVisitor.cs index d8e8741881..2e96892783 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/IsqlVisitor.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/IsqlVisitor.cs @@ -29,7 +29,6 @@ /// /// The return type of the visit operation. [System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.7.2")] -[System.CLSCompliant(false)] internal interface IsqlVisitor : IParseTreeVisitor { /// /// Visit a parse tree produced by . diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlBaseListener.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlBaseListener.cs index fd2cc21996..5a52445735 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlBaseListener.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlBaseListener.cs @@ -32,7 +32,6 @@ /// of the available methods. /// [System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.7.2")] -[System.CLSCompliant(false)] internal partial class sqlBaseListener : IsqlListener { /// /// Enter a parse tree produced by . diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlBaseVisitor.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlBaseVisitor.cs index 63a97d6174..287851e115 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlBaseVisitor.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlBaseVisitor.cs @@ -31,7 +31,6 @@ /// /// The return type of the visit operation. [System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.7.2")] -[System.CLSCompliant(false)] internal partial class sqlBaseVisitor : AbstractParseTreeVisitor, IsqlVisitor { /// /// Visit a parse tree produced by . diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlLexer.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlLexer.cs index 5e22c97b2c..c8273c4ce1 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlLexer.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlLexer.cs @@ -28,7 +28,6 @@ using DFA = Antlr4.Runtime.Dfa.DFA; [System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.7.2")] -[System.CLSCompliant(false)] internal partial class sqlLexer : Lexer { protected static DFA[] decisionToDFA; protected static PredictionContextCache sharedContextCache = new PredictionContextCache(); diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlParser.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlParser.cs index aed0644e7e..5e8c0f737a 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlParser.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlParser.cs @@ -31,7 +31,6 @@ using DFA = Antlr4.Runtime.Dfa.DFA; [System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.7.2")] -[System.CLSCompliant(false)] internal partial class sqlParser : Parser { protected static DFA[] decisionToDFA; protected static PredictionContextCache sharedContextCache = new PredictionContextCache(); From 0a9102dccf9eb5727b30af4638d13926b00e4238 Mon Sep 17 00:00:00 2001 From: Minh Le Date: Tue, 20 Apr 2021 17:09:09 -0700 Subject: [PATCH 10/15] add missing functions --- .../src/Query/Core/Parser/CstToAstVisitor.cs | 4 +- ...entifierSqlParserBaselineTests.Unicode.xml | 110 ++++++++++++++++++ .../Microsoft.Azure.Cosmos.Tests.csproj | 3 + .../AggregateProjectionDector.cs | 5 + .../AggregateProjectionTransformer.cs | 5 + .../Query/OfflineEngine/SqlInterpreter.cs | 5 + .../IdentifierSqlParserBaselineTests.cs | 44 +++++++ 7 files changed, 175 insertions(+), 1 deletion(-) create mode 100644 Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/BaselineTest/TestBaseline/IdentifierSqlParserBaselineTests.Unicode.xml create mode 100644 Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/Parser/IdentifierSqlParserBaselineTests.cs diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs index e18829f075..26d0a64c45 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs @@ -601,7 +601,9 @@ public override SqlObject VisitLike_scalar_expression([NotNull] sqlParser.Like_s SqlScalarExpression expression = (SqlScalarExpression)this.Visit(context.binary_scalar_expression()[0]); SqlScalarExpression pattern = (SqlScalarExpression)this.Visit(context.binary_scalar_expression()[1]); bool not = context.K_NOT() != null; - SqlStringLiteral escapeSequence = (context.escape_expression() != null) ? (SqlStringLiteral)this.Visit(context.escape_expression()) : null; + SqlStringLiteral escapeSequence = (context.escape_expression() != null) + ? (SqlStringLiteral)this.Visit(context.escape_expression()) + : null; return SqlLikeScalarExpression.Create(expression, pattern, not, escapeSequence); } diff --git a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/BaselineTest/TestBaseline/IdentifierSqlParserBaselineTests.Unicode.xml b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/BaselineTest/TestBaseline/IdentifierSqlParserBaselineTests.Unicode.xml new file mode 100644 index 0000000000..5a50935716 --- /dev/null +++ b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/BaselineTest/TestBaseline/IdentifierSqlParserBaselineTests.Unicode.xml @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Microsoft.Azure.Cosmos.Tests.csproj b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Microsoft.Azure.Cosmos.Tests.csproj index 81009ff171..2f66b51362 100644 --- a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Microsoft.Azure.Cosmos.Tests.csproj +++ b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Microsoft.Azure.Cosmos.Tests.csproj @@ -92,6 +92,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest diff --git a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/OfflineEngine/AggregateProjectionDector.cs b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/OfflineEngine/AggregateProjectionDector.cs index c286817fa5..f0ee3beb3d 100644 --- a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/OfflineEngine/AggregateProjectionDector.cs +++ b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/OfflineEngine/AggregateProjectionDector.cs @@ -123,6 +123,11 @@ public override bool Visit(SqlInScalarExpression sqlInScalarExpression) return hasAggregates; } + public override bool Visit(SqlLikeScalarExpression sqlLikeScalarExpression) + { + return false; + } + public override bool Visit(SqlLiteralScalarExpression sqlLiteralScalarExpression) { return false; diff --git a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/OfflineEngine/AggregateProjectionTransformer.cs b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/OfflineEngine/AggregateProjectionTransformer.cs index cc443b5a39..49c5438cae 100644 --- a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/OfflineEngine/AggregateProjectionTransformer.cs +++ b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/OfflineEngine/AggregateProjectionTransformer.cs @@ -287,6 +287,11 @@ public override SqlScalarExpression Visit(SqlInScalarExpression sqlInScalarExpre items); } + public override SqlScalarExpression Visit(SqlLikeScalarExpression sqlLikeScalarExpression) + { + return sqlLikeScalarExpression; + } + public override SqlScalarExpression Visit(SqlLiteralScalarExpression sqlLiteralScalarExpression) { return sqlLiteralScalarExpression; diff --git a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/OfflineEngine/SqlInterpreter.cs b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/OfflineEngine/SqlInterpreter.cs index 652a705926..5d46cb1418 100644 --- a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/OfflineEngine/SqlInterpreter.cs +++ b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/OfflineEngine/SqlInterpreter.cs @@ -795,6 +795,11 @@ public override bool Visit(SqlInScalarExpression scalarExpression) return true; } + public override bool Visit(SqlLikeScalarExpression scalarExpression) + { + return false; + } + public override bool Visit(SqlLiteralScalarExpression scalarExpression) { // Literals don't need to be checked, since they won't reference a non group by column. diff --git a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/Parser/IdentifierSqlParserBaselineTests.cs b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/Parser/IdentifierSqlParserBaselineTests.cs new file mode 100644 index 0000000000..84fddec225 --- /dev/null +++ b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/Parser/IdentifierSqlParserBaselineTests.cs @@ -0,0 +1,44 @@ +//------------------------------------------------------------ +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------ + +namespace Microsoft.Azure.Cosmos.Tests.Query.Parser +{ + using System.Collections.Generic; + using System.Linq; + using Microsoft.VisualStudio.TestTools.UnitTesting; + + [TestClass] + public sealed class IdentifierSqlParserBaselineTests : SqlParserBaselineTests + { + [TestMethod] + public void Unicode() + { + List inputs = new List() + { + // Positive + CreateInput(description: "Basic", identifier: "a"), + CreateInput(description: "Basic Capitalized", identifier: "A"), + CreateInput(description: "Underscore In Front", identifier: "_a"), + CreateInput(description: "Number then Letter", identifier: "_12a"), + CreateInput(description: "Letter then Number", identifier: "ab12"), + CreateInput(description: "Number then Letter then Number", identifier: "_12ab34"), + CreateInput(description: "Letter then Number then Letter", identifier: "ab12cd"), + + // Negative + CreateInput(description: "Number In Front", identifier: "12a"), + CreateInput(description: "Special Character", identifier: "ab-cd"), + CreateInput(description: "Special Character 2", identifier: "ab:cd"), + CreateInput(description: "Special Character 3", identifier: "ab{cd}"), + CreateInput(description: "Special Character 4", identifier: "ab(cd)"), + }; + + this.ExecuteTestSuite(inputs); + } + + public static SqlParserBaselineTestInput CreateInput(string description, string identifier) + { + return new SqlParserBaselineTestInput(description, $"SELECT c.{identifier} FROM c"); + } + } +} From 562ea7da27fe0e9a99c5e29cd2d3af1f783755c3 Mon Sep 17 00:00:00 2001 From: Minh Le Date: Tue, 20 Apr 2021 17:25:09 -0700 Subject: [PATCH 11/15] add placeholder for scalar expression evaluator --- .../ScalarExpressionEvaluator.cs | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/OfflineEngine/ScalarExpressionEvaluator.cs b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/OfflineEngine/ScalarExpressionEvaluator.cs index fe3c87cec0..d3c6af8a21 100644 --- a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/OfflineEngine/ScalarExpressionEvaluator.cs +++ b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/OfflineEngine/ScalarExpressionEvaluator.cs @@ -258,6 +258,45 @@ public override CosmosElement Visit(SqlInScalarExpression scalarExpression, Cosm return CosmosBoolean.Create(contains); } + public override CosmosElement Visit(SqlLikeScalarExpression scalarExpression, CosmosElement document) + { + return CosmosBoolean.Create(false); + //CosmosElement expressionToMatch = scalarExpression.Expression.Accept(this, document); + //CosmosElement patternToMatch = scalarExpression.Pattern.Accept(this, document); + //string escapeSequenceString = scalarExpression.EscapeSequence?.Value; + + //if (!((expressionToMatch is CosmosString expressionAsString) && (patternToMatch is CosmosString patternAsString))) + //{ + // return Undefined; + //} + + //if ((escapeSequenceString != null) && (escapeSequenceString.Length != 1)) + //{ + // return Undefined; + //} + + //char? escapeSequence = escapeSequenceString == null ? null : (char?)escapeSequenceString[0]; + //if (!RegexParser.TryParse(patternAsString.Value, escapeSequence, out LikePattern likeRegexPattern)) + //{ + // return CosmosBoolean.Create(scalarExpression.Not); + //} + + //if (likeRegexPattern.HasOutOfOrderRange) + //{ + // return Undefined; + //} + //else + //{ + // bool match = RegexEngine.IsMatch(expressionAsString.Value, likeRegexPattern); + // if (scalarExpression.Not) + // { + // match = !match; + // } + + // return CosmosBoolean.Create(match); + //} + } + public override CosmosElement Visit(SqlLiteralScalarExpression scalarExpression, CosmosElement document) { SqlLiteral sqlLiteral = scalarExpression.Literal; From c3a4d039b43f06b83eafcf9ebfe0b78a9cdf719a Mon Sep 17 00:00:00 2001 From: Minh Le Date: Tue, 20 Apr 2021 17:40:17 -0700 Subject: [PATCH 12/15] Add parser test for like --- ...LikeClauseSqlParserBaselineTests.Tests.xml | 56 +++++++++++++++++++ .../Microsoft.Azure.Cosmos.Tests.csproj | 5 +- .../LikeClauseSqlParserBaselineTests.cs | 37 ++++++++++++ 3 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/BaselineTest/TestBaseline/LikeClauseSqlParserBaselineTests.Tests.xml create mode 100644 Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/Parser/LikeClauseSqlParserBaselineTests.cs diff --git a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/BaselineTest/TestBaseline/LikeClauseSqlParserBaselineTests.Tests.xml b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/BaselineTest/TestBaseline/LikeClauseSqlParserBaselineTests.Tests.xml new file mode 100644 index 0000000000..3cbac2b40d --- /dev/null +++ b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/BaselineTest/TestBaseline/LikeClauseSqlParserBaselineTests.Tests.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Microsoft.Azure.Cosmos.Tests.csproj b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Microsoft.Azure.Cosmos.Tests.csproj index 2f66b51362..ffedab10e9 100644 --- a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Microsoft.Azure.Cosmos.Tests.csproj +++ b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Microsoft.Azure.Cosmos.Tests.csproj @@ -92,7 +92,10 @@ PreserveNewest - + + PreserveNewest + + PreserveNewest diff --git a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/Parser/LikeClauseSqlParserBaselineTests.cs b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/Parser/LikeClauseSqlParserBaselineTests.cs new file mode 100644 index 0000000000..89be78d3dd --- /dev/null +++ b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/Parser/LikeClauseSqlParserBaselineTests.cs @@ -0,0 +1,37 @@ +//------------------------------------------------------------ +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------ + +namespace Microsoft.Azure.Cosmos.Tests.Query.Parser +{ + using System.Collections.Generic; + using Microsoft.VisualStudio.TestTools.UnitTesting; + + [TestClass] + public sealed class LikeClauseSqlParserBaselineTests : SqlParserBaselineTests + { + [TestMethod] + public void Tests() + { + List inputs = new List() + { + // Positive + CreateInput(description: "Basic", likeClause: "LIKE '$a'"), + CreateInput(description: "With ESCAPE", likeClause: "LIKE 'a!%' ESCAPE '!'"), + CreateInput(description: "With NOT", likeClause: "NOT LIKE 'a!%' ESCAPE '!'"), + + // Negative + CreateInput(description: "Missing LIKE Keyword 1", likeClause: "ESCAPE '1'"), + CreateInput(description: "Missing LIKE Keyword 2", likeClause: "NOT 'a'"), + CreateInput(description: "Missing ESCAPE Keyword", likeClause: "LIKE 'a!%' '!'"), + }; + + this.ExecuteTestSuite(inputs); + } + + public static SqlParserBaselineTestInput CreateInput(string description, string likeClause) + { + return new SqlParserBaselineTestInput(description, $"SELECT c.age {likeClause}"); + } + } +} From bfb0a781d982d77aa69f46b93997c34b0e75f695 Mon Sep 17 00:00:00 2001 From: Minh Le Date: Wed, 21 Apr 2021 00:23:47 -0700 Subject: [PATCH 13/15] address coder review 2 --- .../Visitors/SqlObjectObfuscator.cs | 2 +- ...LikeClauseSqlParserBaselineTests.Tests.xml | 13 ++++++- .../ScalarExpressionEvaluator.cs | 37 +------------------ .../LikeClauseSqlParserBaselineTests.cs | 3 +- 4 files changed, 16 insertions(+), 39 deletions(-) diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectObfuscator.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectObfuscator.cs index 89ee784702..7fa52c4437 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectObfuscator.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectObfuscator.cs @@ -459,7 +459,7 @@ private string GetObfuscatedString(string value, string prefix, ref int sequence { if (!this.obfuscatedStrings.TryGetValue(value, out obfuscatedString)) { - int sequenceNumber = ++sequence; // is this necessary? + int sequenceNumber = ++sequence; obfuscatedString = value.Length < 10 ? $"{prefix}{sequence}" : $"{prefix}{sequence}__{value.Length}"; this.obfuscatedStrings.Add(value, obfuscatedString); } diff --git a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/BaselineTest/TestBaseline/LikeClauseSqlParserBaselineTests.Tests.xml b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/BaselineTest/TestBaseline/LikeClauseSqlParserBaselineTests.Tests.xml index 3cbac2b40d..dda3e57444 100644 --- a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/BaselineTest/TestBaseline/LikeClauseSqlParserBaselineTests.Tests.xml +++ b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/BaselineTest/TestBaseline/LikeClauseSqlParserBaselineTests.Tests.xml @@ -47,10 +47,19 @@ - + - + + + + + + + + + + \ No newline at end of file diff --git a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/OfflineEngine/ScalarExpressionEvaluator.cs b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/OfflineEngine/ScalarExpressionEvaluator.cs index d3c6af8a21..4f10abf24e 100644 --- a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/OfflineEngine/ScalarExpressionEvaluator.cs +++ b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/OfflineEngine/ScalarExpressionEvaluator.cs @@ -260,41 +260,8 @@ public override CosmosElement Visit(SqlInScalarExpression scalarExpression, Cosm public override CosmosElement Visit(SqlLikeScalarExpression scalarExpression, CosmosElement document) { - return CosmosBoolean.Create(false); - //CosmosElement expressionToMatch = scalarExpression.Expression.Accept(this, document); - //CosmosElement patternToMatch = scalarExpression.Pattern.Accept(this, document); - //string escapeSequenceString = scalarExpression.EscapeSequence?.Value; - - //if (!((expressionToMatch is CosmosString expressionAsString) && (patternToMatch is CosmosString patternAsString))) - //{ - // return Undefined; - //} - - //if ((escapeSequenceString != null) && (escapeSequenceString.Length != 1)) - //{ - // return Undefined; - //} - - //char? escapeSequence = escapeSequenceString == null ? null : (char?)escapeSequenceString[0]; - //if (!RegexParser.TryParse(patternAsString.Value, escapeSequence, out LikePattern likeRegexPattern)) - //{ - // return CosmosBoolean.Create(scalarExpression.Not); - //} - - //if (likeRegexPattern.HasOutOfOrderRange) - //{ - // return Undefined; - //} - //else - //{ - // bool match = RegexEngine.IsMatch(expressionAsString.Value, likeRegexPattern); - // if (scalarExpression.Not) - // { - // match = !match; - // } - - // return CosmosBoolean.Create(match); - //} + // Consider the necessity of having v3 offline engine. Should we remove this altogether? + throw new NotImplementedException(); } public override CosmosElement Visit(SqlLiteralScalarExpression scalarExpression, CosmosElement document) diff --git a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/Parser/LikeClauseSqlParserBaselineTests.cs b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/Parser/LikeClauseSqlParserBaselineTests.cs index 89be78d3dd..e675115ddb 100644 --- a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/Parser/LikeClauseSqlParserBaselineTests.cs +++ b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/Parser/LikeClauseSqlParserBaselineTests.cs @@ -23,7 +23,8 @@ public void Tests() // Negative CreateInput(description: "Missing LIKE Keyword 1", likeClause: "ESCAPE '1'"), CreateInput(description: "Missing LIKE Keyword 2", likeClause: "NOT 'a'"), - CreateInput(description: "Missing ESCAPE Keyword", likeClause: "LIKE 'a!%' '!'"), + CreateInput(description: "Missing ESCAPE Keyword", likeClause: "LIKE \"a!%\" \"!\""), + CreateInput(description: "Double LIKE", likeClause: "(LIKE 'a') LIKE 'b'"), }; this.ExecuteTestSuite(inputs); From 90bce890da2bc76f4d943349907e5a9dc7a5f596 Mon Sep 17 00:00:00 2001 From: Minh Le Date: Wed, 21 Apr 2021 01:08:04 -0700 Subject: [PATCH 14/15] remove the bug rules --- .../src/Query/Core/Parser/sql.g4 | 2 - .../src/Query/Core/Parser/sqlParser.cs | 982 ++++++++---------- 2 files changed, 453 insertions(+), 531 deletions(-) diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sql.g4 b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sql.g4 index ae7b5509d5..2cad7111a7 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sql.g4 +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sql.g4 @@ -89,8 +89,6 @@ logical_scalar_expression : binary_scalar_expression | in_scalar_expression | like_scalar_expression - | logical_scalar_expression K_AND logical_scalar_expression - | logical_scalar_expression K_OR logical_scalar_expression ; in_scalar_expression diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlParser.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlParser.cs index 5e8c0f737a..7e92c2c20f 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlParser.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlParser.cs @@ -1792,7 +1792,7 @@ private Scalar_expressionContext scalar_expression(int _p) { Context = _localctx; _prevctx = _localctx; - State = 224; logical_scalar_expression(0); + State = 224; logical_scalar_expression(); } break; case 2: @@ -1882,14 +1882,6 @@ public In_scalar_expressionContext in_scalar_expression() { public Like_scalar_expressionContext like_scalar_expression() { return GetRuleContext(0); } - public Logical_scalar_expressionContext[] logical_scalar_expression() { - return GetRuleContexts(); - } - public Logical_scalar_expressionContext logical_scalar_expression(int i) { - return GetRuleContext(i); - } - public ITerminalNode K_AND() { return GetToken(sqlParser.K_AND, 0); } - public ITerminalNode K_OR() { return GetToken(sqlParser.K_OR, 0); } public Logical_scalar_expressionContext(ParserRuleContext parent, int invokingState) : base(parent, invokingState) { @@ -1912,80 +1904,31 @@ public override TResult Accept(IParseTreeVisitor visitor) { [RuleVersion(0)] public Logical_scalar_expressionContext logical_scalar_expression() { - return logical_scalar_expression(0); - } - - private Logical_scalar_expressionContext logical_scalar_expression(int _p) { - ParserRuleContext _parentctx = Context; - int _parentState = State; - Logical_scalar_expressionContext _localctx = new Logical_scalar_expressionContext(Context, _parentState); - Logical_scalar_expressionContext _prevctx = _localctx; - int _startState = 46; - EnterRecursionRule(_localctx, 46, RULE_logical_scalar_expression, _p); + Logical_scalar_expressionContext _localctx = new Logical_scalar_expressionContext(Context, State); + EnterRule(_localctx, 46, RULE_logical_scalar_expression); try { - int _alt; - EnterOuterAlt(_localctx, 1); - { - State = 254; + State = 253; ErrorHandler.Sync(this); switch ( Interpreter.AdaptivePredict(TokenStream,23,Context) ) { case 1: + EnterOuterAlt(_localctx, 1); { - State = 251; binary_scalar_expression(0); + State = 250; binary_scalar_expression(0); } break; case 2: + EnterOuterAlt(_localctx, 2); { - State = 252; in_scalar_expression(); + State = 251; in_scalar_expression(); } break; case 3: + EnterOuterAlt(_localctx, 3); { - State = 253; like_scalar_expression(); + State = 252; like_scalar_expression(); } break; } - Context.Stop = TokenStream.LT(-1); - State = 264; - ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,25,Context); - while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - if ( ParseListeners!=null ) - TriggerExitRuleEvent(); - _prevctx = _localctx; - { - State = 262; - ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,24,Context) ) { - case 1: - { - _localctx = new Logical_scalar_expressionContext(_parentctx, _parentState); - PushNewRecursionContext(_localctx, _startState, RULE_logical_scalar_expression); - State = 256; - if (!(Precpred(Context, 2))) throw new FailedPredicateException(this, "Precpred(Context, 2)"); - State = 257; Match(K_AND); - State = 258; logical_scalar_expression(3); - } - break; - case 2: - { - _localctx = new Logical_scalar_expressionContext(_parentctx, _parentState); - PushNewRecursionContext(_localctx, _startState, RULE_logical_scalar_expression); - State = 259; - if (!(Precpred(Context, 1))) throw new FailedPredicateException(this, "Precpred(Context, 1)"); - State = 260; Match(K_OR); - State = 261; logical_scalar_expression(2); - } - break; - } - } - } - State = 266; - ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,25,Context); - } - } } catch (RecognitionException re) { _localctx.exception = re; @@ -1993,7 +1936,7 @@ private Logical_scalar_expressionContext logical_scalar_expression(int _p) { ErrorHandler.Recover(this, re); } finally { - UnrollRecursionContexts(_parentctx); + ExitRule(); } return _localctx; } @@ -2035,20 +1978,20 @@ public In_scalar_expressionContext in_scalar_expression() { try { EnterOuterAlt(_localctx, 1); { - State = 267; binary_scalar_expression(0); - State = 269; + State = 255; binary_scalar_expression(0); + State = 257; ErrorHandler.Sync(this); _la = TokenStream.LA(1); if (_la==K_NOT) { { - State = 268; Match(K_NOT); + State = 256; Match(K_NOT); } } - State = 271; Match(K_IN); - State = 272; Match(T__2); - State = 273; scalar_expression_list(); - State = 274; Match(T__3); + State = 259; Match(K_IN); + State = 260; Match(T__2); + State = 261; scalar_expression_list(); + State = 262; Match(T__3); } } catch (RecognitionException re) { @@ -2102,24 +2045,24 @@ public Like_scalar_expressionContext like_scalar_expression() { try { EnterOuterAlt(_localctx, 1); { - State = 276; binary_scalar_expression(0); - State = 278; + State = 264; binary_scalar_expression(0); + State = 266; ErrorHandler.Sync(this); _la = TokenStream.LA(1); if (_la==K_NOT) { { - State = 277; Match(K_NOT); + State = 265; Match(K_NOT); } } - State = 280; Match(K_LIKE); - State = 281; binary_scalar_expression(0); - State = 283; + State = 268; Match(K_LIKE); + State = 269; binary_scalar_expression(0); + State = 271; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,28,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,26,Context) ) { case 1: { - State = 282; escape_expression(); + State = 270; escape_expression(); } break; } @@ -2166,8 +2109,8 @@ public Escape_expressionContext escape_expression() { try { EnterOuterAlt(_localctx, 1); { - State = 285; Match(K_ESCAPE); - State = 286; Match(STRING_LITERAL); + State = 273; Match(K_ESCAPE); + State = 274; Match(STRING_LITERAL); } } catch (RecognitionException re) { @@ -2254,127 +2197,127 @@ private Binary_scalar_expressionContext binary_scalar_expression(int _p) { EnterOuterAlt(_localctx, 1); { { - State = 289; unary_scalar_expression(); + State = 277; unary_scalar_expression(); } Context.Stop = TokenStream.LT(-1); - State = 331; + State = 319; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,30,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,28,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { if ( ParseListeners!=null ) TriggerExitRuleEvent(); _prevctx = _localctx; { - State = 329; + State = 317; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,29,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,27,Context) ) { case 1: { _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 291; + State = 279; if (!(Precpred(Context, 10))) throw new FailedPredicateException(this, "Precpred(Context, 10)"); - State = 292; multiplicative_operator(); - State = 293; binary_scalar_expression(11); + State = 280; multiplicative_operator(); + State = 281; binary_scalar_expression(11); } break; case 2: { _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 295; + State = 283; if (!(Precpred(Context, 9))) throw new FailedPredicateException(this, "Precpred(Context, 9)"); - State = 296; additive_operator(); - State = 297; binary_scalar_expression(10); + State = 284; additive_operator(); + State = 285; binary_scalar_expression(10); } break; case 3: { _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 299; + State = 287; if (!(Precpred(Context, 8))) throw new FailedPredicateException(this, "Precpred(Context, 8)"); - State = 300; relational_operator(); - State = 301; binary_scalar_expression(9); + State = 288; relational_operator(); + State = 289; binary_scalar_expression(9); } break; case 4: { _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 303; + State = 291; if (!(Precpred(Context, 7))) throw new FailedPredicateException(this, "Precpred(Context, 7)"); - State = 304; equality_operator(); - State = 305; binary_scalar_expression(8); + State = 292; equality_operator(); + State = 293; binary_scalar_expression(8); } break; case 5: { _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 307; + State = 295; if (!(Precpred(Context, 6))) throw new FailedPredicateException(this, "Precpred(Context, 6)"); - State = 308; bitwise_and_operator(); - State = 309; binary_scalar_expression(7); + State = 296; bitwise_and_operator(); + State = 297; binary_scalar_expression(7); } break; case 6: { _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 311; + State = 299; if (!(Precpred(Context, 5))) throw new FailedPredicateException(this, "Precpred(Context, 5)"); - State = 312; bitwise_exclusive_or_operator(); - State = 313; binary_scalar_expression(6); + State = 300; bitwise_exclusive_or_operator(); + State = 301; binary_scalar_expression(6); } break; case 7: { _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 315; + State = 303; if (!(Precpred(Context, 4))) throw new FailedPredicateException(this, "Precpred(Context, 4)"); - State = 316; bitwise_inclusive_or_operator(); - State = 317; binary_scalar_expression(5); + State = 304; bitwise_inclusive_or_operator(); + State = 305; binary_scalar_expression(5); } break; case 8: { _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 319; + State = 307; if (!(Precpred(Context, 3))) throw new FailedPredicateException(this, "Precpred(Context, 3)"); - State = 320; Match(K_AND); - State = 321; binary_scalar_expression(4); + State = 308; Match(K_AND); + State = 309; binary_scalar_expression(4); } break; case 9: { _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 322; + State = 310; if (!(Precpred(Context, 2))) throw new FailedPredicateException(this, "Precpred(Context, 2)"); - State = 323; Match(K_OR); - State = 324; binary_scalar_expression(3); + State = 311; Match(K_OR); + State = 312; binary_scalar_expression(3); } break; case 10: { _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 325; + State = 313; if (!(Precpred(Context, 1))) throw new FailedPredicateException(this, "Precpred(Context, 1)"); - State = 326; string_concat_operator(); - State = 327; binary_scalar_expression(2); + State = 314; string_concat_operator(); + State = 315; binary_scalar_expression(2); } break; } } } - State = 333; + State = 321; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,30,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,28,Context); } } } @@ -2418,7 +2361,7 @@ public Multiplicative_operatorContext multiplicative_operator() { try { EnterOuterAlt(_localctx, 1); { - State = 334; + State = 322; _la = TokenStream.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << T__10) | (1L << T__11))) != 0)) ) { ErrorHandler.RecoverInline(this); @@ -2469,7 +2412,7 @@ public Additive_operatorContext additive_operator() { try { EnterOuterAlt(_localctx, 1); { - State = 336; + State = 324; _la = TokenStream.LA(1); if ( !(_la==T__12 || _la==T__13) ) { ErrorHandler.RecoverInline(this); @@ -2520,7 +2463,7 @@ public Relational_operatorContext relational_operator() { try { EnterOuterAlt(_localctx, 1); { - State = 338; + State = 326; _la = TokenStream.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__14) | (1L << T__15) | (1L << T__16) | (1L << T__17))) != 0)) ) { ErrorHandler.RecoverInline(this); @@ -2571,7 +2514,7 @@ public Equality_operatorContext equality_operator() { try { EnterOuterAlt(_localctx, 1); { - State = 340; + State = 328; _la = TokenStream.LA(1); if ( !(_la==T__18 || _la==T__19) ) { ErrorHandler.RecoverInline(this); @@ -2621,7 +2564,7 @@ public Bitwise_and_operatorContext bitwise_and_operator() { try { EnterOuterAlt(_localctx, 1); { - State = 342; Match(T__20); + State = 330; Match(T__20); } } catch (RecognitionException re) { @@ -2663,7 +2606,7 @@ public Bitwise_exclusive_or_operatorContext bitwise_exclusive_or_operator() { try { EnterOuterAlt(_localctx, 1); { - State = 344; Match(T__21); + State = 332; Match(T__21); } } catch (RecognitionException re) { @@ -2705,7 +2648,7 @@ public Bitwise_inclusive_or_operatorContext bitwise_inclusive_or_operator() { try { EnterOuterAlt(_localctx, 1); { - State = 346; Match(T__22); + State = 334; Match(T__22); } } catch (RecognitionException re) { @@ -2747,7 +2690,7 @@ public String_concat_operatorContext string_concat_operator() { try { EnterOuterAlt(_localctx, 1); { - State = 348; Match(T__23); + State = 336; Match(T__23); } } catch (RecognitionException re) { @@ -2796,7 +2739,7 @@ public Unary_scalar_expressionContext unary_scalar_expression() { Unary_scalar_expressionContext _localctx = new Unary_scalar_expressionContext(Context, State); EnterRule(_localctx, 72, RULE_unary_scalar_expression); try { - State = 354; + State = 342; ErrorHandler.Sync(this); switch (TokenStream.LA(1)) { case T__2: @@ -2815,7 +2758,7 @@ public Unary_scalar_expressionContext unary_scalar_expression() { case PARAMETER: EnterOuterAlt(_localctx, 1); { - State = 350; primary_expression(0); + State = 338; primary_expression(0); } break; case T__12: @@ -2824,8 +2767,8 @@ public Unary_scalar_expressionContext unary_scalar_expression() { case K_NOT: EnterOuterAlt(_localctx, 2); { - State = 351; unary_operator(); - State = 352; unary_scalar_expression(); + State = 339; unary_operator(); + State = 340; unary_scalar_expression(); } break; default: @@ -2873,7 +2816,7 @@ public Unary_operatorContext unary_operator() { try { EnterOuterAlt(_localctx, 1); { - State = 356; + State = 344; _la = TokenStream.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__12) | (1L << T__13) | (1L << T__24) | (1L << K_NOT))) != 0)) ) { ErrorHandler.RecoverInline(this); @@ -3157,16 +3100,16 @@ private Primary_expressionContext primary_expression(int _p) { int _alt; EnterOuterAlt(_localctx, 1); { - State = 400; + State = 388; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,36,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,34,Context) ) { case 1: { _localctx = new PropertyRefScalarExpressionBaseContext(_localctx); Context = _localctx; _prevctx = _localctx; - State = 359; Match(IDENTIFIER); + State = 347; Match(IDENTIFIER); } break; case 2: @@ -3174,7 +3117,7 @@ private Primary_expressionContext primary_expression(int _p) { _localctx = new ParameterRefScalarExpressionContext(_localctx); Context = _localctx; _prevctx = _localctx; - State = 360; Match(PARAMETER); + State = 348; Match(PARAMETER); } break; case 3: @@ -3182,7 +3125,7 @@ private Primary_expressionContext primary_expression(int _p) { _localctx = new LiteralScalarExpressionContext(_localctx); Context = _localctx; _prevctx = _localctx; - State = 361; literal(); + State = 349; literal(); } break; case 4: @@ -3190,17 +3133,17 @@ private Primary_expressionContext primary_expression(int _p) { _localctx = new ArrayCreateScalarExpressionContext(_localctx); Context = _localctx; _prevctx = _localctx; - State = 362; Match(T__5); - State = 364; + State = 350; Match(T__5); + State = 352; ErrorHandler.Sync(this); _la = TokenStream.LA(1); if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__5) | (1L << T__12) | (1L << T__13) | (1L << T__24) | (1L << T__25) | (1L << K_ARRAY) | (1L << K_EXISTS) | (1L << K_FALSE) | (1L << K_NOT) | (1L << K_NULL) | (1L << K_TRUE) | (1L << K_UDF) | (1L << K_UNDEFINED) | (1L << NUMERIC_LITERAL) | (1L << STRING_LITERAL) | (1L << IDENTIFIER) | (1L << PARAMETER))) != 0)) { { - State = 363; scalar_expression_list(); + State = 351; scalar_expression_list(); } } - State = 366; Match(T__6); + State = 354; Match(T__6); } break; case 5: @@ -3208,17 +3151,17 @@ private Primary_expressionContext primary_expression(int _p) { _localctx = new ObjectCreateScalarExpressionContext(_localctx); Context = _localctx; _prevctx = _localctx; - State = 367; Match(T__25); - State = 369; + State = 355; Match(T__25); + State = 357; ErrorHandler.Sync(this); _la = TokenStream.LA(1); if (_la==STRING_LITERAL) { { - State = 368; object_property_list(); + State = 356; object_property_list(); } } - State = 371; Match(T__26); + State = 359; Match(T__26); } break; case 6: @@ -3226,28 +3169,28 @@ private Primary_expressionContext primary_expression(int _p) { _localctx = new FunctionCallScalarExpressionContext(_localctx); Context = _localctx; _prevctx = _localctx; - State = 374; + State = 362; ErrorHandler.Sync(this); _la = TokenStream.LA(1); if (_la==K_UDF) { { - State = 372; Match(K_UDF); - State = 373; Match(T__4); + State = 360; Match(K_UDF); + State = 361; Match(T__4); } } - State = 376; Match(IDENTIFIER); - State = 377; Match(T__2); - State = 379; + State = 364; Match(IDENTIFIER); + State = 365; Match(T__2); + State = 367; ErrorHandler.Sync(this); _la = TokenStream.LA(1); if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__5) | (1L << T__12) | (1L << T__13) | (1L << T__24) | (1L << T__25) | (1L << K_ARRAY) | (1L << K_EXISTS) | (1L << K_FALSE) | (1L << K_NOT) | (1L << K_NULL) | (1L << K_TRUE) | (1L << K_UDF) | (1L << K_UNDEFINED) | (1L << NUMERIC_LITERAL) | (1L << STRING_LITERAL) | (1L << IDENTIFIER) | (1L << PARAMETER))) != 0)) { { - State = 378; scalar_expression_list(); + State = 366; scalar_expression_list(); } } - State = 381; Match(T__3); + State = 369; Match(T__3); } break; case 7: @@ -3255,9 +3198,9 @@ private Primary_expressionContext primary_expression(int _p) { _localctx = new ParenthesizedScalarExperessionContext(_localctx); Context = _localctx; _prevctx = _localctx; - State = 382; Match(T__2); - State = 383; scalar_expression(0); - State = 384; Match(T__3); + State = 370; Match(T__2); + State = 371; scalar_expression(0); + State = 372; Match(T__3); } break; case 8: @@ -3265,9 +3208,9 @@ private Primary_expressionContext primary_expression(int _p) { _localctx = new SubqueryScalarExpressionContext(_localctx); Context = _localctx; _prevctx = _localctx; - State = 386; Match(T__2); - State = 387; sql_query(); - State = 388; Match(T__3); + State = 374; Match(T__2); + State = 375; sql_query(); + State = 376; Match(T__3); } break; case 9: @@ -3275,10 +3218,10 @@ private Primary_expressionContext primary_expression(int _p) { _localctx = new ExistsScalarExpressionContext(_localctx); Context = _localctx; _prevctx = _localctx; - State = 390; Match(K_EXISTS); - State = 391; Match(T__2); - State = 392; sql_query(); - State = 393; Match(T__3); + State = 378; Match(K_EXISTS); + State = 379; Match(T__2); + State = 380; sql_query(); + State = 381; Match(T__3); } break; case 10: @@ -3286,53 +3229,53 @@ private Primary_expressionContext primary_expression(int _p) { _localctx = new ArrayScalarExpressionContext(_localctx); Context = _localctx; _prevctx = _localctx; - State = 395; Match(K_ARRAY); - State = 396; Match(T__2); - State = 397; sql_query(); - State = 398; Match(T__3); + State = 383; Match(K_ARRAY); + State = 384; Match(T__2); + State = 385; sql_query(); + State = 386; Match(T__3); } break; } Context.Stop = TokenStream.LT(-1); - State = 412; + State = 400; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,38,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,36,Context); while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { if ( ParseListeners!=null ) TriggerExitRuleEvent(); _prevctx = _localctx; { - State = 410; + State = 398; ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,37,Context) ) { + switch ( Interpreter.AdaptivePredict(TokenStream,35,Context) ) { case 1: { _localctx = new PropertyRefScalarExpressionRecursiveContext(new Primary_expressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_primary_expression); - State = 402; + State = 390; if (!(Precpred(Context, 4))) throw new FailedPredicateException(this, "Precpred(Context, 4)"); - State = 403; Match(T__4); - State = 404; Match(IDENTIFIER); + State = 391; Match(T__4); + State = 392; Match(IDENTIFIER); } break; case 2: { _localctx = new MemberIndexerScalarExpressionContext(new Primary_expressionContext(_parentctx, _parentState)); PushNewRecursionContext(_localctx, _startState, RULE_primary_expression); - State = 405; + State = 393; if (!(Precpred(Context, 3))) throw new FailedPredicateException(this, "Precpred(Context, 3)"); - State = 406; Match(T__5); - State = 407; scalar_expression(0); - State = 408; Match(T__6); + State = 394; Match(T__5); + State = 395; scalar_expression(0); + State = 396; Match(T__6); } break; } } } - State = 414; + State = 402; ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,38,Context); + _alt = Interpreter.AdaptivePredict(TokenStream,36,Context); } } } @@ -3382,18 +3325,18 @@ public Scalar_expression_listContext scalar_expression_list() { try { EnterOuterAlt(_localctx, 1); { - State = 415; scalar_expression(0); - State = 420; + State = 403; scalar_expression(0); + State = 408; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==T__1) { { { - State = 416; Match(T__1); - State = 417; scalar_expression(0); + State = 404; Match(T__1); + State = 405; scalar_expression(0); } } - State = 422; + State = 410; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } @@ -3445,18 +3388,18 @@ public Object_property_listContext object_property_list() { try { EnterOuterAlt(_localctx, 1); { - State = 423; object_property(); - State = 428; + State = 411; object_property(); + State = 416; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la==T__1) { { { - State = 424; Match(T__1); - State = 425; object_property(); + State = 412; Match(T__1); + State = 413; object_property(); } } - State = 430; + State = 418; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } @@ -3505,9 +3448,9 @@ public Object_propertyContext object_property() { try { EnterOuterAlt(_localctx, 1); { - State = 431; Match(STRING_LITERAL); - State = 432; Match(T__8); - State = 433; scalar_expression(0); + State = 419; Match(STRING_LITERAL); + State = 420; Match(T__8); + State = 421; scalar_expression(0); } } catch (RecognitionException re) { @@ -3556,7 +3499,7 @@ public LiteralContext literal() { try { EnterOuterAlt(_localctx, 1); { - State = 435; + State = 423; _la = TokenStream.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << K_FALSE) | (1L << K_NULL) | (1L << K_TRUE) | (1L << K_UNDEFINED) | (1L << NUMERIC_LITERAL) | (1L << STRING_LITERAL))) != 0)) ) { ErrorHandler.RecoverInline(this); @@ -3583,7 +3526,6 @@ public override bool Sempred(RuleContext _localctx, int ruleIndex, int predIndex case 10: return collection_expression_sempred((Collection_expressionContext)_localctx, predIndex); case 12: return path_expression_sempred((Path_expressionContext)_localctx, predIndex); case 22: return scalar_expression_sempred((Scalar_expressionContext)_localctx, predIndex); - case 23: return logical_scalar_expression_sempred((Logical_scalar_expressionContext)_localctx, predIndex); case 27: return binary_scalar_expression_sempred((Binary_scalar_expressionContext)_localctx, predIndex); case 38: return primary_expression_sempred((Primary_expressionContext)_localctx, predIndex); } @@ -3610,39 +3552,32 @@ private bool scalar_expression_sempred(Scalar_expressionContext _localctx, int p } return true; } - private bool logical_scalar_expression_sempred(Logical_scalar_expressionContext _localctx, int predIndex) { - switch (predIndex) { - case 6: return Precpred(Context, 2); - case 7: return Precpred(Context, 1); - } - return true; - } private bool binary_scalar_expression_sempred(Binary_scalar_expressionContext _localctx, int predIndex) { switch (predIndex) { - case 8: return Precpred(Context, 10); - case 9: return Precpred(Context, 9); - case 10: return Precpred(Context, 8); - case 11: return Precpred(Context, 7); - case 12: return Precpred(Context, 6); - case 13: return Precpred(Context, 5); - case 14: return Precpred(Context, 4); - case 15: return Precpred(Context, 3); - case 16: return Precpred(Context, 2); - case 17: return Precpred(Context, 1); + case 6: return Precpred(Context, 10); + case 7: return Precpred(Context, 9); + case 8: return Precpred(Context, 8); + case 9: return Precpred(Context, 7); + case 10: return Precpred(Context, 6); + case 11: return Precpred(Context, 5); + case 12: return Precpred(Context, 4); + case 13: return Precpred(Context, 3); + case 14: return Precpred(Context, 2); + case 15: return Precpred(Context, 1); } return true; } private bool primary_expression_sempred(Primary_expressionContext _localctx, int predIndex) { switch (predIndex) { - case 18: return Precpred(Context, 4); - case 19: return Precpred(Context, 3); + case 16: return Precpred(Context, 4); + case 17: return Precpred(Context, 3); } return true; } private static char[] _serializedATN = { '\x3', '\x608B', '\xA72A', '\x8133', '\xB9ED', '\x417C', '\x3BE7', '\x7786', - '\x5964', '\x3', '?', '\x1B8', '\x4', '\x2', '\t', '\x2', '\x4', '\x3', + '\x5964', '\x3', '?', '\x1AC', '\x4', '\x2', '\t', '\x2', '\x4', '\x3', '\t', '\x3', '\x4', '\x4', '\t', '\x4', '\x4', '\x5', '\t', '\x5', '\x4', '\x6', '\t', '\x6', '\x4', '\a', '\t', '\a', '\x4', '\b', '\t', '\b', '\x4', '\t', '\t', '\t', '\x4', '\n', '\t', '\n', '\x4', '\v', '\t', '\v', @@ -3692,15 +3627,12 @@ private bool primary_expression_sempred(Primary_expressionContext _localctx, int '\x18', '\x3', '\x18', '\x3', '\x18', '\x3', '\x18', '\x3', '\x18', '\x3', '\x18', '\x3', '\x18', '\x3', '\x18', '\a', '\x18', '\xF8', '\n', '\x18', '\f', '\x18', '\xE', '\x18', '\xFB', '\v', '\x18', '\x3', '\x19', '\x3', - '\x19', '\x3', '\x19', '\x3', '\x19', '\x5', '\x19', '\x101', '\n', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\a', '\x19', '\x109', '\n', '\x19', '\f', '\x19', '\xE', - '\x19', '\x10C', '\v', '\x19', '\x3', '\x1A', '\x3', '\x1A', '\x5', '\x1A', - '\x110', '\n', '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x3', - '\x1A', '\x3', '\x1A', '\x3', '\x1B', '\x3', '\x1B', '\x5', '\x1B', '\x119', - '\n', '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x5', '\x1B', - '\x11E', '\n', '\x1B', '\x3', '\x1C', '\x3', '\x1C', '\x3', '\x1C', '\x3', - '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', + '\x19', '\x3', '\x19', '\x5', '\x19', '\x100', '\n', '\x19', '\x3', '\x1A', + '\x3', '\x1A', '\x5', '\x1A', '\x104', '\n', '\x1A', '\x3', '\x1A', '\x3', + '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x3', '\x1B', '\x3', + '\x1B', '\x5', '\x1B', '\x10D', '\n', '\x1B', '\x3', '\x1B', '\x3', '\x1B', + '\x3', '\x1B', '\x5', '\x1B', '\x112', '\n', '\x1B', '\x3', '\x1C', '\x3', + '\x1C', '\x3', '\x1C', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', @@ -3708,311 +3640,303 @@ private bool primary_expression_sempred(Primary_expressionContext _localctx, int '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', - '\x1D', '\a', '\x1D', '\x14C', '\n', '\x1D', '\f', '\x1D', '\xE', '\x1D', - '\x14F', '\v', '\x1D', '\x3', '\x1E', '\x3', '\x1E', '\x3', '\x1F', '\x3', - '\x1F', '\x3', ' ', '\x3', ' ', '\x3', '!', '\x3', '!', '\x3', '\"', '\x3', - '\"', '\x3', '#', '\x3', '#', '\x3', '$', '\x3', '$', '\x3', '%', '\x3', - '%', '\x3', '&', '\x3', '&', '\x3', '&', '\x3', '&', '\x5', '&', '\x165', - '\n', '&', '\x3', '\'', '\x3', '\'', '\x3', '(', '\x3', '(', '\x3', '(', - '\x3', '(', '\x3', '(', '\x3', '(', '\x5', '(', '\x16F', '\n', '(', '\x3', - '(', '\x3', '(', '\x3', '(', '\x5', '(', '\x174', '\n', '(', '\x3', '(', - '\x3', '(', '\x3', '(', '\x5', '(', '\x179', '\n', '(', '\x3', '(', '\x3', - '(', '\x3', '(', '\x5', '(', '\x17E', '\n', '(', '\x3', '(', '\x3', '(', + '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\a', '\x1D', '\x140', '\n', '\x1D', + '\f', '\x1D', '\xE', '\x1D', '\x143', '\v', '\x1D', '\x3', '\x1E', '\x3', + '\x1E', '\x3', '\x1F', '\x3', '\x1F', '\x3', ' ', '\x3', ' ', '\x3', '!', + '\x3', '!', '\x3', '\"', '\x3', '\"', '\x3', '#', '\x3', '#', '\x3', '$', + '\x3', '$', '\x3', '%', '\x3', '%', '\x3', '&', '\x3', '&', '\x3', '&', + '\x3', '&', '\x5', '&', '\x159', '\n', '&', '\x3', '\'', '\x3', '\'', + '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', + '\x5', '(', '\x163', '\n', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x5', + '(', '\x168', '\n', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x5', '(', + '\x16D', '\n', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x5', '(', '\x172', + '\n', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', - '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x5', '(', - '\x193', '\n', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', - '(', '\x3', '(', '\x3', '(', '\x3', '(', '\a', '(', '\x19D', '\n', '(', - '\f', '(', '\xE', '(', '\x1A0', '\v', '(', '\x3', ')', '\x3', ')', '\x3', - ')', '\a', ')', '\x1A5', '\n', ')', '\f', ')', '\xE', ')', '\x1A8', '\v', - ')', '\x3', '*', '\x3', '*', '\x3', '*', '\a', '*', '\x1AD', '\n', '*', - '\f', '*', '\xE', '*', '\x1B0', '\v', '*', '\x3', '+', '\x3', '+', '\x3', - '+', '\x3', '+', '\x3', ',', '\x3', ',', '\x3', ',', '\x2', '\b', '\x16', - '\x1A', '.', '\x30', '\x38', 'N', '-', '\x2', '\x4', '\x6', '\b', '\n', - '\f', '\xE', '\x10', '\x12', '\x14', '\x16', '\x18', '\x1A', '\x1C', '\x1E', - ' ', '\"', '$', '&', '(', '*', ',', '.', '\x30', '\x32', '\x34', '\x36', - '\x38', ':', '<', '>', '@', '\x42', '\x44', '\x46', 'H', 'J', 'L', 'N', - 'P', 'R', 'T', 'V', '\x2', '\n', '\x4', '\x2', '<', '<', '?', '?', '\x4', - '\x2', '!', '!', '$', '$', '\x4', '\x2', '\x3', '\x3', '\r', '\xE', '\x3', - '\x2', '\xF', '\x10', '\x3', '\x2', '\x11', '\x14', '\x3', '\x2', '\x15', - '\x16', '\x5', '\x2', '\xF', '\x10', '\x1B', '\x1B', '/', '/', '\a', '\x2', - '(', '(', '\x30', '\x30', '\x36', '\x36', '\x38', '\x38', '<', '=', '\x2', - '\x1C8', '\x2', 'X', '\x3', '\x2', '\x2', '\x2', '\x4', '[', '\x3', '\x2', - '\x2', '\x2', '\x6', 'k', '\x3', '\x2', '\x2', '\x2', '\b', 't', '\x3', - '\x2', '\x2', '\x2', '\n', 'z', '\x3', '\x2', '\x2', '\x2', '\f', '|', - '\x3', '\x2', '\x2', '\x2', '\xE', '~', '\x3', '\x2', '\x2', '\x2', '\x10', - '\x81', '\x3', '\x2', '\x2', '\x2', '\x12', '\x89', '\x3', '\x2', '\x2', - '\x2', '\x14', '\x8E', '\x3', '\x2', '\x2', '\x2', '\x16', '\x9A', '\x3', - '\x2', '\x2', '\x2', '\x18', '\xAC', '\x3', '\x2', '\x2', '\x2', '\x1A', - '\xAE', '\x3', '\x2', '\x2', '\x2', '\x1C', '\xBF', '\x3', '\x2', '\x2', - '\x2', '\x1E', '\xC2', '\x3', '\x2', '\x2', '\x2', ' ', '\xC6', '\x3', - '\x2', '\x2', '\x2', '\"', '\xCA', '\x3', '\x2', '\x2', '\x2', '$', '\xD2', - '\x3', '\x2', '\x2', '\x2', '&', '\xD6', '\x3', '\x2', '\x2', '\x2', '(', - '\xD8', '\x3', '\x2', '\x2', '\x2', '*', '\xDD', '\x3', '\x2', '\x2', - '\x2', ',', '\xDF', '\x3', '\x2', '\x2', '\x2', '.', '\xEC', '\x3', '\x2', - '\x2', '\x2', '\x30', '\x100', '\x3', '\x2', '\x2', '\x2', '\x32', '\x10D', - '\x3', '\x2', '\x2', '\x2', '\x34', '\x116', '\x3', '\x2', '\x2', '\x2', - '\x36', '\x11F', '\x3', '\x2', '\x2', '\x2', '\x38', '\x122', '\x3', '\x2', - '\x2', '\x2', ':', '\x150', '\x3', '\x2', '\x2', '\x2', '<', '\x152', - '\x3', '\x2', '\x2', '\x2', '>', '\x154', '\x3', '\x2', '\x2', '\x2', - '@', '\x156', '\x3', '\x2', '\x2', '\x2', '\x42', '\x158', '\x3', '\x2', - '\x2', '\x2', '\x44', '\x15A', '\x3', '\x2', '\x2', '\x2', '\x46', '\x15C', - '\x3', '\x2', '\x2', '\x2', 'H', '\x15E', '\x3', '\x2', '\x2', '\x2', - 'J', '\x164', '\x3', '\x2', '\x2', '\x2', 'L', '\x166', '\x3', '\x2', - '\x2', '\x2', 'N', '\x192', '\x3', '\x2', '\x2', '\x2', 'P', '\x1A1', - '\x3', '\x2', '\x2', '\x2', 'R', '\x1A9', '\x3', '\x2', '\x2', '\x2', - 'T', '\x1B1', '\x3', '\x2', '\x2', '\x2', 'V', '\x1B5', '\x3', '\x2', - '\x2', '\x2', 'X', 'Y', '\x5', '\x4', '\x3', '\x2', 'Y', 'Z', '\a', '\x2', - '\x2', '\x3', 'Z', '\x3', '\x3', '\x2', '\x2', '\x2', '[', ']', '\x5', - '\x6', '\x4', '\x2', '\\', '^', '\x5', '\x14', '\v', '\x2', ']', '\\', - '\x3', '\x2', '\x2', '\x2', ']', '^', '\x3', '\x2', '\x2', '\x2', '^', - '`', '\x3', '\x2', '\x2', '\x2', '_', '\x61', '\x5', '\x1C', '\xF', '\x2', - '`', '_', '\x3', '\x2', '\x2', '\x2', '`', '\x61', '\x3', '\x2', '\x2', - '\x2', '\x61', '\x63', '\x3', '\x2', '\x2', '\x2', '\x62', '\x64', '\x5', - '\x1E', '\x10', '\x2', '\x63', '\x62', '\x3', '\x2', '\x2', '\x2', '\x63', - '\x64', '\x3', '\x2', '\x2', '\x2', '\x64', '\x66', '\x3', '\x2', '\x2', - '\x2', '\x65', 'g', '\x5', ' ', '\x11', '\x2', '\x66', '\x65', '\x3', - '\x2', '\x2', '\x2', '\x66', 'g', '\x3', '\x2', '\x2', '\x2', 'g', 'i', - '\x3', '\x2', '\x2', '\x2', 'h', 'j', '\x5', '(', '\x15', '\x2', 'i', - 'h', '\x3', '\x2', '\x2', '\x2', 'i', 'j', '\x3', '\x2', '\x2', '\x2', - 'j', '\x5', '\x3', '\x2', '\x2', '\x2', 'k', 'm', '\a', '\x34', '\x2', - '\x2', 'l', 'n', '\a', '%', '\x2', '\x2', 'm', 'l', '\x3', '\x2', '\x2', - '\x2', 'm', 'n', '\x3', '\x2', '\x2', '\x2', 'n', 'p', '\x3', '\x2', '\x2', - '\x2', 'o', 'q', '\x5', '\b', '\x5', '\x2', 'p', 'o', '\x3', '\x2', '\x2', - '\x2', 'p', 'q', '\x3', '\x2', '\x2', '\x2', 'q', 'r', '\x3', '\x2', '\x2', - '\x2', 'r', 's', '\x5', '\n', '\x6', '\x2', 's', '\a', '\x3', '\x2', '\x2', - '\x2', 't', 'u', '\a', '\x35', '\x2', '\x2', 'u', 'v', '\t', '\x2', '\x2', - '\x2', 'v', '\t', '\x3', '\x2', '\x2', '\x2', 'w', '{', '\x5', '\f', '\a', - '\x2', 'x', '{', '\x5', '\xE', '\b', '\x2', 'y', '{', '\x5', '\x10', '\t', - '\x2', 'z', 'w', '\x3', '\x2', '\x2', '\x2', 'z', 'x', '\x3', '\x2', '\x2', - '\x2', 'z', 'y', '\x3', '\x2', '\x2', '\x2', '{', '\v', '\x3', '\x2', - '\x2', '\x2', '|', '}', '\a', '\x3', '\x2', '\x2', '}', '\r', '\x3', '\x2', - '\x2', '\x2', '~', '\x7F', '\a', '\x39', '\x2', '\x2', '\x7F', '\x80', - '\x5', '.', '\x18', '\x2', '\x80', '\xF', '\x3', '\x2', '\x2', '\x2', - '\x81', '\x86', '\x5', '\x12', '\n', '\x2', '\x82', '\x83', '\a', '\x4', - '\x2', '\x2', '\x83', '\x85', '\x5', '\x12', '\n', '\x2', '\x84', '\x82', - '\x3', '\x2', '\x2', '\x2', '\x85', '\x88', '\x3', '\x2', '\x2', '\x2', - '\x86', '\x84', '\x3', '\x2', '\x2', '\x2', '\x86', '\x87', '\x3', '\x2', - '\x2', '\x2', '\x87', '\x11', '\x3', '\x2', '\x2', '\x2', '\x88', '\x86', - '\x3', '\x2', '\x2', '\x2', '\x89', '\x8C', '\x5', '.', '\x18', '\x2', - '\x8A', '\x8B', '\a', ' ', '\x2', '\x2', '\x8B', '\x8D', '\a', '>', '\x2', - '\x2', '\x8C', '\x8A', '\x3', '\x2', '\x2', '\x2', '\x8C', '\x8D', '\x3', - '\x2', '\x2', '\x2', '\x8D', '\x13', '\x3', '\x2', '\x2', '\x2', '\x8E', - '\x8F', '\a', ')', '\x2', '\x2', '\x8F', '\x90', '\x5', '\x16', '\f', - '\x2', '\x90', '\x15', '\x3', '\x2', '\x2', '\x2', '\x91', '\x92', '\b', - '\f', '\x1', '\x2', '\x92', '\x95', '\x5', '\x18', '\r', '\x2', '\x93', - '\x94', '\a', ' ', '\x2', '\x2', '\x94', '\x96', '\a', '>', '\x2', '\x2', - '\x95', '\x93', '\x3', '\x2', '\x2', '\x2', '\x95', '\x96', '\x3', '\x2', - '\x2', '\x2', '\x96', '\x9B', '\x3', '\x2', '\x2', '\x2', '\x97', '\x98', - '\a', '>', '\x2', '\x2', '\x98', '\x99', '\a', '+', '\x2', '\x2', '\x99', - '\x9B', '\x5', '\x18', '\r', '\x2', '\x9A', '\x91', '\x3', '\x2', '\x2', - '\x2', '\x9A', '\x97', '\x3', '\x2', '\x2', '\x2', '\x9B', '\xA1', '\x3', - '\x2', '\x2', '\x2', '\x9C', '\x9D', '\f', '\x3', '\x2', '\x2', '\x9D', - '\x9E', '\a', ',', '\x2', '\x2', '\x9E', '\xA0', '\x5', '\x16', '\f', - '\x4', '\x9F', '\x9C', '\x3', '\x2', '\x2', '\x2', '\xA0', '\xA3', '\x3', - '\x2', '\x2', '\x2', '\xA1', '\x9F', '\x3', '\x2', '\x2', '\x2', '\xA1', - '\xA2', '\x3', '\x2', '\x2', '\x2', '\xA2', '\x17', '\x3', '\x2', '\x2', - '\x2', '\xA3', '\xA1', '\x3', '\x2', '\x2', '\x2', '\xA4', '\xA6', '\a', - '>', '\x2', '\x2', '\xA5', '\xA7', '\x5', '\x1A', '\xE', '\x2', '\xA6', - '\xA5', '\x3', '\x2', '\x2', '\x2', '\xA6', '\xA7', '\x3', '\x2', '\x2', - '\x2', '\xA7', '\xAD', '\x3', '\x2', '\x2', '\x2', '\xA8', '\xA9', '\a', - '\x5', '\x2', '\x2', '\xA9', '\xAA', '\x5', '\x4', '\x3', '\x2', '\xAA', - '\xAB', '\a', '\x6', '\x2', '\x2', '\xAB', '\xAD', '\x3', '\x2', '\x2', - '\x2', '\xAC', '\xA4', '\x3', '\x2', '\x2', '\x2', '\xAC', '\xA8', '\x3', - '\x2', '\x2', '\x2', '\xAD', '\x19', '\x3', '\x2', '\x2', '\x2', '\xAE', - '\xBC', '\b', '\xE', '\x1', '\x2', '\xAF', '\xB0', '\f', '\x6', '\x2', - '\x2', '\xB0', '\xB1', '\a', '\a', '\x2', '\x2', '\xB1', '\xBB', '\a', - '>', '\x2', '\x2', '\xB2', '\xB3', '\f', '\x5', '\x2', '\x2', '\xB3', - '\xB4', '\a', '\b', '\x2', '\x2', '\xB4', '\xB5', '\a', '<', '\x2', '\x2', - '\xB5', '\xBB', '\a', '\t', '\x2', '\x2', '\xB6', '\xB7', '\f', '\x4', - '\x2', '\x2', '\xB7', '\xB8', '\a', '\b', '\x2', '\x2', '\xB8', '\xB9', - '\a', '=', '\x2', '\x2', '\xB9', '\xBB', '\a', '\t', '\x2', '\x2', '\xBA', - '\xAF', '\x3', '\x2', '\x2', '\x2', '\xBA', '\xB2', '\x3', '\x2', '\x2', - '\x2', '\xBA', '\xB6', '\x3', '\x2', '\x2', '\x2', '\xBB', '\xBE', '\x3', - '\x2', '\x2', '\x2', '\xBC', '\xBA', '\x3', '\x2', '\x2', '\x2', '\xBC', - '\xBD', '\x3', '\x2', '\x2', '\x2', '\xBD', '\x1B', '\x3', '\x2', '\x2', - '\x2', '\xBE', '\xBC', '\x3', '\x2', '\x2', '\x2', '\xBF', '\xC0', '\a', - ':', '\x2', '\x2', '\xC0', '\xC1', '\x5', '.', '\x18', '\x2', '\xC1', - '\x1D', '\x3', '\x2', '\x2', '\x2', '\xC2', '\xC3', '\a', '*', '\x2', - '\x2', '\xC3', '\xC4', '\a', '#', '\x2', '\x2', '\xC4', '\xC5', '\x5', - 'P', ')', '\x2', '\xC5', '\x1F', '\x3', '\x2', '\x2', '\x2', '\xC6', '\xC7', - '\a', '\x33', '\x2', '\x2', '\xC7', '\xC8', '\a', '#', '\x2', '\x2', '\xC8', - '\xC9', '\x5', '\"', '\x12', '\x2', '\xC9', '!', '\x3', '\x2', '\x2', - '\x2', '\xCA', '\xCF', '\x5', '$', '\x13', '\x2', '\xCB', '\xCC', '\a', - '\x4', '\x2', '\x2', '\xCC', '\xCE', '\x5', '$', '\x13', '\x2', '\xCD', - '\xCB', '\x3', '\x2', '\x2', '\x2', '\xCE', '\xD1', '\x3', '\x2', '\x2', - '\x2', '\xCF', '\xCD', '\x3', '\x2', '\x2', '\x2', '\xCF', '\xD0', '\x3', - '\x2', '\x2', '\x2', '\xD0', '#', '\x3', '\x2', '\x2', '\x2', '\xD1', - '\xCF', '\x3', '\x2', '\x2', '\x2', '\xD2', '\xD4', '\x5', '.', '\x18', - '\x2', '\xD3', '\xD5', '\x5', '&', '\x14', '\x2', '\xD4', '\xD3', '\x3', - '\x2', '\x2', '\x2', '\xD4', '\xD5', '\x3', '\x2', '\x2', '\x2', '\xD5', - '%', '\x3', '\x2', '\x2', '\x2', '\xD6', '\xD7', '\t', '\x3', '\x2', '\x2', - '\xD7', '\'', '\x3', '\x2', '\x2', '\x2', '\xD8', '\xD9', '\a', '\x31', - '\x2', '\x2', '\xD9', '\xDA', '\x5', '*', '\x16', '\x2', '\xDA', '\xDB', - '\a', '.', '\x2', '\x2', '\xDB', '\xDC', '\x5', ',', '\x17', '\x2', '\xDC', - ')', '\x3', '\x2', '\x2', '\x2', '\xDD', '\xDE', '\t', '\x2', '\x2', '\x2', - '\xDE', '+', '\x3', '\x2', '\x2', '\x2', '\xDF', '\xE0', '\t', '\x2', - '\x2', '\x2', '\xE0', '-', '\x3', '\x2', '\x2', '\x2', '\xE1', '\xE2', - '\b', '\x18', '\x1', '\x2', '\xE2', '\xED', '\x5', '\x30', '\x19', '\x2', - '\xE3', '\xE5', '\x5', '\x38', '\x1D', '\x2', '\xE4', '\xE6', '\a', '/', - '\x2', '\x2', '\xE5', '\xE4', '\x3', '\x2', '\x2', '\x2', '\xE5', '\xE6', - '\x3', '\x2', '\x2', '\x2', '\xE6', '\xE7', '\x3', '\x2', '\x2', '\x2', - '\xE7', '\xE8', '\a', '\"', '\x2', '\x2', '\xE8', '\xE9', '\x5', '\x38', - '\x1D', '\x2', '\xE9', '\xEA', '\a', '\x1E', '\x2', '\x2', '\xEA', '\xEB', - '\x5', '\x38', '\x1D', '\x2', '\xEB', '\xED', '\x3', '\x2', '\x2', '\x2', - '\xEC', '\xE1', '\x3', '\x2', '\x2', '\x2', '\xEC', '\xE3', '\x3', '\x2', - '\x2', '\x2', '\xED', '\xF9', '\x3', '\x2', '\x2', '\x2', '\xEE', '\xEF', - '\f', '\x6', '\x2', '\x2', '\xEF', '\xF0', '\a', '\n', '\x2', '\x2', '\xF0', - '\xF1', '\x5', '.', '\x18', '\x2', '\xF1', '\xF2', '\a', '\v', '\x2', - '\x2', '\xF2', '\xF3', '\x5', '.', '\x18', '\a', '\xF3', '\xF8', '\x3', - '\x2', '\x2', '\x2', '\xF4', '\xF5', '\f', '\x5', '\x2', '\x2', '\xF5', - '\xF6', '\a', '\f', '\x2', '\x2', '\xF6', '\xF8', '\x5', '.', '\x18', - '\x6', '\xF7', '\xEE', '\x3', '\x2', '\x2', '\x2', '\xF7', '\xF4', '\x3', - '\x2', '\x2', '\x2', '\xF8', '\xFB', '\x3', '\x2', '\x2', '\x2', '\xF9', - '\xF7', '\x3', '\x2', '\x2', '\x2', '\xF9', '\xFA', '\x3', '\x2', '\x2', - '\x2', '\xFA', '/', '\x3', '\x2', '\x2', '\x2', '\xFB', '\xF9', '\x3', - '\x2', '\x2', '\x2', '\xFC', '\xFD', '\b', '\x19', '\x1', '\x2', '\xFD', - '\x101', '\x5', '\x38', '\x1D', '\x2', '\xFE', '\x101', '\x5', '\x32', - '\x1A', '\x2', '\xFF', '\x101', '\x5', '\x34', '\x1B', '\x2', '\x100', - '\xFC', '\x3', '\x2', '\x2', '\x2', '\x100', '\xFE', '\x3', '\x2', '\x2', - '\x2', '\x100', '\xFF', '\x3', '\x2', '\x2', '\x2', '\x101', '\x10A', - '\x3', '\x2', '\x2', '\x2', '\x102', '\x103', '\f', '\x4', '\x2', '\x2', - '\x103', '\x104', '\a', '\x1E', '\x2', '\x2', '\x104', '\x109', '\x5', - '\x30', '\x19', '\x5', '\x105', '\x106', '\f', '\x3', '\x2', '\x2', '\x106', - '\x107', '\a', '\x32', '\x2', '\x2', '\x107', '\x109', '\x5', '\x30', - '\x19', '\x4', '\x108', '\x102', '\x3', '\x2', '\x2', '\x2', '\x108', - '\x105', '\x3', '\x2', '\x2', '\x2', '\x109', '\x10C', '\x3', '\x2', '\x2', - '\x2', '\x10A', '\x108', '\x3', '\x2', '\x2', '\x2', '\x10A', '\x10B', - '\x3', '\x2', '\x2', '\x2', '\x10B', '\x31', '\x3', '\x2', '\x2', '\x2', - '\x10C', '\x10A', '\x3', '\x2', '\x2', '\x2', '\x10D', '\x10F', '\x5', - '\x38', '\x1D', '\x2', '\x10E', '\x110', '\a', '/', '\x2', '\x2', '\x10F', - '\x10E', '\x3', '\x2', '\x2', '\x2', '\x10F', '\x110', '\x3', '\x2', '\x2', - '\x2', '\x110', '\x111', '\x3', '\x2', '\x2', '\x2', '\x111', '\x112', - '\a', '+', '\x2', '\x2', '\x112', '\x113', '\a', '\x5', '\x2', '\x2', - '\x113', '\x114', '\x5', 'P', ')', '\x2', '\x114', '\x115', '\a', '\x6', - '\x2', '\x2', '\x115', '\x33', '\x3', '\x2', '\x2', '\x2', '\x116', '\x118', - '\x5', '\x38', '\x1D', '\x2', '\x117', '\x119', '\a', '/', '\x2', '\x2', - '\x118', '\x117', '\x3', '\x2', '\x2', '\x2', '\x118', '\x119', '\x3', - '\x2', '\x2', '\x2', '\x119', '\x11A', '\x3', '\x2', '\x2', '\x2', '\x11A', - '\x11B', '\a', '-', '\x2', '\x2', '\x11B', '\x11D', '\x5', '\x38', '\x1D', - '\x2', '\x11C', '\x11E', '\x5', '\x36', '\x1C', '\x2', '\x11D', '\x11C', - '\x3', '\x2', '\x2', '\x2', '\x11D', '\x11E', '\x3', '\x2', '\x2', '\x2', - '\x11E', '\x35', '\x3', '\x2', '\x2', '\x2', '\x11F', '\x120', '\a', '&', - '\x2', '\x2', '\x120', '\x121', '\a', '=', '\x2', '\x2', '\x121', '\x37', - '\x3', '\x2', '\x2', '\x2', '\x122', '\x123', '\b', '\x1D', '\x1', '\x2', - '\x123', '\x124', '\x5', 'J', '&', '\x2', '\x124', '\x14D', '\x3', '\x2', - '\x2', '\x2', '\x125', '\x126', '\f', '\f', '\x2', '\x2', '\x126', '\x127', - '\x5', ':', '\x1E', '\x2', '\x127', '\x128', '\x5', '\x38', '\x1D', '\r', - '\x128', '\x14C', '\x3', '\x2', '\x2', '\x2', '\x129', '\x12A', '\f', - '\v', '\x2', '\x2', '\x12A', '\x12B', '\x5', '<', '\x1F', '\x2', '\x12B', - '\x12C', '\x5', '\x38', '\x1D', '\f', '\x12C', '\x14C', '\x3', '\x2', - '\x2', '\x2', '\x12D', '\x12E', '\f', '\n', '\x2', '\x2', '\x12E', '\x12F', - '\x5', '>', ' ', '\x2', '\x12F', '\x130', '\x5', '\x38', '\x1D', '\v', - '\x130', '\x14C', '\x3', '\x2', '\x2', '\x2', '\x131', '\x132', '\f', - '\t', '\x2', '\x2', '\x132', '\x133', '\x5', '@', '!', '\x2', '\x133', - '\x134', '\x5', '\x38', '\x1D', '\n', '\x134', '\x14C', '\x3', '\x2', - '\x2', '\x2', '\x135', '\x136', '\f', '\b', '\x2', '\x2', '\x136', '\x137', - '\x5', '\x42', '\"', '\x2', '\x137', '\x138', '\x5', '\x38', '\x1D', '\t', - '\x138', '\x14C', '\x3', '\x2', '\x2', '\x2', '\x139', '\x13A', '\f', - '\a', '\x2', '\x2', '\x13A', '\x13B', '\x5', '\x44', '#', '\x2', '\x13B', - '\x13C', '\x5', '\x38', '\x1D', '\b', '\x13C', '\x14C', '\x3', '\x2', - '\x2', '\x2', '\x13D', '\x13E', '\f', '\x6', '\x2', '\x2', '\x13E', '\x13F', - '\x5', '\x46', '$', '\x2', '\x13F', '\x140', '\x5', '\x38', '\x1D', '\a', - '\x140', '\x14C', '\x3', '\x2', '\x2', '\x2', '\x141', '\x142', '\f', - '\x5', '\x2', '\x2', '\x142', '\x143', '\a', '\x1E', '\x2', '\x2', '\x143', - '\x14C', '\x5', '\x38', '\x1D', '\x6', '\x144', '\x145', '\f', '\x4', - '\x2', '\x2', '\x145', '\x146', '\a', '\x32', '\x2', '\x2', '\x146', '\x14C', - '\x5', '\x38', '\x1D', '\x5', '\x147', '\x148', '\f', '\x3', '\x2', '\x2', - '\x148', '\x149', '\x5', 'H', '%', '\x2', '\x149', '\x14A', '\x5', '\x38', - '\x1D', '\x4', '\x14A', '\x14C', '\x3', '\x2', '\x2', '\x2', '\x14B', - '\x125', '\x3', '\x2', '\x2', '\x2', '\x14B', '\x129', '\x3', '\x2', '\x2', - '\x2', '\x14B', '\x12D', '\x3', '\x2', '\x2', '\x2', '\x14B', '\x131', - '\x3', '\x2', '\x2', '\x2', '\x14B', '\x135', '\x3', '\x2', '\x2', '\x2', - '\x14B', '\x139', '\x3', '\x2', '\x2', '\x2', '\x14B', '\x13D', '\x3', - '\x2', '\x2', '\x2', '\x14B', '\x141', '\x3', '\x2', '\x2', '\x2', '\x14B', - '\x144', '\x3', '\x2', '\x2', '\x2', '\x14B', '\x147', '\x3', '\x2', '\x2', - '\x2', '\x14C', '\x14F', '\x3', '\x2', '\x2', '\x2', '\x14D', '\x14B', - '\x3', '\x2', '\x2', '\x2', '\x14D', '\x14E', '\x3', '\x2', '\x2', '\x2', - '\x14E', '\x39', '\x3', '\x2', '\x2', '\x2', '\x14F', '\x14D', '\x3', - '\x2', '\x2', '\x2', '\x150', '\x151', '\t', '\x4', '\x2', '\x2', '\x151', - ';', '\x3', '\x2', '\x2', '\x2', '\x152', '\x153', '\t', '\x5', '\x2', - '\x2', '\x153', '=', '\x3', '\x2', '\x2', '\x2', '\x154', '\x155', '\t', - '\x6', '\x2', '\x2', '\x155', '?', '\x3', '\x2', '\x2', '\x2', '\x156', - '\x157', '\t', '\a', '\x2', '\x2', '\x157', '\x41', '\x3', '\x2', '\x2', - '\x2', '\x158', '\x159', '\a', '\x17', '\x2', '\x2', '\x159', '\x43', - '\x3', '\x2', '\x2', '\x2', '\x15A', '\x15B', '\a', '\x18', '\x2', '\x2', - '\x15B', '\x45', '\x3', '\x2', '\x2', '\x2', '\x15C', '\x15D', '\a', '\x19', - '\x2', '\x2', '\x15D', 'G', '\x3', '\x2', '\x2', '\x2', '\x15E', '\x15F', - '\a', '\x1A', '\x2', '\x2', '\x15F', 'I', '\x3', '\x2', '\x2', '\x2', - '\x160', '\x165', '\x5', 'N', '(', '\x2', '\x161', '\x162', '\x5', 'L', - '\'', '\x2', '\x162', '\x163', '\x5', 'J', '&', '\x2', '\x163', '\x165', - '\x3', '\x2', '\x2', '\x2', '\x164', '\x160', '\x3', '\x2', '\x2', '\x2', - '\x164', '\x161', '\x3', '\x2', '\x2', '\x2', '\x165', 'K', '\x3', '\x2', - '\x2', '\x2', '\x166', '\x167', '\t', '\b', '\x2', '\x2', '\x167', 'M', - '\x3', '\x2', '\x2', '\x2', '\x168', '\x169', '\b', '(', '\x1', '\x2', - '\x169', '\x193', '\a', '>', '\x2', '\x2', '\x16A', '\x193', '\a', '?', - '\x2', '\x2', '\x16B', '\x193', '\x5', 'V', ',', '\x2', '\x16C', '\x16E', - '\a', '\b', '\x2', '\x2', '\x16D', '\x16F', '\x5', 'P', ')', '\x2', '\x16E', - '\x16D', '\x3', '\x2', '\x2', '\x2', '\x16E', '\x16F', '\x3', '\x2', '\x2', - '\x2', '\x16F', '\x170', '\x3', '\x2', '\x2', '\x2', '\x170', '\x193', - '\a', '\t', '\x2', '\x2', '\x171', '\x173', '\a', '\x1C', '\x2', '\x2', - '\x172', '\x174', '\x5', 'R', '*', '\x2', '\x173', '\x172', '\x3', '\x2', - '\x2', '\x2', '\x173', '\x174', '\x3', '\x2', '\x2', '\x2', '\x174', '\x175', - '\x3', '\x2', '\x2', '\x2', '\x175', '\x193', '\a', '\x1D', '\x2', '\x2', - '\x176', '\x177', '\a', '\x37', '\x2', '\x2', '\x177', '\x179', '\a', - '\a', '\x2', '\x2', '\x178', '\x176', '\x3', '\x2', '\x2', '\x2', '\x178', - '\x179', '\x3', '\x2', '\x2', '\x2', '\x179', '\x17A', '\x3', '\x2', '\x2', - '\x2', '\x17A', '\x17B', '\a', '>', '\x2', '\x2', '\x17B', '\x17D', '\a', - '\x5', '\x2', '\x2', '\x17C', '\x17E', '\x5', 'P', ')', '\x2', '\x17D', - '\x17C', '\x3', '\x2', '\x2', '\x2', '\x17D', '\x17E', '\x3', '\x2', '\x2', - '\x2', '\x17E', '\x17F', '\x3', '\x2', '\x2', '\x2', '\x17F', '\x193', - '\a', '\x6', '\x2', '\x2', '\x180', '\x181', '\a', '\x5', '\x2', '\x2', - '\x181', '\x182', '\x5', '.', '\x18', '\x2', '\x182', '\x183', '\a', '\x6', - '\x2', '\x2', '\x183', '\x193', '\x3', '\x2', '\x2', '\x2', '\x184', '\x185', - '\a', '\x5', '\x2', '\x2', '\x185', '\x186', '\x5', '\x4', '\x3', '\x2', - '\x186', '\x187', '\a', '\x6', '\x2', '\x2', '\x187', '\x193', '\x3', - '\x2', '\x2', '\x2', '\x188', '\x189', '\a', '\'', '\x2', '\x2', '\x189', - '\x18A', '\a', '\x5', '\x2', '\x2', '\x18A', '\x18B', '\x5', '\x4', '\x3', - '\x2', '\x18B', '\x18C', '\a', '\x6', '\x2', '\x2', '\x18C', '\x193', - '\x3', '\x2', '\x2', '\x2', '\x18D', '\x18E', '\a', '\x1F', '\x2', '\x2', - '\x18E', '\x18F', '\a', '\x5', '\x2', '\x2', '\x18F', '\x190', '\x5', - '\x4', '\x3', '\x2', '\x190', '\x191', '\a', '\x6', '\x2', '\x2', '\x191', - '\x193', '\x3', '\x2', '\x2', '\x2', '\x192', '\x168', '\x3', '\x2', '\x2', - '\x2', '\x192', '\x16A', '\x3', '\x2', '\x2', '\x2', '\x192', '\x16B', - '\x3', '\x2', '\x2', '\x2', '\x192', '\x16C', '\x3', '\x2', '\x2', '\x2', - '\x192', '\x171', '\x3', '\x2', '\x2', '\x2', '\x192', '\x178', '\x3', - '\x2', '\x2', '\x2', '\x192', '\x180', '\x3', '\x2', '\x2', '\x2', '\x192', - '\x184', '\x3', '\x2', '\x2', '\x2', '\x192', '\x188', '\x3', '\x2', '\x2', - '\x2', '\x192', '\x18D', '\x3', '\x2', '\x2', '\x2', '\x193', '\x19E', - '\x3', '\x2', '\x2', '\x2', '\x194', '\x195', '\f', '\x6', '\x2', '\x2', - '\x195', '\x196', '\a', '\a', '\x2', '\x2', '\x196', '\x19D', '\a', '>', - '\x2', '\x2', '\x197', '\x198', '\f', '\x5', '\x2', '\x2', '\x198', '\x199', - '\a', '\b', '\x2', '\x2', '\x199', '\x19A', '\x5', '.', '\x18', '\x2', - '\x19A', '\x19B', '\a', '\t', '\x2', '\x2', '\x19B', '\x19D', '\x3', '\x2', - '\x2', '\x2', '\x19C', '\x194', '\x3', '\x2', '\x2', '\x2', '\x19C', '\x197', - '\x3', '\x2', '\x2', '\x2', '\x19D', '\x1A0', '\x3', '\x2', '\x2', '\x2', - '\x19E', '\x19C', '\x3', '\x2', '\x2', '\x2', '\x19E', '\x19F', '\x3', - '\x2', '\x2', '\x2', '\x19F', 'O', '\x3', '\x2', '\x2', '\x2', '\x1A0', - '\x19E', '\x3', '\x2', '\x2', '\x2', '\x1A1', '\x1A6', '\x5', '.', '\x18', - '\x2', '\x1A2', '\x1A3', '\a', '\x4', '\x2', '\x2', '\x1A3', '\x1A5', - '\x5', '.', '\x18', '\x2', '\x1A4', '\x1A2', '\x3', '\x2', '\x2', '\x2', - '\x1A5', '\x1A8', '\x3', '\x2', '\x2', '\x2', '\x1A6', '\x1A4', '\x3', - '\x2', '\x2', '\x2', '\x1A6', '\x1A7', '\x3', '\x2', '\x2', '\x2', '\x1A7', - 'Q', '\x3', '\x2', '\x2', '\x2', '\x1A8', '\x1A6', '\x3', '\x2', '\x2', - '\x2', '\x1A9', '\x1AE', '\x5', 'T', '+', '\x2', '\x1AA', '\x1AB', '\a', - '\x4', '\x2', '\x2', '\x1AB', '\x1AD', '\x5', 'T', '+', '\x2', '\x1AC', - '\x1AA', '\x3', '\x2', '\x2', '\x2', '\x1AD', '\x1B0', '\x3', '\x2', '\x2', - '\x2', '\x1AE', '\x1AC', '\x3', '\x2', '\x2', '\x2', '\x1AE', '\x1AF', - '\x3', '\x2', '\x2', '\x2', '\x1AF', 'S', '\x3', '\x2', '\x2', '\x2', - '\x1B0', '\x1AE', '\x3', '\x2', '\x2', '\x2', '\x1B1', '\x1B2', '\a', - '=', '\x2', '\x2', '\x1B2', '\x1B3', '\a', '\v', '\x2', '\x2', '\x1B3', - '\x1B4', '\x5', '.', '\x18', '\x2', '\x1B4', 'U', '\x3', '\x2', '\x2', - '\x2', '\x1B5', '\x1B6', '\t', '\t', '\x2', '\x2', '\x1B6', 'W', '\x3', - '\x2', '\x2', '\x2', '+', ']', '`', '\x63', '\x66', 'i', 'm', 'p', 'z', + '\x3', '(', '\x3', '(', '\x5', '(', '\x187', '\n', '(', '\x3', '(', '\x3', + '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', + '(', '\a', '(', '\x191', '\n', '(', '\f', '(', '\xE', '(', '\x194', '\v', + '(', '\x3', ')', '\x3', ')', '\x3', ')', '\a', ')', '\x199', '\n', ')', + '\f', ')', '\xE', ')', '\x19C', '\v', ')', '\x3', '*', '\x3', '*', '\x3', + '*', '\a', '*', '\x1A1', '\n', '*', '\f', '*', '\xE', '*', '\x1A4', '\v', + '*', '\x3', '+', '\x3', '+', '\x3', '+', '\x3', '+', '\x3', ',', '\x3', + ',', '\x3', ',', '\x2', '\a', '\x16', '\x1A', '.', '\x38', 'N', '-', '\x2', + '\x4', '\x6', '\b', '\n', '\f', '\xE', '\x10', '\x12', '\x14', '\x16', + '\x18', '\x1A', '\x1C', '\x1E', ' ', '\"', '$', '&', '(', '*', ',', '.', + '\x30', '\x32', '\x34', '\x36', '\x38', ':', '<', '>', '@', '\x42', '\x44', + '\x46', 'H', 'J', 'L', 'N', 'P', 'R', 'T', 'V', '\x2', '\n', '\x4', '\x2', + '<', '<', '?', '?', '\x4', '\x2', '!', '!', '$', '$', '\x4', '\x2', '\x3', + '\x3', '\r', '\xE', '\x3', '\x2', '\xF', '\x10', '\x3', '\x2', '\x11', + '\x14', '\x3', '\x2', '\x15', '\x16', '\x5', '\x2', '\xF', '\x10', '\x1B', + '\x1B', '/', '/', '\a', '\x2', '(', '(', '\x30', '\x30', '\x36', '\x36', + '\x38', '\x38', '<', '=', '\x2', '\x1BA', '\x2', 'X', '\x3', '\x2', '\x2', + '\x2', '\x4', '[', '\x3', '\x2', '\x2', '\x2', '\x6', 'k', '\x3', '\x2', + '\x2', '\x2', '\b', 't', '\x3', '\x2', '\x2', '\x2', '\n', 'z', '\x3', + '\x2', '\x2', '\x2', '\f', '|', '\x3', '\x2', '\x2', '\x2', '\xE', '~', + '\x3', '\x2', '\x2', '\x2', '\x10', '\x81', '\x3', '\x2', '\x2', '\x2', + '\x12', '\x89', '\x3', '\x2', '\x2', '\x2', '\x14', '\x8E', '\x3', '\x2', + '\x2', '\x2', '\x16', '\x9A', '\x3', '\x2', '\x2', '\x2', '\x18', '\xAC', + '\x3', '\x2', '\x2', '\x2', '\x1A', '\xAE', '\x3', '\x2', '\x2', '\x2', + '\x1C', '\xBF', '\x3', '\x2', '\x2', '\x2', '\x1E', '\xC2', '\x3', '\x2', + '\x2', '\x2', ' ', '\xC6', '\x3', '\x2', '\x2', '\x2', '\"', '\xCA', '\x3', + '\x2', '\x2', '\x2', '$', '\xD2', '\x3', '\x2', '\x2', '\x2', '&', '\xD6', + '\x3', '\x2', '\x2', '\x2', '(', '\xD8', '\x3', '\x2', '\x2', '\x2', '*', + '\xDD', '\x3', '\x2', '\x2', '\x2', ',', '\xDF', '\x3', '\x2', '\x2', + '\x2', '.', '\xEC', '\x3', '\x2', '\x2', '\x2', '\x30', '\xFF', '\x3', + '\x2', '\x2', '\x2', '\x32', '\x101', '\x3', '\x2', '\x2', '\x2', '\x34', + '\x10A', '\x3', '\x2', '\x2', '\x2', '\x36', '\x113', '\x3', '\x2', '\x2', + '\x2', '\x38', '\x116', '\x3', '\x2', '\x2', '\x2', ':', '\x144', '\x3', + '\x2', '\x2', '\x2', '<', '\x146', '\x3', '\x2', '\x2', '\x2', '>', '\x148', + '\x3', '\x2', '\x2', '\x2', '@', '\x14A', '\x3', '\x2', '\x2', '\x2', + '\x42', '\x14C', '\x3', '\x2', '\x2', '\x2', '\x44', '\x14E', '\x3', '\x2', + '\x2', '\x2', '\x46', '\x150', '\x3', '\x2', '\x2', '\x2', 'H', '\x152', + '\x3', '\x2', '\x2', '\x2', 'J', '\x158', '\x3', '\x2', '\x2', '\x2', + 'L', '\x15A', '\x3', '\x2', '\x2', '\x2', 'N', '\x186', '\x3', '\x2', + '\x2', '\x2', 'P', '\x195', '\x3', '\x2', '\x2', '\x2', 'R', '\x19D', + '\x3', '\x2', '\x2', '\x2', 'T', '\x1A5', '\x3', '\x2', '\x2', '\x2', + 'V', '\x1A9', '\x3', '\x2', '\x2', '\x2', 'X', 'Y', '\x5', '\x4', '\x3', + '\x2', 'Y', 'Z', '\a', '\x2', '\x2', '\x3', 'Z', '\x3', '\x3', '\x2', + '\x2', '\x2', '[', ']', '\x5', '\x6', '\x4', '\x2', '\\', '^', '\x5', + '\x14', '\v', '\x2', ']', '\\', '\x3', '\x2', '\x2', '\x2', ']', '^', + '\x3', '\x2', '\x2', '\x2', '^', '`', '\x3', '\x2', '\x2', '\x2', '_', + '\x61', '\x5', '\x1C', '\xF', '\x2', '`', '_', '\x3', '\x2', '\x2', '\x2', + '`', '\x61', '\x3', '\x2', '\x2', '\x2', '\x61', '\x63', '\x3', '\x2', + '\x2', '\x2', '\x62', '\x64', '\x5', '\x1E', '\x10', '\x2', '\x63', '\x62', + '\x3', '\x2', '\x2', '\x2', '\x63', '\x64', '\x3', '\x2', '\x2', '\x2', + '\x64', '\x66', '\x3', '\x2', '\x2', '\x2', '\x65', 'g', '\x5', ' ', '\x11', + '\x2', '\x66', '\x65', '\x3', '\x2', '\x2', '\x2', '\x66', 'g', '\x3', + '\x2', '\x2', '\x2', 'g', 'i', '\x3', '\x2', '\x2', '\x2', 'h', 'j', '\x5', + '(', '\x15', '\x2', 'i', 'h', '\x3', '\x2', '\x2', '\x2', 'i', 'j', '\x3', + '\x2', '\x2', '\x2', 'j', '\x5', '\x3', '\x2', '\x2', '\x2', 'k', 'm', + '\a', '\x34', '\x2', '\x2', 'l', 'n', '\a', '%', '\x2', '\x2', 'm', 'l', + '\x3', '\x2', '\x2', '\x2', 'm', 'n', '\x3', '\x2', '\x2', '\x2', 'n', + 'p', '\x3', '\x2', '\x2', '\x2', 'o', 'q', '\x5', '\b', '\x5', '\x2', + 'p', 'o', '\x3', '\x2', '\x2', '\x2', 'p', 'q', '\x3', '\x2', '\x2', '\x2', + 'q', 'r', '\x3', '\x2', '\x2', '\x2', 'r', 's', '\x5', '\n', '\x6', '\x2', + 's', '\a', '\x3', '\x2', '\x2', '\x2', 't', 'u', '\a', '\x35', '\x2', + '\x2', 'u', 'v', '\t', '\x2', '\x2', '\x2', 'v', '\t', '\x3', '\x2', '\x2', + '\x2', 'w', '{', '\x5', '\f', '\a', '\x2', 'x', '{', '\x5', '\xE', '\b', + '\x2', 'y', '{', '\x5', '\x10', '\t', '\x2', 'z', 'w', '\x3', '\x2', '\x2', + '\x2', 'z', 'x', '\x3', '\x2', '\x2', '\x2', 'z', 'y', '\x3', '\x2', '\x2', + '\x2', '{', '\v', '\x3', '\x2', '\x2', '\x2', '|', '}', '\a', '\x3', '\x2', + '\x2', '}', '\r', '\x3', '\x2', '\x2', '\x2', '~', '\x7F', '\a', '\x39', + '\x2', '\x2', '\x7F', '\x80', '\x5', '.', '\x18', '\x2', '\x80', '\xF', + '\x3', '\x2', '\x2', '\x2', '\x81', '\x86', '\x5', '\x12', '\n', '\x2', + '\x82', '\x83', '\a', '\x4', '\x2', '\x2', '\x83', '\x85', '\x5', '\x12', + '\n', '\x2', '\x84', '\x82', '\x3', '\x2', '\x2', '\x2', '\x85', '\x88', + '\x3', '\x2', '\x2', '\x2', '\x86', '\x84', '\x3', '\x2', '\x2', '\x2', + '\x86', '\x87', '\x3', '\x2', '\x2', '\x2', '\x87', '\x11', '\x3', '\x2', + '\x2', '\x2', '\x88', '\x86', '\x3', '\x2', '\x2', '\x2', '\x89', '\x8C', + '\x5', '.', '\x18', '\x2', '\x8A', '\x8B', '\a', ' ', '\x2', '\x2', '\x8B', + '\x8D', '\a', '>', '\x2', '\x2', '\x8C', '\x8A', '\x3', '\x2', '\x2', + '\x2', '\x8C', '\x8D', '\x3', '\x2', '\x2', '\x2', '\x8D', '\x13', '\x3', + '\x2', '\x2', '\x2', '\x8E', '\x8F', '\a', ')', '\x2', '\x2', '\x8F', + '\x90', '\x5', '\x16', '\f', '\x2', '\x90', '\x15', '\x3', '\x2', '\x2', + '\x2', '\x91', '\x92', '\b', '\f', '\x1', '\x2', '\x92', '\x95', '\x5', + '\x18', '\r', '\x2', '\x93', '\x94', '\a', ' ', '\x2', '\x2', '\x94', + '\x96', '\a', '>', '\x2', '\x2', '\x95', '\x93', '\x3', '\x2', '\x2', + '\x2', '\x95', '\x96', '\x3', '\x2', '\x2', '\x2', '\x96', '\x9B', '\x3', + '\x2', '\x2', '\x2', '\x97', '\x98', '\a', '>', '\x2', '\x2', '\x98', + '\x99', '\a', '+', '\x2', '\x2', '\x99', '\x9B', '\x5', '\x18', '\r', + '\x2', '\x9A', '\x91', '\x3', '\x2', '\x2', '\x2', '\x9A', '\x97', '\x3', + '\x2', '\x2', '\x2', '\x9B', '\xA1', '\x3', '\x2', '\x2', '\x2', '\x9C', + '\x9D', '\f', '\x3', '\x2', '\x2', '\x9D', '\x9E', '\a', ',', '\x2', '\x2', + '\x9E', '\xA0', '\x5', '\x16', '\f', '\x4', '\x9F', '\x9C', '\x3', '\x2', + '\x2', '\x2', '\xA0', '\xA3', '\x3', '\x2', '\x2', '\x2', '\xA1', '\x9F', + '\x3', '\x2', '\x2', '\x2', '\xA1', '\xA2', '\x3', '\x2', '\x2', '\x2', + '\xA2', '\x17', '\x3', '\x2', '\x2', '\x2', '\xA3', '\xA1', '\x3', '\x2', + '\x2', '\x2', '\xA4', '\xA6', '\a', '>', '\x2', '\x2', '\xA5', '\xA7', + '\x5', '\x1A', '\xE', '\x2', '\xA6', '\xA5', '\x3', '\x2', '\x2', '\x2', + '\xA6', '\xA7', '\x3', '\x2', '\x2', '\x2', '\xA7', '\xAD', '\x3', '\x2', + '\x2', '\x2', '\xA8', '\xA9', '\a', '\x5', '\x2', '\x2', '\xA9', '\xAA', + '\x5', '\x4', '\x3', '\x2', '\xAA', '\xAB', '\a', '\x6', '\x2', '\x2', + '\xAB', '\xAD', '\x3', '\x2', '\x2', '\x2', '\xAC', '\xA4', '\x3', '\x2', + '\x2', '\x2', '\xAC', '\xA8', '\x3', '\x2', '\x2', '\x2', '\xAD', '\x19', + '\x3', '\x2', '\x2', '\x2', '\xAE', '\xBC', '\b', '\xE', '\x1', '\x2', + '\xAF', '\xB0', '\f', '\x6', '\x2', '\x2', '\xB0', '\xB1', '\a', '\a', + '\x2', '\x2', '\xB1', '\xBB', '\a', '>', '\x2', '\x2', '\xB2', '\xB3', + '\f', '\x5', '\x2', '\x2', '\xB3', '\xB4', '\a', '\b', '\x2', '\x2', '\xB4', + '\xB5', '\a', '<', '\x2', '\x2', '\xB5', '\xBB', '\a', '\t', '\x2', '\x2', + '\xB6', '\xB7', '\f', '\x4', '\x2', '\x2', '\xB7', '\xB8', '\a', '\b', + '\x2', '\x2', '\xB8', '\xB9', '\a', '=', '\x2', '\x2', '\xB9', '\xBB', + '\a', '\t', '\x2', '\x2', '\xBA', '\xAF', '\x3', '\x2', '\x2', '\x2', + '\xBA', '\xB2', '\x3', '\x2', '\x2', '\x2', '\xBA', '\xB6', '\x3', '\x2', + '\x2', '\x2', '\xBB', '\xBE', '\x3', '\x2', '\x2', '\x2', '\xBC', '\xBA', + '\x3', '\x2', '\x2', '\x2', '\xBC', '\xBD', '\x3', '\x2', '\x2', '\x2', + '\xBD', '\x1B', '\x3', '\x2', '\x2', '\x2', '\xBE', '\xBC', '\x3', '\x2', + '\x2', '\x2', '\xBF', '\xC0', '\a', ':', '\x2', '\x2', '\xC0', '\xC1', + '\x5', '.', '\x18', '\x2', '\xC1', '\x1D', '\x3', '\x2', '\x2', '\x2', + '\xC2', '\xC3', '\a', '*', '\x2', '\x2', '\xC3', '\xC4', '\a', '#', '\x2', + '\x2', '\xC4', '\xC5', '\x5', 'P', ')', '\x2', '\xC5', '\x1F', '\x3', + '\x2', '\x2', '\x2', '\xC6', '\xC7', '\a', '\x33', '\x2', '\x2', '\xC7', + '\xC8', '\a', '#', '\x2', '\x2', '\xC8', '\xC9', '\x5', '\"', '\x12', + '\x2', '\xC9', '!', '\x3', '\x2', '\x2', '\x2', '\xCA', '\xCF', '\x5', + '$', '\x13', '\x2', '\xCB', '\xCC', '\a', '\x4', '\x2', '\x2', '\xCC', + '\xCE', '\x5', '$', '\x13', '\x2', '\xCD', '\xCB', '\x3', '\x2', '\x2', + '\x2', '\xCE', '\xD1', '\x3', '\x2', '\x2', '\x2', '\xCF', '\xCD', '\x3', + '\x2', '\x2', '\x2', '\xCF', '\xD0', '\x3', '\x2', '\x2', '\x2', '\xD0', + '#', '\x3', '\x2', '\x2', '\x2', '\xD1', '\xCF', '\x3', '\x2', '\x2', + '\x2', '\xD2', '\xD4', '\x5', '.', '\x18', '\x2', '\xD3', '\xD5', '\x5', + '&', '\x14', '\x2', '\xD4', '\xD3', '\x3', '\x2', '\x2', '\x2', '\xD4', + '\xD5', '\x3', '\x2', '\x2', '\x2', '\xD5', '%', '\x3', '\x2', '\x2', + '\x2', '\xD6', '\xD7', '\t', '\x3', '\x2', '\x2', '\xD7', '\'', '\x3', + '\x2', '\x2', '\x2', '\xD8', '\xD9', '\a', '\x31', '\x2', '\x2', '\xD9', + '\xDA', '\x5', '*', '\x16', '\x2', '\xDA', '\xDB', '\a', '.', '\x2', '\x2', + '\xDB', '\xDC', '\x5', ',', '\x17', '\x2', '\xDC', ')', '\x3', '\x2', + '\x2', '\x2', '\xDD', '\xDE', '\t', '\x2', '\x2', '\x2', '\xDE', '+', + '\x3', '\x2', '\x2', '\x2', '\xDF', '\xE0', '\t', '\x2', '\x2', '\x2', + '\xE0', '-', '\x3', '\x2', '\x2', '\x2', '\xE1', '\xE2', '\b', '\x18', + '\x1', '\x2', '\xE2', '\xED', '\x5', '\x30', '\x19', '\x2', '\xE3', '\xE5', + '\x5', '\x38', '\x1D', '\x2', '\xE4', '\xE6', '\a', '/', '\x2', '\x2', + '\xE5', '\xE4', '\x3', '\x2', '\x2', '\x2', '\xE5', '\xE6', '\x3', '\x2', + '\x2', '\x2', '\xE6', '\xE7', '\x3', '\x2', '\x2', '\x2', '\xE7', '\xE8', + '\a', '\"', '\x2', '\x2', '\xE8', '\xE9', '\x5', '\x38', '\x1D', '\x2', + '\xE9', '\xEA', '\a', '\x1E', '\x2', '\x2', '\xEA', '\xEB', '\x5', '\x38', + '\x1D', '\x2', '\xEB', '\xED', '\x3', '\x2', '\x2', '\x2', '\xEC', '\xE1', + '\x3', '\x2', '\x2', '\x2', '\xEC', '\xE3', '\x3', '\x2', '\x2', '\x2', + '\xED', '\xF9', '\x3', '\x2', '\x2', '\x2', '\xEE', '\xEF', '\f', '\x6', + '\x2', '\x2', '\xEF', '\xF0', '\a', '\n', '\x2', '\x2', '\xF0', '\xF1', + '\x5', '.', '\x18', '\x2', '\xF1', '\xF2', '\a', '\v', '\x2', '\x2', '\xF2', + '\xF3', '\x5', '.', '\x18', '\a', '\xF3', '\xF8', '\x3', '\x2', '\x2', + '\x2', '\xF4', '\xF5', '\f', '\x5', '\x2', '\x2', '\xF5', '\xF6', '\a', + '\f', '\x2', '\x2', '\xF6', '\xF8', '\x5', '.', '\x18', '\x6', '\xF7', + '\xEE', '\x3', '\x2', '\x2', '\x2', '\xF7', '\xF4', '\x3', '\x2', '\x2', + '\x2', '\xF8', '\xFB', '\x3', '\x2', '\x2', '\x2', '\xF9', '\xF7', '\x3', + '\x2', '\x2', '\x2', '\xF9', '\xFA', '\x3', '\x2', '\x2', '\x2', '\xFA', + '/', '\x3', '\x2', '\x2', '\x2', '\xFB', '\xF9', '\x3', '\x2', '\x2', + '\x2', '\xFC', '\x100', '\x5', '\x38', '\x1D', '\x2', '\xFD', '\x100', + '\x5', '\x32', '\x1A', '\x2', '\xFE', '\x100', '\x5', '\x34', '\x1B', + '\x2', '\xFF', '\xFC', '\x3', '\x2', '\x2', '\x2', '\xFF', '\xFD', '\x3', + '\x2', '\x2', '\x2', '\xFF', '\xFE', '\x3', '\x2', '\x2', '\x2', '\x100', + '\x31', '\x3', '\x2', '\x2', '\x2', '\x101', '\x103', '\x5', '\x38', '\x1D', + '\x2', '\x102', '\x104', '\a', '/', '\x2', '\x2', '\x103', '\x102', '\x3', + '\x2', '\x2', '\x2', '\x103', '\x104', '\x3', '\x2', '\x2', '\x2', '\x104', + '\x105', '\x3', '\x2', '\x2', '\x2', '\x105', '\x106', '\a', '+', '\x2', + '\x2', '\x106', '\x107', '\a', '\x5', '\x2', '\x2', '\x107', '\x108', + '\x5', 'P', ')', '\x2', '\x108', '\x109', '\a', '\x6', '\x2', '\x2', '\x109', + '\x33', '\x3', '\x2', '\x2', '\x2', '\x10A', '\x10C', '\x5', '\x38', '\x1D', + '\x2', '\x10B', '\x10D', '\a', '/', '\x2', '\x2', '\x10C', '\x10B', '\x3', + '\x2', '\x2', '\x2', '\x10C', '\x10D', '\x3', '\x2', '\x2', '\x2', '\x10D', + '\x10E', '\x3', '\x2', '\x2', '\x2', '\x10E', '\x10F', '\a', '-', '\x2', + '\x2', '\x10F', '\x111', '\x5', '\x38', '\x1D', '\x2', '\x110', '\x112', + '\x5', '\x36', '\x1C', '\x2', '\x111', '\x110', '\x3', '\x2', '\x2', '\x2', + '\x111', '\x112', '\x3', '\x2', '\x2', '\x2', '\x112', '\x35', '\x3', + '\x2', '\x2', '\x2', '\x113', '\x114', '\a', '&', '\x2', '\x2', '\x114', + '\x115', '\a', '=', '\x2', '\x2', '\x115', '\x37', '\x3', '\x2', '\x2', + '\x2', '\x116', '\x117', '\b', '\x1D', '\x1', '\x2', '\x117', '\x118', + '\x5', 'J', '&', '\x2', '\x118', '\x141', '\x3', '\x2', '\x2', '\x2', + '\x119', '\x11A', '\f', '\f', '\x2', '\x2', '\x11A', '\x11B', '\x5', ':', + '\x1E', '\x2', '\x11B', '\x11C', '\x5', '\x38', '\x1D', '\r', '\x11C', + '\x140', '\x3', '\x2', '\x2', '\x2', '\x11D', '\x11E', '\f', '\v', '\x2', + '\x2', '\x11E', '\x11F', '\x5', '<', '\x1F', '\x2', '\x11F', '\x120', + '\x5', '\x38', '\x1D', '\f', '\x120', '\x140', '\x3', '\x2', '\x2', '\x2', + '\x121', '\x122', '\f', '\n', '\x2', '\x2', '\x122', '\x123', '\x5', '>', + ' ', '\x2', '\x123', '\x124', '\x5', '\x38', '\x1D', '\v', '\x124', '\x140', + '\x3', '\x2', '\x2', '\x2', '\x125', '\x126', '\f', '\t', '\x2', '\x2', + '\x126', '\x127', '\x5', '@', '!', '\x2', '\x127', '\x128', '\x5', '\x38', + '\x1D', '\n', '\x128', '\x140', '\x3', '\x2', '\x2', '\x2', '\x129', '\x12A', + '\f', '\b', '\x2', '\x2', '\x12A', '\x12B', '\x5', '\x42', '\"', '\x2', + '\x12B', '\x12C', '\x5', '\x38', '\x1D', '\t', '\x12C', '\x140', '\x3', + '\x2', '\x2', '\x2', '\x12D', '\x12E', '\f', '\a', '\x2', '\x2', '\x12E', + '\x12F', '\x5', '\x44', '#', '\x2', '\x12F', '\x130', '\x5', '\x38', '\x1D', + '\b', '\x130', '\x140', '\x3', '\x2', '\x2', '\x2', '\x131', '\x132', + '\f', '\x6', '\x2', '\x2', '\x132', '\x133', '\x5', '\x46', '$', '\x2', + '\x133', '\x134', '\x5', '\x38', '\x1D', '\a', '\x134', '\x140', '\x3', + '\x2', '\x2', '\x2', '\x135', '\x136', '\f', '\x5', '\x2', '\x2', '\x136', + '\x137', '\a', '\x1E', '\x2', '\x2', '\x137', '\x140', '\x5', '\x38', + '\x1D', '\x6', '\x138', '\x139', '\f', '\x4', '\x2', '\x2', '\x139', '\x13A', + '\a', '\x32', '\x2', '\x2', '\x13A', '\x140', '\x5', '\x38', '\x1D', '\x5', + '\x13B', '\x13C', '\f', '\x3', '\x2', '\x2', '\x13C', '\x13D', '\x5', + 'H', '%', '\x2', '\x13D', '\x13E', '\x5', '\x38', '\x1D', '\x4', '\x13E', + '\x140', '\x3', '\x2', '\x2', '\x2', '\x13F', '\x119', '\x3', '\x2', '\x2', + '\x2', '\x13F', '\x11D', '\x3', '\x2', '\x2', '\x2', '\x13F', '\x121', + '\x3', '\x2', '\x2', '\x2', '\x13F', '\x125', '\x3', '\x2', '\x2', '\x2', + '\x13F', '\x129', '\x3', '\x2', '\x2', '\x2', '\x13F', '\x12D', '\x3', + '\x2', '\x2', '\x2', '\x13F', '\x131', '\x3', '\x2', '\x2', '\x2', '\x13F', + '\x135', '\x3', '\x2', '\x2', '\x2', '\x13F', '\x138', '\x3', '\x2', '\x2', + '\x2', '\x13F', '\x13B', '\x3', '\x2', '\x2', '\x2', '\x140', '\x143', + '\x3', '\x2', '\x2', '\x2', '\x141', '\x13F', '\x3', '\x2', '\x2', '\x2', + '\x141', '\x142', '\x3', '\x2', '\x2', '\x2', '\x142', '\x39', '\x3', + '\x2', '\x2', '\x2', '\x143', '\x141', '\x3', '\x2', '\x2', '\x2', '\x144', + '\x145', '\t', '\x4', '\x2', '\x2', '\x145', ';', '\x3', '\x2', '\x2', + '\x2', '\x146', '\x147', '\t', '\x5', '\x2', '\x2', '\x147', '=', '\x3', + '\x2', '\x2', '\x2', '\x148', '\x149', '\t', '\x6', '\x2', '\x2', '\x149', + '?', '\x3', '\x2', '\x2', '\x2', '\x14A', '\x14B', '\t', '\a', '\x2', + '\x2', '\x14B', '\x41', '\x3', '\x2', '\x2', '\x2', '\x14C', '\x14D', + '\a', '\x17', '\x2', '\x2', '\x14D', '\x43', '\x3', '\x2', '\x2', '\x2', + '\x14E', '\x14F', '\a', '\x18', '\x2', '\x2', '\x14F', '\x45', '\x3', + '\x2', '\x2', '\x2', '\x150', '\x151', '\a', '\x19', '\x2', '\x2', '\x151', + 'G', '\x3', '\x2', '\x2', '\x2', '\x152', '\x153', '\a', '\x1A', '\x2', + '\x2', '\x153', 'I', '\x3', '\x2', '\x2', '\x2', '\x154', '\x159', '\x5', + 'N', '(', '\x2', '\x155', '\x156', '\x5', 'L', '\'', '\x2', '\x156', '\x157', + '\x5', 'J', '&', '\x2', '\x157', '\x159', '\x3', '\x2', '\x2', '\x2', + '\x158', '\x154', '\x3', '\x2', '\x2', '\x2', '\x158', '\x155', '\x3', + '\x2', '\x2', '\x2', '\x159', 'K', '\x3', '\x2', '\x2', '\x2', '\x15A', + '\x15B', '\t', '\b', '\x2', '\x2', '\x15B', 'M', '\x3', '\x2', '\x2', + '\x2', '\x15C', '\x15D', '\b', '(', '\x1', '\x2', '\x15D', '\x187', '\a', + '>', '\x2', '\x2', '\x15E', '\x187', '\a', '?', '\x2', '\x2', '\x15F', + '\x187', '\x5', 'V', ',', '\x2', '\x160', '\x162', '\a', '\b', '\x2', + '\x2', '\x161', '\x163', '\x5', 'P', ')', '\x2', '\x162', '\x161', '\x3', + '\x2', '\x2', '\x2', '\x162', '\x163', '\x3', '\x2', '\x2', '\x2', '\x163', + '\x164', '\x3', '\x2', '\x2', '\x2', '\x164', '\x187', '\a', '\t', '\x2', + '\x2', '\x165', '\x167', '\a', '\x1C', '\x2', '\x2', '\x166', '\x168', + '\x5', 'R', '*', '\x2', '\x167', '\x166', '\x3', '\x2', '\x2', '\x2', + '\x167', '\x168', '\x3', '\x2', '\x2', '\x2', '\x168', '\x169', '\x3', + '\x2', '\x2', '\x2', '\x169', '\x187', '\a', '\x1D', '\x2', '\x2', '\x16A', + '\x16B', '\a', '\x37', '\x2', '\x2', '\x16B', '\x16D', '\a', '\a', '\x2', + '\x2', '\x16C', '\x16A', '\x3', '\x2', '\x2', '\x2', '\x16C', '\x16D', + '\x3', '\x2', '\x2', '\x2', '\x16D', '\x16E', '\x3', '\x2', '\x2', '\x2', + '\x16E', '\x16F', '\a', '>', '\x2', '\x2', '\x16F', '\x171', '\a', '\x5', + '\x2', '\x2', '\x170', '\x172', '\x5', 'P', ')', '\x2', '\x171', '\x170', + '\x3', '\x2', '\x2', '\x2', '\x171', '\x172', '\x3', '\x2', '\x2', '\x2', + '\x172', '\x173', '\x3', '\x2', '\x2', '\x2', '\x173', '\x187', '\a', + '\x6', '\x2', '\x2', '\x174', '\x175', '\a', '\x5', '\x2', '\x2', '\x175', + '\x176', '\x5', '.', '\x18', '\x2', '\x176', '\x177', '\a', '\x6', '\x2', + '\x2', '\x177', '\x187', '\x3', '\x2', '\x2', '\x2', '\x178', '\x179', + '\a', '\x5', '\x2', '\x2', '\x179', '\x17A', '\x5', '\x4', '\x3', '\x2', + '\x17A', '\x17B', '\a', '\x6', '\x2', '\x2', '\x17B', '\x187', '\x3', + '\x2', '\x2', '\x2', '\x17C', '\x17D', '\a', '\'', '\x2', '\x2', '\x17D', + '\x17E', '\a', '\x5', '\x2', '\x2', '\x17E', '\x17F', '\x5', '\x4', '\x3', + '\x2', '\x17F', '\x180', '\a', '\x6', '\x2', '\x2', '\x180', '\x187', + '\x3', '\x2', '\x2', '\x2', '\x181', '\x182', '\a', '\x1F', '\x2', '\x2', + '\x182', '\x183', '\a', '\x5', '\x2', '\x2', '\x183', '\x184', '\x5', + '\x4', '\x3', '\x2', '\x184', '\x185', '\a', '\x6', '\x2', '\x2', '\x185', + '\x187', '\x3', '\x2', '\x2', '\x2', '\x186', '\x15C', '\x3', '\x2', '\x2', + '\x2', '\x186', '\x15E', '\x3', '\x2', '\x2', '\x2', '\x186', '\x15F', + '\x3', '\x2', '\x2', '\x2', '\x186', '\x160', '\x3', '\x2', '\x2', '\x2', + '\x186', '\x165', '\x3', '\x2', '\x2', '\x2', '\x186', '\x16C', '\x3', + '\x2', '\x2', '\x2', '\x186', '\x174', '\x3', '\x2', '\x2', '\x2', '\x186', + '\x178', '\x3', '\x2', '\x2', '\x2', '\x186', '\x17C', '\x3', '\x2', '\x2', + '\x2', '\x186', '\x181', '\x3', '\x2', '\x2', '\x2', '\x187', '\x192', + '\x3', '\x2', '\x2', '\x2', '\x188', '\x189', '\f', '\x6', '\x2', '\x2', + '\x189', '\x18A', '\a', '\a', '\x2', '\x2', '\x18A', '\x191', '\a', '>', + '\x2', '\x2', '\x18B', '\x18C', '\f', '\x5', '\x2', '\x2', '\x18C', '\x18D', + '\a', '\b', '\x2', '\x2', '\x18D', '\x18E', '\x5', '.', '\x18', '\x2', + '\x18E', '\x18F', '\a', '\t', '\x2', '\x2', '\x18F', '\x191', '\x3', '\x2', + '\x2', '\x2', '\x190', '\x188', '\x3', '\x2', '\x2', '\x2', '\x190', '\x18B', + '\x3', '\x2', '\x2', '\x2', '\x191', '\x194', '\x3', '\x2', '\x2', '\x2', + '\x192', '\x190', '\x3', '\x2', '\x2', '\x2', '\x192', '\x193', '\x3', + '\x2', '\x2', '\x2', '\x193', 'O', '\x3', '\x2', '\x2', '\x2', '\x194', + '\x192', '\x3', '\x2', '\x2', '\x2', '\x195', '\x19A', '\x5', '.', '\x18', + '\x2', '\x196', '\x197', '\a', '\x4', '\x2', '\x2', '\x197', '\x199', + '\x5', '.', '\x18', '\x2', '\x198', '\x196', '\x3', '\x2', '\x2', '\x2', + '\x199', '\x19C', '\x3', '\x2', '\x2', '\x2', '\x19A', '\x198', '\x3', + '\x2', '\x2', '\x2', '\x19A', '\x19B', '\x3', '\x2', '\x2', '\x2', '\x19B', + 'Q', '\x3', '\x2', '\x2', '\x2', '\x19C', '\x19A', '\x3', '\x2', '\x2', + '\x2', '\x19D', '\x1A2', '\x5', 'T', '+', '\x2', '\x19E', '\x19F', '\a', + '\x4', '\x2', '\x2', '\x19F', '\x1A1', '\x5', 'T', '+', '\x2', '\x1A0', + '\x19E', '\x3', '\x2', '\x2', '\x2', '\x1A1', '\x1A4', '\x3', '\x2', '\x2', + '\x2', '\x1A2', '\x1A0', '\x3', '\x2', '\x2', '\x2', '\x1A2', '\x1A3', + '\x3', '\x2', '\x2', '\x2', '\x1A3', 'S', '\x3', '\x2', '\x2', '\x2', + '\x1A4', '\x1A2', '\x3', '\x2', '\x2', '\x2', '\x1A5', '\x1A6', '\a', + '=', '\x2', '\x2', '\x1A6', '\x1A7', '\a', '\v', '\x2', '\x2', '\x1A7', + '\x1A8', '\x5', '.', '\x18', '\x2', '\x1A8', 'U', '\x3', '\x2', '\x2', + '\x2', '\x1A9', '\x1AA', '\t', '\t', '\x2', '\x2', '\x1AA', 'W', '\x3', + '\x2', '\x2', '\x2', ')', ']', '`', '\x63', '\x66', 'i', 'm', 'p', 'z', '\x86', '\x8C', '\x95', '\x9A', '\xA1', '\xA6', '\xAC', '\xBA', '\xBC', - '\xCF', '\xD4', '\xE5', '\xEC', '\xF7', '\xF9', '\x100', '\x108', '\x10A', - '\x10F', '\x118', '\x11D', '\x14B', '\x14D', '\x164', '\x16E', '\x173', - '\x178', '\x17D', '\x192', '\x19C', '\x19E', '\x1A6', '\x1AE', + '\xCF', '\xD4', '\xE5', '\xEC', '\xF7', '\xF9', '\xFF', '\x103', '\x10C', + '\x111', '\x13F', '\x141', '\x158', '\x162', '\x167', '\x16C', '\x171', + '\x186', '\x190', '\x192', '\x19A', '\x1A2', }; public static readonly ATN _ATN = From d0f075c4c528320be0624d0201a1ae405728326c Mon Sep 17 00:00:00 2001 From: Minh Le Date: Wed, 21 Apr 2021 01:39:50 -0700 Subject: [PATCH 15/15] make changes to grammar file again --- .../src/Query/Core/Parser/sql.g4 | 3 +- .../src/Query/Core/Parser/sqlLexer.cs | 568 +++++++++--------- 2 files changed, 287 insertions(+), 284 deletions(-) diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sql.g4 b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sql.g4 index 2cad7111a7..5e97e20e1b 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sql.g4 +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sql.g4 @@ -259,7 +259,8 @@ fragment SAFECODEPOINT ; IDENTIFIER - : [a-zA-Z_]([a-zA-Z_]|DIGIT)* + : + | [a-zA-Z_]([a-zA-Z_]|DIGIT)* ; PARAMETER diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlLexer.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlLexer.cs index c8273c4ce1..1de628b4b3 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlLexer.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlLexer.cs @@ -120,7 +120,7 @@ static sqlLexer() { } private static char[] _serializedATN = { '\x3', '\x608B', '\xA72A', '\x8133', '\xB9ED', '\x417C', '\x3BE7', '\x7786', - '\x5964', '\x2', '?', '\x232', '\b', '\x1', '\x4', '\x2', '\t', '\x2', + '\x5964', '\x2', '?', '\x235', '\b', '\x1', '\x4', '\x2', '\t', '\x2', '\x4', '\x3', '\t', '\x3', '\x4', '\x4', '\t', '\x4', '\x4', '\x5', '\t', '\x5', '\x4', '\x6', '\t', '\x6', '\x4', '\a', '\t', '\a', '\x4', '\b', '\t', '\b', '\x4', '\t', '\t', '\t', '\x4', '\n', '\t', '\n', '\x4', '\v', @@ -211,243 +211,243 @@ static sqlLexer() { '<', '\x1E1', '\n', '<', '\x3', '=', '\x3', '=', '\x3', '=', '\x5', '=', '\x1E6', '\n', '=', '\x3', '>', '\x3', '>', '\x3', '>', '\x3', '>', '\x3', '>', '\x3', '>', '\x3', '?', '\x3', '?', '\x3', '@', '\x3', '@', '\x3', - '\x41', '\x3', '\x41', '\x3', '\x41', '\a', '\x41', '\x1F5', '\n', '\x41', - '\f', '\x41', '\xE', '\x41', '\x1F8', '\v', '\x41', '\x3', '\x42', '\x3', - '\x42', '\x3', '\x42', '\x3', '\x43', '\x3', '\x43', '\x3', '\x44', '\x3', - '\x44', '\x3', '\x45', '\x3', '\x45', '\x3', '\x46', '\x3', '\x46', '\x3', - 'G', '\x3', 'G', '\x3', 'H', '\x3', 'H', '\x3', 'I', '\x3', 'I', '\x3', - 'J', '\x3', 'J', '\x3', 'K', '\x3', 'K', '\x3', 'L', '\x3', 'L', '\x3', - 'M', '\x3', 'M', '\x3', 'N', '\x3', 'N', '\x3', 'O', '\x3', 'O', '\x3', - 'P', '\x3', 'P', '\x3', 'Q', '\x3', 'Q', '\x3', 'R', '\x3', 'R', '\x3', - 'S', '\x3', 'S', '\x3', 'T', '\x3', 'T', '\x3', 'U', '\x3', 'U', '\x3', - 'V', '\x3', 'V', '\x3', 'W', '\x3', 'W', '\x3', 'X', '\x3', 'X', '\x3', - 'Y', '\x3', 'Y', '\x3', 'Z', '\x3', 'Z', '\x3', '[', '\x3', '[', '\x3', - '\\', '\x3', '\\', '\x3', ']', '\x3', ']', '\x2', '\x2', '^', '\x3', '\x3', - '\x5', '\x4', '\a', '\x5', '\t', '\x6', '\v', '\a', '\r', '\b', '\xF', - '\t', '\x11', '\n', '\x13', '\v', '\x15', '\f', '\x17', '\r', '\x19', - '\xE', '\x1B', '\xF', '\x1D', '\x10', '\x1F', '\x11', '!', '\x12', '#', - '\x13', '%', '\x14', '\'', '\x15', ')', '\x16', '+', '\x17', '-', '\x18', - '/', '\x19', '\x31', '\x1A', '\x33', '\x1B', '\x35', '\x1C', '\x37', '\x1D', - '\x39', '\x1E', ';', '\x1F', '=', ' ', '?', '!', '\x41', '\"', '\x43', - '#', '\x45', '$', 'G', '%', 'I', '&', 'K', '\'', 'M', '(', 'O', ')', 'Q', - '*', 'S', '+', 'U', ',', 'W', '-', 'Y', '.', '[', '/', ']', '\x30', '_', - '\x31', '\x61', '\x32', '\x63', '\x33', '\x65', '\x34', 'g', '\x35', 'i', - '\x36', 'k', '\x37', 'm', '\x38', 'o', '\x39', 'q', ':', 's', ';', 'u', - '<', 'w', '=', 'y', '\x2', '{', '\x2', '}', '\x2', '\x7F', '\x2', '\x81', - '>', '\x83', '?', '\x85', '\x2', '\x87', '\x2', '\x89', '\x2', '\x8B', - '\x2', '\x8D', '\x2', '\x8F', '\x2', '\x91', '\x2', '\x93', '\x2', '\x95', - '\x2', '\x97', '\x2', '\x99', '\x2', '\x9B', '\x2', '\x9D', '\x2', '\x9F', - '\x2', '\xA1', '\x2', '\xA3', '\x2', '\xA5', '\x2', '\xA7', '\x2', '\xA9', - '\x2', '\xAB', '\x2', '\xAD', '\x2', '\xAF', '\x2', '\xB1', '\x2', '\xB3', - '\x2', '\xB5', '\x2', '\xB7', '\x2', '\xB9', '\x2', '\x3', '\x2', '#', - '\x5', '\x2', '\v', '\f', '\xF', '\xF', '\"', '\"', '\x4', '\x2', '-', - '-', '/', '/', '\n', '\x2', '$', '$', '\x31', '\x31', '^', '^', '\x64', - '\x64', 'h', 'h', 'p', 'p', 't', 't', 'v', 'v', '\x5', '\x2', '\x32', - ';', '\x43', 'H', '\x63', 'h', '\x5', '\x2', '\x2', '!', '$', '$', '^', - '^', '\x5', '\x2', '\x43', '\\', '\x61', '\x61', '\x63', '|', '\x3', '\x2', - '\x32', ';', '\x4', '\x2', '\x43', '\x43', '\x63', '\x63', '\x4', '\x2', - '\x44', '\x44', '\x64', '\x64', '\x4', '\x2', '\x45', '\x45', '\x65', - '\x65', '\x4', '\x2', '\x46', '\x46', '\x66', '\x66', '\x4', '\x2', 'G', - 'G', 'g', 'g', '\x4', '\x2', 'H', 'H', 'h', 'h', '\x4', '\x2', 'I', 'I', - 'i', 'i', '\x4', '\x2', 'J', 'J', 'j', 'j', '\x4', '\x2', 'K', 'K', 'k', - 'k', '\x4', '\x2', 'L', 'L', 'l', 'l', '\x4', '\x2', 'M', 'M', 'm', 'm', - '\x4', '\x2', 'N', 'N', 'n', 'n', '\x4', '\x2', 'O', 'O', 'o', 'o', '\x4', - '\x2', 'P', 'P', 'p', 'p', '\x4', '\x2', 'Q', 'Q', 'q', 'q', '\x4', '\x2', - 'R', 'R', 'r', 'r', '\x4', '\x2', 'S', 'S', 's', 's', '\x4', '\x2', 'T', - 'T', 't', 't', '\x4', '\x2', 'U', 'U', 'u', 'u', '\x4', '\x2', 'V', 'V', - 'v', 'v', '\x4', '\x2', 'W', 'W', 'w', 'w', '\x4', '\x2', 'X', 'X', 'x', - 'x', '\x4', '\x2', 'Y', 'Y', 'y', 'y', '\x4', '\x2', 'Z', 'Z', 'z', 'z', - '\x4', '\x2', '[', '[', '{', '{', '\x4', '\x2', '\\', '\\', '|', '|', - '\x2', '\x228', '\x2', '\x3', '\x3', '\x2', '\x2', '\x2', '\x2', '\x5', - '\x3', '\x2', '\x2', '\x2', '\x2', '\a', '\x3', '\x2', '\x2', '\x2', '\x2', - '\t', '\x3', '\x2', '\x2', '\x2', '\x2', '\v', '\x3', '\x2', '\x2', '\x2', - '\x2', '\r', '\x3', '\x2', '\x2', '\x2', '\x2', '\xF', '\x3', '\x2', '\x2', - '\x2', '\x2', '\x11', '\x3', '\x2', '\x2', '\x2', '\x2', '\x13', '\x3', - '\x2', '\x2', '\x2', '\x2', '\x15', '\x3', '\x2', '\x2', '\x2', '\x2', - '\x17', '\x3', '\x2', '\x2', '\x2', '\x2', '\x19', '\x3', '\x2', '\x2', - '\x2', '\x2', '\x1B', '\x3', '\x2', '\x2', '\x2', '\x2', '\x1D', '\x3', - '\x2', '\x2', '\x2', '\x2', '\x1F', '\x3', '\x2', '\x2', '\x2', '\x2', - '!', '\x3', '\x2', '\x2', '\x2', '\x2', '#', '\x3', '\x2', '\x2', '\x2', - '\x2', '%', '\x3', '\x2', '\x2', '\x2', '\x2', '\'', '\x3', '\x2', '\x2', - '\x2', '\x2', ')', '\x3', '\x2', '\x2', '\x2', '\x2', '+', '\x3', '\x2', - '\x2', '\x2', '\x2', '-', '\x3', '\x2', '\x2', '\x2', '\x2', '/', '\x3', - '\x2', '\x2', '\x2', '\x2', '\x31', '\x3', '\x2', '\x2', '\x2', '\x2', - '\x33', '\x3', '\x2', '\x2', '\x2', '\x2', '\x35', '\x3', '\x2', '\x2', - '\x2', '\x2', '\x37', '\x3', '\x2', '\x2', '\x2', '\x2', '\x39', '\x3', - '\x2', '\x2', '\x2', '\x2', ';', '\x3', '\x2', '\x2', '\x2', '\x2', '=', - '\x3', '\x2', '\x2', '\x2', '\x2', '?', '\x3', '\x2', '\x2', '\x2', '\x2', - '\x41', '\x3', '\x2', '\x2', '\x2', '\x2', '\x43', '\x3', '\x2', '\x2', - '\x2', '\x2', '\x45', '\x3', '\x2', '\x2', '\x2', '\x2', 'G', '\x3', '\x2', - '\x2', '\x2', '\x2', 'I', '\x3', '\x2', '\x2', '\x2', '\x2', 'K', '\x3', - '\x2', '\x2', '\x2', '\x2', 'M', '\x3', '\x2', '\x2', '\x2', '\x2', 'O', - '\x3', '\x2', '\x2', '\x2', '\x2', 'Q', '\x3', '\x2', '\x2', '\x2', '\x2', - 'S', '\x3', '\x2', '\x2', '\x2', '\x2', 'U', '\x3', '\x2', '\x2', '\x2', - '\x2', 'W', '\x3', '\x2', '\x2', '\x2', '\x2', 'Y', '\x3', '\x2', '\x2', - '\x2', '\x2', '[', '\x3', '\x2', '\x2', '\x2', '\x2', ']', '\x3', '\x2', - '\x2', '\x2', '\x2', '_', '\x3', '\x2', '\x2', '\x2', '\x2', '\x61', '\x3', - '\x2', '\x2', '\x2', '\x2', '\x63', '\x3', '\x2', '\x2', '\x2', '\x2', - '\x65', '\x3', '\x2', '\x2', '\x2', '\x2', 'g', '\x3', '\x2', '\x2', '\x2', - '\x2', 'i', '\x3', '\x2', '\x2', '\x2', '\x2', 'k', '\x3', '\x2', '\x2', - '\x2', '\x2', 'm', '\x3', '\x2', '\x2', '\x2', '\x2', 'o', '\x3', '\x2', - '\x2', '\x2', '\x2', 'q', '\x3', '\x2', '\x2', '\x2', '\x2', 's', '\x3', - '\x2', '\x2', '\x2', '\x2', 'u', '\x3', '\x2', '\x2', '\x2', '\x2', 'w', - '\x3', '\x2', '\x2', '\x2', '\x2', '\x81', '\x3', '\x2', '\x2', '\x2', - '\x2', '\x83', '\x3', '\x2', '\x2', '\x2', '\x3', '\xBB', '\x3', '\x2', - '\x2', '\x2', '\x5', '\xBD', '\x3', '\x2', '\x2', '\x2', '\a', '\xBF', - '\x3', '\x2', '\x2', '\x2', '\t', '\xC1', '\x3', '\x2', '\x2', '\x2', - '\v', '\xC3', '\x3', '\x2', '\x2', '\x2', '\r', '\xC5', '\x3', '\x2', - '\x2', '\x2', '\xF', '\xC7', '\x3', '\x2', '\x2', '\x2', '\x11', '\xC9', - '\x3', '\x2', '\x2', '\x2', '\x13', '\xCB', '\x3', '\x2', '\x2', '\x2', - '\x15', '\xCD', '\x3', '\x2', '\x2', '\x2', '\x17', '\xD0', '\x3', '\x2', - '\x2', '\x2', '\x19', '\xD2', '\x3', '\x2', '\x2', '\x2', '\x1B', '\xD4', - '\x3', '\x2', '\x2', '\x2', '\x1D', '\xD6', '\x3', '\x2', '\x2', '\x2', - '\x1F', '\xD8', '\x3', '\x2', '\x2', '\x2', '!', '\xDA', '\x3', '\x2', - '\x2', '\x2', '#', '\xDC', '\x3', '\x2', '\x2', '\x2', '%', '\xDF', '\x3', - '\x2', '\x2', '\x2', '\'', '\xE2', '\x3', '\x2', '\x2', '\x2', ')', '\xE4', - '\x3', '\x2', '\x2', '\x2', '+', '\xE7', '\x3', '\x2', '\x2', '\x2', '-', - '\xE9', '\x3', '\x2', '\x2', '\x2', '/', '\xEB', '\x3', '\x2', '\x2', - '\x2', '\x31', '\xED', '\x3', '\x2', '\x2', '\x2', '\x33', '\xF0', '\x3', - '\x2', '\x2', '\x2', '\x35', '\xF2', '\x3', '\x2', '\x2', '\x2', '\x37', - '\xF4', '\x3', '\x2', '\x2', '\x2', '\x39', '\xF6', '\x3', '\x2', '\x2', - '\x2', ';', '\xFA', '\x3', '\x2', '\x2', '\x2', '=', '\x100', '\x3', '\x2', - '\x2', '\x2', '?', '\x103', '\x3', '\x2', '\x2', '\x2', '\x41', '\x107', - '\x3', '\x2', '\x2', '\x2', '\x43', '\x10F', '\x3', '\x2', '\x2', '\x2', - '\x45', '\x112', '\x3', '\x2', '\x2', '\x2', 'G', '\x117', '\x3', '\x2', - '\x2', '\x2', 'I', '\x120', '\x3', '\x2', '\x2', '\x2', 'K', '\x127', - '\x3', '\x2', '\x2', '\x2', 'M', '\x12E', '\x3', '\x2', '\x2', '\x2', - 'O', '\x134', '\x3', '\x2', '\x2', '\x2', 'Q', '\x139', '\x3', '\x2', - '\x2', '\x2', 'S', '\x13F', '\x3', '\x2', '\x2', '\x2', 'U', '\x142', - '\x3', '\x2', '\x2', '\x2', 'W', '\x147', '\x3', '\x2', '\x2', '\x2', - 'Y', '\x14C', '\x3', '\x2', '\x2', '\x2', '[', '\x152', '\x3', '\x2', - '\x2', '\x2', ']', '\x156', '\x3', '\x2', '\x2', '\x2', '_', '\x15B', - '\x3', '\x2', '\x2', '\x2', '\x61', '\x162', '\x3', '\x2', '\x2', '\x2', - '\x63', '\x165', '\x3', '\x2', '\x2', '\x2', '\x65', '\x16B', '\x3', '\x2', - '\x2', '\x2', 'g', '\x172', '\x3', '\x2', '\x2', '\x2', 'i', '\x176', - '\x3', '\x2', '\x2', '\x2', 'k', '\x17B', '\x3', '\x2', '\x2', '\x2', - 'm', '\x17F', '\x3', '\x2', '\x2', '\x2', 'o', '\x189', '\x3', '\x2', - '\x2', '\x2', 'q', '\x18F', '\x3', '\x2', '\x2', '\x2', 's', '\x196', - '\x3', '\x2', '\x2', '\x2', 'u', '\x1CC', '\x3', '\x2', '\x2', '\x2', - 'w', '\x1E0', '\x3', '\x2', '\x2', '\x2', 'y', '\x1E2', '\x3', '\x2', - '\x2', '\x2', '{', '\x1E7', '\x3', '\x2', '\x2', '\x2', '}', '\x1ED', - '\x3', '\x2', '\x2', '\x2', '\x7F', '\x1EF', '\x3', '\x2', '\x2', '\x2', - '\x81', '\x1F1', '\x3', '\x2', '\x2', '\x2', '\x83', '\x1F9', '\x3', '\x2', - '\x2', '\x2', '\x85', '\x1FC', '\x3', '\x2', '\x2', '\x2', '\x87', '\x1FE', - '\x3', '\x2', '\x2', '\x2', '\x89', '\x200', '\x3', '\x2', '\x2', '\x2', - '\x8B', '\x202', '\x3', '\x2', '\x2', '\x2', '\x8D', '\x204', '\x3', '\x2', - '\x2', '\x2', '\x8F', '\x206', '\x3', '\x2', '\x2', '\x2', '\x91', '\x208', - '\x3', '\x2', '\x2', '\x2', '\x93', '\x20A', '\x3', '\x2', '\x2', '\x2', - '\x95', '\x20C', '\x3', '\x2', '\x2', '\x2', '\x97', '\x20E', '\x3', '\x2', - '\x2', '\x2', '\x99', '\x210', '\x3', '\x2', '\x2', '\x2', '\x9B', '\x212', - '\x3', '\x2', '\x2', '\x2', '\x9D', '\x214', '\x3', '\x2', '\x2', '\x2', - '\x9F', '\x216', '\x3', '\x2', '\x2', '\x2', '\xA1', '\x218', '\x3', '\x2', - '\x2', '\x2', '\xA3', '\x21A', '\x3', '\x2', '\x2', '\x2', '\xA5', '\x21C', - '\x3', '\x2', '\x2', '\x2', '\xA7', '\x21E', '\x3', '\x2', '\x2', '\x2', - '\xA9', '\x220', '\x3', '\x2', '\x2', '\x2', '\xAB', '\x222', '\x3', '\x2', - '\x2', '\x2', '\xAD', '\x224', '\x3', '\x2', '\x2', '\x2', '\xAF', '\x226', - '\x3', '\x2', '\x2', '\x2', '\xB1', '\x228', '\x3', '\x2', '\x2', '\x2', - '\xB3', '\x22A', '\x3', '\x2', '\x2', '\x2', '\xB5', '\x22C', '\x3', '\x2', - '\x2', '\x2', '\xB7', '\x22E', '\x3', '\x2', '\x2', '\x2', '\xB9', '\x230', - '\x3', '\x2', '\x2', '\x2', '\xBB', '\xBC', '\a', ',', '\x2', '\x2', '\xBC', - '\x4', '\x3', '\x2', '\x2', '\x2', '\xBD', '\xBE', '\a', '.', '\x2', '\x2', - '\xBE', '\x6', '\x3', '\x2', '\x2', '\x2', '\xBF', '\xC0', '\a', '*', - '\x2', '\x2', '\xC0', '\b', '\x3', '\x2', '\x2', '\x2', '\xC1', '\xC2', - '\a', '+', '\x2', '\x2', '\xC2', '\n', '\x3', '\x2', '\x2', '\x2', '\xC3', - '\xC4', '\a', '\x30', '\x2', '\x2', '\xC4', '\f', '\x3', '\x2', '\x2', - '\x2', '\xC5', '\xC6', '\a', ']', '\x2', '\x2', '\xC6', '\xE', '\x3', - '\x2', '\x2', '\x2', '\xC7', '\xC8', '\a', '_', '\x2', '\x2', '\xC8', - '\x10', '\x3', '\x2', '\x2', '\x2', '\xC9', '\xCA', '\a', '\x41', '\x2', - '\x2', '\xCA', '\x12', '\x3', '\x2', '\x2', '\x2', '\xCB', '\xCC', '\a', - '<', '\x2', '\x2', '\xCC', '\x14', '\x3', '\x2', '\x2', '\x2', '\xCD', - '\xCE', '\a', '\x41', '\x2', '\x2', '\xCE', '\xCF', '\a', '\x41', '\x2', - '\x2', '\xCF', '\x16', '\x3', '\x2', '\x2', '\x2', '\xD0', '\xD1', '\a', - '\x31', '\x2', '\x2', '\xD1', '\x18', '\x3', '\x2', '\x2', '\x2', '\xD2', - '\xD3', '\a', '\'', '\x2', '\x2', '\xD3', '\x1A', '\x3', '\x2', '\x2', - '\x2', '\xD4', '\xD5', '\a', '-', '\x2', '\x2', '\xD5', '\x1C', '\x3', - '\x2', '\x2', '\x2', '\xD6', '\xD7', '\a', '/', '\x2', '\x2', '\xD7', - '\x1E', '\x3', '\x2', '\x2', '\x2', '\xD8', '\xD9', '\a', '>', '\x2', - '\x2', '\xD9', ' ', '\x3', '\x2', '\x2', '\x2', '\xDA', '\xDB', '\a', - '@', '\x2', '\x2', '\xDB', '\"', '\x3', '\x2', '\x2', '\x2', '\xDC', '\xDD', - '\a', '@', '\x2', '\x2', '\xDD', '\xDE', '\a', '?', '\x2', '\x2', '\xDE', - '$', '\x3', '\x2', '\x2', '\x2', '\xDF', '\xE0', '\a', '>', '\x2', '\x2', - '\xE0', '\xE1', '\a', '?', '\x2', '\x2', '\xE1', '&', '\x3', '\x2', '\x2', - '\x2', '\xE2', '\xE3', '\a', '?', '\x2', '\x2', '\xE3', '(', '\x3', '\x2', - '\x2', '\x2', '\xE4', '\xE5', '\a', '#', '\x2', '\x2', '\xE5', '\xE6', - '\a', '?', '\x2', '\x2', '\xE6', '*', '\x3', '\x2', '\x2', '\x2', '\xE7', - '\xE8', '\a', '(', '\x2', '\x2', '\xE8', ',', '\x3', '\x2', '\x2', '\x2', - '\xE9', '\xEA', '\a', '`', '\x2', '\x2', '\xEA', '.', '\x3', '\x2', '\x2', - '\x2', '\xEB', '\xEC', '\a', '~', '\x2', '\x2', '\xEC', '\x30', '\x3', - '\x2', '\x2', '\x2', '\xED', '\xEE', '\a', '~', '\x2', '\x2', '\xEE', - '\xEF', '\a', '~', '\x2', '\x2', '\xEF', '\x32', '\x3', '\x2', '\x2', - '\x2', '\xF0', '\xF1', '\a', '\x80', '\x2', '\x2', '\xF1', '\x34', '\x3', - '\x2', '\x2', '\x2', '\xF2', '\xF3', '\a', '}', '\x2', '\x2', '\xF3', - '\x36', '\x3', '\x2', '\x2', '\x2', '\xF4', '\xF5', '\a', '\x7F', '\x2', - '\x2', '\xF5', '\x38', '\x3', '\x2', '\x2', '\x2', '\xF6', '\xF7', '\x5', - '\x87', '\x44', '\x2', '\xF7', '\xF8', '\x5', '\xA1', 'Q', '\x2', '\xF8', - '\xF9', '\x5', '\x8D', 'G', '\x2', '\xF9', ':', '\x3', '\x2', '\x2', '\x2', - '\xFA', '\xFB', '\x5', '\x87', '\x44', '\x2', '\xFB', '\xFC', '\x5', '\xA9', - 'U', '\x2', '\xFC', '\xFD', '\x5', '\xA9', 'U', '\x2', '\xFD', '\xFE', - '\x5', '\x87', '\x44', '\x2', '\xFE', '\xFF', '\x5', '\xB7', '\\', '\x2', - '\xFF', '<', '\x3', '\x2', '\x2', '\x2', '\x100', '\x101', '\x5', '\x87', - '\x44', '\x2', '\x101', '\x102', '\x5', '\xAB', 'V', '\x2', '\x102', '>', - '\x3', '\x2', '\x2', '\x2', '\x103', '\x104', '\x5', '\x87', '\x44', '\x2', - '\x104', '\x105', '\x5', '\xAB', 'V', '\x2', '\x105', '\x106', '\x5', - '\x8B', '\x46', '\x2', '\x106', '@', '\x3', '\x2', '\x2', '\x2', '\x107', - '\x108', '\x5', '\x89', '\x45', '\x2', '\x108', '\x109', '\x5', '\x8F', - 'H', '\x2', '\x109', '\x10A', '\x5', '\xAD', 'W', '\x2', '\x10A', '\x10B', - '\x5', '\xB3', 'Z', '\x2', '\x10B', '\x10C', '\x5', '\x8F', 'H', '\x2', - '\x10C', '\x10D', '\x5', '\x8F', 'H', '\x2', '\x10D', '\x10E', '\x5', - '\xA1', 'Q', '\x2', '\x10E', '\x42', '\x3', '\x2', '\x2', '\x2', '\x10F', - '\x110', '\x5', '\x89', '\x45', '\x2', '\x110', '\x111', '\x5', '\xB7', - '\\', '\x2', '\x111', '\x44', '\x3', '\x2', '\x2', '\x2', '\x112', '\x113', - '\x5', '\x8D', 'G', '\x2', '\x113', '\x114', '\x5', '\x8F', 'H', '\x2', - '\x114', '\x115', '\x5', '\xAB', 'V', '\x2', '\x115', '\x116', '\x5', - '\x8B', '\x46', '\x2', '\x116', '\x46', '\x3', '\x2', '\x2', '\x2', '\x117', - '\x118', '\x5', '\x8D', 'G', '\x2', '\x118', '\x119', '\x5', '\x97', 'L', - '\x2', '\x119', '\x11A', '\x5', '\xAB', 'V', '\x2', '\x11A', '\x11B', - '\x5', '\xAD', 'W', '\x2', '\x11B', '\x11C', '\x5', '\x97', 'L', '\x2', - '\x11C', '\x11D', '\x5', '\xA1', 'Q', '\x2', '\x11D', '\x11E', '\x5', - '\x8B', '\x46', '\x2', '\x11E', '\x11F', '\x5', '\xAD', 'W', '\x2', '\x11F', - 'H', '\x3', '\x2', '\x2', '\x2', '\x120', '\x121', '\x5', '\x8F', 'H', - '\x2', '\x121', '\x122', '\x5', '\xAB', 'V', '\x2', '\x122', '\x123', - '\x5', '\x8B', '\x46', '\x2', '\x123', '\x124', '\x5', '\x87', '\x44', - '\x2', '\x124', '\x125', '\x5', '\xA5', 'S', '\x2', '\x125', '\x126', - '\x5', '\x8F', 'H', '\x2', '\x126', 'J', '\x3', '\x2', '\x2', '\x2', '\x127', - '\x128', '\x5', '\x8F', 'H', '\x2', '\x128', '\x129', '\x5', '\xB5', '[', - '\x2', '\x129', '\x12A', '\x5', '\x97', 'L', '\x2', '\x12A', '\x12B', - '\x5', '\xAB', 'V', '\x2', '\x12B', '\x12C', '\x5', '\xAD', 'W', '\x2', - '\x12C', '\x12D', '\x5', '\xAB', 'V', '\x2', '\x12D', 'L', '\x3', '\x2', - '\x2', '\x2', '\x12E', '\x12F', '\a', 'h', '\x2', '\x2', '\x12F', '\x130', - '\a', '\x63', '\x2', '\x2', '\x130', '\x131', '\a', 'n', '\x2', '\x2', - '\x131', '\x132', '\a', 'u', '\x2', '\x2', '\x132', '\x133', '\a', 'g', - '\x2', '\x2', '\x133', 'N', '\x3', '\x2', '\x2', '\x2', '\x134', '\x135', - '\x5', '\x91', 'I', '\x2', '\x135', '\x136', '\x5', '\xA9', 'U', '\x2', - '\x136', '\x137', '\x5', '\xA3', 'R', '\x2', '\x137', '\x138', '\x5', - '\x9F', 'P', '\x2', '\x138', 'P', '\x3', '\x2', '\x2', '\x2', '\x139', - '\x13A', '\x5', '\x93', 'J', '\x2', '\x13A', '\x13B', '\x5', '\xA9', 'U', - '\x2', '\x13B', '\x13C', '\x5', '\xA3', 'R', '\x2', '\x13C', '\x13D', - '\x5', '\xAF', 'X', '\x2', '\x13D', '\x13E', '\x5', '\xA5', 'S', '\x2', - '\x13E', 'R', '\x3', '\x2', '\x2', '\x2', '\x13F', '\x140', '\x5', '\x97', - 'L', '\x2', '\x140', '\x141', '\x5', '\xA1', 'Q', '\x2', '\x141', 'T', - '\x3', '\x2', '\x2', '\x2', '\x142', '\x143', '\x5', '\x99', 'M', '\x2', - '\x143', '\x144', '\x5', '\xA3', 'R', '\x2', '\x144', '\x145', '\x5', - '\x97', 'L', '\x2', '\x145', '\x146', '\x5', '\xA1', 'Q', '\x2', '\x146', - 'V', '\x3', '\x2', '\x2', '\x2', '\x147', '\x148', '\x5', '\x9D', 'O', - '\x2', '\x148', '\x149', '\x5', '\x97', 'L', '\x2', '\x149', '\x14A', - '\x5', '\x9B', 'N', '\x2', '\x14A', '\x14B', '\x5', '\x8F', 'H', '\x2', - '\x14B', 'X', '\x3', '\x2', '\x2', '\x2', '\x14C', '\x14D', '\x5', '\x9D', - 'O', '\x2', '\x14D', '\x14E', '\x5', '\x97', 'L', '\x2', '\x14E', '\x14F', - '\x5', '\x9F', 'P', '\x2', '\x14F', '\x150', '\x5', '\x97', 'L', '\x2', - '\x150', '\x151', '\x5', '\xAD', 'W', '\x2', '\x151', 'Z', '\x3', '\x2', - '\x2', '\x2', '\x152', '\x153', '\x5', '\xA1', 'Q', '\x2', '\x153', '\x154', - '\x5', '\xA3', 'R', '\x2', '\x154', '\x155', '\x5', '\xAD', 'W', '\x2', - '\x155', '\\', '\x3', '\x2', '\x2', '\x2', '\x156', '\x157', '\a', 'p', - '\x2', '\x2', '\x157', '\x158', '\a', 'w', '\x2', '\x2', '\x158', '\x159', - '\a', 'n', '\x2', '\x2', '\x159', '\x15A', '\a', 'n', '\x2', '\x2', '\x15A', - '^', '\x3', '\x2', '\x2', '\x2', '\x15B', '\x15C', '\x5', '\xA3', 'R', - '\x2', '\x15C', '\x15D', '\x5', '\x91', 'I', '\x2', '\x15D', '\x15E', - '\x5', '\x91', 'I', '\x2', '\x15E', '\x15F', '\x5', '\xAB', 'V', '\x2', - '\x15F', '\x160', '\x5', '\x8F', 'H', '\x2', '\x160', '\x161', '\x5', - '\xAD', 'W', '\x2', '\x161', '`', '\x3', '\x2', '\x2', '\x2', '\x162', + '\x41', '\x3', '\x41', '\x3', '\x41', '\x3', '\x41', '\a', '\x41', '\x1F6', + '\n', '\x41', '\f', '\x41', '\xE', '\x41', '\x1F9', '\v', '\x41', '\x5', + '\x41', '\x1FB', '\n', '\x41', '\x3', '\x42', '\x3', '\x42', '\x3', '\x42', + '\x3', '\x43', '\x3', '\x43', '\x3', '\x44', '\x3', '\x44', '\x3', '\x45', + '\x3', '\x45', '\x3', '\x46', '\x3', '\x46', '\x3', 'G', '\x3', 'G', '\x3', + 'H', '\x3', 'H', '\x3', 'I', '\x3', 'I', '\x3', 'J', '\x3', 'J', '\x3', + 'K', '\x3', 'K', '\x3', 'L', '\x3', 'L', '\x3', 'M', '\x3', 'M', '\x3', + 'N', '\x3', 'N', '\x3', 'O', '\x3', 'O', '\x3', 'P', '\x3', 'P', '\x3', + 'Q', '\x3', 'Q', '\x3', 'R', '\x3', 'R', '\x3', 'S', '\x3', 'S', '\x3', + 'T', '\x3', 'T', '\x3', 'U', '\x3', 'U', '\x3', 'V', '\x3', 'V', '\x3', + 'W', '\x3', 'W', '\x3', 'X', '\x3', 'X', '\x3', 'Y', '\x3', 'Y', '\x3', + 'Z', '\x3', 'Z', '\x3', '[', '\x3', '[', '\x3', '\\', '\x3', '\\', '\x3', + ']', '\x3', ']', '\x2', '\x2', '^', '\x3', '\x3', '\x5', '\x4', '\a', + '\x5', '\t', '\x6', '\v', '\a', '\r', '\b', '\xF', '\t', '\x11', '\n', + '\x13', '\v', '\x15', '\f', '\x17', '\r', '\x19', '\xE', '\x1B', '\xF', + '\x1D', '\x10', '\x1F', '\x11', '!', '\x12', '#', '\x13', '%', '\x14', + '\'', '\x15', ')', '\x16', '+', '\x17', '-', '\x18', '/', '\x19', '\x31', + '\x1A', '\x33', '\x1B', '\x35', '\x1C', '\x37', '\x1D', '\x39', '\x1E', + ';', '\x1F', '=', ' ', '?', '!', '\x41', '\"', '\x43', '#', '\x45', '$', + 'G', '%', 'I', '&', 'K', '\'', 'M', '(', 'O', ')', 'Q', '*', 'S', '+', + 'U', ',', 'W', '-', 'Y', '.', '[', '/', ']', '\x30', '_', '\x31', '\x61', + '\x32', '\x63', '\x33', '\x65', '\x34', 'g', '\x35', 'i', '\x36', 'k', + '\x37', 'm', '\x38', 'o', '\x39', 'q', ':', 's', ';', 'u', '<', 'w', '=', + 'y', '\x2', '{', '\x2', '}', '\x2', '\x7F', '\x2', '\x81', '>', '\x83', + '?', '\x85', '\x2', '\x87', '\x2', '\x89', '\x2', '\x8B', '\x2', '\x8D', + '\x2', '\x8F', '\x2', '\x91', '\x2', '\x93', '\x2', '\x95', '\x2', '\x97', + '\x2', '\x99', '\x2', '\x9B', '\x2', '\x9D', '\x2', '\x9F', '\x2', '\xA1', + '\x2', '\xA3', '\x2', '\xA5', '\x2', '\xA7', '\x2', '\xA9', '\x2', '\xAB', + '\x2', '\xAD', '\x2', '\xAF', '\x2', '\xB1', '\x2', '\xB3', '\x2', '\xB5', + '\x2', '\xB7', '\x2', '\xB9', '\x2', '\x3', '\x2', '#', '\x5', '\x2', + '\v', '\f', '\xF', '\xF', '\"', '\"', '\x4', '\x2', '-', '-', '/', '/', + '\n', '\x2', '$', '$', '\x31', '\x31', '^', '^', '\x64', '\x64', 'h', + 'h', 'p', 'p', 't', 't', 'v', 'v', '\x5', '\x2', '\x32', ';', '\x43', + 'H', '\x63', 'h', '\x5', '\x2', '\x2', '!', '$', '$', '^', '^', '\x5', + '\x2', '\x43', '\\', '\x61', '\x61', '\x63', '|', '\x3', '\x2', '\x32', + ';', '\x4', '\x2', '\x43', '\x43', '\x63', '\x63', '\x4', '\x2', '\x44', + '\x44', '\x64', '\x64', '\x4', '\x2', '\x45', '\x45', '\x65', '\x65', + '\x4', '\x2', '\x46', '\x46', '\x66', '\x66', '\x4', '\x2', 'G', 'G', + 'g', 'g', '\x4', '\x2', 'H', 'H', 'h', 'h', '\x4', '\x2', 'I', 'I', 'i', + 'i', '\x4', '\x2', 'J', 'J', 'j', 'j', '\x4', '\x2', 'K', 'K', 'k', 'k', + '\x4', '\x2', 'L', 'L', 'l', 'l', '\x4', '\x2', 'M', 'M', 'm', 'm', '\x4', + '\x2', 'N', 'N', 'n', 'n', '\x4', '\x2', 'O', 'O', 'o', 'o', '\x4', '\x2', + 'P', 'P', 'p', 'p', '\x4', '\x2', 'Q', 'Q', 'q', 'q', '\x4', '\x2', 'R', + 'R', 'r', 'r', '\x4', '\x2', 'S', 'S', 's', 's', '\x4', '\x2', 'T', 'T', + 't', 't', '\x4', '\x2', 'U', 'U', 'u', 'u', '\x4', '\x2', 'V', 'V', 'v', + 'v', '\x4', '\x2', 'W', 'W', 'w', 'w', '\x4', '\x2', 'X', 'X', 'x', 'x', + '\x4', '\x2', 'Y', 'Y', 'y', 'y', '\x4', '\x2', 'Z', 'Z', 'z', 'z', '\x4', + '\x2', '[', '[', '{', '{', '\x4', '\x2', '\\', '\\', '|', '|', '\x2', + '\x22C', '\x2', '\x3', '\x3', '\x2', '\x2', '\x2', '\x2', '\x5', '\x3', + '\x2', '\x2', '\x2', '\x2', '\a', '\x3', '\x2', '\x2', '\x2', '\x2', '\t', + '\x3', '\x2', '\x2', '\x2', '\x2', '\v', '\x3', '\x2', '\x2', '\x2', '\x2', + '\r', '\x3', '\x2', '\x2', '\x2', '\x2', '\xF', '\x3', '\x2', '\x2', '\x2', + '\x2', '\x11', '\x3', '\x2', '\x2', '\x2', '\x2', '\x13', '\x3', '\x2', + '\x2', '\x2', '\x2', '\x15', '\x3', '\x2', '\x2', '\x2', '\x2', '\x17', + '\x3', '\x2', '\x2', '\x2', '\x2', '\x19', '\x3', '\x2', '\x2', '\x2', + '\x2', '\x1B', '\x3', '\x2', '\x2', '\x2', '\x2', '\x1D', '\x3', '\x2', + '\x2', '\x2', '\x2', '\x1F', '\x3', '\x2', '\x2', '\x2', '\x2', '!', '\x3', + '\x2', '\x2', '\x2', '\x2', '#', '\x3', '\x2', '\x2', '\x2', '\x2', '%', + '\x3', '\x2', '\x2', '\x2', '\x2', '\'', '\x3', '\x2', '\x2', '\x2', '\x2', + ')', '\x3', '\x2', '\x2', '\x2', '\x2', '+', '\x3', '\x2', '\x2', '\x2', + '\x2', '-', '\x3', '\x2', '\x2', '\x2', '\x2', '/', '\x3', '\x2', '\x2', + '\x2', '\x2', '\x31', '\x3', '\x2', '\x2', '\x2', '\x2', '\x33', '\x3', + '\x2', '\x2', '\x2', '\x2', '\x35', '\x3', '\x2', '\x2', '\x2', '\x2', + '\x37', '\x3', '\x2', '\x2', '\x2', '\x2', '\x39', '\x3', '\x2', '\x2', + '\x2', '\x2', ';', '\x3', '\x2', '\x2', '\x2', '\x2', '=', '\x3', '\x2', + '\x2', '\x2', '\x2', '?', '\x3', '\x2', '\x2', '\x2', '\x2', '\x41', '\x3', + '\x2', '\x2', '\x2', '\x2', '\x43', '\x3', '\x2', '\x2', '\x2', '\x2', + '\x45', '\x3', '\x2', '\x2', '\x2', '\x2', 'G', '\x3', '\x2', '\x2', '\x2', + '\x2', 'I', '\x3', '\x2', '\x2', '\x2', '\x2', 'K', '\x3', '\x2', '\x2', + '\x2', '\x2', 'M', '\x3', '\x2', '\x2', '\x2', '\x2', 'O', '\x3', '\x2', + '\x2', '\x2', '\x2', 'Q', '\x3', '\x2', '\x2', '\x2', '\x2', 'S', '\x3', + '\x2', '\x2', '\x2', '\x2', 'U', '\x3', '\x2', '\x2', '\x2', '\x2', 'W', + '\x3', '\x2', '\x2', '\x2', '\x2', 'Y', '\x3', '\x2', '\x2', '\x2', '\x2', + '[', '\x3', '\x2', '\x2', '\x2', '\x2', ']', '\x3', '\x2', '\x2', '\x2', + '\x2', '_', '\x3', '\x2', '\x2', '\x2', '\x2', '\x61', '\x3', '\x2', '\x2', + '\x2', '\x2', '\x63', '\x3', '\x2', '\x2', '\x2', '\x2', '\x65', '\x3', + '\x2', '\x2', '\x2', '\x2', 'g', '\x3', '\x2', '\x2', '\x2', '\x2', 'i', + '\x3', '\x2', '\x2', '\x2', '\x2', 'k', '\x3', '\x2', '\x2', '\x2', '\x2', + 'm', '\x3', '\x2', '\x2', '\x2', '\x2', 'o', '\x3', '\x2', '\x2', '\x2', + '\x2', 'q', '\x3', '\x2', '\x2', '\x2', '\x2', 's', '\x3', '\x2', '\x2', + '\x2', '\x2', 'u', '\x3', '\x2', '\x2', '\x2', '\x2', 'w', '\x3', '\x2', + '\x2', '\x2', '\x2', '\x81', '\x3', '\x2', '\x2', '\x2', '\x2', '\x83', + '\x3', '\x2', '\x2', '\x2', '\x3', '\xBB', '\x3', '\x2', '\x2', '\x2', + '\x5', '\xBD', '\x3', '\x2', '\x2', '\x2', '\a', '\xBF', '\x3', '\x2', + '\x2', '\x2', '\t', '\xC1', '\x3', '\x2', '\x2', '\x2', '\v', '\xC3', + '\x3', '\x2', '\x2', '\x2', '\r', '\xC5', '\x3', '\x2', '\x2', '\x2', + '\xF', '\xC7', '\x3', '\x2', '\x2', '\x2', '\x11', '\xC9', '\x3', '\x2', + '\x2', '\x2', '\x13', '\xCB', '\x3', '\x2', '\x2', '\x2', '\x15', '\xCD', + '\x3', '\x2', '\x2', '\x2', '\x17', '\xD0', '\x3', '\x2', '\x2', '\x2', + '\x19', '\xD2', '\x3', '\x2', '\x2', '\x2', '\x1B', '\xD4', '\x3', '\x2', + '\x2', '\x2', '\x1D', '\xD6', '\x3', '\x2', '\x2', '\x2', '\x1F', '\xD8', + '\x3', '\x2', '\x2', '\x2', '!', '\xDA', '\x3', '\x2', '\x2', '\x2', '#', + '\xDC', '\x3', '\x2', '\x2', '\x2', '%', '\xDF', '\x3', '\x2', '\x2', + '\x2', '\'', '\xE2', '\x3', '\x2', '\x2', '\x2', ')', '\xE4', '\x3', '\x2', + '\x2', '\x2', '+', '\xE7', '\x3', '\x2', '\x2', '\x2', '-', '\xE9', '\x3', + '\x2', '\x2', '\x2', '/', '\xEB', '\x3', '\x2', '\x2', '\x2', '\x31', + '\xED', '\x3', '\x2', '\x2', '\x2', '\x33', '\xF0', '\x3', '\x2', '\x2', + '\x2', '\x35', '\xF2', '\x3', '\x2', '\x2', '\x2', '\x37', '\xF4', '\x3', + '\x2', '\x2', '\x2', '\x39', '\xF6', '\x3', '\x2', '\x2', '\x2', ';', + '\xFA', '\x3', '\x2', '\x2', '\x2', '=', '\x100', '\x3', '\x2', '\x2', + '\x2', '?', '\x103', '\x3', '\x2', '\x2', '\x2', '\x41', '\x107', '\x3', + '\x2', '\x2', '\x2', '\x43', '\x10F', '\x3', '\x2', '\x2', '\x2', '\x45', + '\x112', '\x3', '\x2', '\x2', '\x2', 'G', '\x117', '\x3', '\x2', '\x2', + '\x2', 'I', '\x120', '\x3', '\x2', '\x2', '\x2', 'K', '\x127', '\x3', + '\x2', '\x2', '\x2', 'M', '\x12E', '\x3', '\x2', '\x2', '\x2', 'O', '\x134', + '\x3', '\x2', '\x2', '\x2', 'Q', '\x139', '\x3', '\x2', '\x2', '\x2', + 'S', '\x13F', '\x3', '\x2', '\x2', '\x2', 'U', '\x142', '\x3', '\x2', + '\x2', '\x2', 'W', '\x147', '\x3', '\x2', '\x2', '\x2', 'Y', '\x14C', + '\x3', '\x2', '\x2', '\x2', '[', '\x152', '\x3', '\x2', '\x2', '\x2', + ']', '\x156', '\x3', '\x2', '\x2', '\x2', '_', '\x15B', '\x3', '\x2', + '\x2', '\x2', '\x61', '\x162', '\x3', '\x2', '\x2', '\x2', '\x63', '\x165', + '\x3', '\x2', '\x2', '\x2', '\x65', '\x16B', '\x3', '\x2', '\x2', '\x2', + 'g', '\x172', '\x3', '\x2', '\x2', '\x2', 'i', '\x176', '\x3', '\x2', + '\x2', '\x2', 'k', '\x17B', '\x3', '\x2', '\x2', '\x2', 'm', '\x17F', + '\x3', '\x2', '\x2', '\x2', 'o', '\x189', '\x3', '\x2', '\x2', '\x2', + 'q', '\x18F', '\x3', '\x2', '\x2', '\x2', 's', '\x196', '\x3', '\x2', + '\x2', '\x2', 'u', '\x1CC', '\x3', '\x2', '\x2', '\x2', 'w', '\x1E0', + '\x3', '\x2', '\x2', '\x2', 'y', '\x1E2', '\x3', '\x2', '\x2', '\x2', + '{', '\x1E7', '\x3', '\x2', '\x2', '\x2', '}', '\x1ED', '\x3', '\x2', + '\x2', '\x2', '\x7F', '\x1EF', '\x3', '\x2', '\x2', '\x2', '\x81', '\x1FA', + '\x3', '\x2', '\x2', '\x2', '\x83', '\x1FC', '\x3', '\x2', '\x2', '\x2', + '\x85', '\x1FF', '\x3', '\x2', '\x2', '\x2', '\x87', '\x201', '\x3', '\x2', + '\x2', '\x2', '\x89', '\x203', '\x3', '\x2', '\x2', '\x2', '\x8B', '\x205', + '\x3', '\x2', '\x2', '\x2', '\x8D', '\x207', '\x3', '\x2', '\x2', '\x2', + '\x8F', '\x209', '\x3', '\x2', '\x2', '\x2', '\x91', '\x20B', '\x3', '\x2', + '\x2', '\x2', '\x93', '\x20D', '\x3', '\x2', '\x2', '\x2', '\x95', '\x20F', + '\x3', '\x2', '\x2', '\x2', '\x97', '\x211', '\x3', '\x2', '\x2', '\x2', + '\x99', '\x213', '\x3', '\x2', '\x2', '\x2', '\x9B', '\x215', '\x3', '\x2', + '\x2', '\x2', '\x9D', '\x217', '\x3', '\x2', '\x2', '\x2', '\x9F', '\x219', + '\x3', '\x2', '\x2', '\x2', '\xA1', '\x21B', '\x3', '\x2', '\x2', '\x2', + '\xA3', '\x21D', '\x3', '\x2', '\x2', '\x2', '\xA5', '\x21F', '\x3', '\x2', + '\x2', '\x2', '\xA7', '\x221', '\x3', '\x2', '\x2', '\x2', '\xA9', '\x223', + '\x3', '\x2', '\x2', '\x2', '\xAB', '\x225', '\x3', '\x2', '\x2', '\x2', + '\xAD', '\x227', '\x3', '\x2', '\x2', '\x2', '\xAF', '\x229', '\x3', '\x2', + '\x2', '\x2', '\xB1', '\x22B', '\x3', '\x2', '\x2', '\x2', '\xB3', '\x22D', + '\x3', '\x2', '\x2', '\x2', '\xB5', '\x22F', '\x3', '\x2', '\x2', '\x2', + '\xB7', '\x231', '\x3', '\x2', '\x2', '\x2', '\xB9', '\x233', '\x3', '\x2', + '\x2', '\x2', '\xBB', '\xBC', '\a', ',', '\x2', '\x2', '\xBC', '\x4', + '\x3', '\x2', '\x2', '\x2', '\xBD', '\xBE', '\a', '.', '\x2', '\x2', '\xBE', + '\x6', '\x3', '\x2', '\x2', '\x2', '\xBF', '\xC0', '\a', '*', '\x2', '\x2', + '\xC0', '\b', '\x3', '\x2', '\x2', '\x2', '\xC1', '\xC2', '\a', '+', '\x2', + '\x2', '\xC2', '\n', '\x3', '\x2', '\x2', '\x2', '\xC3', '\xC4', '\a', + '\x30', '\x2', '\x2', '\xC4', '\f', '\x3', '\x2', '\x2', '\x2', '\xC5', + '\xC6', '\a', ']', '\x2', '\x2', '\xC6', '\xE', '\x3', '\x2', '\x2', '\x2', + '\xC7', '\xC8', '\a', '_', '\x2', '\x2', '\xC8', '\x10', '\x3', '\x2', + '\x2', '\x2', '\xC9', '\xCA', '\a', '\x41', '\x2', '\x2', '\xCA', '\x12', + '\x3', '\x2', '\x2', '\x2', '\xCB', '\xCC', '\a', '<', '\x2', '\x2', '\xCC', + '\x14', '\x3', '\x2', '\x2', '\x2', '\xCD', '\xCE', '\a', '\x41', '\x2', + '\x2', '\xCE', '\xCF', '\a', '\x41', '\x2', '\x2', '\xCF', '\x16', '\x3', + '\x2', '\x2', '\x2', '\xD0', '\xD1', '\a', '\x31', '\x2', '\x2', '\xD1', + '\x18', '\x3', '\x2', '\x2', '\x2', '\xD2', '\xD3', '\a', '\'', '\x2', + '\x2', '\xD3', '\x1A', '\x3', '\x2', '\x2', '\x2', '\xD4', '\xD5', '\a', + '-', '\x2', '\x2', '\xD5', '\x1C', '\x3', '\x2', '\x2', '\x2', '\xD6', + '\xD7', '\a', '/', '\x2', '\x2', '\xD7', '\x1E', '\x3', '\x2', '\x2', + '\x2', '\xD8', '\xD9', '\a', '>', '\x2', '\x2', '\xD9', ' ', '\x3', '\x2', + '\x2', '\x2', '\xDA', '\xDB', '\a', '@', '\x2', '\x2', '\xDB', '\"', '\x3', + '\x2', '\x2', '\x2', '\xDC', '\xDD', '\a', '@', '\x2', '\x2', '\xDD', + '\xDE', '\a', '?', '\x2', '\x2', '\xDE', '$', '\x3', '\x2', '\x2', '\x2', + '\xDF', '\xE0', '\a', '>', '\x2', '\x2', '\xE0', '\xE1', '\a', '?', '\x2', + '\x2', '\xE1', '&', '\x3', '\x2', '\x2', '\x2', '\xE2', '\xE3', '\a', + '?', '\x2', '\x2', '\xE3', '(', '\x3', '\x2', '\x2', '\x2', '\xE4', '\xE5', + '\a', '#', '\x2', '\x2', '\xE5', '\xE6', '\a', '?', '\x2', '\x2', '\xE6', + '*', '\x3', '\x2', '\x2', '\x2', '\xE7', '\xE8', '\a', '(', '\x2', '\x2', + '\xE8', ',', '\x3', '\x2', '\x2', '\x2', '\xE9', '\xEA', '\a', '`', '\x2', + '\x2', '\xEA', '.', '\x3', '\x2', '\x2', '\x2', '\xEB', '\xEC', '\a', + '~', '\x2', '\x2', '\xEC', '\x30', '\x3', '\x2', '\x2', '\x2', '\xED', + '\xEE', '\a', '~', '\x2', '\x2', '\xEE', '\xEF', '\a', '~', '\x2', '\x2', + '\xEF', '\x32', '\x3', '\x2', '\x2', '\x2', '\xF0', '\xF1', '\a', '\x80', + '\x2', '\x2', '\xF1', '\x34', '\x3', '\x2', '\x2', '\x2', '\xF2', '\xF3', + '\a', '}', '\x2', '\x2', '\xF3', '\x36', '\x3', '\x2', '\x2', '\x2', '\xF4', + '\xF5', '\a', '\x7F', '\x2', '\x2', '\xF5', '\x38', '\x3', '\x2', '\x2', + '\x2', '\xF6', '\xF7', '\x5', '\x87', '\x44', '\x2', '\xF7', '\xF8', '\x5', + '\xA1', 'Q', '\x2', '\xF8', '\xF9', '\x5', '\x8D', 'G', '\x2', '\xF9', + ':', '\x3', '\x2', '\x2', '\x2', '\xFA', '\xFB', '\x5', '\x87', '\x44', + '\x2', '\xFB', '\xFC', '\x5', '\xA9', 'U', '\x2', '\xFC', '\xFD', '\x5', + '\xA9', 'U', '\x2', '\xFD', '\xFE', '\x5', '\x87', '\x44', '\x2', '\xFE', + '\xFF', '\x5', '\xB7', '\\', '\x2', '\xFF', '<', '\x3', '\x2', '\x2', + '\x2', '\x100', '\x101', '\x5', '\x87', '\x44', '\x2', '\x101', '\x102', + '\x5', '\xAB', 'V', '\x2', '\x102', '>', '\x3', '\x2', '\x2', '\x2', '\x103', + '\x104', '\x5', '\x87', '\x44', '\x2', '\x104', '\x105', '\x5', '\xAB', + 'V', '\x2', '\x105', '\x106', '\x5', '\x8B', '\x46', '\x2', '\x106', '@', + '\x3', '\x2', '\x2', '\x2', '\x107', '\x108', '\x5', '\x89', '\x45', '\x2', + '\x108', '\x109', '\x5', '\x8F', 'H', '\x2', '\x109', '\x10A', '\x5', + '\xAD', 'W', '\x2', '\x10A', '\x10B', '\x5', '\xB3', 'Z', '\x2', '\x10B', + '\x10C', '\x5', '\x8F', 'H', '\x2', '\x10C', '\x10D', '\x5', '\x8F', 'H', + '\x2', '\x10D', '\x10E', '\x5', '\xA1', 'Q', '\x2', '\x10E', '\x42', '\x3', + '\x2', '\x2', '\x2', '\x10F', '\x110', '\x5', '\x89', '\x45', '\x2', '\x110', + '\x111', '\x5', '\xB7', '\\', '\x2', '\x111', '\x44', '\x3', '\x2', '\x2', + '\x2', '\x112', '\x113', '\x5', '\x8D', 'G', '\x2', '\x113', '\x114', + '\x5', '\x8F', 'H', '\x2', '\x114', '\x115', '\x5', '\xAB', 'V', '\x2', + '\x115', '\x116', '\x5', '\x8B', '\x46', '\x2', '\x116', '\x46', '\x3', + '\x2', '\x2', '\x2', '\x117', '\x118', '\x5', '\x8D', 'G', '\x2', '\x118', + '\x119', '\x5', '\x97', 'L', '\x2', '\x119', '\x11A', '\x5', '\xAB', 'V', + '\x2', '\x11A', '\x11B', '\x5', '\xAD', 'W', '\x2', '\x11B', '\x11C', + '\x5', '\x97', 'L', '\x2', '\x11C', '\x11D', '\x5', '\xA1', 'Q', '\x2', + '\x11D', '\x11E', '\x5', '\x8B', '\x46', '\x2', '\x11E', '\x11F', '\x5', + '\xAD', 'W', '\x2', '\x11F', 'H', '\x3', '\x2', '\x2', '\x2', '\x120', + '\x121', '\x5', '\x8F', 'H', '\x2', '\x121', '\x122', '\x5', '\xAB', 'V', + '\x2', '\x122', '\x123', '\x5', '\x8B', '\x46', '\x2', '\x123', '\x124', + '\x5', '\x87', '\x44', '\x2', '\x124', '\x125', '\x5', '\xA5', 'S', '\x2', + '\x125', '\x126', '\x5', '\x8F', 'H', '\x2', '\x126', 'J', '\x3', '\x2', + '\x2', '\x2', '\x127', '\x128', '\x5', '\x8F', 'H', '\x2', '\x128', '\x129', + '\x5', '\xB5', '[', '\x2', '\x129', '\x12A', '\x5', '\x97', 'L', '\x2', + '\x12A', '\x12B', '\x5', '\xAB', 'V', '\x2', '\x12B', '\x12C', '\x5', + '\xAD', 'W', '\x2', '\x12C', '\x12D', '\x5', '\xAB', 'V', '\x2', '\x12D', + 'L', '\x3', '\x2', '\x2', '\x2', '\x12E', '\x12F', '\a', 'h', '\x2', '\x2', + '\x12F', '\x130', '\a', '\x63', '\x2', '\x2', '\x130', '\x131', '\a', + 'n', '\x2', '\x2', '\x131', '\x132', '\a', 'u', '\x2', '\x2', '\x132', + '\x133', '\a', 'g', '\x2', '\x2', '\x133', 'N', '\x3', '\x2', '\x2', '\x2', + '\x134', '\x135', '\x5', '\x91', 'I', '\x2', '\x135', '\x136', '\x5', + '\xA9', 'U', '\x2', '\x136', '\x137', '\x5', '\xA3', 'R', '\x2', '\x137', + '\x138', '\x5', '\x9F', 'P', '\x2', '\x138', 'P', '\x3', '\x2', '\x2', + '\x2', '\x139', '\x13A', '\x5', '\x93', 'J', '\x2', '\x13A', '\x13B', + '\x5', '\xA9', 'U', '\x2', '\x13B', '\x13C', '\x5', '\xA3', 'R', '\x2', + '\x13C', '\x13D', '\x5', '\xAF', 'X', '\x2', '\x13D', '\x13E', '\x5', + '\xA5', 'S', '\x2', '\x13E', 'R', '\x3', '\x2', '\x2', '\x2', '\x13F', + '\x140', '\x5', '\x97', 'L', '\x2', '\x140', '\x141', '\x5', '\xA1', 'Q', + '\x2', '\x141', 'T', '\x3', '\x2', '\x2', '\x2', '\x142', '\x143', '\x5', + '\x99', 'M', '\x2', '\x143', '\x144', '\x5', '\xA3', 'R', '\x2', '\x144', + '\x145', '\x5', '\x97', 'L', '\x2', '\x145', '\x146', '\x5', '\xA1', 'Q', + '\x2', '\x146', 'V', '\x3', '\x2', '\x2', '\x2', '\x147', '\x148', '\x5', + '\x9D', 'O', '\x2', '\x148', '\x149', '\x5', '\x97', 'L', '\x2', '\x149', + '\x14A', '\x5', '\x9B', 'N', '\x2', '\x14A', '\x14B', '\x5', '\x8F', 'H', + '\x2', '\x14B', 'X', '\x3', '\x2', '\x2', '\x2', '\x14C', '\x14D', '\x5', + '\x9D', 'O', '\x2', '\x14D', '\x14E', '\x5', '\x97', 'L', '\x2', '\x14E', + '\x14F', '\x5', '\x9F', 'P', '\x2', '\x14F', '\x150', '\x5', '\x97', 'L', + '\x2', '\x150', '\x151', '\x5', '\xAD', 'W', '\x2', '\x151', 'Z', '\x3', + '\x2', '\x2', '\x2', '\x152', '\x153', '\x5', '\xA1', 'Q', '\x2', '\x153', + '\x154', '\x5', '\xA3', 'R', '\x2', '\x154', '\x155', '\x5', '\xAD', 'W', + '\x2', '\x155', '\\', '\x3', '\x2', '\x2', '\x2', '\x156', '\x157', '\a', + 'p', '\x2', '\x2', '\x157', '\x158', '\a', 'w', '\x2', '\x2', '\x158', + '\x159', '\a', 'n', '\x2', '\x2', '\x159', '\x15A', '\a', 'n', '\x2', + '\x2', '\x15A', '^', '\x3', '\x2', '\x2', '\x2', '\x15B', '\x15C', '\x5', + '\xA3', 'R', '\x2', '\x15C', '\x15D', '\x5', '\x91', 'I', '\x2', '\x15D', + '\x15E', '\x5', '\x91', 'I', '\x2', '\x15E', '\x15F', '\x5', '\xAB', 'V', + '\x2', '\x15F', '\x160', '\x5', '\x8F', 'H', '\x2', '\x160', '\x161', + '\x5', '\xAD', 'W', '\x2', '\x161', '`', '\x3', '\x2', '\x2', '\x2', '\x162', '\x163', '\x5', '\xA3', 'R', '\x2', '\x163', '\x164', '\x5', '\xA9', 'U', '\x2', '\x164', '\x62', '\x3', '\x2', '\x2', '\x2', '\x165', '\x166', '\x5', '\xA3', 'R', '\x2', '\x166', '\x167', '\x5', '\xA9', 'U', '\x2', @@ -548,51 +548,53 @@ static sqlLexer() { '|', '\x3', '\x2', '\x2', '\x2', '\x1ED', '\x1EE', '\t', '\x5', '\x2', '\x2', '\x1EE', '~', '\x3', '\x2', '\x2', '\x2', '\x1EF', '\x1F0', '\n', '\x6', '\x2', '\x2', '\x1F0', '\x80', '\x3', '\x2', '\x2', '\x2', '\x1F1', - '\x1F6', '\t', '\a', '\x2', '\x2', '\x1F2', '\x1F5', '\t', '\a', '\x2', - '\x2', '\x1F3', '\x1F5', '\x5', '\x85', '\x43', '\x2', '\x1F4', '\x1F2', - '\x3', '\x2', '\x2', '\x2', '\x1F4', '\x1F3', '\x3', '\x2', '\x2', '\x2', - '\x1F5', '\x1F8', '\x3', '\x2', '\x2', '\x2', '\x1F6', '\x1F4', '\x3', - '\x2', '\x2', '\x2', '\x1F6', '\x1F7', '\x3', '\x2', '\x2', '\x2', '\x1F7', - '\x82', '\x3', '\x2', '\x2', '\x2', '\x1F8', '\x1F6', '\x3', '\x2', '\x2', - '\x2', '\x1F9', '\x1FA', '\a', '\x42', '\x2', '\x2', '\x1FA', '\x1FB', - '\x5', '\x81', '\x41', '\x2', '\x1FB', '\x84', '\x3', '\x2', '\x2', '\x2', - '\x1FC', '\x1FD', '\t', '\b', '\x2', '\x2', '\x1FD', '\x86', '\x3', '\x2', - '\x2', '\x2', '\x1FE', '\x1FF', '\t', '\t', '\x2', '\x2', '\x1FF', '\x88', - '\x3', '\x2', '\x2', '\x2', '\x200', '\x201', '\t', '\n', '\x2', '\x2', - '\x201', '\x8A', '\x3', '\x2', '\x2', '\x2', '\x202', '\x203', '\t', '\v', - '\x2', '\x2', '\x203', '\x8C', '\x3', '\x2', '\x2', '\x2', '\x204', '\x205', - '\t', '\f', '\x2', '\x2', '\x205', '\x8E', '\x3', '\x2', '\x2', '\x2', - '\x206', '\x207', '\t', '\r', '\x2', '\x2', '\x207', '\x90', '\x3', '\x2', - '\x2', '\x2', '\x208', '\x209', '\t', '\xE', '\x2', '\x2', '\x209', '\x92', - '\x3', '\x2', '\x2', '\x2', '\x20A', '\x20B', '\t', '\xF', '\x2', '\x2', - '\x20B', '\x94', '\x3', '\x2', '\x2', '\x2', '\x20C', '\x20D', '\t', '\x10', - '\x2', '\x2', '\x20D', '\x96', '\x3', '\x2', '\x2', '\x2', '\x20E', '\x20F', - '\t', '\x11', '\x2', '\x2', '\x20F', '\x98', '\x3', '\x2', '\x2', '\x2', - '\x210', '\x211', '\t', '\x12', '\x2', '\x2', '\x211', '\x9A', '\x3', - '\x2', '\x2', '\x2', '\x212', '\x213', '\t', '\x13', '\x2', '\x2', '\x213', - '\x9C', '\x3', '\x2', '\x2', '\x2', '\x214', '\x215', '\t', '\x14', '\x2', - '\x2', '\x215', '\x9E', '\x3', '\x2', '\x2', '\x2', '\x216', '\x217', - '\t', '\x15', '\x2', '\x2', '\x217', '\xA0', '\x3', '\x2', '\x2', '\x2', - '\x218', '\x219', '\t', '\x16', '\x2', '\x2', '\x219', '\xA2', '\x3', - '\x2', '\x2', '\x2', '\x21A', '\x21B', '\t', '\x17', '\x2', '\x2', '\x21B', - '\xA4', '\x3', '\x2', '\x2', '\x2', '\x21C', '\x21D', '\t', '\x18', '\x2', - '\x2', '\x21D', '\xA6', '\x3', '\x2', '\x2', '\x2', '\x21E', '\x21F', - '\t', '\x19', '\x2', '\x2', '\x21F', '\xA8', '\x3', '\x2', '\x2', '\x2', - '\x220', '\x221', '\t', '\x1A', '\x2', '\x2', '\x221', '\xAA', '\x3', - '\x2', '\x2', '\x2', '\x222', '\x223', '\t', '\x1B', '\x2', '\x2', '\x223', - '\xAC', '\x3', '\x2', '\x2', '\x2', '\x224', '\x225', '\t', '\x1C', '\x2', - '\x2', '\x225', '\xAE', '\x3', '\x2', '\x2', '\x2', '\x226', '\x227', - '\t', '\x1D', '\x2', '\x2', '\x227', '\xB0', '\x3', '\x2', '\x2', '\x2', - '\x228', '\x229', '\t', '\x1E', '\x2', '\x2', '\x229', '\xB2', '\x3', - '\x2', '\x2', '\x2', '\x22A', '\x22B', '\t', '\x1F', '\x2', '\x2', '\x22B', - '\xB4', '\x3', '\x2', '\x2', '\x2', '\x22C', '\x22D', '\t', ' ', '\x2', - '\x2', '\x22D', '\xB6', '\x3', '\x2', '\x2', '\x2', '\x22E', '\x22F', - '\t', '!', '\x2', '\x2', '\x22F', '\xB8', '\x3', '\x2', '\x2', '\x2', - '\x230', '\x231', '\t', '\"', '\x2', '\x2', '\x231', '\xBA', '\x3', '\x2', - '\x2', '\x2', '\x19', '\x2', '\x198', '\x19D', '\x1A2', '\x1A8', '\x1AB', - '\x1AF', '\x1B4', '\x1B6', '\x1B9', '\x1BF', '\x1C3', '\x1C8', '\x1CA', - '\x1CC', '\x1D1', '\x1D3', '\x1DA', '\x1DC', '\x1E0', '\x1E5', '\x1F4', - '\x1F6', '\x3', '\b', '\x2', '\x2', + '\x1FB', '\x3', '\x2', '\x2', '\x2', '\x1F2', '\x1F7', '\t', '\a', '\x2', + '\x2', '\x1F3', '\x1F6', '\t', '\a', '\x2', '\x2', '\x1F4', '\x1F6', '\x5', + '\x85', '\x43', '\x2', '\x1F5', '\x1F3', '\x3', '\x2', '\x2', '\x2', '\x1F5', + '\x1F4', '\x3', '\x2', '\x2', '\x2', '\x1F6', '\x1F9', '\x3', '\x2', '\x2', + '\x2', '\x1F7', '\x1F5', '\x3', '\x2', '\x2', '\x2', '\x1F7', '\x1F8', + '\x3', '\x2', '\x2', '\x2', '\x1F8', '\x1FB', '\x3', '\x2', '\x2', '\x2', + '\x1F9', '\x1F7', '\x3', '\x2', '\x2', '\x2', '\x1FA', '\x1F1', '\x3', + '\x2', '\x2', '\x2', '\x1FA', '\x1F2', '\x3', '\x2', '\x2', '\x2', '\x1FB', + '\x82', '\x3', '\x2', '\x2', '\x2', '\x1FC', '\x1FD', '\a', '\x42', '\x2', + '\x2', '\x1FD', '\x1FE', '\x5', '\x81', '\x41', '\x2', '\x1FE', '\x84', + '\x3', '\x2', '\x2', '\x2', '\x1FF', '\x200', '\t', '\b', '\x2', '\x2', + '\x200', '\x86', '\x3', '\x2', '\x2', '\x2', '\x201', '\x202', '\t', '\t', + '\x2', '\x2', '\x202', '\x88', '\x3', '\x2', '\x2', '\x2', '\x203', '\x204', + '\t', '\n', '\x2', '\x2', '\x204', '\x8A', '\x3', '\x2', '\x2', '\x2', + '\x205', '\x206', '\t', '\v', '\x2', '\x2', '\x206', '\x8C', '\x3', '\x2', + '\x2', '\x2', '\x207', '\x208', '\t', '\f', '\x2', '\x2', '\x208', '\x8E', + '\x3', '\x2', '\x2', '\x2', '\x209', '\x20A', '\t', '\r', '\x2', '\x2', + '\x20A', '\x90', '\x3', '\x2', '\x2', '\x2', '\x20B', '\x20C', '\t', '\xE', + '\x2', '\x2', '\x20C', '\x92', '\x3', '\x2', '\x2', '\x2', '\x20D', '\x20E', + '\t', '\xF', '\x2', '\x2', '\x20E', '\x94', '\x3', '\x2', '\x2', '\x2', + '\x20F', '\x210', '\t', '\x10', '\x2', '\x2', '\x210', '\x96', '\x3', + '\x2', '\x2', '\x2', '\x211', '\x212', '\t', '\x11', '\x2', '\x2', '\x212', + '\x98', '\x3', '\x2', '\x2', '\x2', '\x213', '\x214', '\t', '\x12', '\x2', + '\x2', '\x214', '\x9A', '\x3', '\x2', '\x2', '\x2', '\x215', '\x216', + '\t', '\x13', '\x2', '\x2', '\x216', '\x9C', '\x3', '\x2', '\x2', '\x2', + '\x217', '\x218', '\t', '\x14', '\x2', '\x2', '\x218', '\x9E', '\x3', + '\x2', '\x2', '\x2', '\x219', '\x21A', '\t', '\x15', '\x2', '\x2', '\x21A', + '\xA0', '\x3', '\x2', '\x2', '\x2', '\x21B', '\x21C', '\t', '\x16', '\x2', + '\x2', '\x21C', '\xA2', '\x3', '\x2', '\x2', '\x2', '\x21D', '\x21E', + '\t', '\x17', '\x2', '\x2', '\x21E', '\xA4', '\x3', '\x2', '\x2', '\x2', + '\x21F', '\x220', '\t', '\x18', '\x2', '\x2', '\x220', '\xA6', '\x3', + '\x2', '\x2', '\x2', '\x221', '\x222', '\t', '\x19', '\x2', '\x2', '\x222', + '\xA8', '\x3', '\x2', '\x2', '\x2', '\x223', '\x224', '\t', '\x1A', '\x2', + '\x2', '\x224', '\xAA', '\x3', '\x2', '\x2', '\x2', '\x225', '\x226', + '\t', '\x1B', '\x2', '\x2', '\x226', '\xAC', '\x3', '\x2', '\x2', '\x2', + '\x227', '\x228', '\t', '\x1C', '\x2', '\x2', '\x228', '\xAE', '\x3', + '\x2', '\x2', '\x2', '\x229', '\x22A', '\t', '\x1D', '\x2', '\x2', '\x22A', + '\xB0', '\x3', '\x2', '\x2', '\x2', '\x22B', '\x22C', '\t', '\x1E', '\x2', + '\x2', '\x22C', '\xB2', '\x3', '\x2', '\x2', '\x2', '\x22D', '\x22E', + '\t', '\x1F', '\x2', '\x2', '\x22E', '\xB4', '\x3', '\x2', '\x2', '\x2', + '\x22F', '\x230', '\t', ' ', '\x2', '\x2', '\x230', '\xB6', '\x3', '\x2', + '\x2', '\x2', '\x231', '\x232', '\t', '!', '\x2', '\x2', '\x232', '\xB8', + '\x3', '\x2', '\x2', '\x2', '\x233', '\x234', '\t', '\"', '\x2', '\x2', + '\x234', '\xBA', '\x3', '\x2', '\x2', '\x2', '\x1A', '\x2', '\x198', '\x19D', + '\x1A2', '\x1A8', '\x1AB', '\x1AF', '\x1B4', '\x1B6', '\x1B9', '\x1BF', + '\x1C3', '\x1C8', '\x1CA', '\x1CC', '\x1D1', '\x1D3', '\x1DA', '\x1DC', + '\x1E0', '\x1E5', '\x1F5', '\x1F7', '\x1FA', '\x3', '\b', '\x2', '\x2', }; public static readonly ATN _ATN =