diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs index 2a8292322b..26d0a64c45 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs @@ -594,6 +594,27 @@ 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 = (context.escape_expression() != null) + ? (SqlStringLiteral)this.Visit(context.escape_expression()) + : null; + + return SqlLikeScalarExpression.Create(expression, pattern, not, escapeSequence); + } + + public override SqlObject VisitEscape_expression([NotNull] sqlParser.Escape_expressionContext context) + { + Contract.Requires(context != null); + + return (SqlStringLiteral)this.Visit(context.STRING_LITERAL()); + } + public override SqlObject VisitLiteralScalarExpression([NotNull] sqlParser.LiteralScalarExpressionContext context) { Contract.Requires(context != null); @@ -769,6 +790,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(); diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/IsqlListener.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/IsqlListener.cs index 3882ca42fb..ed0eb42e76 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,692 @@ 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); +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 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..2e96892783 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,408 @@ /// /// 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); +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/sql.g4 b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sql.g4 index 734d09ec6a..5e97e20e1b 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sql.g4 +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sql.g4 @@ -88,12 +88,21 @@ 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 escape_expression? + ; + +escape_expression + : K_ESCAPE STRING_LITERAL + ; + binary_scalar_expression : unary_scalar_expression | binary_scalar_expression multiplicative_operator binary_scalar_expression @@ -184,12 +193,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 +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/sqlBaseListener.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlBaseListener.cs new file mode 100644 index 0000000000..5a52445735 --- /dev/null +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlBaseListener.cs @@ -0,0 +1,855 @@ +//------------------------------------------------------------------------------ +// +// 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")] +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 77e8f21c3c..287851e115 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,660 @@ /// /// 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); } +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 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 VisitEscape_expression([NotNull] sqlParser.Escape_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); } } diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlLexer.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlLexer.cs index cee9043d0d..1de628b4b3 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,584 @@ 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" - }; +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_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', '?', '\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', + '\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', '\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', + '\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', + '\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 = - 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..7e92c2c20f 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,3916 @@ 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); +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_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_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, + 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", + "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 = { + 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 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) + { + } + 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 = 271; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,26,Context) ) { + case 1: + { + State = 270; escape_expression(); + } + break; + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + 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 Escape_expressionContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_escape_expression; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterEscape_expression(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitEscape_expression(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitEscape_expression(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Escape_expressionContext escape_expression() { + Escape_expressionContext _localctx = new Escape_expressionContext(Context, State); + EnterRule(_localctx, 52, RULE_escape_expression); + try { + EnterOuterAlt(_localctx, 1); + { + State = 273; Match(K_ESCAPE); + State = 274; Match(STRING_LITERAL); + } + } + 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 = 277; unary_scalar_expression(); + } + Context.Stop = TokenStream.LT(-1); + State = 319; + 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 = 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 = 279; + if (!(Precpred(Context, 10))) throw new FailedPredicateException(this, "Precpred(Context, 10)"); + 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 = 283; + if (!(Precpred(Context, 9))) throw new FailedPredicateException(this, "Precpred(Context, 9)"); + 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 = 287; + if (!(Precpred(Context, 8))) throw new FailedPredicateException(this, "Precpred(Context, 8)"); + 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 = 291; + if (!(Precpred(Context, 7))) throw new FailedPredicateException(this, "Precpred(Context, 7)"); + 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 = 295; + if (!(Precpred(Context, 6))) throw new FailedPredicateException(this, "Precpred(Context, 6)"); + 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 = 299; + if (!(Precpred(Context, 5))) throw new FailedPredicateException(this, "Precpred(Context, 5)"); + 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 = 303; + if (!(Precpred(Context, 4))) throw new FailedPredicateException(this, "Precpred(Context, 4)"); + 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 = 307; + if (!(Precpred(Context, 3))) throw new FailedPredicateException(this, "Precpred(Context, 3)"); + 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 = 310; + if (!(Precpred(Context, 2))) throw new FailedPredicateException(this, "Precpred(Context, 2)"); + 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 = 313; + if (!(Precpred(Context, 1))) throw new FailedPredicateException(this, "Precpred(Context, 1)"); + State = 314; string_concat_operator(); + State = 315; binary_scalar_expression(2); + } + break; + } + } + } + State = 321; + 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 = 322; + _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 = 324; + _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 = 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); + } + 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 = 328; + _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 = 330; 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 = 332; 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 = 334; 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 = 336; 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 = 342; + 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 = 338; primary_expression(0); + } + break; + case T__12: + case T__13: + case T__24: + case K_NOT: + EnterOuterAlt(_localctx, 2); + { + State = 339; unary_operator(); + State = 340; 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 = 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); + } + 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 = 388; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,34,Context) ) { + case 1: + { + _localctx = new PropertyRefScalarExpressionBaseContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + + State = 347; Match(IDENTIFIER); + } + break; + case 2: + { + _localctx = new ParameterRefScalarExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + State = 348; Match(PARAMETER); + } + break; + case 3: + { + _localctx = new LiteralScalarExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + State = 349; literal(); + } + break; + case 4: + { + _localctx = new ArrayCreateScalarExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + 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 = 351; scalar_expression_list(); + } + } + + State = 354; Match(T__6); + } + break; + case 5: + { + _localctx = new ObjectCreateScalarExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + State = 355; Match(T__25); + State = 357; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==STRING_LITERAL) { + { + State = 356; object_property_list(); + } + } + + State = 359; Match(T__26); + } + break; + case 6: + { + _localctx = new FunctionCallScalarExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + State = 362; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==K_UDF) { + { + State = 360; Match(K_UDF); + State = 361; Match(T__4); + } + } + + 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 = 366; scalar_expression_list(); + } + } + + State = 369; Match(T__3); + } + break; + case 7: + { + _localctx = new ParenthesizedScalarExperessionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + State = 370; Match(T__2); + State = 371; scalar_expression(0); + State = 372; Match(T__3); + } + break; + case 8: + { + _localctx = new SubqueryScalarExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + State = 374; Match(T__2); + State = 375; sql_query(); + State = 376; Match(T__3); + } + break; + case 9: + { + _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); + } + break; + case 10: + { + _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); + } + break; + } + Context.Stop = TokenStream.LT(-1); + State = 400; + 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 = 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 = 390; + if (!(Precpred(Context, 4))) throw new FailedPredicateException(this, "Precpred(Context, 4)"); + 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 = 393; + 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); + } + break; + } + } + } + State = 402; + 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 = 403; scalar_expression(0); + State = 408; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==T__1) { + { + { + State = 404; Match(T__1); + State = 405; scalar_expression(0); + } + } + State = 410; + 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 = 411; object_property(); + State = 416; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==T__1) { + { + { + State = 412; Match(T__1); + State = 413; object_property(); + } + } + State = 418; + 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 = 419; Match(STRING_LITERAL); + State = 420; Match(T__8); + State = 421; 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 = 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); + } + 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', '?', '\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', + '\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', '\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', + '\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', '\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', '(', '\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', '\xFF', '\x103', '\x10C', + '\x111', '\x13F', '\x141', '\x158', '\x162', '\x167', '\x16C', '\x171', + '\x186', '\x190', '\x192', '\x19A', '\x1A2', + }; + + public static readonly ATN _ATN = + new ATNDeserializer().Deserialize(_serializedATN); } diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Pipeline/CosmosQueryExecutionContextFactory.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Pipeline/CosmosQueryExecutionContextFactory.cs index 5e8113b92a..feff750f35 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) + { + return false; + } } } } 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); + } + } +} 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..7fa52c4437 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; 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..c4d3dfa68d 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("("); + + 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..eda7022f3b 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,7 @@ 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); 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/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..dda3e57444 --- /dev/null +++ b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/BaselineTest/TestBaseline/LikeClauseSqlParserBaselineTests.Tests.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ 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 fcb140271f..546065cc82 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,12 @@ PreserveNewest + + 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/ScalarExpressionEvaluator.cs b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/OfflineEngine/ScalarExpressionEvaluator.cs index fe3c87cec0..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 @@ -258,6 +258,12 @@ public override CosmosElement Visit(SqlInScalarExpression scalarExpression, Cosm return CosmosBoolean.Create(contains); } + public override CosmosElement Visit(SqlLikeScalarExpression scalarExpression, CosmosElement document) + { + // Consider the necessity of having v3 offline engine. Should we remove this altogether? + throw new NotImplementedException(); + } + public override CosmosElement Visit(SqlLiteralScalarExpression scalarExpression, CosmosElement document) { SqlLiteral sqlLiteral = scalarExpression.Literal; 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"); + } + } +} 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..e675115ddb --- /dev/null +++ b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/Parser/LikeClauseSqlParserBaselineTests.cs @@ -0,0 +1,38 @@ +//------------------------------------------------------------ +// 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!%\" \"!\""), + CreateInput(description: "Double LIKE", likeClause: "(LIKE 'a') LIKE 'b'"), + }; + + this.ExecuteTestSuite(inputs); + } + + public static SqlParserBaselineTestInput CreateInput(string description, string likeClause) + { + return new SqlParserBaselineTestInput(description, $"SELECT c.age {likeClause}"); + } + } +}