From bed61fa6899f44b81313b717ffcb874234d71b57 Mon Sep 17 00:00:00 2001 From: Minh Le Date: Thu, 6 Mar 2025 16:23:33 -0800 Subject: [PATCH 1/8] g4 file --- Microsoft.Azure.Cosmos/src/Query/Core/Parser/sql.g4 | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sql.g4 b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sql.g4 index 2b0002a8ab..1e8b7c6e91 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sql.g4 +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sql.g4 @@ -58,9 +58,16 @@ group_by_clause : K_GROUP K_BY scalar_expression_list ; /*--------------------------------------------------------------------------------*/ /* ORDER BY */ /*--------------------------------------------------------------------------------*/ -order_by_clause : K_ORDER K_BY order_by_items ; +order_by_clause + : K_ORDER K_BY order_by_items + | K_ORDER K_BY K_RANK score_expression_order_by_items; + +score_expression_order_by_items: score_expression_order_by_item (',', score_order_by_item); +score_expression_order_by_items: function_call_scalar_expression sort_order?; + order_by_items : order_by_item (',' order_by_item)* ; order_by_item : scalar_expression sort_order? ; + sort_order : K_ASC | K_DESC @@ -227,6 +234,7 @@ K_NULL : 'null'; K_OFFSET : O F F S E T; K_OR : O R; K_ORDER : O R D E R; +K_RANK : R A N K; K_RIGHT : R I G H T; K_SELECT : S E L E C T; K_TOP : T O P; From 00bceb1b42fe802df6b15e3845a4a5700b1cb70f Mon Sep 17 00:00:00 2001 From: Minh Le Date: Thu, 6 Mar 2025 17:05:02 -0800 Subject: [PATCH 2/8] base grammar change --- .../src/Query/Core/Parser/IsqlListener.cs | 1556 +-- .../src/Query/Core/Parser/IsqlVisitor.cs | 950 +- .../src/Query/Core/Parser/sql.g4 | 7 +- .../src/Query/Core/Parser/sqlBaseListener.cs | 1866 ++-- .../src/Query/Core/Parser/sqlBaseVisitor.cs | 1506 +-- .../src/Query/Core/Parser/sqlLexer.cs | 1291 +-- .../src/Query/Core/Parser/sqlParser.cs | 8786 +++++++++-------- 7 files changed, 8103 insertions(+), 7859 deletions(-) diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/IsqlListener.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/IsqlListener.cs index 9cde50fb6b..79b1551b68 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/IsqlListener.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/IsqlListener.cs @@ -1,768 +1,788 @@ -//------------------------------------------------------------------------------ -// -// 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 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 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 AllScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - void EnterAllScalarExpression([NotNull] sqlParser.AllScalarExpressionContext context); - /// - /// Exit a parse tree produced by the AllScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - void ExitAllScalarExpression([NotNull] sqlParser.AllScalarExpressionContext 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 FirstScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - void EnterFirstScalarExpression([NotNull] sqlParser.FirstScalarExpressionContext context); - /// - /// Exit a parse tree produced by the FirstScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - void ExitFirstScalarExpression([NotNull] sqlParser.FirstScalarExpressionContext 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 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 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 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 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 LastScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - void EnterLastScalarExpression([NotNull] sqlParser.LastScalarExpressionContext context); - /// - /// Exit a parse tree produced by the LastScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - void ExitLastScalarExpression([NotNull] sqlParser.LastScalarExpressionContext 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 EnterFunction_call_scalar_expression([NotNull] sqlParser.Function_call_scalar_expressionContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitFunction_call_scalar_expression([NotNull] sqlParser.Function_call_scalar_expressionContext 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 EnterIdentifier([NotNull] sqlParser.IdentifierContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitIdentifier([NotNull] sqlParser.IdentifierContext 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); -} +//------------------------------------------------------------------------------ +// +// 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 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 EnterScore_expression_order_by_items([NotNull] sqlParser.Score_expression_order_by_itemsContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitScore_expression_order_by_items([NotNull] sqlParser.Score_expression_order_by_itemsContext context); + /// + /// Enter a parse tree produced by . + /// + /// The parse tree. + void EnterScore_expression_order_by_item([NotNull] sqlParser.Score_expression_order_by_itemContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitScore_expression_order_by_item([NotNull] sqlParser.Score_expression_order_by_itemContext 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 AllScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + void EnterAllScalarExpression([NotNull] sqlParser.AllScalarExpressionContext context); + /// + /// Exit a parse tree produced by the AllScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + void ExitAllScalarExpression([NotNull] sqlParser.AllScalarExpressionContext 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 FirstScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + void EnterFirstScalarExpression([NotNull] sqlParser.FirstScalarExpressionContext context); + /// + /// Exit a parse tree produced by the FirstScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + void ExitFirstScalarExpression([NotNull] sqlParser.FirstScalarExpressionContext 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 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 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 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 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 LastScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + void EnterLastScalarExpression([NotNull] sqlParser.LastScalarExpressionContext context); + /// + /// Exit a parse tree produced by the LastScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + void ExitLastScalarExpression([NotNull] sqlParser.LastScalarExpressionContext 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 EnterFunction_call_scalar_expression([NotNull] sqlParser.Function_call_scalar_expressionContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitFunction_call_scalar_expression([NotNull] sqlParser.Function_call_scalar_expressionContext 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 EnterIdentifier([NotNull] sqlParser.IdentifierContext context); + /// + /// Exit a parse tree produced by . + /// + /// The parse tree. + void ExitIdentifier([NotNull] sqlParser.IdentifierContext 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 b9bea8ca1d..44ad376fb6 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/IsqlVisitor.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/IsqlVisitor.cs @@ -1,469 +1,481 @@ -//------------------------------------------------------------------------------ -// -// 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 Antlr4.Runtime.Tree; -using IToken = Antlr4.Runtime.IToken; - -/// -/// This interface defines a complete generic visitor for a parse tree produced -/// by . -/// -/// 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 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 AllScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - /// The visitor result. - Result VisitAllScalarExpression([NotNull] sqlParser.AllScalarExpressionContext 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 FirstScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - /// The visitor result. - Result VisitFirstScalarExpression([NotNull] sqlParser.FirstScalarExpressionContext 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 MemberIndexerScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - /// The visitor result. - Result VisitMemberIndexerScalarExpression([NotNull] sqlParser.MemberIndexerScalarExpressionContext 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 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 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 LastScalarExpression - /// labeled alternative in . - /// - /// The parse tree. - /// The visitor result. - Result VisitLastScalarExpression([NotNull] sqlParser.LastScalarExpressionContext 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 VisitFunction_call_scalar_expression([NotNull] sqlParser.Function_call_scalar_expressionContext 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 VisitIdentifier([NotNull] sqlParser.IdentifierContext context); - /// - /// Visit a parse tree produced by . - /// - /// The parse tree. - /// The visitor result. - Result VisitLiteral([NotNull] sqlParser.LiteralContext context); -} +//------------------------------------------------------------------------------ +// +// 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 Antlr4.Runtime.Tree; +using IToken = Antlr4.Runtime.IToken; + +/// +/// This interface defines a complete generic visitor for a parse tree produced +/// by . +/// +/// 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 VisitScore_expression_order_by_items([NotNull] sqlParser.Score_expression_order_by_itemsContext context); + /// + /// Visit a parse tree produced by . + /// + /// The parse tree. + /// The visitor result. + Result VisitScore_expression_order_by_item([NotNull] sqlParser.Score_expression_order_by_itemContext 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 AllScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitAllScalarExpression([NotNull] sqlParser.AllScalarExpressionContext 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 FirstScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitFirstScalarExpression([NotNull] sqlParser.FirstScalarExpressionContext 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 MemberIndexerScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitMemberIndexerScalarExpression([NotNull] sqlParser.MemberIndexerScalarExpressionContext 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 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 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 LastScalarExpression + /// labeled alternative in . + /// + /// The parse tree. + /// The visitor result. + Result VisitLastScalarExpression([NotNull] sqlParser.LastScalarExpressionContext 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 VisitFunction_call_scalar_expression([NotNull] sqlParser.Function_call_scalar_expressionContext 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 VisitIdentifier([NotNull] sqlParser.IdentifierContext 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 1e8b7c6e91..d87a99cf27 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sql.g4 +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sql.g4 @@ -60,10 +60,11 @@ group_by_clause : K_GROUP K_BY scalar_expression_list ; /*--------------------------------------------------------------------------------*/ order_by_clause : K_ORDER K_BY order_by_items - | K_ORDER K_BY K_RANK score_expression_order_by_items; + | K_ORDER K_BY K_RANK score_expression_order_by_items + ; -score_expression_order_by_items: score_expression_order_by_item (',', score_order_by_item); -score_expression_order_by_items: function_call_scalar_expression sort_order?; +score_expression_order_by_items : score_expression_order_by_item (',' score_expression_order_by_item)* ; +score_expression_order_by_item : function_call_scalar_expression sort_order? ; order_by_items : order_by_item (',' order_by_item)* ; order_by_item : scalar_expression sort_order? ; diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlBaseListener.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlBaseListener.cs index 62f2873d72..8db5083589 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlBaseListener.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlBaseListener.cs @@ -1,921 +1,945 @@ -//------------------------------------------------------------------------------ -// -// 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 AllScalarExpression - /// labeled alternative in . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterAllScalarExpression([NotNull] sqlParser.AllScalarExpressionContext context) { } - /// - /// Exit a parse tree produced by the AllScalarExpression - /// labeled alternative in . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitAllScalarExpression([NotNull] sqlParser.AllScalarExpressionContext 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 FirstScalarExpression - /// labeled alternative in . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterFirstScalarExpression([NotNull] sqlParser.FirstScalarExpressionContext context) { } - /// - /// Exit a parse tree produced by the FirstScalarExpression - /// labeled alternative in . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitFirstScalarExpression([NotNull] sqlParser.FirstScalarExpressionContext 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 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 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 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 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 LastScalarExpression - /// labeled alternative in . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterLastScalarExpression([NotNull] sqlParser.LastScalarExpressionContext context) { } - /// - /// Exit a parse tree produced by the LastScalarExpression - /// labeled alternative in . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitLastScalarExpression([NotNull] sqlParser.LastScalarExpressionContext 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 EnterFunction_call_scalar_expression([NotNull] sqlParser.Function_call_scalar_expressionContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitFunction_call_scalar_expression([NotNull] sqlParser.Function_call_scalar_expressionContext 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 EnterIdentifier([NotNull] sqlParser.IdentifierContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitIdentifier([NotNull] sqlParser.IdentifierContext 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) { } -} +//------------------------------------------------------------------------------ +// +// 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 EnterScore_expression_order_by_items([NotNull] sqlParser.Score_expression_order_by_itemsContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitScore_expression_order_by_items([NotNull] sqlParser.Score_expression_order_by_itemsContext context) { } + /// + /// Enter a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterScore_expression_order_by_item([NotNull] sqlParser.Score_expression_order_by_itemContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitScore_expression_order_by_item([NotNull] sqlParser.Score_expression_order_by_itemContext 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 AllScalarExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterAllScalarExpression([NotNull] sqlParser.AllScalarExpressionContext context) { } + /// + /// Exit a parse tree produced by the AllScalarExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitAllScalarExpression([NotNull] sqlParser.AllScalarExpressionContext 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 FirstScalarExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterFirstScalarExpression([NotNull] sqlParser.FirstScalarExpressionContext context) { } + /// + /// Exit a parse tree produced by the FirstScalarExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitFirstScalarExpression([NotNull] sqlParser.FirstScalarExpressionContext 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 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 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 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 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 LastScalarExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void EnterLastScalarExpression([NotNull] sqlParser.LastScalarExpressionContext context) { } + /// + /// Exit a parse tree produced by the LastScalarExpression + /// labeled alternative in . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitLastScalarExpression([NotNull] sqlParser.LastScalarExpressionContext 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 EnterFunction_call_scalar_expression([NotNull] sqlParser.Function_call_scalar_expressionContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitFunction_call_scalar_expression([NotNull] sqlParser.Function_call_scalar_expressionContext 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 EnterIdentifier([NotNull] sqlParser.IdentifierContext context) { } + /// + /// Exit a parse tree produced by . + /// The default implementation does nothing. + /// + /// The parse tree. + public virtual void ExitIdentifier([NotNull] sqlParser.IdentifierContext 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 4594f5fc79..ee89037096 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlBaseVisitor.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlBaseVisitor.cs @@ -1,743 +1,763 @@ -//------------------------------------------------------------------------------ -// -// 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 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 -/// of the available methods. -/// -/// 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 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 AllScalarExpression - /// labeled alternative in . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitAllScalarExpression([NotNull] sqlParser.AllScalarExpressionContext 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 FirstScalarExpression - /// labeled alternative in . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitFirstScalarExpression([NotNull] sqlParser.FirstScalarExpressionContext 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 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 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 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 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 LastScalarExpression - /// labeled alternative in . - /// - /// The default implementation returns the result of calling - /// on . - /// - /// - /// The parse tree. - /// The visitor result. - public virtual Result VisitLastScalarExpression([NotNull] sqlParser.LastScalarExpressionContext 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 VisitFunction_call_scalar_expression([NotNull] sqlParser.Function_call_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 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 VisitIdentifier([NotNull] sqlParser.IdentifierContext 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); } -} +//------------------------------------------------------------------------------ +// +// 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 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 +/// of the available methods. +/// +/// 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 VisitScore_expression_order_by_items([NotNull] sqlParser.Score_expression_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 VisitScore_expression_order_by_item([NotNull] sqlParser.Score_expression_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 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 AllScalarExpression + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitAllScalarExpression([NotNull] sqlParser.AllScalarExpressionContext 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 FirstScalarExpression + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitFirstScalarExpression([NotNull] sqlParser.FirstScalarExpressionContext 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 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 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 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 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 LastScalarExpression + /// labeled alternative in . + /// + /// The default implementation returns the result of calling + /// on . + /// + /// + /// The parse tree. + /// The visitor result. + public virtual Result VisitLastScalarExpression([NotNull] sqlParser.LastScalarExpressionContext 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 VisitFunction_call_scalar_expression([NotNull] sqlParser.Function_call_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 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 VisitIdentifier([NotNull] sqlParser.IdentifierContext 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 88888fea5d..dacb019cb2 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlLexer.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlLexer.cs @@ -1,642 +1,649 @@ -//------------------------------------------------------------------------------ -// -// 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 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_ALL=28, K_AND=29, K_ARRAY=30, K_AS=31, - K_ASC=32, K_BETWEEN=33, K_BY=34, K_DESC=35, K_DISTINCT=36, K_ESCAPE=37, - K_EXISTS=38, K_FIRST=39, K_FALSE=40, K_FROM=41, K_GROUP=42, K_IN=43, K_JOIN=44, - K_LAST=45, K_LEFT=46, K_LIKE=47, K_LIMIT=48, K_NOT=49, K_NULL=50, K_OFFSET=51, - K_OR=52, K_ORDER=53, K_RIGHT=54, K_SELECT=55, K_TOP=56, K_TRUE=57, K_UDF=58, - K_UNDEFINED=59, K_VALUE=60, K_WHERE=61, WS=62, NUMERIC_LITERAL=63, STRING_LITERAL=64, - LEX_IDENTIFIER=65, PARAMETER=66; - public static string[] channelNames = { - "DEFAULT_TOKEN_CHANNEL", "HIDDEN" - }; - - 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_ALL", "K_AND", "K_ARRAY", "K_AS", "K_ASC", "K_BETWEEN", - "K_BY", "K_DESC", "K_DISTINCT", "K_ESCAPE", "K_EXISTS", "K_FIRST", "K_FALSE", - "K_FROM", "K_GROUP", "K_IN", "K_JOIN", "K_LAST", "K_LEFT", "K_LIKE", "K_LIMIT", - "K_NOT", "K_NULL", "K_OFFSET", "K_OR", "K_ORDER", "K_RIGHT", "K_SELECT", - "K_TOP", "K_TRUE", "K_UDF", "K_UNDEFINED", "K_VALUE", "K_WHERE", "WS", - "NUMERIC_LITERAL", "STRING_LITERAL", "ESC", "UNICODE", "HEX", "SAFECODEPOINTWITHSINGLEQUOTATION", - "SAFECODEPOINTWITHDOUBLEQUOTATION", "LEX_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, 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, null, null, null, "'false'", null, null, - null, null, null, null, null, null, null, "'null'", null, null, null, - null, null, null, "'true'", "'udf'", "'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_ALL", "K_AND", "K_ARRAY", "K_AS", "K_ASC", - "K_BETWEEN", "K_BY", "K_DESC", "K_DISTINCT", "K_ESCAPE", "K_EXISTS", "K_FIRST", - "K_FALSE", "K_FROM", "K_GROUP", "K_IN", "K_JOIN", "K_LAST", "K_LEFT", - "K_LIKE", "K_LIMIT", "K_NOT", "K_NULL", "K_OFFSET", "K_OR", "K_ORDER", - "K_RIGHT", "K_SELECT", "K_TOP", "K_TRUE", "K_UDF", "K_UNDEFINED", "K_VALUE", - "K_WHERE", "WS", "NUMERIC_LITERAL", "STRING_LITERAL", "LEX_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[] ChannelNames { get { return channelNames; } } - - public override string[] ModeNames { get { return modeNames; } } - - 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', '\x44', '\x25D', '\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', ']', '\x4', '^', '\t', '^', - '\x4', '_', '\t', '_', '\x4', '`', '\t', '`', '\x4', '\x61', '\t', '\x61', - '\x4', '\x62', '\t', '\x62', '\x4', '\x63', '\t', '\x63', '\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', '\x1F', - '\x3', '\x1F', '\x3', '\x1F', '\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', '\x30', '\x3', - '\x30', '\x3', '\x30', '\x3', '\x30', '\x3', '\x30', '\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', '\x34', '\x3', '\x34', '\x3', - '\x34', '\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', '\x3', '\x38', '\x3', '\x38', '\x3', '\x38', '\x3', - '\x38', '\x3', '\x38', '\x3', '\x38', '\x3', '\x39', '\x3', '\x39', '\x3', - '\x39', '\x3', '\x39', '\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', '?', '\x6', '?', '\x1BD', '\n', - '?', '\r', '?', '\xE', '?', '\x1BE', '\x3', '?', '\x3', '?', '\x3', '@', - '\x5', '@', '\x1C4', '\n', '@', '\x3', '@', '\x6', '@', '\x1C7', '\n', - '@', '\r', '@', '\xE', '@', '\x1C8', '\x3', '@', '\x3', '@', '\a', '@', - '\x1CD', '\n', '@', '\f', '@', '\xE', '@', '\x1D0', '\v', '@', '\x5', - '@', '\x1D2', '\n', '@', '\x3', '@', '\x3', '@', '\x5', '@', '\x1D6', - '\n', '@', '\x3', '@', '\x6', '@', '\x1D9', '\n', '@', '\r', '@', '\xE', - '@', '\x1DA', '\x5', '@', '\x1DD', '\n', '@', '\x3', '@', '\x5', '@', - '\x1E0', '\n', '@', '\x3', '@', '\x3', '@', '\x6', '@', '\x1E4', '\n', - '@', '\r', '@', '\xE', '@', '\x1E5', '\x3', '@', '\x3', '@', '\x5', '@', - '\x1EA', '\n', '@', '\x3', '@', '\x6', '@', '\x1ED', '\n', '@', '\r', - '@', '\xE', '@', '\x1EE', '\x5', '@', '\x1F1', '\n', '@', '\x5', '@', - '\x1F3', '\n', '@', '\x3', '\x41', '\x3', '\x41', '\x3', '\x41', '\a', - '\x41', '\x1F8', '\n', '\x41', '\f', '\x41', '\xE', '\x41', '\x1FB', '\v', - '\x41', '\x3', '\x41', '\x3', '\x41', '\x3', '\x41', '\x3', '\x41', '\a', - '\x41', '\x201', '\n', '\x41', '\f', '\x41', '\xE', '\x41', '\x204', '\v', - '\x41', '\x3', '\x41', '\x5', '\x41', '\x207', '\n', '\x41', '\x3', '\x42', - '\x3', '\x42', '\x3', '\x42', '\x5', '\x42', '\x20C', '\n', '\x42', '\x3', - '\x43', '\x3', '\x43', '\x3', '\x43', '\x3', '\x43', '\x3', '\x43', '\x3', - '\x43', '\x3', '\x44', '\x3', '\x44', '\x3', '\x45', '\x3', '\x45', '\x3', - '\x46', '\x3', '\x46', '\x3', 'G', '\x3', 'G', '\x3', 'G', '\x3', 'G', - '\a', 'G', '\x21E', '\n', 'G', '\f', 'G', '\xE', 'G', '\x221', '\v', 'G', - '\x5', 'G', '\x223', '\n', 'G', '\x3', 'H', '\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', ']', '\x3', - '^', '\x3', '^', '\x3', '_', '\x3', '_', '\x3', '`', '\x3', '`', '\x3', - '\x61', '\x3', '\x61', '\x3', '\x62', '\x3', '\x62', '\x3', '\x63', '\x3', - '\x63', '\x2', '\x2', '\x64', '\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', '>', '{', '?', - '}', '@', '\x7F', '\x41', '\x81', '\x42', '\x83', '\x2', '\x85', '\x2', - '\x87', '\x2', '\x89', '\x2', '\x8B', '\x2', '\x8D', '\x43', '\x8F', '\x44', - '\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', '\xBB', '\x2', '\xBD', '\x2', '\xBF', '\x2', '\xC1', '\x2', - '\xC3', '\x2', '\xC5', '\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', '\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', '\x253', '\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', 'y', '\x3', '\x2', '\x2', '\x2', - '\x2', '{', '\x3', '\x2', '\x2', '\x2', '\x2', '}', '\x3', '\x2', '\x2', - '\x2', '\x2', '\x7F', '\x3', '\x2', '\x2', '\x2', '\x2', '\x81', '\x3', - '\x2', '\x2', '\x2', '\x2', '\x8D', '\x3', '\x2', '\x2', '\x2', '\x2', - '\x8F', '\x3', '\x2', '\x2', '\x2', '\x3', '\xC7', '\x3', '\x2', '\x2', - '\x2', '\x5', '\xC9', '\x3', '\x2', '\x2', '\x2', '\a', '\xCB', '\x3', - '\x2', '\x2', '\x2', '\t', '\xCD', '\x3', '\x2', '\x2', '\x2', '\v', '\xCF', - '\x3', '\x2', '\x2', '\x2', '\r', '\xD1', '\x3', '\x2', '\x2', '\x2', - '\xF', '\xD3', '\x3', '\x2', '\x2', '\x2', '\x11', '\xD5', '\x3', '\x2', - '\x2', '\x2', '\x13', '\xD7', '\x3', '\x2', '\x2', '\x2', '\x15', '\xD9', - '\x3', '\x2', '\x2', '\x2', '\x17', '\xDC', '\x3', '\x2', '\x2', '\x2', - '\x19', '\xDE', '\x3', '\x2', '\x2', '\x2', '\x1B', '\xE0', '\x3', '\x2', - '\x2', '\x2', '\x1D', '\xE2', '\x3', '\x2', '\x2', '\x2', '\x1F', '\xE4', - '\x3', '\x2', '\x2', '\x2', '!', '\xE6', '\x3', '\x2', '\x2', '\x2', '#', - '\xE8', '\x3', '\x2', '\x2', '\x2', '%', '\xEB', '\x3', '\x2', '\x2', - '\x2', '\'', '\xEE', '\x3', '\x2', '\x2', '\x2', ')', '\xF0', '\x3', '\x2', - '\x2', '\x2', '+', '\xF3', '\x3', '\x2', '\x2', '\x2', '-', '\xF5', '\x3', - '\x2', '\x2', '\x2', '/', '\xF7', '\x3', '\x2', '\x2', '\x2', '\x31', - '\xF9', '\x3', '\x2', '\x2', '\x2', '\x33', '\xFC', '\x3', '\x2', '\x2', - '\x2', '\x35', '\xFE', '\x3', '\x2', '\x2', '\x2', '\x37', '\x100', '\x3', - '\x2', '\x2', '\x2', '\x39', '\x102', '\x3', '\x2', '\x2', '\x2', ';', - '\x106', '\x3', '\x2', '\x2', '\x2', '=', '\x10A', '\x3', '\x2', '\x2', - '\x2', '?', '\x110', '\x3', '\x2', '\x2', '\x2', '\x41', '\x113', '\x3', - '\x2', '\x2', '\x2', '\x43', '\x117', '\x3', '\x2', '\x2', '\x2', '\x45', - '\x11F', '\x3', '\x2', '\x2', '\x2', 'G', '\x122', '\x3', '\x2', '\x2', - '\x2', 'I', '\x127', '\x3', '\x2', '\x2', '\x2', 'K', '\x130', '\x3', - '\x2', '\x2', '\x2', 'M', '\x137', '\x3', '\x2', '\x2', '\x2', 'O', '\x13E', - '\x3', '\x2', '\x2', '\x2', 'Q', '\x144', '\x3', '\x2', '\x2', '\x2', - 'S', '\x14A', '\x3', '\x2', '\x2', '\x2', 'U', '\x14F', '\x3', '\x2', - '\x2', '\x2', 'W', '\x155', '\x3', '\x2', '\x2', '\x2', 'Y', '\x158', - '\x3', '\x2', '\x2', '\x2', '[', '\x15D', '\x3', '\x2', '\x2', '\x2', - ']', '\x162', '\x3', '\x2', '\x2', '\x2', '_', '\x167', '\x3', '\x2', - '\x2', '\x2', '\x61', '\x16C', '\x3', '\x2', '\x2', '\x2', '\x63', '\x172', - '\x3', '\x2', '\x2', '\x2', '\x65', '\x176', '\x3', '\x2', '\x2', '\x2', - 'g', '\x17B', '\x3', '\x2', '\x2', '\x2', 'i', '\x182', '\x3', '\x2', - '\x2', '\x2', 'k', '\x185', '\x3', '\x2', '\x2', '\x2', 'm', '\x18B', - '\x3', '\x2', '\x2', '\x2', 'o', '\x191', '\x3', '\x2', '\x2', '\x2', - 'q', '\x198', '\x3', '\x2', '\x2', '\x2', 's', '\x19C', '\x3', '\x2', - '\x2', '\x2', 'u', '\x1A1', '\x3', '\x2', '\x2', '\x2', 'w', '\x1A5', - '\x3', '\x2', '\x2', '\x2', 'y', '\x1AF', '\x3', '\x2', '\x2', '\x2', - '{', '\x1B5', '\x3', '\x2', '\x2', '\x2', '}', '\x1BC', '\x3', '\x2', - '\x2', '\x2', '\x7F', '\x1F2', '\x3', '\x2', '\x2', '\x2', '\x81', '\x206', - '\x3', '\x2', '\x2', '\x2', '\x83', '\x208', '\x3', '\x2', '\x2', '\x2', - '\x85', '\x20D', '\x3', '\x2', '\x2', '\x2', '\x87', '\x213', '\x3', '\x2', - '\x2', '\x2', '\x89', '\x215', '\x3', '\x2', '\x2', '\x2', '\x8B', '\x217', - '\x3', '\x2', '\x2', '\x2', '\x8D', '\x222', '\x3', '\x2', '\x2', '\x2', - '\x8F', '\x224', '\x3', '\x2', '\x2', '\x2', '\x91', '\x227', '\x3', '\x2', - '\x2', '\x2', '\x93', '\x229', '\x3', '\x2', '\x2', '\x2', '\x95', '\x22B', - '\x3', '\x2', '\x2', '\x2', '\x97', '\x22D', '\x3', '\x2', '\x2', '\x2', - '\x99', '\x22F', '\x3', '\x2', '\x2', '\x2', '\x9B', '\x231', '\x3', '\x2', - '\x2', '\x2', '\x9D', '\x233', '\x3', '\x2', '\x2', '\x2', '\x9F', '\x235', - '\x3', '\x2', '\x2', '\x2', '\xA1', '\x237', '\x3', '\x2', '\x2', '\x2', - '\xA3', '\x239', '\x3', '\x2', '\x2', '\x2', '\xA5', '\x23B', '\x3', '\x2', - '\x2', '\x2', '\xA7', '\x23D', '\x3', '\x2', '\x2', '\x2', '\xA9', '\x23F', - '\x3', '\x2', '\x2', '\x2', '\xAB', '\x241', '\x3', '\x2', '\x2', '\x2', - '\xAD', '\x243', '\x3', '\x2', '\x2', '\x2', '\xAF', '\x245', '\x3', '\x2', - '\x2', '\x2', '\xB1', '\x247', '\x3', '\x2', '\x2', '\x2', '\xB3', '\x249', - '\x3', '\x2', '\x2', '\x2', '\xB5', '\x24B', '\x3', '\x2', '\x2', '\x2', - '\xB7', '\x24D', '\x3', '\x2', '\x2', '\x2', '\xB9', '\x24F', '\x3', '\x2', - '\x2', '\x2', '\xBB', '\x251', '\x3', '\x2', '\x2', '\x2', '\xBD', '\x253', - '\x3', '\x2', '\x2', '\x2', '\xBF', '\x255', '\x3', '\x2', '\x2', '\x2', - '\xC1', '\x257', '\x3', '\x2', '\x2', '\x2', '\xC3', '\x259', '\x3', '\x2', - '\x2', '\x2', '\xC5', '\x25B', '\x3', '\x2', '\x2', '\x2', '\xC7', '\xC8', - '\a', ',', '\x2', '\x2', '\xC8', '\x4', '\x3', '\x2', '\x2', '\x2', '\xC9', - '\xCA', '\a', '.', '\x2', '\x2', '\xCA', '\x6', '\x3', '\x2', '\x2', '\x2', - '\xCB', '\xCC', '\a', '*', '\x2', '\x2', '\xCC', '\b', '\x3', '\x2', '\x2', - '\x2', '\xCD', '\xCE', '\a', '+', '\x2', '\x2', '\xCE', '\n', '\x3', '\x2', - '\x2', '\x2', '\xCF', '\xD0', '\a', '\x30', '\x2', '\x2', '\xD0', '\f', - '\x3', '\x2', '\x2', '\x2', '\xD1', '\xD2', '\a', ']', '\x2', '\x2', '\xD2', - '\xE', '\x3', '\x2', '\x2', '\x2', '\xD3', '\xD4', '\a', '_', '\x2', '\x2', - '\xD4', '\x10', '\x3', '\x2', '\x2', '\x2', '\xD5', '\xD6', '\a', '\x41', - '\x2', '\x2', '\xD6', '\x12', '\x3', '\x2', '\x2', '\x2', '\xD7', '\xD8', - '\a', '<', '\x2', '\x2', '\xD8', '\x14', '\x3', '\x2', '\x2', '\x2', '\xD9', - '\xDA', '\a', '\x41', '\x2', '\x2', '\xDA', '\xDB', '\a', '\x41', '\x2', - '\x2', '\xDB', '\x16', '\x3', '\x2', '\x2', '\x2', '\xDC', '\xDD', '\a', - '\x31', '\x2', '\x2', '\xDD', '\x18', '\x3', '\x2', '\x2', '\x2', '\xDE', - '\xDF', '\a', '\'', '\x2', '\x2', '\xDF', '\x1A', '\x3', '\x2', '\x2', - '\x2', '\xE0', '\xE1', '\a', '-', '\x2', '\x2', '\xE1', '\x1C', '\x3', - '\x2', '\x2', '\x2', '\xE2', '\xE3', '\a', '/', '\x2', '\x2', '\xE3', - '\x1E', '\x3', '\x2', '\x2', '\x2', '\xE4', '\xE5', '\a', '>', '\x2', - '\x2', '\xE5', ' ', '\x3', '\x2', '\x2', '\x2', '\xE6', '\xE7', '\a', - '@', '\x2', '\x2', '\xE7', '\"', '\x3', '\x2', '\x2', '\x2', '\xE8', '\xE9', - '\a', '@', '\x2', '\x2', '\xE9', '\xEA', '\a', '?', '\x2', '\x2', '\xEA', - '$', '\x3', '\x2', '\x2', '\x2', '\xEB', '\xEC', '\a', '>', '\x2', '\x2', - '\xEC', '\xED', '\a', '?', '\x2', '\x2', '\xED', '&', '\x3', '\x2', '\x2', - '\x2', '\xEE', '\xEF', '\a', '?', '\x2', '\x2', '\xEF', '(', '\x3', '\x2', - '\x2', '\x2', '\xF0', '\xF1', '\a', '#', '\x2', '\x2', '\xF1', '\xF2', - '\a', '?', '\x2', '\x2', '\xF2', '*', '\x3', '\x2', '\x2', '\x2', '\xF3', - '\xF4', '\a', '(', '\x2', '\x2', '\xF4', ',', '\x3', '\x2', '\x2', '\x2', - '\xF5', '\xF6', '\a', '`', '\x2', '\x2', '\xF6', '.', '\x3', '\x2', '\x2', - '\x2', '\xF7', '\xF8', '\a', '~', '\x2', '\x2', '\xF8', '\x30', '\x3', - '\x2', '\x2', '\x2', '\xF9', '\xFA', '\a', '~', '\x2', '\x2', '\xFA', - '\xFB', '\a', '~', '\x2', '\x2', '\xFB', '\x32', '\x3', '\x2', '\x2', - '\x2', '\xFC', '\xFD', '\a', '\x80', '\x2', '\x2', '\xFD', '\x34', '\x3', - '\x2', '\x2', '\x2', '\xFE', '\xFF', '\a', '}', '\x2', '\x2', '\xFF', - '\x36', '\x3', '\x2', '\x2', '\x2', '\x100', '\x101', '\a', '\x7F', '\x2', - '\x2', '\x101', '\x38', '\x3', '\x2', '\x2', '\x2', '\x102', '\x103', - '\x5', '\x93', 'J', '\x2', '\x103', '\x104', '\x5', '\xA9', 'U', '\x2', - '\x104', '\x105', '\x5', '\xA9', 'U', '\x2', '\x105', ':', '\x3', '\x2', - '\x2', '\x2', '\x106', '\x107', '\x5', '\x93', 'J', '\x2', '\x107', '\x108', - '\x5', '\xAD', 'W', '\x2', '\x108', '\x109', '\x5', '\x99', 'M', '\x2', - '\x109', '<', '\x3', '\x2', '\x2', '\x2', '\x10A', '\x10B', '\x5', '\x93', - 'J', '\x2', '\x10B', '\x10C', '\x5', '\xB5', '[', '\x2', '\x10C', '\x10D', - '\x5', '\xB5', '[', '\x2', '\x10D', '\x10E', '\x5', '\x93', 'J', '\x2', - '\x10E', '\x10F', '\x5', '\xC3', '\x62', '\x2', '\x10F', '>', '\x3', '\x2', - '\x2', '\x2', '\x110', '\x111', '\x5', '\x93', 'J', '\x2', '\x111', '\x112', - '\x5', '\xB7', '\\', '\x2', '\x112', '@', '\x3', '\x2', '\x2', '\x2', - '\x113', '\x114', '\x5', '\x93', 'J', '\x2', '\x114', '\x115', '\x5', - '\xB7', '\\', '\x2', '\x115', '\x116', '\x5', '\x97', 'L', '\x2', '\x116', - '\x42', '\x3', '\x2', '\x2', '\x2', '\x117', '\x118', '\x5', '\x95', 'K', - '\x2', '\x118', '\x119', '\x5', '\x9B', 'N', '\x2', '\x119', '\x11A', - '\x5', '\xB9', ']', '\x2', '\x11A', '\x11B', '\x5', '\xBF', '`', '\x2', - '\x11B', '\x11C', '\x5', '\x9B', 'N', '\x2', '\x11C', '\x11D', '\x5', - '\x9B', 'N', '\x2', '\x11D', '\x11E', '\x5', '\xAD', 'W', '\x2', '\x11E', - '\x44', '\x3', '\x2', '\x2', '\x2', '\x11F', '\x120', '\x5', '\x95', 'K', - '\x2', '\x120', '\x121', '\x5', '\xC3', '\x62', '\x2', '\x121', '\x46', - '\x3', '\x2', '\x2', '\x2', '\x122', '\x123', '\x5', '\x99', 'M', '\x2', - '\x123', '\x124', '\x5', '\x9B', 'N', '\x2', '\x124', '\x125', '\x5', - '\xB7', '\\', '\x2', '\x125', '\x126', '\x5', '\x97', 'L', '\x2', '\x126', - 'H', '\x3', '\x2', '\x2', '\x2', '\x127', '\x128', '\x5', '\x99', 'M', - '\x2', '\x128', '\x129', '\x5', '\xA3', 'R', '\x2', '\x129', '\x12A', - '\x5', '\xB7', '\\', '\x2', '\x12A', '\x12B', '\x5', '\xB9', ']', '\x2', - '\x12B', '\x12C', '\x5', '\xA3', 'R', '\x2', '\x12C', '\x12D', '\x5', - '\xAD', 'W', '\x2', '\x12D', '\x12E', '\x5', '\x97', 'L', '\x2', '\x12E', - '\x12F', '\x5', '\xB9', ']', '\x2', '\x12F', 'J', '\x3', '\x2', '\x2', - '\x2', '\x130', '\x131', '\x5', '\x9B', 'N', '\x2', '\x131', '\x132', - '\x5', '\xB7', '\\', '\x2', '\x132', '\x133', '\x5', '\x97', 'L', '\x2', - '\x133', '\x134', '\x5', '\x93', 'J', '\x2', '\x134', '\x135', '\x5', - '\xB1', 'Y', '\x2', '\x135', '\x136', '\x5', '\x9B', 'N', '\x2', '\x136', - 'L', '\x3', '\x2', '\x2', '\x2', '\x137', '\x138', '\x5', '\x9B', 'N', - '\x2', '\x138', '\x139', '\x5', '\xC1', '\x61', '\x2', '\x139', '\x13A', - '\x5', '\xA3', 'R', '\x2', '\x13A', '\x13B', '\x5', '\xB7', '\\', '\x2', - '\x13B', '\x13C', '\x5', '\xB9', ']', '\x2', '\x13C', '\x13D', '\x5', - '\xB7', '\\', '\x2', '\x13D', 'N', '\x3', '\x2', '\x2', '\x2', '\x13E', - '\x13F', '\x5', '\x9D', 'O', '\x2', '\x13F', '\x140', '\x5', '\xA3', 'R', - '\x2', '\x140', '\x141', '\x5', '\xB5', '[', '\x2', '\x141', '\x142', - '\x5', '\xB7', '\\', '\x2', '\x142', '\x143', '\x5', '\xB9', ']', '\x2', - '\x143', 'P', '\x3', '\x2', '\x2', '\x2', '\x144', '\x145', '\a', 'h', - '\x2', '\x2', '\x145', '\x146', '\a', '\x63', '\x2', '\x2', '\x146', '\x147', - '\a', 'n', '\x2', '\x2', '\x147', '\x148', '\a', 'u', '\x2', '\x2', '\x148', - '\x149', '\a', 'g', '\x2', '\x2', '\x149', 'R', '\x3', '\x2', '\x2', '\x2', - '\x14A', '\x14B', '\x5', '\x9D', 'O', '\x2', '\x14B', '\x14C', '\x5', - '\xB5', '[', '\x2', '\x14C', '\x14D', '\x5', '\xAF', 'X', '\x2', '\x14D', - '\x14E', '\x5', '\xAB', 'V', '\x2', '\x14E', 'T', '\x3', '\x2', '\x2', - '\x2', '\x14F', '\x150', '\x5', '\x9F', 'P', '\x2', '\x150', '\x151', - '\x5', '\xB5', '[', '\x2', '\x151', '\x152', '\x5', '\xAF', 'X', '\x2', - '\x152', '\x153', '\x5', '\xBB', '^', '\x2', '\x153', '\x154', '\x5', - '\xB1', 'Y', '\x2', '\x154', 'V', '\x3', '\x2', '\x2', '\x2', '\x155', - '\x156', '\x5', '\xA3', 'R', '\x2', '\x156', '\x157', '\x5', '\xAD', 'W', - '\x2', '\x157', 'X', '\x3', '\x2', '\x2', '\x2', '\x158', '\x159', '\x5', - '\xA5', 'S', '\x2', '\x159', '\x15A', '\x5', '\xAF', 'X', '\x2', '\x15A', - '\x15B', '\x5', '\xA3', 'R', '\x2', '\x15B', '\x15C', '\x5', '\xAD', 'W', - '\x2', '\x15C', 'Z', '\x3', '\x2', '\x2', '\x2', '\x15D', '\x15E', '\x5', - '\xA9', 'U', '\x2', '\x15E', '\x15F', '\x5', '\x93', 'J', '\x2', '\x15F', - '\x160', '\x5', '\xB7', '\\', '\x2', '\x160', '\x161', '\x5', '\xB9', - ']', '\x2', '\x161', '\\', '\x3', '\x2', '\x2', '\x2', '\x162', '\x163', - '\x5', '\xA9', 'U', '\x2', '\x163', '\x164', '\x5', '\x9B', 'N', '\x2', - '\x164', '\x165', '\x5', '\x9D', 'O', '\x2', '\x165', '\x166', '\x5', - '\xB9', ']', '\x2', '\x166', '^', '\x3', '\x2', '\x2', '\x2', '\x167', - '\x168', '\x5', '\xA9', 'U', '\x2', '\x168', '\x169', '\x5', '\xA3', 'R', - '\x2', '\x169', '\x16A', '\x5', '\xA7', 'T', '\x2', '\x16A', '\x16B', - '\x5', '\x9B', 'N', '\x2', '\x16B', '`', '\x3', '\x2', '\x2', '\x2', '\x16C', - '\x16D', '\x5', '\xA9', 'U', '\x2', '\x16D', '\x16E', '\x5', '\xA3', 'R', - '\x2', '\x16E', '\x16F', '\x5', '\xAB', 'V', '\x2', '\x16F', '\x170', - '\x5', '\xA3', 'R', '\x2', '\x170', '\x171', '\x5', '\xB9', ']', '\x2', - '\x171', '\x62', '\x3', '\x2', '\x2', '\x2', '\x172', '\x173', '\x5', - '\xAD', 'W', '\x2', '\x173', '\x174', '\x5', '\xAF', 'X', '\x2', '\x174', - '\x175', '\x5', '\xB9', ']', '\x2', '\x175', '\x64', '\x3', '\x2', '\x2', - '\x2', '\x176', '\x177', '\a', 'p', '\x2', '\x2', '\x177', '\x178', '\a', - 'w', '\x2', '\x2', '\x178', '\x179', '\a', 'n', '\x2', '\x2', '\x179', - '\x17A', '\a', 'n', '\x2', '\x2', '\x17A', '\x66', '\x3', '\x2', '\x2', - '\x2', '\x17B', '\x17C', '\x5', '\xAF', 'X', '\x2', '\x17C', '\x17D', - '\x5', '\x9D', 'O', '\x2', '\x17D', '\x17E', '\x5', '\x9D', 'O', '\x2', - '\x17E', '\x17F', '\x5', '\xB7', '\\', '\x2', '\x17F', '\x180', '\x5', - '\x9B', 'N', '\x2', '\x180', '\x181', '\x5', '\xB9', ']', '\x2', '\x181', - 'h', '\x3', '\x2', '\x2', '\x2', '\x182', '\x183', '\x5', '\xAF', 'X', - '\x2', '\x183', '\x184', '\x5', '\xB5', '[', '\x2', '\x184', 'j', '\x3', - '\x2', '\x2', '\x2', '\x185', '\x186', '\x5', '\xAF', 'X', '\x2', '\x186', - '\x187', '\x5', '\xB5', '[', '\x2', '\x187', '\x188', '\x5', '\x99', 'M', - '\x2', '\x188', '\x189', '\x5', '\x9B', 'N', '\x2', '\x189', '\x18A', - '\x5', '\xB5', '[', '\x2', '\x18A', 'l', '\x3', '\x2', '\x2', '\x2', '\x18B', - '\x18C', '\x5', '\xB5', '[', '\x2', '\x18C', '\x18D', '\x5', '\xA3', 'R', - '\x2', '\x18D', '\x18E', '\x5', '\x9F', 'P', '\x2', '\x18E', '\x18F', - '\x5', '\xA1', 'Q', '\x2', '\x18F', '\x190', '\x5', '\xB9', ']', '\x2', - '\x190', 'n', '\x3', '\x2', '\x2', '\x2', '\x191', '\x192', '\x5', '\xB7', - '\\', '\x2', '\x192', '\x193', '\x5', '\x9B', 'N', '\x2', '\x193', '\x194', - '\x5', '\xA9', 'U', '\x2', '\x194', '\x195', '\x5', '\x9B', 'N', '\x2', - '\x195', '\x196', '\x5', '\x97', 'L', '\x2', '\x196', '\x197', '\x5', - '\xB9', ']', '\x2', '\x197', 'p', '\x3', '\x2', '\x2', '\x2', '\x198', - '\x199', '\x5', '\xB9', ']', '\x2', '\x199', '\x19A', '\x5', '\xAF', 'X', - '\x2', '\x19A', '\x19B', '\x5', '\xB1', 'Y', '\x2', '\x19B', 'r', '\x3', - '\x2', '\x2', '\x2', '\x19C', '\x19D', '\a', 'v', '\x2', '\x2', '\x19D', - '\x19E', '\a', 't', '\x2', '\x2', '\x19E', '\x19F', '\a', 'w', '\x2', - '\x2', '\x19F', '\x1A0', '\a', 'g', '\x2', '\x2', '\x1A0', 't', '\x3', - '\x2', '\x2', '\x2', '\x1A1', '\x1A2', '\a', 'w', '\x2', '\x2', '\x1A2', - '\x1A3', '\a', '\x66', '\x2', '\x2', '\x1A3', '\x1A4', '\a', 'h', '\x2', - '\x2', '\x1A4', 'v', '\x3', '\x2', '\x2', '\x2', '\x1A5', '\x1A6', '\a', - 'w', '\x2', '\x2', '\x1A6', '\x1A7', '\a', 'p', '\x2', '\x2', '\x1A7', - '\x1A8', '\a', '\x66', '\x2', '\x2', '\x1A8', '\x1A9', '\a', 'g', '\x2', - '\x2', '\x1A9', '\x1AA', '\a', 'h', '\x2', '\x2', '\x1AA', '\x1AB', '\a', - 'k', '\x2', '\x2', '\x1AB', '\x1AC', '\a', 'p', '\x2', '\x2', '\x1AC', - '\x1AD', '\a', 'g', '\x2', '\x2', '\x1AD', '\x1AE', '\a', '\x66', '\x2', - '\x2', '\x1AE', 'x', '\x3', '\x2', '\x2', '\x2', '\x1AF', '\x1B0', '\x5', - '\xBD', '_', '\x2', '\x1B0', '\x1B1', '\x5', '\x93', 'J', '\x2', '\x1B1', - '\x1B2', '\x5', '\xA9', 'U', '\x2', '\x1B2', '\x1B3', '\x5', '\xBB', '^', - '\x2', '\x1B3', '\x1B4', '\x5', '\x9B', 'N', '\x2', '\x1B4', 'z', '\x3', - '\x2', '\x2', '\x2', '\x1B5', '\x1B6', '\x5', '\xBF', '`', '\x2', '\x1B6', - '\x1B7', '\x5', '\xA1', 'Q', '\x2', '\x1B7', '\x1B8', '\x5', '\x9B', 'N', - '\x2', '\x1B8', '\x1B9', '\x5', '\xB5', '[', '\x2', '\x1B9', '\x1BA', - '\x5', '\x9B', 'N', '\x2', '\x1BA', '|', '\x3', '\x2', '\x2', '\x2', '\x1BB', - '\x1BD', '\t', '\x2', '\x2', '\x2', '\x1BC', '\x1BB', '\x3', '\x2', '\x2', - '\x2', '\x1BD', '\x1BE', '\x3', '\x2', '\x2', '\x2', '\x1BE', '\x1BC', - '\x3', '\x2', '\x2', '\x2', '\x1BE', '\x1BF', '\x3', '\x2', '\x2', '\x2', - '\x1BF', '\x1C0', '\x3', '\x2', '\x2', '\x2', '\x1C0', '\x1C1', '\b', - '?', '\x2', '\x2', '\x1C1', '~', '\x3', '\x2', '\x2', '\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', '\x91', 'I', '\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', '\x1D1', '\x3', '\x2', '\x2', - '\x2', '\x1CA', '\x1CE', '\a', '\x30', '\x2', '\x2', '\x1CB', '\x1CD', - '\x5', '\x91', 'I', '\x2', '\x1CC', '\x1CB', '\x3', '\x2', '\x2', '\x2', - '\x1CD', '\x1D0', '\x3', '\x2', '\x2', '\x2', '\x1CE', '\x1CC', '\x3', - '\x2', '\x2', '\x2', '\x1CE', '\x1CF', '\x3', '\x2', '\x2', '\x2', '\x1CF', - '\x1D2', '\x3', '\x2', '\x2', '\x2', '\x1D0', '\x1CE', '\x3', '\x2', '\x2', - '\x2', '\x1D1', '\x1CA', '\x3', '\x2', '\x2', '\x2', '\x1D1', '\x1D2', - '\x3', '\x2', '\x2', '\x2', '\x1D2', '\x1DC', '\x3', '\x2', '\x2', '\x2', - '\x1D3', '\x1D5', '\x5', '\x9B', 'N', '\x2', '\x1D4', '\x1D6', '\t', '\x3', - '\x2', '\x2', '\x1D5', '\x1D4', '\x3', '\x2', '\x2', '\x2', '\x1D5', '\x1D6', - '\x3', '\x2', '\x2', '\x2', '\x1D6', '\x1D8', '\x3', '\x2', '\x2', '\x2', - '\x1D7', '\x1D9', '\x5', '\x91', 'I', '\x2', '\x1D8', '\x1D7', '\x3', - '\x2', '\x2', '\x2', '\x1D9', '\x1DA', '\x3', '\x2', '\x2', '\x2', '\x1DA', - '\x1D8', '\x3', '\x2', '\x2', '\x2', '\x1DA', '\x1DB', '\x3', '\x2', '\x2', - '\x2', '\x1DB', '\x1DD', '\x3', '\x2', '\x2', '\x2', '\x1DC', '\x1D3', - '\x3', '\x2', '\x2', '\x2', '\x1DC', '\x1DD', '\x3', '\x2', '\x2', '\x2', - '\x1DD', '\x1F3', '\x3', '\x2', '\x2', '\x2', '\x1DE', '\x1E0', '\t', - '\x3', '\x2', '\x2', '\x1DF', '\x1DE', '\x3', '\x2', '\x2', '\x2', '\x1DF', - '\x1E0', '\x3', '\x2', '\x2', '\x2', '\x1E0', '\x1E1', '\x3', '\x2', '\x2', - '\x2', '\x1E1', '\x1E3', '\a', '\x30', '\x2', '\x2', '\x1E2', '\x1E4', - '\x5', '\x91', 'I', '\x2', '\x1E3', '\x1E2', '\x3', '\x2', '\x2', '\x2', - '\x1E4', '\x1E5', '\x3', '\x2', '\x2', '\x2', '\x1E5', '\x1E3', '\x3', - '\x2', '\x2', '\x2', '\x1E5', '\x1E6', '\x3', '\x2', '\x2', '\x2', '\x1E6', - '\x1F0', '\x3', '\x2', '\x2', '\x2', '\x1E7', '\x1E9', '\x5', '\x9B', - 'N', '\x2', '\x1E8', '\x1EA', '\t', '\x3', '\x2', '\x2', '\x1E9', '\x1E8', - '\x3', '\x2', '\x2', '\x2', '\x1E9', '\x1EA', '\x3', '\x2', '\x2', '\x2', - '\x1EA', '\x1EC', '\x3', '\x2', '\x2', '\x2', '\x1EB', '\x1ED', '\x5', - '\x91', 'I', '\x2', '\x1EC', '\x1EB', '\x3', '\x2', '\x2', '\x2', '\x1ED', - '\x1EE', '\x3', '\x2', '\x2', '\x2', '\x1EE', '\x1EC', '\x3', '\x2', '\x2', - '\x2', '\x1EE', '\x1EF', '\x3', '\x2', '\x2', '\x2', '\x1EF', '\x1F1', - '\x3', '\x2', '\x2', '\x2', '\x1F0', '\x1E7', '\x3', '\x2', '\x2', '\x2', - '\x1F0', '\x1F1', '\x3', '\x2', '\x2', '\x2', '\x1F1', '\x1F3', '\x3', - '\x2', '\x2', '\x2', '\x1F2', '\x1C3', '\x3', '\x2', '\x2', '\x2', '\x1F2', - '\x1DF', '\x3', '\x2', '\x2', '\x2', '\x1F3', '\x80', '\x3', '\x2', '\x2', - '\x2', '\x1F4', '\x1F9', '\a', '$', '\x2', '\x2', '\x1F5', '\x1F8', '\x5', - '\x83', '\x42', '\x2', '\x1F6', '\x1F8', '\x5', '\x8B', '\x46', '\x2', - '\x1F7', '\x1F5', '\x3', '\x2', '\x2', '\x2', '\x1F7', '\x1F6', '\x3', - '\x2', '\x2', '\x2', '\x1F8', '\x1FB', '\x3', '\x2', '\x2', '\x2', '\x1F9', - '\x1F7', '\x3', '\x2', '\x2', '\x2', '\x1F9', '\x1FA', '\x3', '\x2', '\x2', - '\x2', '\x1FA', '\x1FC', '\x3', '\x2', '\x2', '\x2', '\x1FB', '\x1F9', - '\x3', '\x2', '\x2', '\x2', '\x1FC', '\x207', '\a', '$', '\x2', '\x2', - '\x1FD', '\x202', '\a', ')', '\x2', '\x2', '\x1FE', '\x201', '\x5', '\x83', - '\x42', '\x2', '\x1FF', '\x201', '\x5', '\x89', '\x45', '\x2', '\x200', - '\x1FE', '\x3', '\x2', '\x2', '\x2', '\x200', '\x1FF', '\x3', '\x2', '\x2', - '\x2', '\x201', '\x204', '\x3', '\x2', '\x2', '\x2', '\x202', '\x200', - '\x3', '\x2', '\x2', '\x2', '\x202', '\x203', '\x3', '\x2', '\x2', '\x2', - '\x203', '\x205', '\x3', '\x2', '\x2', '\x2', '\x204', '\x202', '\x3', - '\x2', '\x2', '\x2', '\x205', '\x207', '\a', ')', '\x2', '\x2', '\x206', - '\x1F4', '\x3', '\x2', '\x2', '\x2', '\x206', '\x1FD', '\x3', '\x2', '\x2', - '\x2', '\x207', '\x82', '\x3', '\x2', '\x2', '\x2', '\x208', '\x20B', - '\a', '^', '\x2', '\x2', '\x209', '\x20C', '\t', '\x4', '\x2', '\x2', - '\x20A', '\x20C', '\x5', '\x85', '\x43', '\x2', '\x20B', '\x209', '\x3', - '\x2', '\x2', '\x2', '\x20B', '\x20A', '\x3', '\x2', '\x2', '\x2', '\x20C', - '\x84', '\x3', '\x2', '\x2', '\x2', '\x20D', '\x20E', '\a', 'w', '\x2', - '\x2', '\x20E', '\x20F', '\x5', '\x87', '\x44', '\x2', '\x20F', '\x210', - '\x5', '\x87', '\x44', '\x2', '\x210', '\x211', '\x5', '\x87', '\x44', - '\x2', '\x211', '\x212', '\x5', '\x87', '\x44', '\x2', '\x212', '\x86', - '\x3', '\x2', '\x2', '\x2', '\x213', '\x214', '\t', '\x5', '\x2', '\x2', - '\x214', '\x88', '\x3', '\x2', '\x2', '\x2', '\x215', '\x216', '\n', '\x6', - '\x2', '\x2', '\x216', '\x8A', '\x3', '\x2', '\x2', '\x2', '\x217', '\x218', - '\n', '\a', '\x2', '\x2', '\x218', '\x8C', '\x3', '\x2', '\x2', '\x2', - '\x219', '\x223', '\x3', '\x2', '\x2', '\x2', '\x21A', '\x21F', '\t', - '\b', '\x2', '\x2', '\x21B', '\x21E', '\t', '\b', '\x2', '\x2', '\x21C', - '\x21E', '\x5', '\x91', 'I', '\x2', '\x21D', '\x21B', '\x3', '\x2', '\x2', - '\x2', '\x21D', '\x21C', '\x3', '\x2', '\x2', '\x2', '\x21E', '\x221', - '\x3', '\x2', '\x2', '\x2', '\x21F', '\x21D', '\x3', '\x2', '\x2', '\x2', - '\x21F', '\x220', '\x3', '\x2', '\x2', '\x2', '\x220', '\x223', '\x3', - '\x2', '\x2', '\x2', '\x221', '\x21F', '\x3', '\x2', '\x2', '\x2', '\x222', - '\x219', '\x3', '\x2', '\x2', '\x2', '\x222', '\x21A', '\x3', '\x2', '\x2', - '\x2', '\x223', '\x8E', '\x3', '\x2', '\x2', '\x2', '\x224', '\x225', - '\a', '\x42', '\x2', '\x2', '\x225', '\x226', '\x5', '\x8D', 'G', '\x2', - '\x226', '\x90', '\x3', '\x2', '\x2', '\x2', '\x227', '\x228', '\t', '\t', - '\x2', '\x2', '\x228', '\x92', '\x3', '\x2', '\x2', '\x2', '\x229', '\x22A', - '\t', '\n', '\x2', '\x2', '\x22A', '\x94', '\x3', '\x2', '\x2', '\x2', - '\x22B', '\x22C', '\t', '\v', '\x2', '\x2', '\x22C', '\x96', '\x3', '\x2', - '\x2', '\x2', '\x22D', '\x22E', '\t', '\f', '\x2', '\x2', '\x22E', '\x98', - '\x3', '\x2', '\x2', '\x2', '\x22F', '\x230', '\t', '\r', '\x2', '\x2', - '\x230', '\x9A', '\x3', '\x2', '\x2', '\x2', '\x231', '\x232', '\t', '\xE', - '\x2', '\x2', '\x232', '\x9C', '\x3', '\x2', '\x2', '\x2', '\x233', '\x234', - '\t', '\xF', '\x2', '\x2', '\x234', '\x9E', '\x3', '\x2', '\x2', '\x2', - '\x235', '\x236', '\t', '\x10', '\x2', '\x2', '\x236', '\xA0', '\x3', - '\x2', '\x2', '\x2', '\x237', '\x238', '\t', '\x11', '\x2', '\x2', '\x238', - '\xA2', '\x3', '\x2', '\x2', '\x2', '\x239', '\x23A', '\t', '\x12', '\x2', - '\x2', '\x23A', '\xA4', '\x3', '\x2', '\x2', '\x2', '\x23B', '\x23C', - '\t', '\x13', '\x2', '\x2', '\x23C', '\xA6', '\x3', '\x2', '\x2', '\x2', - '\x23D', '\x23E', '\t', '\x14', '\x2', '\x2', '\x23E', '\xA8', '\x3', - '\x2', '\x2', '\x2', '\x23F', '\x240', '\t', '\x15', '\x2', '\x2', '\x240', - '\xAA', '\x3', '\x2', '\x2', '\x2', '\x241', '\x242', '\t', '\x16', '\x2', - '\x2', '\x242', '\xAC', '\x3', '\x2', '\x2', '\x2', '\x243', '\x244', - '\t', '\x17', '\x2', '\x2', '\x244', '\xAE', '\x3', '\x2', '\x2', '\x2', - '\x245', '\x246', '\t', '\x18', '\x2', '\x2', '\x246', '\xB0', '\x3', - '\x2', '\x2', '\x2', '\x247', '\x248', '\t', '\x19', '\x2', '\x2', '\x248', - '\xB2', '\x3', '\x2', '\x2', '\x2', '\x249', '\x24A', '\t', '\x1A', '\x2', - '\x2', '\x24A', '\xB4', '\x3', '\x2', '\x2', '\x2', '\x24B', '\x24C', - '\t', '\x1B', '\x2', '\x2', '\x24C', '\xB6', '\x3', '\x2', '\x2', '\x2', - '\x24D', '\x24E', '\t', '\x1C', '\x2', '\x2', '\x24E', '\xB8', '\x3', - '\x2', '\x2', '\x2', '\x24F', '\x250', '\t', '\x1D', '\x2', '\x2', '\x250', - '\xBA', '\x3', '\x2', '\x2', '\x2', '\x251', '\x252', '\t', '\x1E', '\x2', - '\x2', '\x252', '\xBC', '\x3', '\x2', '\x2', '\x2', '\x253', '\x254', - '\t', '\x1F', '\x2', '\x2', '\x254', '\xBE', '\x3', '\x2', '\x2', '\x2', - '\x255', '\x256', '\t', ' ', '\x2', '\x2', '\x256', '\xC0', '\x3', '\x2', - '\x2', '\x2', '\x257', '\x258', '\t', '!', '\x2', '\x2', '\x258', '\xC2', - '\x3', '\x2', '\x2', '\x2', '\x259', '\x25A', '\t', '\"', '\x2', '\x2', - '\x25A', '\xC4', '\x3', '\x2', '\x2', '\x2', '\x25B', '\x25C', '\t', '#', - '\x2', '\x2', '\x25C', '\xC6', '\x3', '\x2', '\x2', '\x2', '\x1A', '\x2', - '\x1BE', '\x1C3', '\x1C8', '\x1CE', '\x1D1', '\x1D5', '\x1DA', '\x1DC', - '\x1DF', '\x1E5', '\x1E9', '\x1EE', '\x1F0', '\x1F2', '\x1F7', '\x1F9', - '\x200', '\x202', '\x206', '\x20B', '\x21D', '\x21F', '\x222', '\x3', - '\b', '\x2', '\x2', - }; - - public static readonly ATN _ATN = - new ATNDeserializer().Deserialize(_serializedATN); - - -} +//------------------------------------------------------------------------------ +// +// 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 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_ALL=28, K_AND=29, K_ARRAY=30, K_AS=31, + K_ASC=32, K_BETWEEN=33, K_BY=34, K_DESC=35, K_DISTINCT=36, K_ESCAPE=37, + K_EXISTS=38, K_FIRST=39, K_FALSE=40, K_FROM=41, K_GROUP=42, K_IN=43, K_JOIN=44, + K_LAST=45, K_LEFT=46, K_LIKE=47, K_LIMIT=48, K_NOT=49, K_NULL=50, K_OFFSET=51, + K_OR=52, K_ORDER=53, K_RANK=54, K_RIGHT=55, K_SELECT=56, K_TOP=57, K_TRUE=58, + K_UDF=59, K_UNDEFINED=60, K_VALUE=61, K_WHERE=62, WS=63, NUMERIC_LITERAL=64, + STRING_LITERAL=65, LEX_IDENTIFIER=66, PARAMETER=67; + public static string[] channelNames = { + "DEFAULT_TOKEN_CHANNEL", "HIDDEN" + }; + + 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_ALL", "K_AND", "K_ARRAY", "K_AS", "K_ASC", "K_BETWEEN", + "K_BY", "K_DESC", "K_DISTINCT", "K_ESCAPE", "K_EXISTS", "K_FIRST", "K_FALSE", + "K_FROM", "K_GROUP", "K_IN", "K_JOIN", "K_LAST", "K_LEFT", "K_LIKE", "K_LIMIT", + "K_NOT", "K_NULL", "K_OFFSET", "K_OR", "K_ORDER", "K_RANK", "K_RIGHT", + "K_SELECT", "K_TOP", "K_TRUE", "K_UDF", "K_UNDEFINED", "K_VALUE", "K_WHERE", + "WS", "NUMERIC_LITERAL", "STRING_LITERAL", "ESC", "UNICODE", "HEX", "SAFECODEPOINTWITHSINGLEQUOTATION", + "SAFECODEPOINTWITHDOUBLEQUOTATION", "LEX_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, 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, null, null, null, "'false'", null, null, + null, null, null, null, null, null, null, "'null'", null, null, null, + null, null, null, null, "'true'", "'udf'", "'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_ALL", "K_AND", "K_ARRAY", "K_AS", "K_ASC", + "K_BETWEEN", "K_BY", "K_DESC", "K_DISTINCT", "K_ESCAPE", "K_EXISTS", "K_FIRST", + "K_FALSE", "K_FROM", "K_GROUP", "K_IN", "K_JOIN", "K_LAST", "K_LEFT", + "K_LIKE", "K_LIMIT", "K_NOT", "K_NULL", "K_OFFSET", "K_OR", "K_ORDER", + "K_RANK", "K_RIGHT", "K_SELECT", "K_TOP", "K_TRUE", "K_UDF", "K_UNDEFINED", + "K_VALUE", "K_WHERE", "WS", "NUMERIC_LITERAL", "STRING_LITERAL", "LEX_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[] ChannelNames { get { return channelNames; } } + + public override string[] ModeNames { get { return modeNames; } } + + 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', '\x45', '\x264', '\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', ']', '\x4', '^', '\t', '^', + '\x4', '_', '\t', '_', '\x4', '`', '\t', '`', '\x4', '\x61', '\t', '\x61', + '\x4', '\x62', '\t', '\x62', '\x4', '\x63', '\t', '\x63', '\x4', '\x64', + '\t', '\x64', '\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', '\x1F', '\x3', '\x1F', '\x3', '\x1F', '\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', '\x30', '\x3', '\x30', '\x3', '\x30', '\x3', '\x30', + '\x3', '\x30', '\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', '\x34', '\x3', '\x34', '\x3', '\x34', '\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', '\x38', '\x3', '\x38', '\x3', '\x38', + '\x3', '\x38', '\x3', '\x38', '\x3', '\x38', '\x3', '\x39', '\x3', '\x39', + '\x3', '\x39', '\x3', '\x39', '\x3', '\x39', '\x3', '\x39', '\x3', '\x39', + '\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', '@', + '\x6', '@', '\x1C4', '\n', '@', '\r', '@', '\xE', '@', '\x1C5', '\x3', + '@', '\x3', '@', '\x3', '\x41', '\x5', '\x41', '\x1CB', '\n', '\x41', + '\x3', '\x41', '\x6', '\x41', '\x1CE', '\n', '\x41', '\r', '\x41', '\xE', + '\x41', '\x1CF', '\x3', '\x41', '\x3', '\x41', '\a', '\x41', '\x1D4', + '\n', '\x41', '\f', '\x41', '\xE', '\x41', '\x1D7', '\v', '\x41', '\x5', + '\x41', '\x1D9', '\n', '\x41', '\x3', '\x41', '\x3', '\x41', '\x5', '\x41', + '\x1DD', '\n', '\x41', '\x3', '\x41', '\x6', '\x41', '\x1E0', '\n', '\x41', + '\r', '\x41', '\xE', '\x41', '\x1E1', '\x5', '\x41', '\x1E4', '\n', '\x41', + '\x3', '\x41', '\x5', '\x41', '\x1E7', '\n', '\x41', '\x3', '\x41', '\x3', + '\x41', '\x6', '\x41', '\x1EB', '\n', '\x41', '\r', '\x41', '\xE', '\x41', + '\x1EC', '\x3', '\x41', '\x3', '\x41', '\x5', '\x41', '\x1F1', '\n', '\x41', + '\x3', '\x41', '\x6', '\x41', '\x1F4', '\n', '\x41', '\r', '\x41', '\xE', + '\x41', '\x1F5', '\x5', '\x41', '\x1F8', '\n', '\x41', '\x5', '\x41', + '\x1FA', '\n', '\x41', '\x3', '\x42', '\x3', '\x42', '\x3', '\x42', '\a', + '\x42', '\x1FF', '\n', '\x42', '\f', '\x42', '\xE', '\x42', '\x202', '\v', + '\x42', '\x3', '\x42', '\x3', '\x42', '\x3', '\x42', '\x3', '\x42', '\a', + '\x42', '\x208', '\n', '\x42', '\f', '\x42', '\xE', '\x42', '\x20B', '\v', + '\x42', '\x3', '\x42', '\x5', '\x42', '\x20E', '\n', '\x42', '\x3', '\x43', + '\x3', '\x43', '\x3', '\x43', '\x5', '\x43', '\x213', '\n', '\x43', '\x3', + '\x44', '\x3', '\x44', '\x3', '\x44', '\x3', '\x44', '\x3', '\x44', '\x3', + '\x44', '\x3', '\x45', '\x3', '\x45', '\x3', '\x46', '\x3', '\x46', '\x3', + 'G', '\x3', 'G', '\x3', 'H', '\x3', 'H', '\x3', 'H', '\x3', 'H', '\a', + 'H', '\x225', '\n', 'H', '\f', 'H', '\xE', 'H', '\x228', '\v', 'H', '\x5', + 'H', '\x22A', '\n', 'H', '\x3', 'I', '\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', ']', '\x3', '^', '\x3', '^', '\x3', '_', + '\x3', '_', '\x3', '`', '\x3', '`', '\x3', '\x61', '\x3', '\x61', '\x3', + '\x62', '\x3', '\x62', '\x3', '\x63', '\x3', '\x63', '\x3', '\x64', '\x3', + '\x64', '\x2', '\x2', '\x65', '\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', '>', '{', '?', + '}', '@', '\x7F', '\x41', '\x81', '\x42', '\x83', '\x43', '\x85', '\x2', + '\x87', '\x2', '\x89', '\x2', '\x8B', '\x2', '\x8D', '\x2', '\x8F', '\x44', + '\x91', '\x45', '\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', '\xBB', '\x2', '\xBD', '\x2', '\xBF', '\x2', '\xC1', '\x2', + '\xC3', '\x2', '\xC5', '\x2', '\xC7', '\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', '\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', '\x25A', '\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', 'y', + '\x3', '\x2', '\x2', '\x2', '\x2', '{', '\x3', '\x2', '\x2', '\x2', '\x2', + '}', '\x3', '\x2', '\x2', '\x2', '\x2', '\x7F', '\x3', '\x2', '\x2', '\x2', + '\x2', '\x81', '\x3', '\x2', '\x2', '\x2', '\x2', '\x83', '\x3', '\x2', + '\x2', '\x2', '\x2', '\x8F', '\x3', '\x2', '\x2', '\x2', '\x2', '\x91', + '\x3', '\x2', '\x2', '\x2', '\x3', '\xC9', '\x3', '\x2', '\x2', '\x2', + '\x5', '\xCB', '\x3', '\x2', '\x2', '\x2', '\a', '\xCD', '\x3', '\x2', + '\x2', '\x2', '\t', '\xCF', '\x3', '\x2', '\x2', '\x2', '\v', '\xD1', + '\x3', '\x2', '\x2', '\x2', '\r', '\xD3', '\x3', '\x2', '\x2', '\x2', + '\xF', '\xD5', '\x3', '\x2', '\x2', '\x2', '\x11', '\xD7', '\x3', '\x2', + '\x2', '\x2', '\x13', '\xD9', '\x3', '\x2', '\x2', '\x2', '\x15', '\xDB', + '\x3', '\x2', '\x2', '\x2', '\x17', '\xDE', '\x3', '\x2', '\x2', '\x2', + '\x19', '\xE0', '\x3', '\x2', '\x2', '\x2', '\x1B', '\xE2', '\x3', '\x2', + '\x2', '\x2', '\x1D', '\xE4', '\x3', '\x2', '\x2', '\x2', '\x1F', '\xE6', + '\x3', '\x2', '\x2', '\x2', '!', '\xE8', '\x3', '\x2', '\x2', '\x2', '#', + '\xEA', '\x3', '\x2', '\x2', '\x2', '%', '\xED', '\x3', '\x2', '\x2', + '\x2', '\'', '\xF0', '\x3', '\x2', '\x2', '\x2', ')', '\xF2', '\x3', '\x2', + '\x2', '\x2', '+', '\xF5', '\x3', '\x2', '\x2', '\x2', '-', '\xF7', '\x3', + '\x2', '\x2', '\x2', '/', '\xF9', '\x3', '\x2', '\x2', '\x2', '\x31', + '\xFB', '\x3', '\x2', '\x2', '\x2', '\x33', '\xFE', '\x3', '\x2', '\x2', + '\x2', '\x35', '\x100', '\x3', '\x2', '\x2', '\x2', '\x37', '\x102', '\x3', + '\x2', '\x2', '\x2', '\x39', '\x104', '\x3', '\x2', '\x2', '\x2', ';', + '\x108', '\x3', '\x2', '\x2', '\x2', '=', '\x10C', '\x3', '\x2', '\x2', + '\x2', '?', '\x112', '\x3', '\x2', '\x2', '\x2', '\x41', '\x115', '\x3', + '\x2', '\x2', '\x2', '\x43', '\x119', '\x3', '\x2', '\x2', '\x2', '\x45', + '\x121', '\x3', '\x2', '\x2', '\x2', 'G', '\x124', '\x3', '\x2', '\x2', + '\x2', 'I', '\x129', '\x3', '\x2', '\x2', '\x2', 'K', '\x132', '\x3', + '\x2', '\x2', '\x2', 'M', '\x139', '\x3', '\x2', '\x2', '\x2', 'O', '\x140', + '\x3', '\x2', '\x2', '\x2', 'Q', '\x146', '\x3', '\x2', '\x2', '\x2', + 'S', '\x14C', '\x3', '\x2', '\x2', '\x2', 'U', '\x151', '\x3', '\x2', + '\x2', '\x2', 'W', '\x157', '\x3', '\x2', '\x2', '\x2', 'Y', '\x15A', + '\x3', '\x2', '\x2', '\x2', '[', '\x15F', '\x3', '\x2', '\x2', '\x2', + ']', '\x164', '\x3', '\x2', '\x2', '\x2', '_', '\x169', '\x3', '\x2', + '\x2', '\x2', '\x61', '\x16E', '\x3', '\x2', '\x2', '\x2', '\x63', '\x174', + '\x3', '\x2', '\x2', '\x2', '\x65', '\x178', '\x3', '\x2', '\x2', '\x2', + 'g', '\x17D', '\x3', '\x2', '\x2', '\x2', 'i', '\x184', '\x3', '\x2', + '\x2', '\x2', 'k', '\x187', '\x3', '\x2', '\x2', '\x2', 'm', '\x18D', + '\x3', '\x2', '\x2', '\x2', 'o', '\x192', '\x3', '\x2', '\x2', '\x2', + 'q', '\x198', '\x3', '\x2', '\x2', '\x2', 's', '\x19F', '\x3', '\x2', + '\x2', '\x2', 'u', '\x1A3', '\x3', '\x2', '\x2', '\x2', 'w', '\x1A8', + '\x3', '\x2', '\x2', '\x2', 'y', '\x1AC', '\x3', '\x2', '\x2', '\x2', + '{', '\x1B6', '\x3', '\x2', '\x2', '\x2', '}', '\x1BC', '\x3', '\x2', + '\x2', '\x2', '\x7F', '\x1C3', '\x3', '\x2', '\x2', '\x2', '\x81', '\x1F9', + '\x3', '\x2', '\x2', '\x2', '\x83', '\x20D', '\x3', '\x2', '\x2', '\x2', + '\x85', '\x20F', '\x3', '\x2', '\x2', '\x2', '\x87', '\x214', '\x3', '\x2', + '\x2', '\x2', '\x89', '\x21A', '\x3', '\x2', '\x2', '\x2', '\x8B', '\x21C', + '\x3', '\x2', '\x2', '\x2', '\x8D', '\x21E', '\x3', '\x2', '\x2', '\x2', + '\x8F', '\x229', '\x3', '\x2', '\x2', '\x2', '\x91', '\x22B', '\x3', '\x2', + '\x2', '\x2', '\x93', '\x22E', '\x3', '\x2', '\x2', '\x2', '\x95', '\x230', + '\x3', '\x2', '\x2', '\x2', '\x97', '\x232', '\x3', '\x2', '\x2', '\x2', + '\x99', '\x234', '\x3', '\x2', '\x2', '\x2', '\x9B', '\x236', '\x3', '\x2', + '\x2', '\x2', '\x9D', '\x238', '\x3', '\x2', '\x2', '\x2', '\x9F', '\x23A', + '\x3', '\x2', '\x2', '\x2', '\xA1', '\x23C', '\x3', '\x2', '\x2', '\x2', + '\xA3', '\x23E', '\x3', '\x2', '\x2', '\x2', '\xA5', '\x240', '\x3', '\x2', + '\x2', '\x2', '\xA7', '\x242', '\x3', '\x2', '\x2', '\x2', '\xA9', '\x244', + '\x3', '\x2', '\x2', '\x2', '\xAB', '\x246', '\x3', '\x2', '\x2', '\x2', + '\xAD', '\x248', '\x3', '\x2', '\x2', '\x2', '\xAF', '\x24A', '\x3', '\x2', + '\x2', '\x2', '\xB1', '\x24C', '\x3', '\x2', '\x2', '\x2', '\xB3', '\x24E', + '\x3', '\x2', '\x2', '\x2', '\xB5', '\x250', '\x3', '\x2', '\x2', '\x2', + '\xB7', '\x252', '\x3', '\x2', '\x2', '\x2', '\xB9', '\x254', '\x3', '\x2', + '\x2', '\x2', '\xBB', '\x256', '\x3', '\x2', '\x2', '\x2', '\xBD', '\x258', + '\x3', '\x2', '\x2', '\x2', '\xBF', '\x25A', '\x3', '\x2', '\x2', '\x2', + '\xC1', '\x25C', '\x3', '\x2', '\x2', '\x2', '\xC3', '\x25E', '\x3', '\x2', + '\x2', '\x2', '\xC5', '\x260', '\x3', '\x2', '\x2', '\x2', '\xC7', '\x262', + '\x3', '\x2', '\x2', '\x2', '\xC9', '\xCA', '\a', ',', '\x2', '\x2', '\xCA', + '\x4', '\x3', '\x2', '\x2', '\x2', '\xCB', '\xCC', '\a', '.', '\x2', '\x2', + '\xCC', '\x6', '\x3', '\x2', '\x2', '\x2', '\xCD', '\xCE', '\a', '*', + '\x2', '\x2', '\xCE', '\b', '\x3', '\x2', '\x2', '\x2', '\xCF', '\xD0', + '\a', '+', '\x2', '\x2', '\xD0', '\n', '\x3', '\x2', '\x2', '\x2', '\xD1', + '\xD2', '\a', '\x30', '\x2', '\x2', '\xD2', '\f', '\x3', '\x2', '\x2', + '\x2', '\xD3', '\xD4', '\a', ']', '\x2', '\x2', '\xD4', '\xE', '\x3', + '\x2', '\x2', '\x2', '\xD5', '\xD6', '\a', '_', '\x2', '\x2', '\xD6', + '\x10', '\x3', '\x2', '\x2', '\x2', '\xD7', '\xD8', '\a', '\x41', '\x2', + '\x2', '\xD8', '\x12', '\x3', '\x2', '\x2', '\x2', '\xD9', '\xDA', '\a', + '<', '\x2', '\x2', '\xDA', '\x14', '\x3', '\x2', '\x2', '\x2', '\xDB', + '\xDC', '\a', '\x41', '\x2', '\x2', '\xDC', '\xDD', '\a', '\x41', '\x2', + '\x2', '\xDD', '\x16', '\x3', '\x2', '\x2', '\x2', '\xDE', '\xDF', '\a', + '\x31', '\x2', '\x2', '\xDF', '\x18', '\x3', '\x2', '\x2', '\x2', '\xE0', + '\xE1', '\a', '\'', '\x2', '\x2', '\xE1', '\x1A', '\x3', '\x2', '\x2', + '\x2', '\xE2', '\xE3', '\a', '-', '\x2', '\x2', '\xE3', '\x1C', '\x3', + '\x2', '\x2', '\x2', '\xE4', '\xE5', '\a', '/', '\x2', '\x2', '\xE5', + '\x1E', '\x3', '\x2', '\x2', '\x2', '\xE6', '\xE7', '\a', '>', '\x2', + '\x2', '\xE7', ' ', '\x3', '\x2', '\x2', '\x2', '\xE8', '\xE9', '\a', + '@', '\x2', '\x2', '\xE9', '\"', '\x3', '\x2', '\x2', '\x2', '\xEA', '\xEB', + '\a', '@', '\x2', '\x2', '\xEB', '\xEC', '\a', '?', '\x2', '\x2', '\xEC', + '$', '\x3', '\x2', '\x2', '\x2', '\xED', '\xEE', '\a', '>', '\x2', '\x2', + '\xEE', '\xEF', '\a', '?', '\x2', '\x2', '\xEF', '&', '\x3', '\x2', '\x2', + '\x2', '\xF0', '\xF1', '\a', '?', '\x2', '\x2', '\xF1', '(', '\x3', '\x2', + '\x2', '\x2', '\xF2', '\xF3', '\a', '#', '\x2', '\x2', '\xF3', '\xF4', + '\a', '?', '\x2', '\x2', '\xF4', '*', '\x3', '\x2', '\x2', '\x2', '\xF5', + '\xF6', '\a', '(', '\x2', '\x2', '\xF6', ',', '\x3', '\x2', '\x2', '\x2', + '\xF7', '\xF8', '\a', '`', '\x2', '\x2', '\xF8', '.', '\x3', '\x2', '\x2', + '\x2', '\xF9', '\xFA', '\a', '~', '\x2', '\x2', '\xFA', '\x30', '\x3', + '\x2', '\x2', '\x2', '\xFB', '\xFC', '\a', '~', '\x2', '\x2', '\xFC', + '\xFD', '\a', '~', '\x2', '\x2', '\xFD', '\x32', '\x3', '\x2', '\x2', + '\x2', '\xFE', '\xFF', '\a', '\x80', '\x2', '\x2', '\xFF', '\x34', '\x3', + '\x2', '\x2', '\x2', '\x100', '\x101', '\a', '}', '\x2', '\x2', '\x101', + '\x36', '\x3', '\x2', '\x2', '\x2', '\x102', '\x103', '\a', '\x7F', '\x2', + '\x2', '\x103', '\x38', '\x3', '\x2', '\x2', '\x2', '\x104', '\x105', + '\x5', '\x95', 'K', '\x2', '\x105', '\x106', '\x5', '\xAB', 'V', '\x2', + '\x106', '\x107', '\x5', '\xAB', 'V', '\x2', '\x107', ':', '\x3', '\x2', + '\x2', '\x2', '\x108', '\x109', '\x5', '\x95', 'K', '\x2', '\x109', '\x10A', + '\x5', '\xAF', 'X', '\x2', '\x10A', '\x10B', '\x5', '\x9B', 'N', '\x2', + '\x10B', '<', '\x3', '\x2', '\x2', '\x2', '\x10C', '\x10D', '\x5', '\x95', + 'K', '\x2', '\x10D', '\x10E', '\x5', '\xB7', '\\', '\x2', '\x10E', '\x10F', + '\x5', '\xB7', '\\', '\x2', '\x10F', '\x110', '\x5', '\x95', 'K', '\x2', + '\x110', '\x111', '\x5', '\xC5', '\x63', '\x2', '\x111', '>', '\x3', '\x2', + '\x2', '\x2', '\x112', '\x113', '\x5', '\x95', 'K', '\x2', '\x113', '\x114', + '\x5', '\xB9', ']', '\x2', '\x114', '@', '\x3', '\x2', '\x2', '\x2', '\x115', + '\x116', '\x5', '\x95', 'K', '\x2', '\x116', '\x117', '\x5', '\xB9', ']', + '\x2', '\x117', '\x118', '\x5', '\x99', 'M', '\x2', '\x118', '\x42', '\x3', + '\x2', '\x2', '\x2', '\x119', '\x11A', '\x5', '\x97', 'L', '\x2', '\x11A', + '\x11B', '\x5', '\x9D', 'O', '\x2', '\x11B', '\x11C', '\x5', '\xBB', '^', + '\x2', '\x11C', '\x11D', '\x5', '\xC1', '\x61', '\x2', '\x11D', '\x11E', + '\x5', '\x9D', 'O', '\x2', '\x11E', '\x11F', '\x5', '\x9D', 'O', '\x2', + '\x11F', '\x120', '\x5', '\xAF', 'X', '\x2', '\x120', '\x44', '\x3', '\x2', + '\x2', '\x2', '\x121', '\x122', '\x5', '\x97', 'L', '\x2', '\x122', '\x123', + '\x5', '\xC5', '\x63', '\x2', '\x123', '\x46', '\x3', '\x2', '\x2', '\x2', + '\x124', '\x125', '\x5', '\x9B', 'N', '\x2', '\x125', '\x126', '\x5', + '\x9D', 'O', '\x2', '\x126', '\x127', '\x5', '\xB9', ']', '\x2', '\x127', + '\x128', '\x5', '\x99', 'M', '\x2', '\x128', 'H', '\x3', '\x2', '\x2', + '\x2', '\x129', '\x12A', '\x5', '\x9B', 'N', '\x2', '\x12A', '\x12B', + '\x5', '\xA5', 'S', '\x2', '\x12B', '\x12C', '\x5', '\xB9', ']', '\x2', + '\x12C', '\x12D', '\x5', '\xBB', '^', '\x2', '\x12D', '\x12E', '\x5', + '\xA5', 'S', '\x2', '\x12E', '\x12F', '\x5', '\xAF', 'X', '\x2', '\x12F', + '\x130', '\x5', '\x99', 'M', '\x2', '\x130', '\x131', '\x5', '\xBB', '^', + '\x2', '\x131', 'J', '\x3', '\x2', '\x2', '\x2', '\x132', '\x133', '\x5', + '\x9D', 'O', '\x2', '\x133', '\x134', '\x5', '\xB9', ']', '\x2', '\x134', + '\x135', '\x5', '\x99', 'M', '\x2', '\x135', '\x136', '\x5', '\x95', 'K', + '\x2', '\x136', '\x137', '\x5', '\xB3', 'Z', '\x2', '\x137', '\x138', + '\x5', '\x9D', 'O', '\x2', '\x138', 'L', '\x3', '\x2', '\x2', '\x2', '\x139', + '\x13A', '\x5', '\x9D', 'O', '\x2', '\x13A', '\x13B', '\x5', '\xC3', '\x62', + '\x2', '\x13B', '\x13C', '\x5', '\xA5', 'S', '\x2', '\x13C', '\x13D', + '\x5', '\xB9', ']', '\x2', '\x13D', '\x13E', '\x5', '\xBB', '^', '\x2', + '\x13E', '\x13F', '\x5', '\xB9', ']', '\x2', '\x13F', 'N', '\x3', '\x2', + '\x2', '\x2', '\x140', '\x141', '\x5', '\x9F', 'P', '\x2', '\x141', '\x142', + '\x5', '\xA5', 'S', '\x2', '\x142', '\x143', '\x5', '\xB7', '\\', '\x2', + '\x143', '\x144', '\x5', '\xB9', ']', '\x2', '\x144', '\x145', '\x5', + '\xBB', '^', '\x2', '\x145', 'P', '\x3', '\x2', '\x2', '\x2', '\x146', + '\x147', '\a', 'h', '\x2', '\x2', '\x147', '\x148', '\a', '\x63', '\x2', + '\x2', '\x148', '\x149', '\a', 'n', '\x2', '\x2', '\x149', '\x14A', '\a', + 'u', '\x2', '\x2', '\x14A', '\x14B', '\a', 'g', '\x2', '\x2', '\x14B', + 'R', '\x3', '\x2', '\x2', '\x2', '\x14C', '\x14D', '\x5', '\x9F', 'P', + '\x2', '\x14D', '\x14E', '\x5', '\xB7', '\\', '\x2', '\x14E', '\x14F', + '\x5', '\xB1', 'Y', '\x2', '\x14F', '\x150', '\x5', '\xAD', 'W', '\x2', + '\x150', 'T', '\x3', '\x2', '\x2', '\x2', '\x151', '\x152', '\x5', '\xA1', + 'Q', '\x2', '\x152', '\x153', '\x5', '\xB7', '\\', '\x2', '\x153', '\x154', + '\x5', '\xB1', 'Y', '\x2', '\x154', '\x155', '\x5', '\xBD', '_', '\x2', + '\x155', '\x156', '\x5', '\xB3', 'Z', '\x2', '\x156', 'V', '\x3', '\x2', + '\x2', '\x2', '\x157', '\x158', '\x5', '\xA5', 'S', '\x2', '\x158', '\x159', + '\x5', '\xAF', 'X', '\x2', '\x159', 'X', '\x3', '\x2', '\x2', '\x2', '\x15A', + '\x15B', '\x5', '\xA7', 'T', '\x2', '\x15B', '\x15C', '\x5', '\xB1', 'Y', + '\x2', '\x15C', '\x15D', '\x5', '\xA5', 'S', '\x2', '\x15D', '\x15E', + '\x5', '\xAF', 'X', '\x2', '\x15E', 'Z', '\x3', '\x2', '\x2', '\x2', '\x15F', + '\x160', '\x5', '\xAB', 'V', '\x2', '\x160', '\x161', '\x5', '\x95', 'K', + '\x2', '\x161', '\x162', '\x5', '\xB9', ']', '\x2', '\x162', '\x163', + '\x5', '\xBB', '^', '\x2', '\x163', '\\', '\x3', '\x2', '\x2', '\x2', + '\x164', '\x165', '\x5', '\xAB', 'V', '\x2', '\x165', '\x166', '\x5', + '\x9D', 'O', '\x2', '\x166', '\x167', '\x5', '\x9F', 'P', '\x2', '\x167', + '\x168', '\x5', '\xBB', '^', '\x2', '\x168', '^', '\x3', '\x2', '\x2', + '\x2', '\x169', '\x16A', '\x5', '\xAB', 'V', '\x2', '\x16A', '\x16B', + '\x5', '\xA5', 'S', '\x2', '\x16B', '\x16C', '\x5', '\xA9', 'U', '\x2', + '\x16C', '\x16D', '\x5', '\x9D', 'O', '\x2', '\x16D', '`', '\x3', '\x2', + '\x2', '\x2', '\x16E', '\x16F', '\x5', '\xAB', 'V', '\x2', '\x16F', '\x170', + '\x5', '\xA5', 'S', '\x2', '\x170', '\x171', '\x5', '\xAD', 'W', '\x2', + '\x171', '\x172', '\x5', '\xA5', 'S', '\x2', '\x172', '\x173', '\x5', + '\xBB', '^', '\x2', '\x173', '\x62', '\x3', '\x2', '\x2', '\x2', '\x174', + '\x175', '\x5', '\xAF', 'X', '\x2', '\x175', '\x176', '\x5', '\xB1', 'Y', + '\x2', '\x176', '\x177', '\x5', '\xBB', '^', '\x2', '\x177', '\x64', '\x3', + '\x2', '\x2', '\x2', '\x178', '\x179', '\a', 'p', '\x2', '\x2', '\x179', + '\x17A', '\a', 'w', '\x2', '\x2', '\x17A', '\x17B', '\a', 'n', '\x2', + '\x2', '\x17B', '\x17C', '\a', 'n', '\x2', '\x2', '\x17C', '\x66', '\x3', + '\x2', '\x2', '\x2', '\x17D', '\x17E', '\x5', '\xB1', 'Y', '\x2', '\x17E', + '\x17F', '\x5', '\x9F', 'P', '\x2', '\x17F', '\x180', '\x5', '\x9F', 'P', + '\x2', '\x180', '\x181', '\x5', '\xB9', ']', '\x2', '\x181', '\x182', + '\x5', '\x9D', 'O', '\x2', '\x182', '\x183', '\x5', '\xBB', '^', '\x2', + '\x183', 'h', '\x3', '\x2', '\x2', '\x2', '\x184', '\x185', '\x5', '\xB1', + 'Y', '\x2', '\x185', '\x186', '\x5', '\xB7', '\\', '\x2', '\x186', 'j', + '\x3', '\x2', '\x2', '\x2', '\x187', '\x188', '\x5', '\xB1', 'Y', '\x2', + '\x188', '\x189', '\x5', '\xB7', '\\', '\x2', '\x189', '\x18A', '\x5', + '\x9B', 'N', '\x2', '\x18A', '\x18B', '\x5', '\x9D', 'O', '\x2', '\x18B', + '\x18C', '\x5', '\xB7', '\\', '\x2', '\x18C', 'l', '\x3', '\x2', '\x2', + '\x2', '\x18D', '\x18E', '\x5', '\xB7', '\\', '\x2', '\x18E', '\x18F', + '\x5', '\x95', 'K', '\x2', '\x18F', '\x190', '\x5', '\xAF', 'X', '\x2', + '\x190', '\x191', '\x5', '\xA9', 'U', '\x2', '\x191', 'n', '\x3', '\x2', + '\x2', '\x2', '\x192', '\x193', '\x5', '\xB7', '\\', '\x2', '\x193', '\x194', + '\x5', '\xA5', 'S', '\x2', '\x194', '\x195', '\x5', '\xA1', 'Q', '\x2', + '\x195', '\x196', '\x5', '\xA3', 'R', '\x2', '\x196', '\x197', '\x5', + '\xBB', '^', '\x2', '\x197', 'p', '\x3', '\x2', '\x2', '\x2', '\x198', + '\x199', '\x5', '\xB9', ']', '\x2', '\x199', '\x19A', '\x5', '\x9D', 'O', + '\x2', '\x19A', '\x19B', '\x5', '\xAB', 'V', '\x2', '\x19B', '\x19C', + '\x5', '\x9D', 'O', '\x2', '\x19C', '\x19D', '\x5', '\x99', 'M', '\x2', + '\x19D', '\x19E', '\x5', '\xBB', '^', '\x2', '\x19E', 'r', '\x3', '\x2', + '\x2', '\x2', '\x19F', '\x1A0', '\x5', '\xBB', '^', '\x2', '\x1A0', '\x1A1', + '\x5', '\xB1', 'Y', '\x2', '\x1A1', '\x1A2', '\x5', '\xB3', 'Z', '\x2', + '\x1A2', 't', '\x3', '\x2', '\x2', '\x2', '\x1A3', '\x1A4', '\a', 'v', + '\x2', '\x2', '\x1A4', '\x1A5', '\a', 't', '\x2', '\x2', '\x1A5', '\x1A6', + '\a', 'w', '\x2', '\x2', '\x1A6', '\x1A7', '\a', 'g', '\x2', '\x2', '\x1A7', + 'v', '\x3', '\x2', '\x2', '\x2', '\x1A8', '\x1A9', '\a', 'w', '\x2', '\x2', + '\x1A9', '\x1AA', '\a', '\x66', '\x2', '\x2', '\x1AA', '\x1AB', '\a', + 'h', '\x2', '\x2', '\x1AB', 'x', '\x3', '\x2', '\x2', '\x2', '\x1AC', + '\x1AD', '\a', 'w', '\x2', '\x2', '\x1AD', '\x1AE', '\a', 'p', '\x2', + '\x2', '\x1AE', '\x1AF', '\a', '\x66', '\x2', '\x2', '\x1AF', '\x1B0', + '\a', 'g', '\x2', '\x2', '\x1B0', '\x1B1', '\a', 'h', '\x2', '\x2', '\x1B1', + '\x1B2', '\a', 'k', '\x2', '\x2', '\x1B2', '\x1B3', '\a', 'p', '\x2', + '\x2', '\x1B3', '\x1B4', '\a', 'g', '\x2', '\x2', '\x1B4', '\x1B5', '\a', + '\x66', '\x2', '\x2', '\x1B5', 'z', '\x3', '\x2', '\x2', '\x2', '\x1B6', + '\x1B7', '\x5', '\xBF', '`', '\x2', '\x1B7', '\x1B8', '\x5', '\x95', 'K', + '\x2', '\x1B8', '\x1B9', '\x5', '\xAB', 'V', '\x2', '\x1B9', '\x1BA', + '\x5', '\xBD', '_', '\x2', '\x1BA', '\x1BB', '\x5', '\x9D', 'O', '\x2', + '\x1BB', '|', '\x3', '\x2', '\x2', '\x2', '\x1BC', '\x1BD', '\x5', '\xC1', + '\x61', '\x2', '\x1BD', '\x1BE', '\x5', '\xA3', 'R', '\x2', '\x1BE', '\x1BF', + '\x5', '\x9D', 'O', '\x2', '\x1BF', '\x1C0', '\x5', '\xB7', '\\', '\x2', + '\x1C0', '\x1C1', '\x5', '\x9D', 'O', '\x2', '\x1C1', '~', '\x3', '\x2', + '\x2', '\x2', '\x1C2', '\x1C4', '\t', '\x2', '\x2', '\x2', '\x1C3', '\x1C2', + '\x3', '\x2', '\x2', '\x2', '\x1C4', '\x1C5', '\x3', '\x2', '\x2', '\x2', + '\x1C5', '\x1C3', '\x3', '\x2', '\x2', '\x2', '\x1C5', '\x1C6', '\x3', + '\x2', '\x2', '\x2', '\x1C6', '\x1C7', '\x3', '\x2', '\x2', '\x2', '\x1C7', + '\x1C8', '\b', '@', '\x2', '\x2', '\x1C8', '\x80', '\x3', '\x2', '\x2', + '\x2', '\x1C9', '\x1CB', '\t', '\x3', '\x2', '\x2', '\x1CA', '\x1C9', + '\x3', '\x2', '\x2', '\x2', '\x1CA', '\x1CB', '\x3', '\x2', '\x2', '\x2', + '\x1CB', '\x1CD', '\x3', '\x2', '\x2', '\x2', '\x1CC', '\x1CE', '\x5', + '\x93', 'J', '\x2', '\x1CD', '\x1CC', '\x3', '\x2', '\x2', '\x2', '\x1CE', + '\x1CF', '\x3', '\x2', '\x2', '\x2', '\x1CF', '\x1CD', '\x3', '\x2', '\x2', + '\x2', '\x1CF', '\x1D0', '\x3', '\x2', '\x2', '\x2', '\x1D0', '\x1D8', + '\x3', '\x2', '\x2', '\x2', '\x1D1', '\x1D5', '\a', '\x30', '\x2', '\x2', + '\x1D2', '\x1D4', '\x5', '\x93', 'J', '\x2', '\x1D3', '\x1D2', '\x3', + '\x2', '\x2', '\x2', '\x1D4', '\x1D7', '\x3', '\x2', '\x2', '\x2', '\x1D5', + '\x1D3', '\x3', '\x2', '\x2', '\x2', '\x1D5', '\x1D6', '\x3', '\x2', '\x2', + '\x2', '\x1D6', '\x1D9', '\x3', '\x2', '\x2', '\x2', '\x1D7', '\x1D5', + '\x3', '\x2', '\x2', '\x2', '\x1D8', '\x1D1', '\x3', '\x2', '\x2', '\x2', + '\x1D8', '\x1D9', '\x3', '\x2', '\x2', '\x2', '\x1D9', '\x1E3', '\x3', + '\x2', '\x2', '\x2', '\x1DA', '\x1DC', '\x5', '\x9D', 'O', '\x2', '\x1DB', + '\x1DD', '\t', '\x3', '\x2', '\x2', '\x1DC', '\x1DB', '\x3', '\x2', '\x2', + '\x2', '\x1DC', '\x1DD', '\x3', '\x2', '\x2', '\x2', '\x1DD', '\x1DF', + '\x3', '\x2', '\x2', '\x2', '\x1DE', '\x1E0', '\x5', '\x93', 'J', '\x2', + '\x1DF', '\x1DE', '\x3', '\x2', '\x2', '\x2', '\x1E0', '\x1E1', '\x3', + '\x2', '\x2', '\x2', '\x1E1', '\x1DF', '\x3', '\x2', '\x2', '\x2', '\x1E1', + '\x1E2', '\x3', '\x2', '\x2', '\x2', '\x1E2', '\x1E4', '\x3', '\x2', '\x2', + '\x2', '\x1E3', '\x1DA', '\x3', '\x2', '\x2', '\x2', '\x1E3', '\x1E4', + '\x3', '\x2', '\x2', '\x2', '\x1E4', '\x1FA', '\x3', '\x2', '\x2', '\x2', + '\x1E5', '\x1E7', '\t', '\x3', '\x2', '\x2', '\x1E6', '\x1E5', '\x3', + '\x2', '\x2', '\x2', '\x1E6', '\x1E7', '\x3', '\x2', '\x2', '\x2', '\x1E7', + '\x1E8', '\x3', '\x2', '\x2', '\x2', '\x1E8', '\x1EA', '\a', '\x30', '\x2', + '\x2', '\x1E9', '\x1EB', '\x5', '\x93', 'J', '\x2', '\x1EA', '\x1E9', + '\x3', '\x2', '\x2', '\x2', '\x1EB', '\x1EC', '\x3', '\x2', '\x2', '\x2', + '\x1EC', '\x1EA', '\x3', '\x2', '\x2', '\x2', '\x1EC', '\x1ED', '\x3', + '\x2', '\x2', '\x2', '\x1ED', '\x1F7', '\x3', '\x2', '\x2', '\x2', '\x1EE', + '\x1F0', '\x5', '\x9D', 'O', '\x2', '\x1EF', '\x1F1', '\t', '\x3', '\x2', + '\x2', '\x1F0', '\x1EF', '\x3', '\x2', '\x2', '\x2', '\x1F0', '\x1F1', + '\x3', '\x2', '\x2', '\x2', '\x1F1', '\x1F3', '\x3', '\x2', '\x2', '\x2', + '\x1F2', '\x1F4', '\x5', '\x93', 'J', '\x2', '\x1F3', '\x1F2', '\x3', + '\x2', '\x2', '\x2', '\x1F4', '\x1F5', '\x3', '\x2', '\x2', '\x2', '\x1F5', + '\x1F3', '\x3', '\x2', '\x2', '\x2', '\x1F5', '\x1F6', '\x3', '\x2', '\x2', + '\x2', '\x1F6', '\x1F8', '\x3', '\x2', '\x2', '\x2', '\x1F7', '\x1EE', + '\x3', '\x2', '\x2', '\x2', '\x1F7', '\x1F8', '\x3', '\x2', '\x2', '\x2', + '\x1F8', '\x1FA', '\x3', '\x2', '\x2', '\x2', '\x1F9', '\x1CA', '\x3', + '\x2', '\x2', '\x2', '\x1F9', '\x1E6', '\x3', '\x2', '\x2', '\x2', '\x1FA', + '\x82', '\x3', '\x2', '\x2', '\x2', '\x1FB', '\x200', '\a', '$', '\x2', + '\x2', '\x1FC', '\x1FF', '\x5', '\x85', '\x43', '\x2', '\x1FD', '\x1FF', + '\x5', '\x8D', 'G', '\x2', '\x1FE', '\x1FC', '\x3', '\x2', '\x2', '\x2', + '\x1FE', '\x1FD', '\x3', '\x2', '\x2', '\x2', '\x1FF', '\x202', '\x3', + '\x2', '\x2', '\x2', '\x200', '\x1FE', '\x3', '\x2', '\x2', '\x2', '\x200', + '\x201', '\x3', '\x2', '\x2', '\x2', '\x201', '\x203', '\x3', '\x2', '\x2', + '\x2', '\x202', '\x200', '\x3', '\x2', '\x2', '\x2', '\x203', '\x20E', + '\a', '$', '\x2', '\x2', '\x204', '\x209', '\a', ')', '\x2', '\x2', '\x205', + '\x208', '\x5', '\x85', '\x43', '\x2', '\x206', '\x208', '\x5', '\x8B', + '\x46', '\x2', '\x207', '\x205', '\x3', '\x2', '\x2', '\x2', '\x207', + '\x206', '\x3', '\x2', '\x2', '\x2', '\x208', '\x20B', '\x3', '\x2', '\x2', + '\x2', '\x209', '\x207', '\x3', '\x2', '\x2', '\x2', '\x209', '\x20A', + '\x3', '\x2', '\x2', '\x2', '\x20A', '\x20C', '\x3', '\x2', '\x2', '\x2', + '\x20B', '\x209', '\x3', '\x2', '\x2', '\x2', '\x20C', '\x20E', '\a', + ')', '\x2', '\x2', '\x20D', '\x1FB', '\x3', '\x2', '\x2', '\x2', '\x20D', + '\x204', '\x3', '\x2', '\x2', '\x2', '\x20E', '\x84', '\x3', '\x2', '\x2', + '\x2', '\x20F', '\x212', '\a', '^', '\x2', '\x2', '\x210', '\x213', '\t', + '\x4', '\x2', '\x2', '\x211', '\x213', '\x5', '\x87', '\x44', '\x2', '\x212', + '\x210', '\x3', '\x2', '\x2', '\x2', '\x212', '\x211', '\x3', '\x2', '\x2', + '\x2', '\x213', '\x86', '\x3', '\x2', '\x2', '\x2', '\x214', '\x215', + '\a', 'w', '\x2', '\x2', '\x215', '\x216', '\x5', '\x89', '\x45', '\x2', + '\x216', '\x217', '\x5', '\x89', '\x45', '\x2', '\x217', '\x218', '\x5', + '\x89', '\x45', '\x2', '\x218', '\x219', '\x5', '\x89', '\x45', '\x2', + '\x219', '\x88', '\x3', '\x2', '\x2', '\x2', '\x21A', '\x21B', '\t', '\x5', + '\x2', '\x2', '\x21B', '\x8A', '\x3', '\x2', '\x2', '\x2', '\x21C', '\x21D', + '\n', '\x6', '\x2', '\x2', '\x21D', '\x8C', '\x3', '\x2', '\x2', '\x2', + '\x21E', '\x21F', '\n', '\a', '\x2', '\x2', '\x21F', '\x8E', '\x3', '\x2', + '\x2', '\x2', '\x220', '\x22A', '\x3', '\x2', '\x2', '\x2', '\x221', '\x226', + '\t', '\b', '\x2', '\x2', '\x222', '\x225', '\t', '\b', '\x2', '\x2', + '\x223', '\x225', '\x5', '\x93', 'J', '\x2', '\x224', '\x222', '\x3', + '\x2', '\x2', '\x2', '\x224', '\x223', '\x3', '\x2', '\x2', '\x2', '\x225', + '\x228', '\x3', '\x2', '\x2', '\x2', '\x226', '\x224', '\x3', '\x2', '\x2', + '\x2', '\x226', '\x227', '\x3', '\x2', '\x2', '\x2', '\x227', '\x22A', + '\x3', '\x2', '\x2', '\x2', '\x228', '\x226', '\x3', '\x2', '\x2', '\x2', + '\x229', '\x220', '\x3', '\x2', '\x2', '\x2', '\x229', '\x221', '\x3', + '\x2', '\x2', '\x2', '\x22A', '\x90', '\x3', '\x2', '\x2', '\x2', '\x22B', + '\x22C', '\a', '\x42', '\x2', '\x2', '\x22C', '\x22D', '\x5', '\x8F', + 'H', '\x2', '\x22D', '\x92', '\x3', '\x2', '\x2', '\x2', '\x22E', '\x22F', + '\t', '\t', '\x2', '\x2', '\x22F', '\x94', '\x3', '\x2', '\x2', '\x2', + '\x230', '\x231', '\t', '\n', '\x2', '\x2', '\x231', '\x96', '\x3', '\x2', + '\x2', '\x2', '\x232', '\x233', '\t', '\v', '\x2', '\x2', '\x233', '\x98', + '\x3', '\x2', '\x2', '\x2', '\x234', '\x235', '\t', '\f', '\x2', '\x2', + '\x235', '\x9A', '\x3', '\x2', '\x2', '\x2', '\x236', '\x237', '\t', '\r', + '\x2', '\x2', '\x237', '\x9C', '\x3', '\x2', '\x2', '\x2', '\x238', '\x239', + '\t', '\xE', '\x2', '\x2', '\x239', '\x9E', '\x3', '\x2', '\x2', '\x2', + '\x23A', '\x23B', '\t', '\xF', '\x2', '\x2', '\x23B', '\xA0', '\x3', '\x2', + '\x2', '\x2', '\x23C', '\x23D', '\t', '\x10', '\x2', '\x2', '\x23D', '\xA2', + '\x3', '\x2', '\x2', '\x2', '\x23E', '\x23F', '\t', '\x11', '\x2', '\x2', + '\x23F', '\xA4', '\x3', '\x2', '\x2', '\x2', '\x240', '\x241', '\t', '\x12', + '\x2', '\x2', '\x241', '\xA6', '\x3', '\x2', '\x2', '\x2', '\x242', '\x243', + '\t', '\x13', '\x2', '\x2', '\x243', '\xA8', '\x3', '\x2', '\x2', '\x2', + '\x244', '\x245', '\t', '\x14', '\x2', '\x2', '\x245', '\xAA', '\x3', + '\x2', '\x2', '\x2', '\x246', '\x247', '\t', '\x15', '\x2', '\x2', '\x247', + '\xAC', '\x3', '\x2', '\x2', '\x2', '\x248', '\x249', '\t', '\x16', '\x2', + '\x2', '\x249', '\xAE', '\x3', '\x2', '\x2', '\x2', '\x24A', '\x24B', + '\t', '\x17', '\x2', '\x2', '\x24B', '\xB0', '\x3', '\x2', '\x2', '\x2', + '\x24C', '\x24D', '\t', '\x18', '\x2', '\x2', '\x24D', '\xB2', '\x3', + '\x2', '\x2', '\x2', '\x24E', '\x24F', '\t', '\x19', '\x2', '\x2', '\x24F', + '\xB4', '\x3', '\x2', '\x2', '\x2', '\x250', '\x251', '\t', '\x1A', '\x2', + '\x2', '\x251', '\xB6', '\x3', '\x2', '\x2', '\x2', '\x252', '\x253', + '\t', '\x1B', '\x2', '\x2', '\x253', '\xB8', '\x3', '\x2', '\x2', '\x2', + '\x254', '\x255', '\t', '\x1C', '\x2', '\x2', '\x255', '\xBA', '\x3', + '\x2', '\x2', '\x2', '\x256', '\x257', '\t', '\x1D', '\x2', '\x2', '\x257', + '\xBC', '\x3', '\x2', '\x2', '\x2', '\x258', '\x259', '\t', '\x1E', '\x2', + '\x2', '\x259', '\xBE', '\x3', '\x2', '\x2', '\x2', '\x25A', '\x25B', + '\t', '\x1F', '\x2', '\x2', '\x25B', '\xC0', '\x3', '\x2', '\x2', '\x2', + '\x25C', '\x25D', '\t', ' ', '\x2', '\x2', '\x25D', '\xC2', '\x3', '\x2', + '\x2', '\x2', '\x25E', '\x25F', '\t', '!', '\x2', '\x2', '\x25F', '\xC4', + '\x3', '\x2', '\x2', '\x2', '\x260', '\x261', '\t', '\"', '\x2', '\x2', + '\x261', '\xC6', '\x3', '\x2', '\x2', '\x2', '\x262', '\x263', '\t', '#', + '\x2', '\x2', '\x263', '\xC8', '\x3', '\x2', '\x2', '\x2', '\x1A', '\x2', + '\x1C5', '\x1CA', '\x1CF', '\x1D5', '\x1D8', '\x1DC', '\x1E1', '\x1E3', + '\x1E6', '\x1EC', '\x1F0', '\x1F5', '\x1F7', '\x1F9', '\x1FE', '\x200', + '\x207', '\x209', '\x20D', '\x212', '\x224', '\x226', '\x229', '\x3', + '\b', '\x2', '\x2', + }; + + 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 e68b8e18f5..fe40a33098 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlParser.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/sqlParser.cs @@ -1,4313 +1,4473 @@ -//------------------------------------------------------------------------------ -// -// 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 System; -using System.IO; -using System.Text; -using System.Diagnostics; -using System.Collections.Generic; -using Antlr4.Runtime; -using Antlr4.Runtime.Atn; -using Antlr4.Runtime.Misc; -using Antlr4.Runtime.Tree; -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_ALL=28, K_AND=29, K_ARRAY=30, K_AS=31, - K_ASC=32, K_BETWEEN=33, K_BY=34, K_DESC=35, K_DISTINCT=36, K_ESCAPE=37, - K_EXISTS=38, K_FIRST=39, K_FALSE=40, K_FROM=41, K_GROUP=42, K_IN=43, K_JOIN=44, - K_LAST=45, K_LEFT=46, K_LIKE=47, K_LIMIT=48, K_NOT=49, K_NULL=50, K_OFFSET=51, - K_OR=52, K_ORDER=53, K_RIGHT=54, K_SELECT=55, K_TOP=56, K_TRUE=57, K_UDF=58, - K_UNDEFINED=59, K_VALUE=60, K_WHERE=61, WS=62, NUMERIC_LITERAL=63, STRING_LITERAL=64, - LEX_IDENTIFIER=65, PARAMETER=66; - 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_function_call_scalar_expression = 39, RULE_scalar_expression_list = 40, - RULE_object_property_list = 41, RULE_object_property = 42, RULE_identifier = 43, - RULE_literal = 44; - 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", "function_call_scalar_expression", - "scalar_expression_list", "object_property_list", "object_property", "identifier", - "literal" - }; - - private static readonly string[] _LiteralNames = { - null, "'*'", "','", "'('", "')'", "'.'", "'['", "']'", "'?'", "':'", "'??'", - "'/'", "'%'", "'+'", "'-'", "'<'", "'>'", "'>='", "'<='", "'='", "'!='", - "'&'", "'^'", "'|'", "'||'", "'~'", "'{'", "'}'", null, 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, - null, null, null, "'true'", "'udf'", "'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_ALL", "K_AND", "K_ARRAY", "K_AS", "K_ASC", - "K_BETWEEN", "K_BY", "K_DESC", "K_DISTINCT", "K_ESCAPE", "K_EXISTS", "K_FIRST", - "K_FALSE", "K_FROM", "K_GROUP", "K_IN", "K_JOIN", "K_LAST", "K_LEFT", - "K_LIKE", "K_LIMIT", "K_NOT", "K_NULL", "K_OFFSET", "K_OR", "K_ORDER", - "K_RIGHT", "K_SELECT", "K_TOP", "K_TRUE", "K_UDF", "K_UNDEFINED", "K_VALUE", - "K_WHERE", "WS", "NUMERIC_LITERAL", "STRING_LITERAL", "LEX_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 = 90; sql_query(); - State = 91; 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 = 93; select_clause(); - State = 95; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if (_la==K_FROM) { - { - State = 94; from_clause(); - } - } - - State = 98; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if (_la==K_WHERE) { - { - State = 97; where_clause(); - } - } - - State = 101; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if (_la==K_GROUP) { - { - State = 100; group_by_clause(); - } - } - - State = 104; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if (_la==K_ORDER) { - { - State = 103; order_by_clause(); - } - } - - State = 107; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if (_la==K_OFFSET) { - { - State = 106; 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 = 109; Match(K_SELECT); - State = 111; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if (_la==K_DISTINCT) { - { - State = 110; Match(K_DISTINCT); - } - } - - State = 114; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if (_la==K_TOP) { - { - State = 113; top_spec(); - } - } - - State = 116; 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 = 118; Match(K_TOP); - State = 119; - _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 = 124; - ErrorHandler.Sync(this); - switch (TokenStream.LA(1)) { - case T__0: - EnterOuterAlt(_localctx, 1); - { - State = 121; select_star_spec(); - } - break; - case K_VALUE: - EnterOuterAlt(_localctx, 2); - { - State = 122; select_value_spec(); - } - break; - case T__2: - case T__5: - case T__12: - case T__13: - case T__24: - case T__25: - case K_ALL: - case K_ARRAY: - case K_EXISTS: - case K_FIRST: - case K_FALSE: - case K_LAST: - case K_LEFT: - case K_NOT: - case K_NULL: - case K_RIGHT: - case K_TRUE: - case K_UDF: - case K_UNDEFINED: - case NUMERIC_LITERAL: - case STRING_LITERAL: - case LEX_IDENTIFIER: - case PARAMETER: - EnterOuterAlt(_localctx, 3); - { - State = 123; 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 = 126; 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 = 128; Match(K_VALUE); - State = 129; 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 = 131; select_item(); - State = 136; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - while (_la==T__1) { - { - { - State = 132; Match(T__1); - State = 133; select_item(); - } - } - State = 138; - 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 IdentifierContext identifier() { - return GetRuleContext(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 = 139; scalar_expression(0); - State = 142; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if (_la==K_AS) { - { - State = 140; Match(K_AS); - State = 141; 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 = 144; Match(K_FROM); - State = 145; 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 IdentifierContext identifier() { - return GetRuleContext(0); - } - public ITerminalNode K_AS() { return GetToken(sqlParser.K_AS, 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 IdentifierContext identifier() { - return GetRuleContext(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); - int _la; - try { - int _alt; - EnterOuterAlt(_localctx, 1); - { - State = 159; - ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,12,Context) ) { - case 1: - { - _localctx = new AliasedCollectionExpressionContext(_localctx); - Context = _localctx; - _prevctx = _localctx; - - State = 148; collection(); - State = 153; - ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,11,Context) ) { - case 1: - { - State = 150; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if (_la==K_AS) { - { - State = 149; Match(K_AS); - } - } - - State = 152; identifier(); - } - break; - } - } - break; - case 2: - { - _localctx = new ArrayIteratorCollectionExpressionContext(_localctx); - Context = _localctx; - _prevctx = _localctx; - State = 155; identifier(); - State = 156; Match(K_IN); - State = 157; collection(); - } - break; - } - Context.Stop = TokenStream.LT(-1); - State = 166; - ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,13,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 = 161; - if (!(Precpred(Context, 1))) throw new FailedPredicateException(this, "Precpred(Context, 1)"); - State = 162; Match(K_JOIN); - State = 163; collection_expression(2); - } - } - } - State = 168; - ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,13,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 IdentifierContext identifier() { - return GetRuleContext(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 = 177; - ErrorHandler.Sync(this); - switch (TokenStream.LA(1)) { - case K_ALL: - case K_FIRST: - case K_LAST: - case LEX_IDENTIFIER: - _localctx = new InputPathCollectionContext(_localctx); - EnterOuterAlt(_localctx, 1); - { - State = 169; identifier(); - State = 171; - ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,14,Context) ) { - case 1: - { - State = 170; path_expression(0); - } - break; - } - } - break; - case T__2: - _localctx = new SubqueryCollectionContext(_localctx); - EnterOuterAlt(_localctx, 2); - { - State = 173; Match(T__2); - State = 174; sql_query(); - State = 175; 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 IdentifierContext identifier() { - return GetRuleContext(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 = 193; - ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,17,Context); - while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - if ( ParseListeners!=null ) - TriggerExitRuleEvent(); - _prevctx = _localctx; - { - State = 191; - ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,16,Context) ) { - case 1: - { - _localctx = new IdentifierPathExpressionContext(new Path_expressionContext(_parentctx, _parentState)); - PushNewRecursionContext(_localctx, _startState, RULE_path_expression); - State = 180; - if (!(Precpred(Context, 4))) throw new FailedPredicateException(this, "Precpred(Context, 4)"); - State = 181; Match(T__4); - State = 182; identifier(); - } - break; - case 2: - { - _localctx = new NumberPathExpressionContext(new Path_expressionContext(_parentctx, _parentState)); - PushNewRecursionContext(_localctx, _startState, RULE_path_expression); - State = 183; - if (!(Precpred(Context, 3))) throw new FailedPredicateException(this, "Precpred(Context, 3)"); - State = 184; Match(T__5); - State = 185; Match(NUMERIC_LITERAL); - State = 186; Match(T__6); - } - break; - case 3: - { - _localctx = new StringPathExpressionContext(new Path_expressionContext(_parentctx, _parentState)); - PushNewRecursionContext(_localctx, _startState, RULE_path_expression); - State = 187; - if (!(Precpred(Context, 2))) throw new FailedPredicateException(this, "Precpred(Context, 2)"); - State = 188; Match(T__5); - State = 189; Match(STRING_LITERAL); - State = 190; Match(T__6); - } - break; - } - } - } - State = 195; - ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,17,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 = 196; Match(K_WHERE); - State = 197; 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 = 199; Match(K_GROUP); - State = 200; Match(K_BY); - State = 201; 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 = 203; Match(K_ORDER); - State = 204; Match(K_BY); - State = 205; 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 = 207; order_by_item(); - State = 212; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - while (_la==T__1) { - { - { - State = 208; Match(T__1); - State = 209; order_by_item(); - } - } - State = 214; - 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 = 215; scalar_expression(0); - State = 217; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if (_la==K_ASC || _la==K_DESC) { - { - State = 216; 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 = 219; - _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 = 221; Match(K_OFFSET); - State = 222; offset_count(); - State = 223; Match(K_LIMIT); - State = 224; 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 = 226; - _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 = 228; - _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 = 241; - ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,21,Context) ) { - case 1: - { - _localctx = new LogicalScalarExpressionContext(_localctx); - Context = _localctx; - _prevctx = _localctx; - - State = 231; logical_scalar_expression(0); - } - break; - case 2: - { - _localctx = new BetweenScalarExpressionContext(_localctx); - Context = _localctx; - _prevctx = _localctx; - State = 232; binary_scalar_expression(0); - State = 234; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if (_la==K_NOT) { - { - State = 233; Match(K_NOT); - } - } - - State = 236; Match(K_BETWEEN); - State = 237; binary_scalar_expression(0); - State = 238; Match(K_AND); - State = 239; binary_scalar_expression(0); - } - break; - } - Context.Stop = TokenStream.LT(-1); - State = 254; - ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,23,Context); - while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - if ( ParseListeners!=null ) - TriggerExitRuleEvent(); - _prevctx = _localctx; - { - State = 252; - ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,22,Context) ) { - case 1: - { - _localctx = new ConditionalScalarExpressionContext(new Scalar_expressionContext(_parentctx, _parentState)); - PushNewRecursionContext(_localctx, _startState, RULE_scalar_expression); - State = 243; - if (!(Precpred(Context, 4))) throw new FailedPredicateException(this, "Precpred(Context, 4)"); - State = 244; Match(T__7); - State = 245; scalar_expression(0); - State = 246; Match(T__8); - State = 247; scalar_expression(5); - } - break; - case 2: - { - _localctx = new CoalesceScalarExpressionContext(new Scalar_expressionContext(_parentctx, _parentState)); - PushNewRecursionContext(_localctx, _startState, RULE_scalar_expression); - State = 249; - if (!(Precpred(Context, 3))) throw new FailedPredicateException(this, "Precpred(Context, 3)"); - State = 250; Match(T__9); - State = 251; scalar_expression(4); - } - break; - } - } - } - State = 256; - ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,23,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[] logical_scalar_expression() { - return GetRuleContexts(); - } - public Logical_scalar_expressionContext logical_scalar_expression(int i) { - return GetRuleContext(i); - } - public ITerminalNode K_AND() { return GetToken(sqlParser.K_AND, 0); } - public ITerminalNode K_OR() { return GetToken(sqlParser.K_OR, 0); } - public Logical_scalar_expressionContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - 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() { - return logical_scalar_expression(0); - } - - private Logical_scalar_expressionContext logical_scalar_expression(int _p) { - ParserRuleContext _parentctx = Context; - int _parentState = State; - Logical_scalar_expressionContext _localctx = new Logical_scalar_expressionContext(Context, _parentState); - Logical_scalar_expressionContext _prevctx = _localctx; - int _startState = 46; - EnterRecursionRule(_localctx, 46, RULE_logical_scalar_expression, _p); - try { - int _alt; - EnterOuterAlt(_localctx, 1); - { - State = 261; - ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,24,Context) ) { - case 1: - { - State = 258; binary_scalar_expression(0); - } - break; - case 2: - { - State = 259; in_scalar_expression(); - } - break; - case 3: - { - State = 260; like_scalar_expression(); - } - break; - } - Context.Stop = TokenStream.LT(-1); - State = 271; - 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 = 269; - ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,25,Context) ) { - case 1: - { - _localctx = new Logical_scalar_expressionContext(_parentctx, _parentState); - PushNewRecursionContext(_localctx, _startState, RULE_logical_scalar_expression); - State = 263; - if (!(Precpred(Context, 2))) throw new FailedPredicateException(this, "Precpred(Context, 2)"); - State = 264; Match(K_AND); - State = 265; logical_scalar_expression(3); - } - break; - case 2: - { - _localctx = new Logical_scalar_expressionContext(_parentctx, _parentState); - PushNewRecursionContext(_localctx, _startState, RULE_logical_scalar_expression); - State = 266; - if (!(Precpred(Context, 1))) throw new FailedPredicateException(this, "Precpred(Context, 1)"); - State = 267; Match(K_OR); - State = 268; logical_scalar_expression(2); - } - break; - } - } - } - State = 273; - 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 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 = 274; binary_scalar_expression(0); - State = 276; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if (_la==K_NOT) { - { - State = 275; Match(K_NOT); - } - } - - State = 278; Match(K_IN); - State = 279; Match(T__2); - State = 280; scalar_expression_list(); - State = 281; 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 = 283; binary_scalar_expression(0); - State = 285; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if (_la==K_NOT) { - { - State = 284; Match(K_NOT); - } - } - - State = 287; Match(K_LIKE); - State = 288; binary_scalar_expression(0); - State = 290; - ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,29,Context) ) { - case 1: - { - State = 289; 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 = 292; Match(K_ESCAPE); - State = 293; 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 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 = 296; unary_scalar_expression(); - } - Context.Stop = TokenStream.LT(-1); - State = 332; - ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,31,Context); - while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - if ( ParseListeners!=null ) - TriggerExitRuleEvent(); - _prevctx = _localctx; - { - State = 330; - ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,30,Context) ) { - case 1: - { - _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); - PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 298; - if (!(Precpred(Context, 8))) throw new FailedPredicateException(this, "Precpred(Context, 8)"); - State = 299; multiplicative_operator(); - State = 300; binary_scalar_expression(9); - } - break; - case 2: - { - _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); - PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 302; - if (!(Precpred(Context, 7))) throw new FailedPredicateException(this, "Precpred(Context, 7)"); - State = 303; additive_operator(); - State = 304; binary_scalar_expression(8); - } - break; - case 3: - { - _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); - PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 306; - if (!(Precpred(Context, 6))) throw new FailedPredicateException(this, "Precpred(Context, 6)"); - State = 307; relational_operator(); - State = 308; binary_scalar_expression(7); - } - break; - case 4: - { - _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); - PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 310; - if (!(Precpred(Context, 5))) throw new FailedPredicateException(this, "Precpred(Context, 5)"); - State = 311; equality_operator(); - State = 312; binary_scalar_expression(6); - } - break; - case 5: - { - _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); - PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 314; - if (!(Precpred(Context, 4))) throw new FailedPredicateException(this, "Precpred(Context, 4)"); - State = 315; bitwise_and_operator(); - State = 316; binary_scalar_expression(5); - } - break; - case 6: - { - _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); - PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 318; - if (!(Precpred(Context, 3))) throw new FailedPredicateException(this, "Precpred(Context, 3)"); - State = 319; bitwise_exclusive_or_operator(); - State = 320; binary_scalar_expression(4); - } - break; - case 7: - { - _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); - PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 322; - if (!(Precpred(Context, 2))) throw new FailedPredicateException(this, "Precpred(Context, 2)"); - State = 323; bitwise_inclusive_or_operator(); - State = 324; binary_scalar_expression(3); - } - break; - case 8: - { - _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); - PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); - State = 326; - if (!(Precpred(Context, 1))) throw new FailedPredicateException(this, "Precpred(Context, 1)"); - State = 327; string_concat_operator(); - State = 328; binary_scalar_expression(2); - } - break; - } - } - } - State = 334; - ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,31,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 = 335; - _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 = 337; - _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 = 339; - _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 = 341; - _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 = 343; 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 = 345; 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 = 347; 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 = 349; 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 = 355; - ErrorHandler.Sync(this); - switch (TokenStream.LA(1)) { - case T__2: - case T__5: - case T__25: - case K_ALL: - case K_ARRAY: - case K_EXISTS: - case K_FIRST: - case K_FALSE: - case K_LAST: - case K_LEFT: - case K_NULL: - case K_RIGHT: - case K_TRUE: - case K_UDF: - case K_UNDEFINED: - case NUMERIC_LITERAL: - case STRING_LITERAL: - case LEX_IDENTIFIER: - case PARAMETER: - EnterOuterAlt(_localctx, 1); - { - State = 351; primary_expression(0); - } - break; - case T__12: - case T__13: - case T__24: - case K_NOT: - EnterOuterAlt(_localctx, 2); - { - State = 352; unary_operator(); - State = 353; 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 = 357; - _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 AllScalarExpressionContext : Primary_expressionContext { - public ITerminalNode K_ALL() { return GetToken(sqlParser.K_ALL, 0); } - public Sql_queryContext sql_query() { - return GetRuleContext(0); - } - public AllScalarExpressionContext(Primary_expressionContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterAllScalarExpression(this); - } - public override void ExitRule(IParseTreeListener listener) { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitAllScalarExpression(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitAllScalarExpression(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 FirstScalarExpressionContext : Primary_expressionContext { - public ITerminalNode K_FIRST() { return GetToken(sqlParser.K_FIRST, 0); } - public Sql_queryContext sql_query() { - return GetRuleContext(0); - } - public FirstScalarExpressionContext(Primary_expressionContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterFirstScalarExpression(this); - } - public override void ExitRule(IParseTreeListener listener) { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitFirstScalarExpression(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitFirstScalarExpression(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 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 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 IdentifierContext identifier() { - return GetRuleContext(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 Function_call_scalar_expressionContext function_call_scalar_expression() { - 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 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 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 LastScalarExpressionContext : Primary_expressionContext { - public ITerminalNode K_LAST() { return GetToken(sqlParser.K_LAST, 0); } - public Sql_queryContext sql_query() { - return GetRuleContext(0); - } - public LastScalarExpressionContext(Primary_expressionContext context) { CopyFrom(context); } - public override void EnterRule(IParseTreeListener listener) { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterLastScalarExpression(this); - } - public override void ExitRule(IParseTreeListener listener) { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitLastScalarExpression(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitLastScalarExpression(this); - else return visitor.VisitChildren(this); - } - } - public partial class PropertyRefScalarExpressionRecursiveContext : Primary_expressionContext { - public Primary_expressionContext primary_expression() { - return GetRuleContext(0); - } - public IdentifierContext identifier() { - return GetRuleContext(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 = 407; - ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,35,Context) ) { - case 1: - { - _localctx = new PropertyRefScalarExpressionBaseContext(_localctx); - Context = _localctx; - _prevctx = _localctx; - - State = 360; identifier(); - } - break; - case 2: - { - _localctx = new ParameterRefScalarExpressionContext(_localctx); - Context = _localctx; - _prevctx = _localctx; - State = 361; Match(PARAMETER); - } - break; - case 3: - { - _localctx = new LiteralScalarExpressionContext(_localctx); - Context = _localctx; - _prevctx = _localctx; - State = 362; literal(); - } - break; - case 4: - { - _localctx = new ArrayCreateScalarExpressionContext(_localctx); - Context = _localctx; - _prevctx = _localctx; - State = 363; Match(T__5); - State = 365; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if (((((_la - 3)) & ~0x3f) == 0 && ((1L << (_la - 3)) & ((1L << (T__2 - 3)) | (1L << (T__5 - 3)) | (1L << (T__12 - 3)) | (1L << (T__13 - 3)) | (1L << (T__24 - 3)) | (1L << (T__25 - 3)) | (1L << (K_ALL - 3)) | (1L << (K_ARRAY - 3)) | (1L << (K_EXISTS - 3)) | (1L << (K_FIRST - 3)) | (1L << (K_FALSE - 3)) | (1L << (K_LAST - 3)) | (1L << (K_LEFT - 3)) | (1L << (K_NOT - 3)) | (1L << (K_NULL - 3)) | (1L << (K_RIGHT - 3)) | (1L << (K_TRUE - 3)) | (1L << (K_UDF - 3)) | (1L << (K_UNDEFINED - 3)) | (1L << (NUMERIC_LITERAL - 3)) | (1L << (STRING_LITERAL - 3)) | (1L << (LEX_IDENTIFIER - 3)) | (1L << (PARAMETER - 3)))) != 0)) { - { - State = 364; scalar_expression_list(); - } - } - - State = 367; Match(T__6); - } - break; - case 5: - { - _localctx = new ObjectCreateScalarExpressionContext(_localctx); - Context = _localctx; - _prevctx = _localctx; - State = 368; Match(T__25); - State = 370; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if (_la==STRING_LITERAL) { - { - State = 369; object_property_list(); - } - } - - State = 372; Match(T__26); - } - break; - case 6: - { - _localctx = new ParenthesizedScalarExperessionContext(_localctx); - Context = _localctx; - _prevctx = _localctx; - State = 373; Match(T__2); - State = 374; scalar_expression(0); - State = 375; Match(T__3); - } - break; - case 7: - { - _localctx = new SubqueryScalarExpressionContext(_localctx); - Context = _localctx; - _prevctx = _localctx; - State = 377; Match(T__2); - State = 378; sql_query(); - State = 379; Match(T__3); - } - break; - case 8: - { - _localctx = new ExistsScalarExpressionContext(_localctx); - Context = _localctx; - _prevctx = _localctx; - State = 381; Match(K_EXISTS); - State = 382; Match(T__2); - State = 383; sql_query(); - State = 384; Match(T__3); - } - break; - case 9: - { - _localctx = new ArrayScalarExpressionContext(_localctx); - Context = _localctx; - _prevctx = _localctx; - State = 386; Match(K_ARRAY); - State = 387; Match(T__2); - State = 388; sql_query(); - State = 389; Match(T__3); - } - break; - case 10: - { - _localctx = new AllScalarExpressionContext(_localctx); - Context = _localctx; - _prevctx = _localctx; - State = 391; Match(K_ALL); - State = 392; Match(T__2); - State = 393; sql_query(); - State = 394; Match(T__3); - } - break; - case 11: - { - _localctx = new FirstScalarExpressionContext(_localctx); - Context = _localctx; - _prevctx = _localctx; - State = 396; Match(K_FIRST); - State = 397; Match(T__2); - State = 398; sql_query(); - State = 399; Match(T__3); - } - break; - case 12: - { - _localctx = new LastScalarExpressionContext(_localctx); - Context = _localctx; - _prevctx = _localctx; - State = 401; Match(K_LAST); - State = 402; Match(T__2); - State = 403; sql_query(); - State = 404; Match(T__3); - } - break; - case 13: - { - _localctx = new FunctionCallScalarExpressionContext(_localctx); - Context = _localctx; - _prevctx = _localctx; - State = 406; function_call_scalar_expression(); - } - break; - } - Context.Stop = TokenStream.LT(-1); - State = 419; - ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,37,Context); - while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - if ( ParseListeners!=null ) - TriggerExitRuleEvent(); - _prevctx = _localctx; - { - State = 417; - ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,36,Context) ) { - case 1: - { - _localctx = new PropertyRefScalarExpressionRecursiveContext(new Primary_expressionContext(_parentctx, _parentState)); - PushNewRecursionContext(_localctx, _startState, RULE_primary_expression); - State = 409; - if (!(Precpred(Context, 8))) throw new FailedPredicateException(this, "Precpred(Context, 8)"); - State = 410; Match(T__4); - State = 411; identifier(); - } - break; - case 2: - { - _localctx = new MemberIndexerScalarExpressionContext(new Primary_expressionContext(_parentctx, _parentState)); - PushNewRecursionContext(_localctx, _startState, RULE_primary_expression); - State = 412; - if (!(Precpred(Context, 7))) throw new FailedPredicateException(this, "Precpred(Context, 7)"); - State = 413; Match(T__5); - State = 414; scalar_expression(0); - State = 415; Match(T__6); - } - break; - } - } - } - State = 421; - ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,37,Context); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally { - UnrollRecursionContexts(_parentctx); - } - return _localctx; - } - - public partial class Function_call_scalar_expressionContext : ParserRuleContext { - public IdentifierContext identifier() { - return GetRuleContext(0); - } - public ITerminalNode K_UDF() { return GetToken(sqlParser.K_UDF, 0); } - public Scalar_expression_listContext scalar_expression_list() { - return GetRuleContext(0); - } - public ITerminalNode K_LEFT() { return GetToken(sqlParser.K_LEFT, 0); } - public ITerminalNode K_RIGHT() { return GetToken(sqlParser.K_RIGHT, 0); } - public Function_call_scalar_expressionContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_function_call_scalar_expression; } } - public override void EnterRule(IParseTreeListener listener) { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterFunction_call_scalar_expression(this); - } - public override void ExitRule(IParseTreeListener listener) { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitFunction_call_scalar_expression(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitFunction_call_scalar_expression(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public Function_call_scalar_expressionContext function_call_scalar_expression() { - Function_call_scalar_expressionContext _localctx = new Function_call_scalar_expressionContext(Context, State); - EnterRule(_localctx, 78, RULE_function_call_scalar_expression); - int _la; - try { - State = 445; - ErrorHandler.Sync(this); - switch (TokenStream.LA(1)) { - case K_ALL: - case K_FIRST: - case K_LAST: - case K_UDF: - case LEX_IDENTIFIER: - EnterOuterAlt(_localctx, 1); - { - State = 424; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if (_la==K_UDF) { - { - State = 422; Match(K_UDF); - State = 423; Match(T__4); - } - } - - State = 426; identifier(); - State = 427; Match(T__2); - State = 429; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if (((((_la - 3)) & ~0x3f) == 0 && ((1L << (_la - 3)) & ((1L << (T__2 - 3)) | (1L << (T__5 - 3)) | (1L << (T__12 - 3)) | (1L << (T__13 - 3)) | (1L << (T__24 - 3)) | (1L << (T__25 - 3)) | (1L << (K_ALL - 3)) | (1L << (K_ARRAY - 3)) | (1L << (K_EXISTS - 3)) | (1L << (K_FIRST - 3)) | (1L << (K_FALSE - 3)) | (1L << (K_LAST - 3)) | (1L << (K_LEFT - 3)) | (1L << (K_NOT - 3)) | (1L << (K_NULL - 3)) | (1L << (K_RIGHT - 3)) | (1L << (K_TRUE - 3)) | (1L << (K_UDF - 3)) | (1L << (K_UNDEFINED - 3)) | (1L << (NUMERIC_LITERAL - 3)) | (1L << (STRING_LITERAL - 3)) | (1L << (LEX_IDENTIFIER - 3)) | (1L << (PARAMETER - 3)))) != 0)) { - { - State = 428; scalar_expression_list(); - } - } - - State = 431; Match(T__3); - } - break; - case K_LEFT: - EnterOuterAlt(_localctx, 2); - { - State = 433; Match(K_LEFT); - State = 434; Match(T__2); - State = 436; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if (((((_la - 3)) & ~0x3f) == 0 && ((1L << (_la - 3)) & ((1L << (T__2 - 3)) | (1L << (T__5 - 3)) | (1L << (T__12 - 3)) | (1L << (T__13 - 3)) | (1L << (T__24 - 3)) | (1L << (T__25 - 3)) | (1L << (K_ALL - 3)) | (1L << (K_ARRAY - 3)) | (1L << (K_EXISTS - 3)) | (1L << (K_FIRST - 3)) | (1L << (K_FALSE - 3)) | (1L << (K_LAST - 3)) | (1L << (K_LEFT - 3)) | (1L << (K_NOT - 3)) | (1L << (K_NULL - 3)) | (1L << (K_RIGHT - 3)) | (1L << (K_TRUE - 3)) | (1L << (K_UDF - 3)) | (1L << (K_UNDEFINED - 3)) | (1L << (NUMERIC_LITERAL - 3)) | (1L << (STRING_LITERAL - 3)) | (1L << (LEX_IDENTIFIER - 3)) | (1L << (PARAMETER - 3)))) != 0)) { - { - State = 435; scalar_expression_list(); - } - } - - State = 438; Match(T__3); - } - break; - case K_RIGHT: - EnterOuterAlt(_localctx, 3); - { - State = 439; Match(K_RIGHT); - State = 440; Match(T__2); - State = 442; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if (((((_la - 3)) & ~0x3f) == 0 && ((1L << (_la - 3)) & ((1L << (T__2 - 3)) | (1L << (T__5 - 3)) | (1L << (T__12 - 3)) | (1L << (T__13 - 3)) | (1L << (T__24 - 3)) | (1L << (T__25 - 3)) | (1L << (K_ALL - 3)) | (1L << (K_ARRAY - 3)) | (1L << (K_EXISTS - 3)) | (1L << (K_FIRST - 3)) | (1L << (K_FALSE - 3)) | (1L << (K_LAST - 3)) | (1L << (K_LEFT - 3)) | (1L << (K_NOT - 3)) | (1L << (K_NULL - 3)) | (1L << (K_RIGHT - 3)) | (1L << (K_TRUE - 3)) | (1L << (K_UDF - 3)) | (1L << (K_UNDEFINED - 3)) | (1L << (NUMERIC_LITERAL - 3)) | (1L << (STRING_LITERAL - 3)) | (1L << (LEX_IDENTIFIER - 3)) | (1L << (PARAMETER - 3)))) != 0)) { - { - State = 441; scalar_expression_list(); - } - } - - State = 444; 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 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, 80, RULE_scalar_expression_list); - int _la; - try { - EnterOuterAlt(_localctx, 1); - { - State = 447; scalar_expression(0); - State = 452; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - while (_la==T__1) { - { - { - State = 448; Match(T__1); - State = 449; scalar_expression(0); - } - } - State = 454; - 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, 82, RULE_object_property_list); - int _la; - try { - EnterOuterAlt(_localctx, 1); - { - State = 455; object_property(); - State = 460; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - while (_la==T__1) { - { - { - State = 456; Match(T__1); - State = 457; object_property(); - } - } - State = 462; - 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, 84, RULE_object_property); - try { - EnterOuterAlt(_localctx, 1); - { - State = 463; Match(STRING_LITERAL); - State = 464; Match(T__8); - State = 465; scalar_expression(0); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - public partial class IdentifierContext : ParserRuleContext { - public ITerminalNode LEX_IDENTIFIER() { return GetToken(sqlParser.LEX_IDENTIFIER, 0); } - public ITerminalNode K_ALL() { return GetToken(sqlParser.K_ALL, 0); } - public ITerminalNode K_FIRST() { return GetToken(sqlParser.K_FIRST, 0); } - public ITerminalNode K_LAST() { return GetToken(sqlParser.K_LAST, 0); } - public IdentifierContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_identifier; } } - public override void EnterRule(IParseTreeListener listener) { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.EnterIdentifier(this); - } - public override void ExitRule(IParseTreeListener listener) { - IsqlListener typedListener = listener as IsqlListener; - if (typedListener != null) typedListener.ExitIdentifier(this); - } - public override TResult Accept(IParseTreeVisitor visitor) { - IsqlVisitor typedVisitor = visitor as IsqlVisitor; - if (typedVisitor != null) return typedVisitor.VisitIdentifier(this); - else return visitor.VisitChildren(this); - } - } - - [RuleVersion(0)] - public IdentifierContext identifier() { - IdentifierContext _localctx = new IdentifierContext(Context, State); - EnterRule(_localctx, 86, RULE_identifier); - int _la; - try { - EnterOuterAlt(_localctx, 1); - { - State = 467; - _la = TokenStream.LA(1); - if ( !(((((_la - 28)) & ~0x3f) == 0 && ((1L << (_la - 28)) & ((1L << (K_ALL - 28)) | (1L << (K_FIRST - 28)) | (1L << (K_LAST - 28)) | (1L << (LEX_IDENTIFIER - 28)))) != 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 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, 88, RULE_literal); - int _la; - try { - EnterOuterAlt(_localctx, 1); - { - State = 469; - _la = TokenStream.LA(1); - if ( !(((((_la - 40)) & ~0x3f) == 0 && ((1L << (_la - 40)) & ((1L << (K_FALSE - 40)) | (1L << (K_NULL - 40)) | (1L << (K_TRUE - 40)) | (1L << (K_UNDEFINED - 40)) | (1L << (NUMERIC_LITERAL - 40)) | (1L << (STRING_LITERAL - 40)))) != 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 23: return logical_scalar_expression_sempred((Logical_scalar_expressionContext)_localctx, predIndex); - case 27: return binary_scalar_expression_sempred((Binary_scalar_expressionContext)_localctx, predIndex); - case 38: return primary_expression_sempred((Primary_expressionContext)_localctx, predIndex); - } - 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 logical_scalar_expression_sempred(Logical_scalar_expressionContext _localctx, int predIndex) { - switch (predIndex) { - case 6: return Precpred(Context, 2); - case 7: return Precpred(Context, 1); - } - return true; - } - private bool binary_scalar_expression_sempred(Binary_scalar_expressionContext _localctx, int predIndex) { - switch (predIndex) { - case 8: return Precpred(Context, 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, 8); - case 17: return Precpred(Context, 7); - } - return true; - } - - private static char[] _serializedATN = { - '\x3', '\x608B', '\xA72A', '\x8133', '\xB9ED', '\x417C', '\x3BE7', '\x7786', - '\x5964', '\x3', '\x44', '\x1DA', '\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', '.', '\x3', '\x2', '\x3', - '\x2', '\x3', '\x2', '\x3', '\x3', '\x3', '\x3', '\x5', '\x3', '\x62', - '\n', '\x3', '\x3', '\x3', '\x5', '\x3', '\x65', '\n', '\x3', '\x3', '\x3', - '\x5', '\x3', 'h', '\n', '\x3', '\x3', '\x3', '\x5', '\x3', 'k', '\n', - '\x3', '\x3', '\x3', '\x5', '\x3', 'n', '\n', '\x3', '\x3', '\x4', '\x3', - '\x4', '\x5', '\x4', 'r', '\n', '\x4', '\x3', '\x4', '\x5', '\x4', 'u', - '\n', '\x4', '\x3', '\x4', '\x3', '\x4', '\x3', '\x5', '\x3', '\x5', '\x3', - '\x5', '\x3', '\x6', '\x3', '\x6', '\x3', '\x6', '\x5', '\x6', '\x7F', - '\n', '\x6', '\x3', '\a', '\x3', '\a', '\x3', '\b', '\x3', '\b', '\x3', - '\b', '\x3', '\t', '\x3', '\t', '\x3', '\t', '\a', '\t', '\x89', '\n', - '\t', '\f', '\t', '\xE', '\t', '\x8C', '\v', '\t', '\x3', '\n', '\x3', - '\n', '\x3', '\n', '\x5', '\n', '\x91', '\n', '\n', '\x3', '\v', '\x3', - '\v', '\x3', '\v', '\x3', '\f', '\x3', '\f', '\x3', '\f', '\x5', '\f', - '\x99', '\n', '\f', '\x3', '\f', '\x5', '\f', '\x9C', '\n', '\f', '\x3', - '\f', '\x3', '\f', '\x3', '\f', '\x3', '\f', '\x5', '\f', '\xA2', '\n', - '\f', '\x3', '\f', '\x3', '\f', '\x3', '\f', '\a', '\f', '\xA7', '\n', - '\f', '\f', '\f', '\xE', '\f', '\xAA', '\v', '\f', '\x3', '\r', '\x3', - '\r', '\x5', '\r', '\xAE', '\n', '\r', '\x3', '\r', '\x3', '\r', '\x3', - '\r', '\x3', '\r', '\x5', '\r', '\xB4', '\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', '\xC2', '\n', '\xE', '\f', '\xE', '\xE', '\xE', '\xC5', - '\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', '\xD5', '\n', '\x12', '\f', '\x12', '\xE', '\x12', '\xD8', - '\v', '\x12', '\x3', '\x13', '\x3', '\x13', '\x5', '\x13', '\xDC', '\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', '\xED', '\n', '\x18', '\x3', '\x18', '\x3', '\x18', - '\x3', '\x18', '\x3', '\x18', '\x3', '\x18', '\x5', '\x18', '\xF4', '\n', - '\x18', '\x3', '\x18', '\x3', '\x18', '\x3', '\x18', '\x3', '\x18', '\x3', - '\x18', '\x3', '\x18', '\x3', '\x18', '\x3', '\x18', '\x3', '\x18', '\a', - '\x18', '\xFF', '\n', '\x18', '\f', '\x18', '\xE', '\x18', '\x102', '\v', - '\x18', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x5', - '\x19', '\x108', '\n', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\a', '\x19', '\x110', '\n', - '\x19', '\f', '\x19', '\xE', '\x19', '\x113', '\v', '\x19', '\x3', '\x1A', - '\x3', '\x1A', '\x5', '\x1A', '\x117', '\n', '\x1A', '\x3', '\x1A', '\x3', - '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x3', '\x1B', '\x3', - '\x1B', '\x5', '\x1B', '\x120', '\n', '\x1B', '\x3', '\x1B', '\x3', '\x1B', - '\x3', '\x1B', '\x5', '\x1B', '\x125', '\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', '\a', '\x1D', '\x14D', '\n', '\x1D', '\f', '\x1D', - '\xE', '\x1D', '\x150', '\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', '&', '\x166', '\n', '&', '\x3', '\'', '\x3', '\'', '\x3', '(', - '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x5', '(', - '\x170', '\n', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x5', '(', '\x175', - '\n', '(', '\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', '(', - '\x5', '(', '\x19A', '\n', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', - '(', '\x3', '(', '\x3', '(', '\x3', '(', '\x3', '(', '\a', '(', '\x1A4', - '\n', '(', '\f', '(', '\xE', '(', '\x1A7', '\v', '(', '\x3', ')', '\x3', - ')', '\x5', ')', '\x1AB', '\n', ')', '\x3', ')', '\x3', ')', '\x3', ')', - '\x5', ')', '\x1B0', '\n', ')', '\x3', ')', '\x3', ')', '\x3', ')', '\x3', - ')', '\x3', ')', '\x5', ')', '\x1B7', '\n', ')', '\x3', ')', '\x3', ')', - '\x3', ')', '\x3', ')', '\x5', ')', '\x1BD', '\n', ')', '\x3', ')', '\x5', - ')', '\x1C0', '\n', ')', '\x3', '*', '\x3', '*', '\x3', '*', '\a', '*', - '\x1C5', '\n', '*', '\f', '*', '\xE', '*', '\x1C8', '\v', '*', '\x3', - '+', '\x3', '+', '\x3', '+', '\a', '+', '\x1CD', '\n', '+', '\f', '+', - '\xE', '+', '\x1D0', '\v', '+', '\x3', ',', '\x3', ',', '\x3', ',', '\x3', - ',', '\x3', '-', '\x3', '-', '\x3', '.', '\x3', '.', '\x3', '.', '\x2', - '\b', '\x16', '\x1A', '.', '\x30', '\x38', 'N', '/', '\x2', '\x4', '\x6', - '\b', '\n', '\f', '\xE', '\x10', '\x12', '\x14', '\x16', '\x18', '\x1A', - '\x1C', '\x1E', ' ', '\"', '$', '&', '(', '*', ',', '.', '\x30', '\x32', - '\x34', '\x36', '\x38', ':', '<', '>', '@', '\x42', '\x44', '\x46', 'H', - 'J', 'L', 'N', 'P', 'R', 'T', 'V', 'X', 'Z', '\x2', '\v', '\x4', '\x2', - '\x41', '\x41', '\x44', '\x44', '\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', '\x33', '\x33', '\x6', '\x2', '\x1E', '\x1E', - ')', ')', '/', '/', '\x43', '\x43', '\a', '\x2', '*', '*', '\x34', '\x34', - ';', ';', '=', '=', '\x41', '\x42', '\x2', '\x1EE', '\x2', '\\', '\x3', - '\x2', '\x2', '\x2', '\x4', '_', '\x3', '\x2', '\x2', '\x2', '\x6', 'o', - '\x3', '\x2', '\x2', '\x2', '\b', 'x', '\x3', '\x2', '\x2', '\x2', '\n', - '~', '\x3', '\x2', '\x2', '\x2', '\f', '\x80', '\x3', '\x2', '\x2', '\x2', - '\xE', '\x82', '\x3', '\x2', '\x2', '\x2', '\x10', '\x85', '\x3', '\x2', - '\x2', '\x2', '\x12', '\x8D', '\x3', '\x2', '\x2', '\x2', '\x14', '\x92', - '\x3', '\x2', '\x2', '\x2', '\x16', '\xA1', '\x3', '\x2', '\x2', '\x2', - '\x18', '\xB3', '\x3', '\x2', '\x2', '\x2', '\x1A', '\xB5', '\x3', '\x2', - '\x2', '\x2', '\x1C', '\xC6', '\x3', '\x2', '\x2', '\x2', '\x1E', '\xC9', - '\x3', '\x2', '\x2', '\x2', ' ', '\xCD', '\x3', '\x2', '\x2', '\x2', '\"', - '\xD1', '\x3', '\x2', '\x2', '\x2', '$', '\xD9', '\x3', '\x2', '\x2', - '\x2', '&', '\xDD', '\x3', '\x2', '\x2', '\x2', '(', '\xDF', '\x3', '\x2', - '\x2', '\x2', '*', '\xE4', '\x3', '\x2', '\x2', '\x2', ',', '\xE6', '\x3', - '\x2', '\x2', '\x2', '.', '\xF3', '\x3', '\x2', '\x2', '\x2', '\x30', - '\x107', '\x3', '\x2', '\x2', '\x2', '\x32', '\x114', '\x3', '\x2', '\x2', - '\x2', '\x34', '\x11D', '\x3', '\x2', '\x2', '\x2', '\x36', '\x126', '\x3', - '\x2', '\x2', '\x2', '\x38', '\x129', '\x3', '\x2', '\x2', '\x2', ':', - '\x151', '\x3', '\x2', '\x2', '\x2', '<', '\x153', '\x3', '\x2', '\x2', - '\x2', '>', '\x155', '\x3', '\x2', '\x2', '\x2', '@', '\x157', '\x3', - '\x2', '\x2', '\x2', '\x42', '\x159', '\x3', '\x2', '\x2', '\x2', '\x44', - '\x15B', '\x3', '\x2', '\x2', '\x2', '\x46', '\x15D', '\x3', '\x2', '\x2', - '\x2', 'H', '\x15F', '\x3', '\x2', '\x2', '\x2', 'J', '\x165', '\x3', - '\x2', '\x2', '\x2', 'L', '\x167', '\x3', '\x2', '\x2', '\x2', 'N', '\x199', - '\x3', '\x2', '\x2', '\x2', 'P', '\x1BF', '\x3', '\x2', '\x2', '\x2', - 'R', '\x1C1', '\x3', '\x2', '\x2', '\x2', 'T', '\x1C9', '\x3', '\x2', - '\x2', '\x2', 'V', '\x1D1', '\x3', '\x2', '\x2', '\x2', 'X', '\x1D5', - '\x3', '\x2', '\x2', '\x2', 'Z', '\x1D7', '\x3', '\x2', '\x2', '\x2', - '\\', ']', '\x5', '\x4', '\x3', '\x2', ']', '^', '\a', '\x2', '\x2', '\x3', - '^', '\x3', '\x3', '\x2', '\x2', '\x2', '_', '\x61', '\x5', '\x6', '\x4', - '\x2', '`', '\x62', '\x5', '\x14', '\v', '\x2', '\x61', '`', '\x3', '\x2', - '\x2', '\x2', '\x61', '\x62', '\x3', '\x2', '\x2', '\x2', '\x62', '\x64', - '\x3', '\x2', '\x2', '\x2', '\x63', '\x65', '\x5', '\x1C', '\xF', '\x2', - '\x64', '\x63', '\x3', '\x2', '\x2', '\x2', '\x64', '\x65', '\x3', '\x2', - '\x2', '\x2', '\x65', 'g', '\x3', '\x2', '\x2', '\x2', '\x66', 'h', '\x5', - '\x1E', '\x10', '\x2', 'g', '\x66', '\x3', '\x2', '\x2', '\x2', 'g', 'h', - '\x3', '\x2', '\x2', '\x2', 'h', 'j', '\x3', '\x2', '\x2', '\x2', 'i', - 'k', '\x5', ' ', '\x11', '\x2', 'j', 'i', '\x3', '\x2', '\x2', '\x2', - 'j', 'k', '\x3', '\x2', '\x2', '\x2', 'k', 'm', '\x3', '\x2', '\x2', '\x2', - 'l', 'n', '\x5', '(', '\x15', '\x2', 'm', 'l', '\x3', '\x2', '\x2', '\x2', - 'm', 'n', '\x3', '\x2', '\x2', '\x2', 'n', '\x5', '\x3', '\x2', '\x2', - '\x2', 'o', 'q', '\a', '\x39', '\x2', '\x2', 'p', 'r', '\a', '&', '\x2', - '\x2', 'q', 'p', '\x3', '\x2', '\x2', '\x2', 'q', 'r', '\x3', '\x2', '\x2', - '\x2', 'r', 't', '\x3', '\x2', '\x2', '\x2', 's', 'u', '\x5', '\b', '\x5', - '\x2', 't', 's', '\x3', '\x2', '\x2', '\x2', 't', 'u', '\x3', '\x2', '\x2', - '\x2', 'u', 'v', '\x3', '\x2', '\x2', '\x2', 'v', 'w', '\x5', '\n', '\x6', - '\x2', 'w', '\a', '\x3', '\x2', '\x2', '\x2', 'x', 'y', '\a', ':', '\x2', - '\x2', 'y', 'z', '\t', '\x2', '\x2', '\x2', 'z', '\t', '\x3', '\x2', '\x2', - '\x2', '{', '\x7F', '\x5', '\f', '\a', '\x2', '|', '\x7F', '\x5', '\xE', - '\b', '\x2', '}', '\x7F', '\x5', '\x10', '\t', '\x2', '~', '{', '\x3', - '\x2', '\x2', '\x2', '~', '|', '\x3', '\x2', '\x2', '\x2', '~', '}', '\x3', - '\x2', '\x2', '\x2', '\x7F', '\v', '\x3', '\x2', '\x2', '\x2', '\x80', - '\x81', '\a', '\x3', '\x2', '\x2', '\x81', '\r', '\x3', '\x2', '\x2', - '\x2', '\x82', '\x83', '\a', '>', '\x2', '\x2', '\x83', '\x84', '\x5', - '.', '\x18', '\x2', '\x84', '\xF', '\x3', '\x2', '\x2', '\x2', '\x85', - '\x8A', '\x5', '\x12', '\n', '\x2', '\x86', '\x87', '\a', '\x4', '\x2', - '\x2', '\x87', '\x89', '\x5', '\x12', '\n', '\x2', '\x88', '\x86', '\x3', - '\x2', '\x2', '\x2', '\x89', '\x8C', '\x3', '\x2', '\x2', '\x2', '\x8A', - '\x88', '\x3', '\x2', '\x2', '\x2', '\x8A', '\x8B', '\x3', '\x2', '\x2', - '\x2', '\x8B', '\x11', '\x3', '\x2', '\x2', '\x2', '\x8C', '\x8A', '\x3', - '\x2', '\x2', '\x2', '\x8D', '\x90', '\x5', '.', '\x18', '\x2', '\x8E', - '\x8F', '\a', '!', '\x2', '\x2', '\x8F', '\x91', '\x5', 'X', '-', '\x2', - '\x90', '\x8E', '\x3', '\x2', '\x2', '\x2', '\x90', '\x91', '\x3', '\x2', - '\x2', '\x2', '\x91', '\x13', '\x3', '\x2', '\x2', '\x2', '\x92', '\x93', - '\a', '+', '\x2', '\x2', '\x93', '\x94', '\x5', '\x16', '\f', '\x2', '\x94', - '\x15', '\x3', '\x2', '\x2', '\x2', '\x95', '\x96', '\b', '\f', '\x1', - '\x2', '\x96', '\x9B', '\x5', '\x18', '\r', '\x2', '\x97', '\x99', '\a', - '!', '\x2', '\x2', '\x98', '\x97', '\x3', '\x2', '\x2', '\x2', '\x98', - '\x99', '\x3', '\x2', '\x2', '\x2', '\x99', '\x9A', '\x3', '\x2', '\x2', - '\x2', '\x9A', '\x9C', '\x5', 'X', '-', '\x2', '\x9B', '\x98', '\x3', - '\x2', '\x2', '\x2', '\x9B', '\x9C', '\x3', '\x2', '\x2', '\x2', '\x9C', - '\xA2', '\x3', '\x2', '\x2', '\x2', '\x9D', '\x9E', '\x5', 'X', '-', '\x2', - '\x9E', '\x9F', '\a', '-', '\x2', '\x2', '\x9F', '\xA0', '\x5', '\x18', - '\r', '\x2', '\xA0', '\xA2', '\x3', '\x2', '\x2', '\x2', '\xA1', '\x95', - '\x3', '\x2', '\x2', '\x2', '\xA1', '\x9D', '\x3', '\x2', '\x2', '\x2', - '\xA2', '\xA8', '\x3', '\x2', '\x2', '\x2', '\xA3', '\xA4', '\f', '\x3', - '\x2', '\x2', '\xA4', '\xA5', '\a', '.', '\x2', '\x2', '\xA5', '\xA7', - '\x5', '\x16', '\f', '\x4', '\xA6', '\xA3', '\x3', '\x2', '\x2', '\x2', - '\xA7', '\xAA', '\x3', '\x2', '\x2', '\x2', '\xA8', '\xA6', '\x3', '\x2', - '\x2', '\x2', '\xA8', '\xA9', '\x3', '\x2', '\x2', '\x2', '\xA9', '\x17', - '\x3', '\x2', '\x2', '\x2', '\xAA', '\xA8', '\x3', '\x2', '\x2', '\x2', - '\xAB', '\xAD', '\x5', 'X', '-', '\x2', '\xAC', '\xAE', '\x5', '\x1A', - '\xE', '\x2', '\xAD', '\xAC', '\x3', '\x2', '\x2', '\x2', '\xAD', '\xAE', - '\x3', '\x2', '\x2', '\x2', '\xAE', '\xB4', '\x3', '\x2', '\x2', '\x2', - '\xAF', '\xB0', '\a', '\x5', '\x2', '\x2', '\xB0', '\xB1', '\x5', '\x4', - '\x3', '\x2', '\xB1', '\xB2', '\a', '\x6', '\x2', '\x2', '\xB2', '\xB4', - '\x3', '\x2', '\x2', '\x2', '\xB3', '\xAB', '\x3', '\x2', '\x2', '\x2', - '\xB3', '\xAF', '\x3', '\x2', '\x2', '\x2', '\xB4', '\x19', '\x3', '\x2', - '\x2', '\x2', '\xB5', '\xC3', '\b', '\xE', '\x1', '\x2', '\xB6', '\xB7', - '\f', '\x6', '\x2', '\x2', '\xB7', '\xB8', '\a', '\a', '\x2', '\x2', '\xB8', - '\xC2', '\x5', 'X', '-', '\x2', '\xB9', '\xBA', '\f', '\x5', '\x2', '\x2', - '\xBA', '\xBB', '\a', '\b', '\x2', '\x2', '\xBB', '\xBC', '\a', '\x41', - '\x2', '\x2', '\xBC', '\xC2', '\a', '\t', '\x2', '\x2', '\xBD', '\xBE', - '\f', '\x4', '\x2', '\x2', '\xBE', '\xBF', '\a', '\b', '\x2', '\x2', '\xBF', - '\xC0', '\a', '\x42', '\x2', '\x2', '\xC0', '\xC2', '\a', '\t', '\x2', - '\x2', '\xC1', '\xB6', '\x3', '\x2', '\x2', '\x2', '\xC1', '\xB9', '\x3', - '\x2', '\x2', '\x2', '\xC1', '\xBD', '\x3', '\x2', '\x2', '\x2', '\xC2', - '\xC5', '\x3', '\x2', '\x2', '\x2', '\xC3', '\xC1', '\x3', '\x2', '\x2', - '\x2', '\xC3', '\xC4', '\x3', '\x2', '\x2', '\x2', '\xC4', '\x1B', '\x3', - '\x2', '\x2', '\x2', '\xC5', '\xC3', '\x3', '\x2', '\x2', '\x2', '\xC6', - '\xC7', '\a', '?', '\x2', '\x2', '\xC7', '\xC8', '\x5', '.', '\x18', '\x2', - '\xC8', '\x1D', '\x3', '\x2', '\x2', '\x2', '\xC9', '\xCA', '\a', ',', - '\x2', '\x2', '\xCA', '\xCB', '\a', '$', '\x2', '\x2', '\xCB', '\xCC', - '\x5', 'R', '*', '\x2', '\xCC', '\x1F', '\x3', '\x2', '\x2', '\x2', '\xCD', - '\xCE', '\a', '\x37', '\x2', '\x2', '\xCE', '\xCF', '\a', '$', '\x2', - '\x2', '\xCF', '\xD0', '\x5', '\"', '\x12', '\x2', '\xD0', '!', '\x3', - '\x2', '\x2', '\x2', '\xD1', '\xD6', '\x5', '$', '\x13', '\x2', '\xD2', - '\xD3', '\a', '\x4', '\x2', '\x2', '\xD3', '\xD5', '\x5', '$', '\x13', - '\x2', '\xD4', '\xD2', '\x3', '\x2', '\x2', '\x2', '\xD5', '\xD8', '\x3', - '\x2', '\x2', '\x2', '\xD6', '\xD4', '\x3', '\x2', '\x2', '\x2', '\xD6', - '\xD7', '\x3', '\x2', '\x2', '\x2', '\xD7', '#', '\x3', '\x2', '\x2', - '\x2', '\xD8', '\xD6', '\x3', '\x2', '\x2', '\x2', '\xD9', '\xDB', '\x5', - '.', '\x18', '\x2', '\xDA', '\xDC', '\x5', '&', '\x14', '\x2', '\xDB', - '\xDA', '\x3', '\x2', '\x2', '\x2', '\xDB', '\xDC', '\x3', '\x2', '\x2', - '\x2', '\xDC', '%', '\x3', '\x2', '\x2', '\x2', '\xDD', '\xDE', '\t', - '\x3', '\x2', '\x2', '\xDE', '\'', '\x3', '\x2', '\x2', '\x2', '\xDF', - '\xE0', '\a', '\x35', '\x2', '\x2', '\xE0', '\xE1', '\x5', '*', '\x16', - '\x2', '\xE1', '\xE2', '\a', '\x32', '\x2', '\x2', '\xE2', '\xE3', '\x5', - ',', '\x17', '\x2', '\xE3', ')', '\x3', '\x2', '\x2', '\x2', '\xE4', '\xE5', - '\t', '\x2', '\x2', '\x2', '\xE5', '+', '\x3', '\x2', '\x2', '\x2', '\xE6', - '\xE7', '\t', '\x2', '\x2', '\x2', '\xE7', '-', '\x3', '\x2', '\x2', '\x2', - '\xE8', '\xE9', '\b', '\x18', '\x1', '\x2', '\xE9', '\xF4', '\x5', '\x30', - '\x19', '\x2', '\xEA', '\xEC', '\x5', '\x38', '\x1D', '\x2', '\xEB', '\xED', - '\a', '\x33', '\x2', '\x2', '\xEC', '\xEB', '\x3', '\x2', '\x2', '\x2', - '\xEC', '\xED', '\x3', '\x2', '\x2', '\x2', '\xED', '\xEE', '\x3', '\x2', - '\x2', '\x2', '\xEE', '\xEF', '\a', '#', '\x2', '\x2', '\xEF', '\xF0', - '\x5', '\x38', '\x1D', '\x2', '\xF0', '\xF1', '\a', '\x1F', '\x2', '\x2', - '\xF1', '\xF2', '\x5', '\x38', '\x1D', '\x2', '\xF2', '\xF4', '\x3', '\x2', - '\x2', '\x2', '\xF3', '\xE8', '\x3', '\x2', '\x2', '\x2', '\xF3', '\xEA', - '\x3', '\x2', '\x2', '\x2', '\xF4', '\x100', '\x3', '\x2', '\x2', '\x2', - '\xF5', '\xF6', '\f', '\x6', '\x2', '\x2', '\xF6', '\xF7', '\a', '\n', - '\x2', '\x2', '\xF7', '\xF8', '\x5', '.', '\x18', '\x2', '\xF8', '\xF9', - '\a', '\v', '\x2', '\x2', '\xF9', '\xFA', '\x5', '.', '\x18', '\a', '\xFA', - '\xFF', '\x3', '\x2', '\x2', '\x2', '\xFB', '\xFC', '\f', '\x5', '\x2', - '\x2', '\xFC', '\xFD', '\a', '\f', '\x2', '\x2', '\xFD', '\xFF', '\x5', - '.', '\x18', '\x6', '\xFE', '\xF5', '\x3', '\x2', '\x2', '\x2', '\xFE', - '\xFB', '\x3', '\x2', '\x2', '\x2', '\xFF', '\x102', '\x3', '\x2', '\x2', - '\x2', '\x100', '\xFE', '\x3', '\x2', '\x2', '\x2', '\x100', '\x101', - '\x3', '\x2', '\x2', '\x2', '\x101', '/', '\x3', '\x2', '\x2', '\x2', - '\x102', '\x100', '\x3', '\x2', '\x2', '\x2', '\x103', '\x104', '\b', - '\x19', '\x1', '\x2', '\x104', '\x108', '\x5', '\x38', '\x1D', '\x2', - '\x105', '\x108', '\x5', '\x32', '\x1A', '\x2', '\x106', '\x108', '\x5', - '\x34', '\x1B', '\x2', '\x107', '\x103', '\x3', '\x2', '\x2', '\x2', '\x107', - '\x105', '\x3', '\x2', '\x2', '\x2', '\x107', '\x106', '\x3', '\x2', '\x2', - '\x2', '\x108', '\x111', '\x3', '\x2', '\x2', '\x2', '\x109', '\x10A', - '\f', '\x4', '\x2', '\x2', '\x10A', '\x10B', '\a', '\x1F', '\x2', '\x2', - '\x10B', '\x110', '\x5', '\x30', '\x19', '\x5', '\x10C', '\x10D', '\f', - '\x3', '\x2', '\x2', '\x10D', '\x10E', '\a', '\x36', '\x2', '\x2', '\x10E', - '\x110', '\x5', '\x30', '\x19', '\x4', '\x10F', '\x109', '\x3', '\x2', - '\x2', '\x2', '\x10F', '\x10C', '\x3', '\x2', '\x2', '\x2', '\x110', '\x113', - '\x3', '\x2', '\x2', '\x2', '\x111', '\x10F', '\x3', '\x2', '\x2', '\x2', - '\x111', '\x112', '\x3', '\x2', '\x2', '\x2', '\x112', '\x31', '\x3', - '\x2', '\x2', '\x2', '\x113', '\x111', '\x3', '\x2', '\x2', '\x2', '\x114', - '\x116', '\x5', '\x38', '\x1D', '\x2', '\x115', '\x117', '\a', '\x33', - '\x2', '\x2', '\x116', '\x115', '\x3', '\x2', '\x2', '\x2', '\x116', '\x117', - '\x3', '\x2', '\x2', '\x2', '\x117', '\x118', '\x3', '\x2', '\x2', '\x2', - '\x118', '\x119', '\a', '-', '\x2', '\x2', '\x119', '\x11A', '\a', '\x5', - '\x2', '\x2', '\x11A', '\x11B', '\x5', 'R', '*', '\x2', '\x11B', '\x11C', - '\a', '\x6', '\x2', '\x2', '\x11C', '\x33', '\x3', '\x2', '\x2', '\x2', - '\x11D', '\x11F', '\x5', '\x38', '\x1D', '\x2', '\x11E', '\x120', '\a', - '\x33', '\x2', '\x2', '\x11F', '\x11E', '\x3', '\x2', '\x2', '\x2', '\x11F', - '\x120', '\x3', '\x2', '\x2', '\x2', '\x120', '\x121', '\x3', '\x2', '\x2', - '\x2', '\x121', '\x122', '\a', '\x31', '\x2', '\x2', '\x122', '\x124', - '\x5', '\x38', '\x1D', '\x2', '\x123', '\x125', '\x5', '\x36', '\x1C', - '\x2', '\x124', '\x123', '\x3', '\x2', '\x2', '\x2', '\x124', '\x125', - '\x3', '\x2', '\x2', '\x2', '\x125', '\x35', '\x3', '\x2', '\x2', '\x2', - '\x126', '\x127', '\a', '\'', '\x2', '\x2', '\x127', '\x128', '\a', '\x42', - '\x2', '\x2', '\x128', '\x37', '\x3', '\x2', '\x2', '\x2', '\x129', '\x12A', - '\b', '\x1D', '\x1', '\x2', '\x12A', '\x12B', '\x5', 'J', '&', '\x2', - '\x12B', '\x14E', '\x3', '\x2', '\x2', '\x2', '\x12C', '\x12D', '\f', - '\n', '\x2', '\x2', '\x12D', '\x12E', '\x5', ':', '\x1E', '\x2', '\x12E', - '\x12F', '\x5', '\x38', '\x1D', '\v', '\x12F', '\x14D', '\x3', '\x2', - '\x2', '\x2', '\x130', '\x131', '\f', '\t', '\x2', '\x2', '\x131', '\x132', - '\x5', '<', '\x1F', '\x2', '\x132', '\x133', '\x5', '\x38', '\x1D', '\n', - '\x133', '\x14D', '\x3', '\x2', '\x2', '\x2', '\x134', '\x135', '\f', - '\b', '\x2', '\x2', '\x135', '\x136', '\x5', '>', ' ', '\x2', '\x136', - '\x137', '\x5', '\x38', '\x1D', '\t', '\x137', '\x14D', '\x3', '\x2', - '\x2', '\x2', '\x138', '\x139', '\f', '\a', '\x2', '\x2', '\x139', '\x13A', - '\x5', '@', '!', '\x2', '\x13A', '\x13B', '\x5', '\x38', '\x1D', '\b', - '\x13B', '\x14D', '\x3', '\x2', '\x2', '\x2', '\x13C', '\x13D', '\f', - '\x6', '\x2', '\x2', '\x13D', '\x13E', '\x5', '\x42', '\"', '\x2', '\x13E', - '\x13F', '\x5', '\x38', '\x1D', '\a', '\x13F', '\x14D', '\x3', '\x2', - '\x2', '\x2', '\x140', '\x141', '\f', '\x5', '\x2', '\x2', '\x141', '\x142', - '\x5', '\x44', '#', '\x2', '\x142', '\x143', '\x5', '\x38', '\x1D', '\x6', - '\x143', '\x14D', '\x3', '\x2', '\x2', '\x2', '\x144', '\x145', '\f', - '\x4', '\x2', '\x2', '\x145', '\x146', '\x5', '\x46', '$', '\x2', '\x146', - '\x147', '\x5', '\x38', '\x1D', '\x5', '\x147', '\x14D', '\x3', '\x2', - '\x2', '\x2', '\x148', '\x149', '\f', '\x3', '\x2', '\x2', '\x149', '\x14A', - '\x5', 'H', '%', '\x2', '\x14A', '\x14B', '\x5', '\x38', '\x1D', '\x4', - '\x14B', '\x14D', '\x3', '\x2', '\x2', '\x2', '\x14C', '\x12C', '\x3', - '\x2', '\x2', '\x2', '\x14C', '\x130', '\x3', '\x2', '\x2', '\x2', '\x14C', - '\x134', '\x3', '\x2', '\x2', '\x2', '\x14C', '\x138', '\x3', '\x2', '\x2', - '\x2', '\x14C', '\x13C', '\x3', '\x2', '\x2', '\x2', '\x14C', '\x140', - '\x3', '\x2', '\x2', '\x2', '\x14C', '\x144', '\x3', '\x2', '\x2', '\x2', - '\x14C', '\x148', '\x3', '\x2', '\x2', '\x2', '\x14D', '\x150', '\x3', - '\x2', '\x2', '\x2', '\x14E', '\x14C', '\x3', '\x2', '\x2', '\x2', '\x14E', - '\x14F', '\x3', '\x2', '\x2', '\x2', '\x14F', '\x39', '\x3', '\x2', '\x2', - '\x2', '\x150', '\x14E', '\x3', '\x2', '\x2', '\x2', '\x151', '\x152', - '\t', '\x4', '\x2', '\x2', '\x152', ';', '\x3', '\x2', '\x2', '\x2', '\x153', - '\x154', '\t', '\x5', '\x2', '\x2', '\x154', '=', '\x3', '\x2', '\x2', - '\x2', '\x155', '\x156', '\t', '\x6', '\x2', '\x2', '\x156', '?', '\x3', - '\x2', '\x2', '\x2', '\x157', '\x158', '\t', '\a', '\x2', '\x2', '\x158', - '\x41', '\x3', '\x2', '\x2', '\x2', '\x159', '\x15A', '\a', '\x17', '\x2', - '\x2', '\x15A', '\x43', '\x3', '\x2', '\x2', '\x2', '\x15B', '\x15C', - '\a', '\x18', '\x2', '\x2', '\x15C', '\x45', '\x3', '\x2', '\x2', '\x2', - '\x15D', '\x15E', '\a', '\x19', '\x2', '\x2', '\x15E', 'G', '\x3', '\x2', - '\x2', '\x2', '\x15F', '\x160', '\a', '\x1A', '\x2', '\x2', '\x160', 'I', - '\x3', '\x2', '\x2', '\x2', '\x161', '\x166', '\x5', 'N', '(', '\x2', - '\x162', '\x163', '\x5', 'L', '\'', '\x2', '\x163', '\x164', '\x5', 'J', - '&', '\x2', '\x164', '\x166', '\x3', '\x2', '\x2', '\x2', '\x165', '\x161', - '\x3', '\x2', '\x2', '\x2', '\x165', '\x162', '\x3', '\x2', '\x2', '\x2', - '\x166', 'K', '\x3', '\x2', '\x2', '\x2', '\x167', '\x168', '\t', '\b', - '\x2', '\x2', '\x168', 'M', '\x3', '\x2', '\x2', '\x2', '\x169', '\x16A', - '\b', '(', '\x1', '\x2', '\x16A', '\x19A', '\x5', 'X', '-', '\x2', '\x16B', - '\x19A', '\a', '\x44', '\x2', '\x2', '\x16C', '\x19A', '\x5', 'Z', '.', - '\x2', '\x16D', '\x16F', '\a', '\b', '\x2', '\x2', '\x16E', '\x170', '\x5', - 'R', '*', '\x2', '\x16F', '\x16E', '\x3', '\x2', '\x2', '\x2', '\x16F', - '\x170', '\x3', '\x2', '\x2', '\x2', '\x170', '\x171', '\x3', '\x2', '\x2', - '\x2', '\x171', '\x19A', '\a', '\t', '\x2', '\x2', '\x172', '\x174', '\a', - '\x1C', '\x2', '\x2', '\x173', '\x175', '\x5', 'T', '+', '\x2', '\x174', - '\x173', '\x3', '\x2', '\x2', '\x2', '\x174', '\x175', '\x3', '\x2', '\x2', - '\x2', '\x175', '\x176', '\x3', '\x2', '\x2', '\x2', '\x176', '\x19A', - '\a', '\x1D', '\x2', '\x2', '\x177', '\x178', '\a', '\x5', '\x2', '\x2', - '\x178', '\x179', '\x5', '.', '\x18', '\x2', '\x179', '\x17A', '\a', '\x6', - '\x2', '\x2', '\x17A', '\x19A', '\x3', '\x2', '\x2', '\x2', '\x17B', '\x17C', - '\a', '\x5', '\x2', '\x2', '\x17C', '\x17D', '\x5', '\x4', '\x3', '\x2', - '\x17D', '\x17E', '\a', '\x6', '\x2', '\x2', '\x17E', '\x19A', '\x3', - '\x2', '\x2', '\x2', '\x17F', '\x180', '\a', '(', '\x2', '\x2', '\x180', - '\x181', '\a', '\x5', '\x2', '\x2', '\x181', '\x182', '\x5', '\x4', '\x3', - '\x2', '\x182', '\x183', '\a', '\x6', '\x2', '\x2', '\x183', '\x19A', - '\x3', '\x2', '\x2', '\x2', '\x184', '\x185', '\a', ' ', '\x2', '\x2', - '\x185', '\x186', '\a', '\x5', '\x2', '\x2', '\x186', '\x187', '\x5', - '\x4', '\x3', '\x2', '\x187', '\x188', '\a', '\x6', '\x2', '\x2', '\x188', - '\x19A', '\x3', '\x2', '\x2', '\x2', '\x189', '\x18A', '\a', '\x1E', '\x2', - '\x2', '\x18A', '\x18B', '\a', '\x5', '\x2', '\x2', '\x18B', '\x18C', - '\x5', '\x4', '\x3', '\x2', '\x18C', '\x18D', '\a', '\x6', '\x2', '\x2', - '\x18D', '\x19A', '\x3', '\x2', '\x2', '\x2', '\x18E', '\x18F', '\a', - ')', '\x2', '\x2', '\x18F', '\x190', '\a', '\x5', '\x2', '\x2', '\x190', - '\x191', '\x5', '\x4', '\x3', '\x2', '\x191', '\x192', '\a', '\x6', '\x2', - '\x2', '\x192', '\x19A', '\x3', '\x2', '\x2', '\x2', '\x193', '\x194', - '\a', '/', '\x2', '\x2', '\x194', '\x195', '\a', '\x5', '\x2', '\x2', - '\x195', '\x196', '\x5', '\x4', '\x3', '\x2', '\x196', '\x197', '\a', - '\x6', '\x2', '\x2', '\x197', '\x19A', '\x3', '\x2', '\x2', '\x2', '\x198', - '\x19A', '\x5', 'P', ')', '\x2', '\x199', '\x169', '\x3', '\x2', '\x2', - '\x2', '\x199', '\x16B', '\x3', '\x2', '\x2', '\x2', '\x199', '\x16C', - '\x3', '\x2', '\x2', '\x2', '\x199', '\x16D', '\x3', '\x2', '\x2', '\x2', - '\x199', '\x172', '\x3', '\x2', '\x2', '\x2', '\x199', '\x177', '\x3', - '\x2', '\x2', '\x2', '\x199', '\x17B', '\x3', '\x2', '\x2', '\x2', '\x199', - '\x17F', '\x3', '\x2', '\x2', '\x2', '\x199', '\x184', '\x3', '\x2', '\x2', - '\x2', '\x199', '\x189', '\x3', '\x2', '\x2', '\x2', '\x199', '\x18E', - '\x3', '\x2', '\x2', '\x2', '\x199', '\x193', '\x3', '\x2', '\x2', '\x2', - '\x199', '\x198', '\x3', '\x2', '\x2', '\x2', '\x19A', '\x1A5', '\x3', - '\x2', '\x2', '\x2', '\x19B', '\x19C', '\f', '\n', '\x2', '\x2', '\x19C', - '\x19D', '\a', '\a', '\x2', '\x2', '\x19D', '\x1A4', '\x5', 'X', '-', - '\x2', '\x19E', '\x19F', '\f', '\t', '\x2', '\x2', '\x19F', '\x1A0', '\a', - '\b', '\x2', '\x2', '\x1A0', '\x1A1', '\x5', '.', '\x18', '\x2', '\x1A1', - '\x1A2', '\a', '\t', '\x2', '\x2', '\x1A2', '\x1A4', '\x3', '\x2', '\x2', - '\x2', '\x1A3', '\x19B', '\x3', '\x2', '\x2', '\x2', '\x1A3', '\x19E', - '\x3', '\x2', '\x2', '\x2', '\x1A4', '\x1A7', '\x3', '\x2', '\x2', '\x2', - '\x1A5', '\x1A3', '\x3', '\x2', '\x2', '\x2', '\x1A5', '\x1A6', '\x3', - '\x2', '\x2', '\x2', '\x1A6', 'O', '\x3', '\x2', '\x2', '\x2', '\x1A7', - '\x1A5', '\x3', '\x2', '\x2', '\x2', '\x1A8', '\x1A9', '\a', '<', '\x2', - '\x2', '\x1A9', '\x1AB', '\a', '\a', '\x2', '\x2', '\x1AA', '\x1A8', '\x3', - '\x2', '\x2', '\x2', '\x1AA', '\x1AB', '\x3', '\x2', '\x2', '\x2', '\x1AB', - '\x1AC', '\x3', '\x2', '\x2', '\x2', '\x1AC', '\x1AD', '\x5', 'X', '-', - '\x2', '\x1AD', '\x1AF', '\a', '\x5', '\x2', '\x2', '\x1AE', '\x1B0', - '\x5', 'R', '*', '\x2', '\x1AF', '\x1AE', '\x3', '\x2', '\x2', '\x2', - '\x1AF', '\x1B0', '\x3', '\x2', '\x2', '\x2', '\x1B0', '\x1B1', '\x3', - '\x2', '\x2', '\x2', '\x1B1', '\x1B2', '\a', '\x6', '\x2', '\x2', '\x1B2', - '\x1C0', '\x3', '\x2', '\x2', '\x2', '\x1B3', '\x1B4', '\a', '\x30', '\x2', - '\x2', '\x1B4', '\x1B6', '\a', '\x5', '\x2', '\x2', '\x1B5', '\x1B7', - '\x5', 'R', '*', '\x2', '\x1B6', '\x1B5', '\x3', '\x2', '\x2', '\x2', - '\x1B6', '\x1B7', '\x3', '\x2', '\x2', '\x2', '\x1B7', '\x1B8', '\x3', - '\x2', '\x2', '\x2', '\x1B8', '\x1C0', '\a', '\x6', '\x2', '\x2', '\x1B9', - '\x1BA', '\a', '\x38', '\x2', '\x2', '\x1BA', '\x1BC', '\a', '\x5', '\x2', - '\x2', '\x1BB', '\x1BD', '\x5', 'R', '*', '\x2', '\x1BC', '\x1BB', '\x3', - '\x2', '\x2', '\x2', '\x1BC', '\x1BD', '\x3', '\x2', '\x2', '\x2', '\x1BD', - '\x1BE', '\x3', '\x2', '\x2', '\x2', '\x1BE', '\x1C0', '\a', '\x6', '\x2', - '\x2', '\x1BF', '\x1AA', '\x3', '\x2', '\x2', '\x2', '\x1BF', '\x1B3', - '\x3', '\x2', '\x2', '\x2', '\x1BF', '\x1B9', '\x3', '\x2', '\x2', '\x2', - '\x1C0', 'Q', '\x3', '\x2', '\x2', '\x2', '\x1C1', '\x1C6', '\x5', '.', - '\x18', '\x2', '\x1C2', '\x1C3', '\a', '\x4', '\x2', '\x2', '\x1C3', '\x1C5', - '\x5', '.', '\x18', '\x2', '\x1C4', '\x1C2', '\x3', '\x2', '\x2', '\x2', - '\x1C5', '\x1C8', '\x3', '\x2', '\x2', '\x2', '\x1C6', '\x1C4', '\x3', - '\x2', '\x2', '\x2', '\x1C6', '\x1C7', '\x3', '\x2', '\x2', '\x2', '\x1C7', - 'S', '\x3', '\x2', '\x2', '\x2', '\x1C8', '\x1C6', '\x3', '\x2', '\x2', - '\x2', '\x1C9', '\x1CE', '\x5', 'V', ',', '\x2', '\x1CA', '\x1CB', '\a', - '\x4', '\x2', '\x2', '\x1CB', '\x1CD', '\x5', 'V', ',', '\x2', '\x1CC', - '\x1CA', '\x3', '\x2', '\x2', '\x2', '\x1CD', '\x1D0', '\x3', '\x2', '\x2', - '\x2', '\x1CE', '\x1CC', '\x3', '\x2', '\x2', '\x2', '\x1CE', '\x1CF', - '\x3', '\x2', '\x2', '\x2', '\x1CF', 'U', '\x3', '\x2', '\x2', '\x2', - '\x1D0', '\x1CE', '\x3', '\x2', '\x2', '\x2', '\x1D1', '\x1D2', '\a', - '\x42', '\x2', '\x2', '\x1D2', '\x1D3', '\a', '\v', '\x2', '\x2', '\x1D3', - '\x1D4', '\x5', '.', '\x18', '\x2', '\x1D4', 'W', '\x3', '\x2', '\x2', - '\x2', '\x1D5', '\x1D6', '\t', '\t', '\x2', '\x2', '\x1D6', 'Y', '\x3', - '\x2', '\x2', '\x2', '\x1D7', '\x1D8', '\t', '\n', '\x2', '\x2', '\x1D8', - '[', '\x3', '\x2', '\x2', '\x2', '/', '\x61', '\x64', 'g', 'j', 'm', 'q', - 't', '~', '\x8A', '\x90', '\x98', '\x9B', '\xA1', '\xA8', '\xAD', '\xB3', - '\xC1', '\xC3', '\xD6', '\xDB', '\xEC', '\xF3', '\xFE', '\x100', '\x107', - '\x10F', '\x111', '\x116', '\x11F', '\x124', '\x14C', '\x14E', '\x165', - '\x16F', '\x174', '\x199', '\x1A3', '\x1A5', '\x1AA', '\x1AF', '\x1B6', - '\x1BC', '\x1BF', '\x1C6', '\x1CE', - }; - - public static readonly ATN _ATN = - new ATNDeserializer().Deserialize(_serializedATN); - - -} +//------------------------------------------------------------------------------ +// +// 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 System; +using System.IO; +using System.Text; +using System.Diagnostics; +using System.Collections.Generic; +using Antlr4.Runtime; +using Antlr4.Runtime.Atn; +using Antlr4.Runtime.Misc; +using Antlr4.Runtime.Tree; +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_ALL=28, K_AND=29, K_ARRAY=30, K_AS=31, + K_ASC=32, K_BETWEEN=33, K_BY=34, K_DESC=35, K_DISTINCT=36, K_ESCAPE=37, + K_EXISTS=38, K_FIRST=39, K_FALSE=40, K_FROM=41, K_GROUP=42, K_IN=43, K_JOIN=44, + K_LAST=45, K_LEFT=46, K_LIKE=47, K_LIMIT=48, K_NOT=49, K_NULL=50, K_OFFSET=51, + K_OR=52, K_ORDER=53, K_RANK=54, K_RIGHT=55, K_SELECT=56, K_TOP=57, K_TRUE=58, + K_UDF=59, K_UNDEFINED=60, K_VALUE=61, K_WHERE=62, WS=63, NUMERIC_LITERAL=64, + STRING_LITERAL=65, LEX_IDENTIFIER=66, PARAMETER=67; + 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_score_expression_order_by_items = 16, RULE_score_expression_order_by_item = 17, + RULE_order_by_items = 18, RULE_order_by_item = 19, RULE_sort_order = 20, + RULE_offset_limit_clause = 21, RULE_offset_count = 22, RULE_limit_count = 23, + RULE_scalar_expression = 24, RULE_logical_scalar_expression = 25, RULE_in_scalar_expression = 26, + RULE_like_scalar_expression = 27, RULE_escape_expression = 28, RULE_binary_scalar_expression = 29, + RULE_multiplicative_operator = 30, RULE_additive_operator = 31, RULE_relational_operator = 32, + RULE_equality_operator = 33, RULE_bitwise_and_operator = 34, RULE_bitwise_exclusive_or_operator = 35, + RULE_bitwise_inclusive_or_operator = 36, RULE_string_concat_operator = 37, + RULE_unary_scalar_expression = 38, RULE_unary_operator = 39, RULE_primary_expression = 40, + RULE_function_call_scalar_expression = 41, RULE_scalar_expression_list = 42, + RULE_object_property_list = 43, RULE_object_property = 44, RULE_identifier = 45, + RULE_literal = 46; + 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", "score_expression_order_by_items", + "score_expression_order_by_item", "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", "function_call_scalar_expression", + "scalar_expression_list", "object_property_list", "object_property", "identifier", + "literal" + }; + + private static readonly string[] _LiteralNames = { + null, "'*'", "','", "'('", "')'", "'.'", "'['", "']'", "'?'", "':'", "'??'", + "'/'", "'%'", "'+'", "'-'", "'<'", "'>'", "'>='", "'<='", "'='", "'!='", + "'&'", "'^'", "'|'", "'||'", "'~'", "'{'", "'}'", null, 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, + null, null, null, null, "'true'", "'udf'", "'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_ALL", "K_AND", "K_ARRAY", "K_AS", "K_ASC", + "K_BETWEEN", "K_BY", "K_DESC", "K_DISTINCT", "K_ESCAPE", "K_EXISTS", "K_FIRST", + "K_FALSE", "K_FROM", "K_GROUP", "K_IN", "K_JOIN", "K_LAST", "K_LEFT", + "K_LIKE", "K_LIMIT", "K_NOT", "K_NULL", "K_OFFSET", "K_OR", "K_ORDER", + "K_RANK", "K_RIGHT", "K_SELECT", "K_TOP", "K_TRUE", "K_UDF", "K_UNDEFINED", + "K_VALUE", "K_WHERE", "WS", "NUMERIC_LITERAL", "STRING_LITERAL", "LEX_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 = 94; sql_query(); + State = 95; 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 = 97; select_clause(); + State = 99; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==K_FROM) { + { + State = 98; from_clause(); + } + } + + State = 102; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==K_WHERE) { + { + State = 101; where_clause(); + } + } + + State = 105; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==K_GROUP) { + { + State = 104; group_by_clause(); + } + } + + State = 108; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==K_ORDER) { + { + State = 107; order_by_clause(); + } + } + + State = 111; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==K_OFFSET) { + { + State = 110; 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 = 113; Match(K_SELECT); + State = 115; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==K_DISTINCT) { + { + State = 114; Match(K_DISTINCT); + } + } + + State = 118; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==K_TOP) { + { + State = 117; top_spec(); + } + } + + State = 120; 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 = 122; Match(K_TOP); + State = 123; + _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 = 128; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__0: + EnterOuterAlt(_localctx, 1); + { + State = 125; select_star_spec(); + } + break; + case K_VALUE: + EnterOuterAlt(_localctx, 2); + { + State = 126; select_value_spec(); + } + break; + case T__2: + case T__5: + case T__12: + case T__13: + case T__24: + case T__25: + case K_ALL: + case K_ARRAY: + case K_EXISTS: + case K_FIRST: + case K_FALSE: + case K_LAST: + case K_LEFT: + case K_NOT: + case K_NULL: + case K_RIGHT: + case K_TRUE: + case K_UDF: + case K_UNDEFINED: + case NUMERIC_LITERAL: + case STRING_LITERAL: + case LEX_IDENTIFIER: + case PARAMETER: + EnterOuterAlt(_localctx, 3); + { + State = 127; 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 = 130; 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 = 132; Match(K_VALUE); + State = 133; 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 = 135; select_item(); + State = 140; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==T__1) { + { + { + State = 136; Match(T__1); + State = 137; select_item(); + } + } + State = 142; + 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 IdentifierContext identifier() { + return GetRuleContext(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 = 143; scalar_expression(0); + State = 146; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==K_AS) { + { + State = 144; Match(K_AS); + State = 145; 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 = 148; Match(K_FROM); + State = 149; 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 IdentifierContext identifier() { + return GetRuleContext(0); + } + public ITerminalNode K_AS() { return GetToken(sqlParser.K_AS, 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 IdentifierContext identifier() { + return GetRuleContext(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); + int _la; + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 163; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,12,Context) ) { + case 1: + { + _localctx = new AliasedCollectionExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + + State = 152; collection(); + State = 157; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,11,Context) ) { + case 1: + { + State = 154; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==K_AS) { + { + State = 153; Match(K_AS); + } + } + + State = 156; identifier(); + } + break; + } + } + break; + case 2: + { + _localctx = new ArrayIteratorCollectionExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + State = 159; identifier(); + State = 160; Match(K_IN); + State = 161; collection(); + } + break; + } + Context.Stop = TokenStream.LT(-1); + State = 170; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,13,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 = 165; + if (!(Precpred(Context, 1))) throw new FailedPredicateException(this, "Precpred(Context, 1)"); + State = 166; Match(K_JOIN); + State = 167; collection_expression(2); + } + } + } + State = 172; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,13,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 IdentifierContext identifier() { + return GetRuleContext(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 = 181; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case K_ALL: + case K_FIRST: + case K_LAST: + case LEX_IDENTIFIER: + _localctx = new InputPathCollectionContext(_localctx); + EnterOuterAlt(_localctx, 1); + { + State = 173; identifier(); + State = 175; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,14,Context) ) { + case 1: + { + State = 174; path_expression(0); + } + break; + } + } + break; + case T__2: + _localctx = new SubqueryCollectionContext(_localctx); + EnterOuterAlt(_localctx, 2); + { + State = 177; Match(T__2); + State = 178; sql_query(); + State = 179; 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 IdentifierContext identifier() { + return GetRuleContext(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 = 197; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,17,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( ParseListeners!=null ) + TriggerExitRuleEvent(); + _prevctx = _localctx; + { + State = 195; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,16,Context) ) { + case 1: + { + _localctx = new IdentifierPathExpressionContext(new Path_expressionContext(_parentctx, _parentState)); + PushNewRecursionContext(_localctx, _startState, RULE_path_expression); + State = 184; + if (!(Precpred(Context, 4))) throw new FailedPredicateException(this, "Precpred(Context, 4)"); + State = 185; Match(T__4); + State = 186; identifier(); + } + break; + case 2: + { + _localctx = new NumberPathExpressionContext(new Path_expressionContext(_parentctx, _parentState)); + PushNewRecursionContext(_localctx, _startState, RULE_path_expression); + State = 187; + if (!(Precpred(Context, 3))) throw new FailedPredicateException(this, "Precpred(Context, 3)"); + State = 188; Match(T__5); + State = 189; Match(NUMERIC_LITERAL); + State = 190; Match(T__6); + } + break; + case 3: + { + _localctx = new StringPathExpressionContext(new Path_expressionContext(_parentctx, _parentState)); + PushNewRecursionContext(_localctx, _startState, RULE_path_expression); + State = 191; + if (!(Precpred(Context, 2))) throw new FailedPredicateException(this, "Precpred(Context, 2)"); + State = 192; Match(T__5); + State = 193; Match(STRING_LITERAL); + State = 194; Match(T__6); + } + break; + } + } + } + State = 199; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,17,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 = 200; Match(K_WHERE); + State = 201; 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 = 203; Match(K_GROUP); + State = 204; Match(K_BY); + State = 205; 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 ITerminalNode K_RANK() { return GetToken(sqlParser.K_RANK, 0); } + public Score_expression_order_by_itemsContext score_expression_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 { + State = 214; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,18,Context) ) { + case 1: + EnterOuterAlt(_localctx, 1); + { + State = 207; Match(K_ORDER); + State = 208; Match(K_BY); + State = 209; order_by_items(); + } + break; + case 2: + EnterOuterAlt(_localctx, 2); + { + State = 210; Match(K_ORDER); + State = 211; Match(K_BY); + State = 212; Match(K_RANK); + State = 213; score_expression_order_by_items(); + } + break; + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class Score_expression_order_by_itemsContext : ParserRuleContext { + public Score_expression_order_by_itemContext[] score_expression_order_by_item() { + return GetRuleContexts(); + } + public Score_expression_order_by_itemContext score_expression_order_by_item(int i) { + return GetRuleContext(i); + } + public Score_expression_order_by_itemsContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_score_expression_order_by_items; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterScore_expression_order_by_items(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitScore_expression_order_by_items(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitScore_expression_order_by_items(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Score_expression_order_by_itemsContext score_expression_order_by_items() { + Score_expression_order_by_itemsContext _localctx = new Score_expression_order_by_itemsContext(Context, State); + EnterRule(_localctx, 32, RULE_score_expression_order_by_items); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 216; score_expression_order_by_item(); + State = 221; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==T__1) { + { + { + State = 217; Match(T__1); + State = 218; score_expression_order_by_item(); + } + } + State = 223; + 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 Score_expression_order_by_itemContext : ParserRuleContext { + public Function_call_scalar_expressionContext function_call_scalar_expression() { + return GetRuleContext(0); + } + public Sort_orderContext sort_order() { + return GetRuleContext(0); + } + public Score_expression_order_by_itemContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_score_expression_order_by_item; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterScore_expression_order_by_item(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitScore_expression_order_by_item(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitScore_expression_order_by_item(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Score_expression_order_by_itemContext score_expression_order_by_item() { + Score_expression_order_by_itemContext _localctx = new Score_expression_order_by_itemContext(Context, State); + EnterRule(_localctx, 34, RULE_score_expression_order_by_item); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 224; function_call_scalar_expression(); + State = 226; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==K_ASC || _la==K_DESC) { + { + State = 225; sort_order(); + } + } + + } + } + 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, 36, RULE_order_by_items); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 228; order_by_item(); + State = 233; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==T__1) { + { + { + State = 229; Match(T__1); + State = 230; order_by_item(); + } + } + State = 235; + 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, 38, RULE_order_by_item); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 236; scalar_expression(0); + State = 238; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==K_ASC || _la==K_DESC) { + { + State = 237; 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, 40, RULE_sort_order); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 240; + _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, 42, RULE_offset_limit_clause); + try { + EnterOuterAlt(_localctx, 1); + { + State = 242; Match(K_OFFSET); + State = 243; offset_count(); + State = 244; Match(K_LIMIT); + State = 245; 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, 44, RULE_offset_count); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 247; + _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, 46, RULE_limit_count); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 249; + _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 = 48; + EnterRecursionRule(_localctx, 48, RULE_scalar_expression, _p); + int _la; + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 262; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,24,Context) ) { + case 1: + { + _localctx = new LogicalScalarExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + + State = 252; logical_scalar_expression(0); + } + break; + case 2: + { + _localctx = new BetweenScalarExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + State = 253; binary_scalar_expression(0); + State = 255; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==K_NOT) { + { + State = 254; Match(K_NOT); + } + } + + State = 257; Match(K_BETWEEN); + State = 258; binary_scalar_expression(0); + State = 259; Match(K_AND); + State = 260; binary_scalar_expression(0); + } + break; + } + Context.Stop = TokenStream.LT(-1); + State = 275; + 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 = 273; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,25,Context) ) { + case 1: + { + _localctx = new ConditionalScalarExpressionContext(new Scalar_expressionContext(_parentctx, _parentState)); + PushNewRecursionContext(_localctx, _startState, RULE_scalar_expression); + State = 264; + if (!(Precpred(Context, 4))) throw new FailedPredicateException(this, "Precpred(Context, 4)"); + State = 265; Match(T__7); + State = 266; scalar_expression(0); + State = 267; Match(T__8); + State = 268; scalar_expression(5); + } + break; + case 2: + { + _localctx = new CoalesceScalarExpressionContext(new Scalar_expressionContext(_parentctx, _parentState)); + PushNewRecursionContext(_localctx, _startState, RULE_scalar_expression); + State = 270; + if (!(Precpred(Context, 3))) throw new FailedPredicateException(this, "Precpred(Context, 3)"); + State = 271; Match(T__9); + State = 272; scalar_expression(4); + } + break; + } + } + } + State = 277; + 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 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[] logical_scalar_expression() { + return GetRuleContexts(); + } + public Logical_scalar_expressionContext logical_scalar_expression(int i) { + return GetRuleContext(i); + } + public ITerminalNode K_AND() { return GetToken(sqlParser.K_AND, 0); } + public ITerminalNode K_OR() { return GetToken(sqlParser.K_OR, 0); } + public Logical_scalar_expressionContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + 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() { + return logical_scalar_expression(0); + } + + private Logical_scalar_expressionContext logical_scalar_expression(int _p) { + ParserRuleContext _parentctx = Context; + int _parentState = State; + Logical_scalar_expressionContext _localctx = new Logical_scalar_expressionContext(Context, _parentState); + Logical_scalar_expressionContext _prevctx = _localctx; + int _startState = 50; + EnterRecursionRule(_localctx, 50, RULE_logical_scalar_expression, _p); + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 282; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,27,Context) ) { + case 1: + { + State = 279; binary_scalar_expression(0); + } + break; + case 2: + { + State = 280; in_scalar_expression(); + } + break; + case 3: + { + State = 281; like_scalar_expression(); + } + break; + } + Context.Stop = TokenStream.LT(-1); + State = 292; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,29,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( ParseListeners!=null ) + TriggerExitRuleEvent(); + _prevctx = _localctx; + { + State = 290; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,28,Context) ) { + case 1: + { + _localctx = new Logical_scalar_expressionContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_logical_scalar_expression); + State = 284; + if (!(Precpred(Context, 2))) throw new FailedPredicateException(this, "Precpred(Context, 2)"); + State = 285; Match(K_AND); + State = 286; logical_scalar_expression(3); + } + break; + case 2: + { + _localctx = new Logical_scalar_expressionContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_logical_scalar_expression); + State = 287; + if (!(Precpred(Context, 1))) throw new FailedPredicateException(this, "Precpred(Context, 1)"); + State = 288; Match(K_OR); + State = 289; logical_scalar_expression(2); + } + break; + } + } + } + State = 294; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,29,Context); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + UnrollRecursionContexts(_parentctx); + } + 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, 52, RULE_in_scalar_expression); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 295; binary_scalar_expression(0); + State = 297; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==K_NOT) { + { + State = 296; Match(K_NOT); + } + } + + State = 299; Match(K_IN); + State = 300; Match(T__2); + State = 301; scalar_expression_list(); + State = 302; 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, 54, RULE_like_scalar_expression); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 304; binary_scalar_expression(0); + State = 306; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==K_NOT) { + { + State = 305; Match(K_NOT); + } + } + + State = 308; Match(K_LIKE); + State = 309; binary_scalar_expression(0); + State = 311; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,32,Context) ) { + case 1: + { + State = 310; 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, 56, RULE_escape_expression); + try { + EnterOuterAlt(_localctx, 1); + { + State = 313; Match(K_ESCAPE); + State = 314; 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 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 = 58; + EnterRecursionRule(_localctx, 58, RULE_binary_scalar_expression, _p); + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + { + State = 317; unary_scalar_expression(); + } + Context.Stop = TokenStream.LT(-1); + State = 353; + 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 = 351; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,33,Context) ) { + case 1: + { + _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); + State = 319; + if (!(Precpred(Context, 8))) throw new FailedPredicateException(this, "Precpred(Context, 8)"); + State = 320; multiplicative_operator(); + State = 321; binary_scalar_expression(9); + } + break; + case 2: + { + _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); + State = 323; + if (!(Precpred(Context, 7))) throw new FailedPredicateException(this, "Precpred(Context, 7)"); + State = 324; additive_operator(); + State = 325; binary_scalar_expression(8); + } + break; + case 3: + { + _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); + State = 327; + if (!(Precpred(Context, 6))) throw new FailedPredicateException(this, "Precpred(Context, 6)"); + State = 328; relational_operator(); + State = 329; binary_scalar_expression(7); + } + break; + case 4: + { + _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); + State = 331; + if (!(Precpred(Context, 5))) throw new FailedPredicateException(this, "Precpred(Context, 5)"); + State = 332; equality_operator(); + State = 333; binary_scalar_expression(6); + } + break; + case 5: + { + _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); + State = 335; + if (!(Precpred(Context, 4))) throw new FailedPredicateException(this, "Precpred(Context, 4)"); + State = 336; bitwise_and_operator(); + State = 337; binary_scalar_expression(5); + } + break; + case 6: + { + _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); + State = 339; + if (!(Precpred(Context, 3))) throw new FailedPredicateException(this, "Precpred(Context, 3)"); + State = 340; bitwise_exclusive_or_operator(); + State = 341; binary_scalar_expression(4); + } + break; + case 7: + { + _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); + State = 343; + if (!(Precpred(Context, 2))) throw new FailedPredicateException(this, "Precpred(Context, 2)"); + State = 344; bitwise_inclusive_or_operator(); + State = 345; binary_scalar_expression(3); + } + break; + case 8: + { + _localctx = new Binary_scalar_expressionContext(_parentctx, _parentState); + PushNewRecursionContext(_localctx, _startState, RULE_binary_scalar_expression); + State = 347; + if (!(Precpred(Context, 1))) throw new FailedPredicateException(this, "Precpred(Context, 1)"); + State = 348; string_concat_operator(); + State = 349; binary_scalar_expression(2); + } + break; + } + } + } + State = 355; + 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 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, 60, RULE_multiplicative_operator); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 356; + _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, 62, RULE_additive_operator); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 358; + _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, 64, RULE_relational_operator); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 360; + _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, 66, RULE_equality_operator); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 362; + _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, 68, RULE_bitwise_and_operator); + try { + EnterOuterAlt(_localctx, 1); + { + State = 364; 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, 70, RULE_bitwise_exclusive_or_operator); + try { + EnterOuterAlt(_localctx, 1); + { + State = 366; 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, 72, RULE_bitwise_inclusive_or_operator); + try { + EnterOuterAlt(_localctx, 1); + { + State = 368; 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, 74, RULE_string_concat_operator); + try { + EnterOuterAlt(_localctx, 1); + { + State = 370; 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, 76, RULE_unary_scalar_expression); + try { + State = 376; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case T__2: + case T__5: + case T__25: + case K_ALL: + case K_ARRAY: + case K_EXISTS: + case K_FIRST: + case K_FALSE: + case K_LAST: + case K_LEFT: + case K_NULL: + case K_RIGHT: + case K_TRUE: + case K_UDF: + case K_UNDEFINED: + case NUMERIC_LITERAL: + case STRING_LITERAL: + case LEX_IDENTIFIER: + case PARAMETER: + EnterOuterAlt(_localctx, 1); + { + State = 372; primary_expression(0); + } + break; + case T__12: + case T__13: + case T__24: + case K_NOT: + EnterOuterAlt(_localctx, 2); + { + State = 373; unary_operator(); + State = 374; 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, 78, RULE_unary_operator); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 378; + _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 AllScalarExpressionContext : Primary_expressionContext { + public ITerminalNode K_ALL() { return GetToken(sqlParser.K_ALL, 0); } + public Sql_queryContext sql_query() { + return GetRuleContext(0); + } + public AllScalarExpressionContext(Primary_expressionContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterAllScalarExpression(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitAllScalarExpression(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitAllScalarExpression(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 FirstScalarExpressionContext : Primary_expressionContext { + public ITerminalNode K_FIRST() { return GetToken(sqlParser.K_FIRST, 0); } + public Sql_queryContext sql_query() { + return GetRuleContext(0); + } + public FirstScalarExpressionContext(Primary_expressionContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterFirstScalarExpression(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitFirstScalarExpression(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitFirstScalarExpression(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 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 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 IdentifierContext identifier() { + return GetRuleContext(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 Function_call_scalar_expressionContext function_call_scalar_expression() { + 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 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 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 LastScalarExpressionContext : Primary_expressionContext { + public ITerminalNode K_LAST() { return GetToken(sqlParser.K_LAST, 0); } + public Sql_queryContext sql_query() { + return GetRuleContext(0); + } + public LastScalarExpressionContext(Primary_expressionContext context) { CopyFrom(context); } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterLastScalarExpression(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitLastScalarExpression(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitLastScalarExpression(this); + else return visitor.VisitChildren(this); + } + } + public partial class PropertyRefScalarExpressionRecursiveContext : Primary_expressionContext { + public Primary_expressionContext primary_expression() { + return GetRuleContext(0); + } + public IdentifierContext identifier() { + return GetRuleContext(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 = 80; + EnterRecursionRule(_localctx, 80, RULE_primary_expression, _p); + int _la; + try { + int _alt; + EnterOuterAlt(_localctx, 1); + { + State = 428; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,38,Context) ) { + case 1: + { + _localctx = new PropertyRefScalarExpressionBaseContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + + State = 381; identifier(); + } + break; + case 2: + { + _localctx = new ParameterRefScalarExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + State = 382; Match(PARAMETER); + } + break; + case 3: + { + _localctx = new LiteralScalarExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + State = 383; literal(); + } + break; + case 4: + { + _localctx = new ArrayCreateScalarExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + State = 384; Match(T__5); + State = 386; + 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_ALL) | (1L << K_ARRAY) | (1L << K_EXISTS) | (1L << K_FIRST) | (1L << K_FALSE) | (1L << K_LAST) | (1L << K_LEFT) | (1L << K_NOT) | (1L << K_NULL) | (1L << K_RIGHT) | (1L << K_TRUE) | (1L << K_UDF) | (1L << K_UNDEFINED))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (NUMERIC_LITERAL - 64)) | (1L << (STRING_LITERAL - 64)) | (1L << (LEX_IDENTIFIER - 64)) | (1L << (PARAMETER - 64)))) != 0)) { + { + State = 385; scalar_expression_list(); + } + } + + State = 388; Match(T__6); + } + break; + case 5: + { + _localctx = new ObjectCreateScalarExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + State = 389; Match(T__25); + State = 391; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==STRING_LITERAL) { + { + State = 390; object_property_list(); + } + } + + State = 393; Match(T__26); + } + break; + case 6: + { + _localctx = new ParenthesizedScalarExperessionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + State = 394; Match(T__2); + State = 395; scalar_expression(0); + State = 396; Match(T__3); + } + break; + case 7: + { + _localctx = new SubqueryScalarExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + State = 398; Match(T__2); + State = 399; sql_query(); + State = 400; Match(T__3); + } + break; + case 8: + { + _localctx = new ExistsScalarExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + State = 402; Match(K_EXISTS); + State = 403; Match(T__2); + State = 404; sql_query(); + State = 405; Match(T__3); + } + break; + case 9: + { + _localctx = new ArrayScalarExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + State = 407; Match(K_ARRAY); + State = 408; Match(T__2); + State = 409; sql_query(); + State = 410; Match(T__3); + } + break; + case 10: + { + _localctx = new AllScalarExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + State = 412; Match(K_ALL); + State = 413; Match(T__2); + State = 414; sql_query(); + State = 415; Match(T__3); + } + break; + case 11: + { + _localctx = new FirstScalarExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + State = 417; Match(K_FIRST); + State = 418; Match(T__2); + State = 419; sql_query(); + State = 420; Match(T__3); + } + break; + case 12: + { + _localctx = new LastScalarExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + State = 422; Match(K_LAST); + State = 423; Match(T__2); + State = 424; sql_query(); + State = 425; Match(T__3); + } + break; + case 13: + { + _localctx = new FunctionCallScalarExpressionContext(_localctx); + Context = _localctx; + _prevctx = _localctx; + State = 427; function_call_scalar_expression(); + } + break; + } + Context.Stop = TokenStream.LT(-1); + State = 440; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,40,Context); + while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ) { + if ( _alt==1 ) { + if ( ParseListeners!=null ) + TriggerExitRuleEvent(); + _prevctx = _localctx; + { + State = 438; + ErrorHandler.Sync(this); + switch ( Interpreter.AdaptivePredict(TokenStream,39,Context) ) { + case 1: + { + _localctx = new PropertyRefScalarExpressionRecursiveContext(new Primary_expressionContext(_parentctx, _parentState)); + PushNewRecursionContext(_localctx, _startState, RULE_primary_expression); + State = 430; + if (!(Precpred(Context, 8))) throw new FailedPredicateException(this, "Precpred(Context, 8)"); + State = 431; Match(T__4); + State = 432; identifier(); + } + break; + case 2: + { + _localctx = new MemberIndexerScalarExpressionContext(new Primary_expressionContext(_parentctx, _parentState)); + PushNewRecursionContext(_localctx, _startState, RULE_primary_expression); + State = 433; + if (!(Precpred(Context, 7))) throw new FailedPredicateException(this, "Precpred(Context, 7)"); + State = 434; Match(T__5); + State = 435; scalar_expression(0); + State = 436; Match(T__6); + } + break; + } + } + } + State = 442; + ErrorHandler.Sync(this); + _alt = Interpreter.AdaptivePredict(TokenStream,40,Context); + } + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + UnrollRecursionContexts(_parentctx); + } + return _localctx; + } + + public partial class Function_call_scalar_expressionContext : ParserRuleContext { + public IdentifierContext identifier() { + return GetRuleContext(0); + } + public ITerminalNode K_UDF() { return GetToken(sqlParser.K_UDF, 0); } + public Scalar_expression_listContext scalar_expression_list() { + return GetRuleContext(0); + } + public ITerminalNode K_LEFT() { return GetToken(sqlParser.K_LEFT, 0); } + public ITerminalNode K_RIGHT() { return GetToken(sqlParser.K_RIGHT, 0); } + public Function_call_scalar_expressionContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_function_call_scalar_expression; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterFunction_call_scalar_expression(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitFunction_call_scalar_expression(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitFunction_call_scalar_expression(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public Function_call_scalar_expressionContext function_call_scalar_expression() { + Function_call_scalar_expressionContext _localctx = new Function_call_scalar_expressionContext(Context, State); + EnterRule(_localctx, 82, RULE_function_call_scalar_expression); + int _la; + try { + State = 466; + ErrorHandler.Sync(this); + switch (TokenStream.LA(1)) { + case K_ALL: + case K_FIRST: + case K_LAST: + case K_UDF: + case LEX_IDENTIFIER: + EnterOuterAlt(_localctx, 1); + { + State = 445; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + if (_la==K_UDF) { + { + State = 443; Match(K_UDF); + State = 444; Match(T__4); + } + } + + State = 447; identifier(); + State = 448; Match(T__2); + State = 450; + 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_ALL) | (1L << K_ARRAY) | (1L << K_EXISTS) | (1L << K_FIRST) | (1L << K_FALSE) | (1L << K_LAST) | (1L << K_LEFT) | (1L << K_NOT) | (1L << K_NULL) | (1L << K_RIGHT) | (1L << K_TRUE) | (1L << K_UDF) | (1L << K_UNDEFINED))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (NUMERIC_LITERAL - 64)) | (1L << (STRING_LITERAL - 64)) | (1L << (LEX_IDENTIFIER - 64)) | (1L << (PARAMETER - 64)))) != 0)) { + { + State = 449; scalar_expression_list(); + } + } + + State = 452; Match(T__3); + } + break; + case K_LEFT: + EnterOuterAlt(_localctx, 2); + { + State = 454; Match(K_LEFT); + State = 455; Match(T__2); + State = 457; + 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_ALL) | (1L << K_ARRAY) | (1L << K_EXISTS) | (1L << K_FIRST) | (1L << K_FALSE) | (1L << K_LAST) | (1L << K_LEFT) | (1L << K_NOT) | (1L << K_NULL) | (1L << K_RIGHT) | (1L << K_TRUE) | (1L << K_UDF) | (1L << K_UNDEFINED))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (NUMERIC_LITERAL - 64)) | (1L << (STRING_LITERAL - 64)) | (1L << (LEX_IDENTIFIER - 64)) | (1L << (PARAMETER - 64)))) != 0)) { + { + State = 456; scalar_expression_list(); + } + } + + State = 459; Match(T__3); + } + break; + case K_RIGHT: + EnterOuterAlt(_localctx, 3); + { + State = 460; Match(K_RIGHT); + State = 461; Match(T__2); + State = 463; + 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_ALL) | (1L << K_ARRAY) | (1L << K_EXISTS) | (1L << K_FIRST) | (1L << K_FALSE) | (1L << K_LAST) | (1L << K_LEFT) | (1L << K_NOT) | (1L << K_NULL) | (1L << K_RIGHT) | (1L << K_TRUE) | (1L << K_UDF) | (1L << K_UNDEFINED))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (NUMERIC_LITERAL - 64)) | (1L << (STRING_LITERAL - 64)) | (1L << (LEX_IDENTIFIER - 64)) | (1L << (PARAMETER - 64)))) != 0)) { + { + State = 462; scalar_expression_list(); + } + } + + State = 465; 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 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, 84, RULE_scalar_expression_list); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 468; scalar_expression(0); + State = 473; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==T__1) { + { + { + State = 469; Match(T__1); + State = 470; scalar_expression(0); + } + } + State = 475; + 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, 86, RULE_object_property_list); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 476; object_property(); + State = 481; + ErrorHandler.Sync(this); + _la = TokenStream.LA(1); + while (_la==T__1) { + { + { + State = 477; Match(T__1); + State = 478; object_property(); + } + } + State = 483; + 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, 88, RULE_object_property); + try { + EnterOuterAlt(_localctx, 1); + { + State = 484; Match(STRING_LITERAL); + State = 485; Match(T__8); + State = 486; scalar_expression(0); + } + } + catch (RecognitionException re) { + _localctx.exception = re; + ErrorHandler.ReportError(this, re); + ErrorHandler.Recover(this, re); + } + finally { + ExitRule(); + } + return _localctx; + } + + public partial class IdentifierContext : ParserRuleContext { + public ITerminalNode LEX_IDENTIFIER() { return GetToken(sqlParser.LEX_IDENTIFIER, 0); } + public ITerminalNode K_ALL() { return GetToken(sqlParser.K_ALL, 0); } + public ITerminalNode K_FIRST() { return GetToken(sqlParser.K_FIRST, 0); } + public ITerminalNode K_LAST() { return GetToken(sqlParser.K_LAST, 0); } + public IdentifierContext(ParserRuleContext parent, int invokingState) + : base(parent, invokingState) + { + } + public override int RuleIndex { get { return RULE_identifier; } } + public override void EnterRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.EnterIdentifier(this); + } + public override void ExitRule(IParseTreeListener listener) { + IsqlListener typedListener = listener as IsqlListener; + if (typedListener != null) typedListener.ExitIdentifier(this); + } + public override TResult Accept(IParseTreeVisitor visitor) { + IsqlVisitor typedVisitor = visitor as IsqlVisitor; + if (typedVisitor != null) return typedVisitor.VisitIdentifier(this); + else return visitor.VisitChildren(this); + } + } + + [RuleVersion(0)] + public IdentifierContext identifier() { + IdentifierContext _localctx = new IdentifierContext(Context, State); + EnterRule(_localctx, 90, RULE_identifier); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 488; + _la = TokenStream.LA(1); + if ( !(((((_la - 28)) & ~0x3f) == 0 && ((1L << (_la - 28)) & ((1L << (K_ALL - 28)) | (1L << (K_FIRST - 28)) | (1L << (K_LAST - 28)) | (1L << (LEX_IDENTIFIER - 28)))) != 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 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, 92, RULE_literal); + int _la; + try { + EnterOuterAlt(_localctx, 1); + { + State = 490; + _la = TokenStream.LA(1); + if ( !(((((_la - 40)) & ~0x3f) == 0 && ((1L << (_la - 40)) & ((1L << (K_FALSE - 40)) | (1L << (K_NULL - 40)) | (1L << (K_TRUE - 40)) | (1L << (K_UNDEFINED - 40)) | (1L << (NUMERIC_LITERAL - 40)) | (1L << (STRING_LITERAL - 40)))) != 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 24: return scalar_expression_sempred((Scalar_expressionContext)_localctx, predIndex); + case 25: return logical_scalar_expression_sempred((Logical_scalar_expressionContext)_localctx, predIndex); + case 29: return binary_scalar_expression_sempred((Binary_scalar_expressionContext)_localctx, predIndex); + case 40: 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 logical_scalar_expression_sempred(Logical_scalar_expressionContext _localctx, int predIndex) { + switch (predIndex) { + case 6: return Precpred(Context, 2); + case 7: return Precpred(Context, 1); + } + return true; + } + private bool binary_scalar_expression_sempred(Binary_scalar_expressionContext _localctx, int predIndex) { + switch (predIndex) { + case 8: return Precpred(Context, 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, 8); + case 17: return Precpred(Context, 7); + } + return true; + } + + private static char[] _serializedATN = { + '\x3', '\x608B', '\xA72A', '\x8133', '\xB9ED', '\x417C', '\x3BE7', '\x7786', + '\x5964', '\x3', '\x45', '\x1EF', '\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', '\x3', '\x2', '\x3', '\x2', '\x3', '\x2', + '\x3', '\x3', '\x3', '\x3', '\x5', '\x3', '\x66', '\n', '\x3', '\x3', + '\x3', '\x5', '\x3', 'i', '\n', '\x3', '\x3', '\x3', '\x5', '\x3', 'l', + '\n', '\x3', '\x3', '\x3', '\x5', '\x3', 'o', '\n', '\x3', '\x3', '\x3', + '\x5', '\x3', 'r', '\n', '\x3', '\x3', '\x4', '\x3', '\x4', '\x5', '\x4', + 'v', '\n', '\x4', '\x3', '\x4', '\x5', '\x4', 'y', '\n', '\x4', '\x3', + '\x4', '\x3', '\x4', '\x3', '\x5', '\x3', '\x5', '\x3', '\x5', '\x3', + '\x6', '\x3', '\x6', '\x3', '\x6', '\x5', '\x6', '\x83', '\n', '\x6', + '\x3', '\a', '\x3', '\a', '\x3', '\b', '\x3', '\b', '\x3', '\b', '\x3', + '\t', '\x3', '\t', '\x3', '\t', '\a', '\t', '\x8D', '\n', '\t', '\f', + '\t', '\xE', '\t', '\x90', '\v', '\t', '\x3', '\n', '\x3', '\n', '\x3', + '\n', '\x5', '\n', '\x95', '\n', '\n', '\x3', '\v', '\x3', '\v', '\x3', + '\v', '\x3', '\f', '\x3', '\f', '\x3', '\f', '\x5', '\f', '\x9D', '\n', + '\f', '\x3', '\f', '\x5', '\f', '\xA0', '\n', '\f', '\x3', '\f', '\x3', + '\f', '\x3', '\f', '\x3', '\f', '\x5', '\f', '\xA6', '\n', '\f', '\x3', + '\f', '\x3', '\f', '\x3', '\f', '\a', '\f', '\xAB', '\n', '\f', '\f', + '\f', '\xE', '\f', '\xAE', '\v', '\f', '\x3', '\r', '\x3', '\r', '\x5', + '\r', '\xB2', '\n', '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x3', + '\r', '\x5', '\r', '\xB8', '\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', + '\xC6', '\n', '\xE', '\f', '\xE', '\xE', '\xE', '\xC9', '\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', '\x11', '\x3', '\x11', '\x3', '\x11', '\x5', '\x11', '\xD9', + '\n', '\x11', '\x3', '\x12', '\x3', '\x12', '\x3', '\x12', '\a', '\x12', + '\xDE', '\n', '\x12', '\f', '\x12', '\xE', '\x12', '\xE1', '\v', '\x12', + '\x3', '\x13', '\x3', '\x13', '\x5', '\x13', '\xE5', '\n', '\x13', '\x3', + '\x14', '\x3', '\x14', '\x3', '\x14', '\a', '\x14', '\xEA', '\n', '\x14', + '\f', '\x14', '\xE', '\x14', '\xED', '\v', '\x14', '\x3', '\x15', '\x3', + '\x15', '\x5', '\x15', '\xF1', '\n', '\x15', '\x3', '\x16', '\x3', '\x16', + '\x3', '\x17', '\x3', '\x17', '\x3', '\x17', '\x3', '\x17', '\x3', '\x17', + '\x3', '\x18', '\x3', '\x18', '\x3', '\x19', '\x3', '\x19', '\x3', '\x1A', + '\x3', '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x5', '\x1A', '\x102', '\n', + '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x3', + '\x1A', '\x5', '\x1A', '\x109', '\n', '\x1A', '\x3', '\x1A', '\x3', '\x1A', + '\x3', '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x3', '\x1A', + '\x3', '\x1A', '\x3', '\x1A', '\a', '\x1A', '\x114', '\n', '\x1A', '\f', + '\x1A', '\xE', '\x1A', '\x117', '\v', '\x1A', '\x3', '\x1B', '\x3', '\x1B', + '\x3', '\x1B', '\x3', '\x1B', '\x5', '\x1B', '\x11D', '\n', '\x1B', '\x3', + '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x3', + '\x1B', '\a', '\x1B', '\x125', '\n', '\x1B', '\f', '\x1B', '\xE', '\x1B', + '\x128', '\v', '\x1B', '\x3', '\x1C', '\x3', '\x1C', '\x5', '\x1C', '\x12C', + '\n', '\x1C', '\x3', '\x1C', '\x3', '\x1C', '\x3', '\x1C', '\x3', '\x1C', + '\x3', '\x1C', '\x3', '\x1D', '\x3', '\x1D', '\x5', '\x1D', '\x135', '\n', + '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x5', '\x1D', '\x13A', + '\n', '\x1D', '\x3', '\x1E', '\x3', '\x1E', '\x3', '\x1E', '\x3', '\x1F', + '\x3', '\x1F', '\x3', '\x1F', '\x3', '\x1F', '\x3', '\x1F', '\x3', '\x1F', + '\x3', '\x1F', '\x3', '\x1F', '\x3', '\x1F', '\x3', '\x1F', '\x3', '\x1F', + '\x3', '\x1F', '\x3', '\x1F', '\x3', '\x1F', '\x3', '\x1F', '\x3', '\x1F', + '\x3', '\x1F', '\x3', '\x1F', '\x3', '\x1F', '\x3', '\x1F', '\x3', '\x1F', + '\x3', '\x1F', '\x3', '\x1F', '\x3', '\x1F', '\x3', '\x1F', '\x3', '\x1F', + '\x3', '\x1F', '\x3', '\x1F', '\x3', '\x1F', '\x3', '\x1F', '\x3', '\x1F', + '\x3', '\x1F', '\x3', '\x1F', '\x3', '\x1F', '\x3', '\x1F', '\a', '\x1F', + '\x162', '\n', '\x1F', '\f', '\x1F', '\xE', '\x1F', '\x165', '\v', '\x1F', + '\x3', ' ', '\x3', ' ', '\x3', '!', '\x3', '!', '\x3', '\"', '\x3', '\"', + '\x3', '#', '\x3', '#', '\x3', '$', '\x3', '$', '\x3', '%', '\x3', '%', + '\x3', '&', '\x3', '&', '\x3', '\'', '\x3', '\'', '\x3', '(', '\x3', '(', + '\x3', '(', '\x3', '(', '\x5', '(', '\x17B', '\n', '(', '\x3', ')', '\x3', + ')', '\x3', '*', '\x3', '*', '\x3', '*', '\x3', '*', '\x3', '*', '\x3', + '*', '\x5', '*', '\x185', '\n', '*', '\x3', '*', '\x3', '*', '\x3', '*', + '\x5', '*', '\x18A', '\n', '*', '\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', '*', '\x5', '*', '\x1AF', '\n', '*', '\x3', '*', '\x3', '*', + '\x3', '*', '\x3', '*', '\x3', '*', '\x3', '*', '\x3', '*', '\x3', '*', + '\a', '*', '\x1B9', '\n', '*', '\f', '*', '\xE', '*', '\x1BC', '\v', '*', + '\x3', '+', '\x3', '+', '\x5', '+', '\x1C0', '\n', '+', '\x3', '+', '\x3', + '+', '\x3', '+', '\x5', '+', '\x1C5', '\n', '+', '\x3', '+', '\x3', '+', + '\x3', '+', '\x3', '+', '\x3', '+', '\x5', '+', '\x1CC', '\n', '+', '\x3', + '+', '\x3', '+', '\x3', '+', '\x3', '+', '\x5', '+', '\x1D2', '\n', '+', + '\x3', '+', '\x5', '+', '\x1D5', '\n', '+', '\x3', ',', '\x3', ',', '\x3', + ',', '\a', ',', '\x1DA', '\n', ',', '\f', ',', '\xE', ',', '\x1DD', '\v', + ',', '\x3', '-', '\x3', '-', '\x3', '-', '\a', '-', '\x1E2', '\n', '-', + '\f', '-', '\xE', '-', '\x1E5', '\v', '-', '\x3', '.', '\x3', '.', '\x3', + '.', '\x3', '.', '\x3', '/', '\x3', '/', '\x3', '\x30', '\x3', '\x30', + '\x3', '\x30', '\x2', '\b', '\x16', '\x1A', '\x32', '\x34', '<', 'R', + '\x31', '\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', 'X', + 'Z', '\\', '^', '\x2', '\v', '\x4', '\x2', '\x42', '\x42', '\x45', '\x45', + '\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', '\x33', + '\x33', '\x6', '\x2', '\x1E', '\x1E', ')', ')', '/', '/', '\x44', '\x44', + '\a', '\x2', '*', '*', '\x34', '\x34', '<', '<', '>', '>', '\x42', '\x43', + '\x2', '\x204', '\x2', '`', '\x3', '\x2', '\x2', '\x2', '\x4', '\x63', + '\x3', '\x2', '\x2', '\x2', '\x6', 's', '\x3', '\x2', '\x2', '\x2', '\b', + '|', '\x3', '\x2', '\x2', '\x2', '\n', '\x82', '\x3', '\x2', '\x2', '\x2', + '\f', '\x84', '\x3', '\x2', '\x2', '\x2', '\xE', '\x86', '\x3', '\x2', + '\x2', '\x2', '\x10', '\x89', '\x3', '\x2', '\x2', '\x2', '\x12', '\x91', + '\x3', '\x2', '\x2', '\x2', '\x14', '\x96', '\x3', '\x2', '\x2', '\x2', + '\x16', '\xA5', '\x3', '\x2', '\x2', '\x2', '\x18', '\xB7', '\x3', '\x2', + '\x2', '\x2', '\x1A', '\xB9', '\x3', '\x2', '\x2', '\x2', '\x1C', '\xCA', + '\x3', '\x2', '\x2', '\x2', '\x1E', '\xCD', '\x3', '\x2', '\x2', '\x2', + ' ', '\xD8', '\x3', '\x2', '\x2', '\x2', '\"', '\xDA', '\x3', '\x2', '\x2', + '\x2', '$', '\xE2', '\x3', '\x2', '\x2', '\x2', '&', '\xE6', '\x3', '\x2', + '\x2', '\x2', '(', '\xEE', '\x3', '\x2', '\x2', '\x2', '*', '\xF2', '\x3', + '\x2', '\x2', '\x2', ',', '\xF4', '\x3', '\x2', '\x2', '\x2', '.', '\xF9', + '\x3', '\x2', '\x2', '\x2', '\x30', '\xFB', '\x3', '\x2', '\x2', '\x2', + '\x32', '\x108', '\x3', '\x2', '\x2', '\x2', '\x34', '\x11C', '\x3', '\x2', + '\x2', '\x2', '\x36', '\x129', '\x3', '\x2', '\x2', '\x2', '\x38', '\x132', + '\x3', '\x2', '\x2', '\x2', ':', '\x13B', '\x3', '\x2', '\x2', '\x2', + '<', '\x13E', '\x3', '\x2', '\x2', '\x2', '>', '\x166', '\x3', '\x2', + '\x2', '\x2', '@', '\x168', '\x3', '\x2', '\x2', '\x2', '\x42', '\x16A', + '\x3', '\x2', '\x2', '\x2', '\x44', '\x16C', '\x3', '\x2', '\x2', '\x2', + '\x46', '\x16E', '\x3', '\x2', '\x2', '\x2', 'H', '\x170', '\x3', '\x2', + '\x2', '\x2', 'J', '\x172', '\x3', '\x2', '\x2', '\x2', 'L', '\x174', + '\x3', '\x2', '\x2', '\x2', 'N', '\x17A', '\x3', '\x2', '\x2', '\x2', + 'P', '\x17C', '\x3', '\x2', '\x2', '\x2', 'R', '\x1AE', '\x3', '\x2', + '\x2', '\x2', 'T', '\x1D4', '\x3', '\x2', '\x2', '\x2', 'V', '\x1D6', + '\x3', '\x2', '\x2', '\x2', 'X', '\x1DE', '\x3', '\x2', '\x2', '\x2', + 'Z', '\x1E6', '\x3', '\x2', '\x2', '\x2', '\\', '\x1EA', '\x3', '\x2', + '\x2', '\x2', '^', '\x1EC', '\x3', '\x2', '\x2', '\x2', '`', '\x61', '\x5', + '\x4', '\x3', '\x2', '\x61', '\x62', '\a', '\x2', '\x2', '\x3', '\x62', + '\x3', '\x3', '\x2', '\x2', '\x2', '\x63', '\x65', '\x5', '\x6', '\x4', + '\x2', '\x64', '\x66', '\x5', '\x14', '\v', '\x2', '\x65', '\x64', '\x3', + '\x2', '\x2', '\x2', '\x65', '\x66', '\x3', '\x2', '\x2', '\x2', '\x66', + 'h', '\x3', '\x2', '\x2', '\x2', 'g', 'i', '\x5', '\x1C', '\xF', '\x2', + 'h', 'g', '\x3', '\x2', '\x2', '\x2', 'h', 'i', '\x3', '\x2', '\x2', '\x2', + 'i', 'k', '\x3', '\x2', '\x2', '\x2', 'j', 'l', '\x5', '\x1E', '\x10', + '\x2', 'k', 'j', '\x3', '\x2', '\x2', '\x2', 'k', 'l', '\x3', '\x2', '\x2', + '\x2', 'l', 'n', '\x3', '\x2', '\x2', '\x2', 'm', 'o', '\x5', ' ', '\x11', + '\x2', 'n', 'm', '\x3', '\x2', '\x2', '\x2', 'n', 'o', '\x3', '\x2', '\x2', + '\x2', 'o', 'q', '\x3', '\x2', '\x2', '\x2', 'p', 'r', '\x5', ',', '\x17', + '\x2', 'q', 'p', '\x3', '\x2', '\x2', '\x2', 'q', 'r', '\x3', '\x2', '\x2', + '\x2', 'r', '\x5', '\x3', '\x2', '\x2', '\x2', 's', 'u', '\a', ':', '\x2', + '\x2', 't', 'v', '\a', '&', '\x2', '\x2', 'u', 't', '\x3', '\x2', '\x2', + '\x2', 'u', 'v', '\x3', '\x2', '\x2', '\x2', 'v', 'x', '\x3', '\x2', '\x2', + '\x2', 'w', 'y', '\x5', '\b', '\x5', '\x2', 'x', 'w', '\x3', '\x2', '\x2', + '\x2', 'x', 'y', '\x3', '\x2', '\x2', '\x2', 'y', 'z', '\x3', '\x2', '\x2', + '\x2', 'z', '{', '\x5', '\n', '\x6', '\x2', '{', '\a', '\x3', '\x2', '\x2', + '\x2', '|', '}', '\a', ';', '\x2', '\x2', '}', '~', '\t', '\x2', '\x2', + '\x2', '~', '\t', '\x3', '\x2', '\x2', '\x2', '\x7F', '\x83', '\x5', '\f', + '\a', '\x2', '\x80', '\x83', '\x5', '\xE', '\b', '\x2', '\x81', '\x83', + '\x5', '\x10', '\t', '\x2', '\x82', '\x7F', '\x3', '\x2', '\x2', '\x2', + '\x82', '\x80', '\x3', '\x2', '\x2', '\x2', '\x82', '\x81', '\x3', '\x2', + '\x2', '\x2', '\x83', '\v', '\x3', '\x2', '\x2', '\x2', '\x84', '\x85', + '\a', '\x3', '\x2', '\x2', '\x85', '\r', '\x3', '\x2', '\x2', '\x2', '\x86', + '\x87', '\a', '?', '\x2', '\x2', '\x87', '\x88', '\x5', '\x32', '\x1A', + '\x2', '\x88', '\xF', '\x3', '\x2', '\x2', '\x2', '\x89', '\x8E', '\x5', + '\x12', '\n', '\x2', '\x8A', '\x8B', '\a', '\x4', '\x2', '\x2', '\x8B', + '\x8D', '\x5', '\x12', '\n', '\x2', '\x8C', '\x8A', '\x3', '\x2', '\x2', + '\x2', '\x8D', '\x90', '\x3', '\x2', '\x2', '\x2', '\x8E', '\x8C', '\x3', + '\x2', '\x2', '\x2', '\x8E', '\x8F', '\x3', '\x2', '\x2', '\x2', '\x8F', + '\x11', '\x3', '\x2', '\x2', '\x2', '\x90', '\x8E', '\x3', '\x2', '\x2', + '\x2', '\x91', '\x94', '\x5', '\x32', '\x1A', '\x2', '\x92', '\x93', '\a', + '!', '\x2', '\x2', '\x93', '\x95', '\x5', '\\', '/', '\x2', '\x94', '\x92', + '\x3', '\x2', '\x2', '\x2', '\x94', '\x95', '\x3', '\x2', '\x2', '\x2', + '\x95', '\x13', '\x3', '\x2', '\x2', '\x2', '\x96', '\x97', '\a', '+', + '\x2', '\x2', '\x97', '\x98', '\x5', '\x16', '\f', '\x2', '\x98', '\x15', + '\x3', '\x2', '\x2', '\x2', '\x99', '\x9A', '\b', '\f', '\x1', '\x2', + '\x9A', '\x9F', '\x5', '\x18', '\r', '\x2', '\x9B', '\x9D', '\a', '!', + '\x2', '\x2', '\x9C', '\x9B', '\x3', '\x2', '\x2', '\x2', '\x9C', '\x9D', + '\x3', '\x2', '\x2', '\x2', '\x9D', '\x9E', '\x3', '\x2', '\x2', '\x2', + '\x9E', '\xA0', '\x5', '\\', '/', '\x2', '\x9F', '\x9C', '\x3', '\x2', + '\x2', '\x2', '\x9F', '\xA0', '\x3', '\x2', '\x2', '\x2', '\xA0', '\xA6', + '\x3', '\x2', '\x2', '\x2', '\xA1', '\xA2', '\x5', '\\', '/', '\x2', '\xA2', + '\xA3', '\a', '-', '\x2', '\x2', '\xA3', '\xA4', '\x5', '\x18', '\r', + '\x2', '\xA4', '\xA6', '\x3', '\x2', '\x2', '\x2', '\xA5', '\x99', '\x3', + '\x2', '\x2', '\x2', '\xA5', '\xA1', '\x3', '\x2', '\x2', '\x2', '\xA6', + '\xAC', '\x3', '\x2', '\x2', '\x2', '\xA7', '\xA8', '\f', '\x3', '\x2', + '\x2', '\xA8', '\xA9', '\a', '.', '\x2', '\x2', '\xA9', '\xAB', '\x5', + '\x16', '\f', '\x4', '\xAA', '\xA7', '\x3', '\x2', '\x2', '\x2', '\xAB', + '\xAE', '\x3', '\x2', '\x2', '\x2', '\xAC', '\xAA', '\x3', '\x2', '\x2', + '\x2', '\xAC', '\xAD', '\x3', '\x2', '\x2', '\x2', '\xAD', '\x17', '\x3', + '\x2', '\x2', '\x2', '\xAE', '\xAC', '\x3', '\x2', '\x2', '\x2', '\xAF', + '\xB1', '\x5', '\\', '/', '\x2', '\xB0', '\xB2', '\x5', '\x1A', '\xE', + '\x2', '\xB1', '\xB0', '\x3', '\x2', '\x2', '\x2', '\xB1', '\xB2', '\x3', + '\x2', '\x2', '\x2', '\xB2', '\xB8', '\x3', '\x2', '\x2', '\x2', '\xB3', + '\xB4', '\a', '\x5', '\x2', '\x2', '\xB4', '\xB5', '\x5', '\x4', '\x3', + '\x2', '\xB5', '\xB6', '\a', '\x6', '\x2', '\x2', '\xB6', '\xB8', '\x3', + '\x2', '\x2', '\x2', '\xB7', '\xAF', '\x3', '\x2', '\x2', '\x2', '\xB7', + '\xB3', '\x3', '\x2', '\x2', '\x2', '\xB8', '\x19', '\x3', '\x2', '\x2', + '\x2', '\xB9', '\xC7', '\b', '\xE', '\x1', '\x2', '\xBA', '\xBB', '\f', + '\x6', '\x2', '\x2', '\xBB', '\xBC', '\a', '\a', '\x2', '\x2', '\xBC', + '\xC6', '\x5', '\\', '/', '\x2', '\xBD', '\xBE', '\f', '\x5', '\x2', '\x2', + '\xBE', '\xBF', '\a', '\b', '\x2', '\x2', '\xBF', '\xC0', '\a', '\x42', + '\x2', '\x2', '\xC0', '\xC6', '\a', '\t', '\x2', '\x2', '\xC1', '\xC2', + '\f', '\x4', '\x2', '\x2', '\xC2', '\xC3', '\a', '\b', '\x2', '\x2', '\xC3', + '\xC4', '\a', '\x43', '\x2', '\x2', '\xC4', '\xC6', '\a', '\t', '\x2', + '\x2', '\xC5', '\xBA', '\x3', '\x2', '\x2', '\x2', '\xC5', '\xBD', '\x3', + '\x2', '\x2', '\x2', '\xC5', '\xC1', '\x3', '\x2', '\x2', '\x2', '\xC6', + '\xC9', '\x3', '\x2', '\x2', '\x2', '\xC7', '\xC5', '\x3', '\x2', '\x2', + '\x2', '\xC7', '\xC8', '\x3', '\x2', '\x2', '\x2', '\xC8', '\x1B', '\x3', + '\x2', '\x2', '\x2', '\xC9', '\xC7', '\x3', '\x2', '\x2', '\x2', '\xCA', + '\xCB', '\a', '@', '\x2', '\x2', '\xCB', '\xCC', '\x5', '\x32', '\x1A', + '\x2', '\xCC', '\x1D', '\x3', '\x2', '\x2', '\x2', '\xCD', '\xCE', '\a', + ',', '\x2', '\x2', '\xCE', '\xCF', '\a', '$', '\x2', '\x2', '\xCF', '\xD0', + '\x5', 'V', ',', '\x2', '\xD0', '\x1F', '\x3', '\x2', '\x2', '\x2', '\xD1', + '\xD2', '\a', '\x37', '\x2', '\x2', '\xD2', '\xD3', '\a', '$', '\x2', + '\x2', '\xD3', '\xD9', '\x5', '&', '\x14', '\x2', '\xD4', '\xD5', '\a', + '\x37', '\x2', '\x2', '\xD5', '\xD6', '\a', '$', '\x2', '\x2', '\xD6', + '\xD7', '\a', '\x38', '\x2', '\x2', '\xD7', '\xD9', '\x5', '\"', '\x12', + '\x2', '\xD8', '\xD1', '\x3', '\x2', '\x2', '\x2', '\xD8', '\xD4', '\x3', + '\x2', '\x2', '\x2', '\xD9', '!', '\x3', '\x2', '\x2', '\x2', '\xDA', + '\xDF', '\x5', '$', '\x13', '\x2', '\xDB', '\xDC', '\a', '\x4', '\x2', + '\x2', '\xDC', '\xDE', '\x5', '$', '\x13', '\x2', '\xDD', '\xDB', '\x3', + '\x2', '\x2', '\x2', '\xDE', '\xE1', '\x3', '\x2', '\x2', '\x2', '\xDF', + '\xDD', '\x3', '\x2', '\x2', '\x2', '\xDF', '\xE0', '\x3', '\x2', '\x2', + '\x2', '\xE0', '#', '\x3', '\x2', '\x2', '\x2', '\xE1', '\xDF', '\x3', + '\x2', '\x2', '\x2', '\xE2', '\xE4', '\x5', 'T', '+', '\x2', '\xE3', '\xE5', + '\x5', '*', '\x16', '\x2', '\xE4', '\xE3', '\x3', '\x2', '\x2', '\x2', + '\xE4', '\xE5', '\x3', '\x2', '\x2', '\x2', '\xE5', '%', '\x3', '\x2', + '\x2', '\x2', '\xE6', '\xEB', '\x5', '(', '\x15', '\x2', '\xE7', '\xE8', + '\a', '\x4', '\x2', '\x2', '\xE8', '\xEA', '\x5', '(', '\x15', '\x2', + '\xE9', '\xE7', '\x3', '\x2', '\x2', '\x2', '\xEA', '\xED', '\x3', '\x2', + '\x2', '\x2', '\xEB', '\xE9', '\x3', '\x2', '\x2', '\x2', '\xEB', '\xEC', + '\x3', '\x2', '\x2', '\x2', '\xEC', '\'', '\x3', '\x2', '\x2', '\x2', + '\xED', '\xEB', '\x3', '\x2', '\x2', '\x2', '\xEE', '\xF0', '\x5', '\x32', + '\x1A', '\x2', '\xEF', '\xF1', '\x5', '*', '\x16', '\x2', '\xF0', '\xEF', + '\x3', '\x2', '\x2', '\x2', '\xF0', '\xF1', '\x3', '\x2', '\x2', '\x2', + '\xF1', ')', '\x3', '\x2', '\x2', '\x2', '\xF2', '\xF3', '\t', '\x3', + '\x2', '\x2', '\xF3', '+', '\x3', '\x2', '\x2', '\x2', '\xF4', '\xF5', + '\a', '\x35', '\x2', '\x2', '\xF5', '\xF6', '\x5', '.', '\x18', '\x2', + '\xF6', '\xF7', '\a', '\x32', '\x2', '\x2', '\xF7', '\xF8', '\x5', '\x30', + '\x19', '\x2', '\xF8', '-', '\x3', '\x2', '\x2', '\x2', '\xF9', '\xFA', + '\t', '\x2', '\x2', '\x2', '\xFA', '/', '\x3', '\x2', '\x2', '\x2', '\xFB', + '\xFC', '\t', '\x2', '\x2', '\x2', '\xFC', '\x31', '\x3', '\x2', '\x2', + '\x2', '\xFD', '\xFE', '\b', '\x1A', '\x1', '\x2', '\xFE', '\x109', '\x5', + '\x34', '\x1B', '\x2', '\xFF', '\x101', '\x5', '<', '\x1F', '\x2', '\x100', + '\x102', '\a', '\x33', '\x2', '\x2', '\x101', '\x100', '\x3', '\x2', '\x2', + '\x2', '\x101', '\x102', '\x3', '\x2', '\x2', '\x2', '\x102', '\x103', + '\x3', '\x2', '\x2', '\x2', '\x103', '\x104', '\a', '#', '\x2', '\x2', + '\x104', '\x105', '\x5', '<', '\x1F', '\x2', '\x105', '\x106', '\a', '\x1F', + '\x2', '\x2', '\x106', '\x107', '\x5', '<', '\x1F', '\x2', '\x107', '\x109', + '\x3', '\x2', '\x2', '\x2', '\x108', '\xFD', '\x3', '\x2', '\x2', '\x2', + '\x108', '\xFF', '\x3', '\x2', '\x2', '\x2', '\x109', '\x115', '\x3', + '\x2', '\x2', '\x2', '\x10A', '\x10B', '\f', '\x6', '\x2', '\x2', '\x10B', + '\x10C', '\a', '\n', '\x2', '\x2', '\x10C', '\x10D', '\x5', '\x32', '\x1A', + '\x2', '\x10D', '\x10E', '\a', '\v', '\x2', '\x2', '\x10E', '\x10F', '\x5', + '\x32', '\x1A', '\a', '\x10F', '\x114', '\x3', '\x2', '\x2', '\x2', '\x110', + '\x111', '\f', '\x5', '\x2', '\x2', '\x111', '\x112', '\a', '\f', '\x2', + '\x2', '\x112', '\x114', '\x5', '\x32', '\x1A', '\x6', '\x113', '\x10A', + '\x3', '\x2', '\x2', '\x2', '\x113', '\x110', '\x3', '\x2', '\x2', '\x2', + '\x114', '\x117', '\x3', '\x2', '\x2', '\x2', '\x115', '\x113', '\x3', + '\x2', '\x2', '\x2', '\x115', '\x116', '\x3', '\x2', '\x2', '\x2', '\x116', + '\x33', '\x3', '\x2', '\x2', '\x2', '\x117', '\x115', '\x3', '\x2', '\x2', + '\x2', '\x118', '\x119', '\b', '\x1B', '\x1', '\x2', '\x119', '\x11D', + '\x5', '<', '\x1F', '\x2', '\x11A', '\x11D', '\x5', '\x36', '\x1C', '\x2', + '\x11B', '\x11D', '\x5', '\x38', '\x1D', '\x2', '\x11C', '\x118', '\x3', + '\x2', '\x2', '\x2', '\x11C', '\x11A', '\x3', '\x2', '\x2', '\x2', '\x11C', + '\x11B', '\x3', '\x2', '\x2', '\x2', '\x11D', '\x126', '\x3', '\x2', '\x2', + '\x2', '\x11E', '\x11F', '\f', '\x4', '\x2', '\x2', '\x11F', '\x120', + '\a', '\x1F', '\x2', '\x2', '\x120', '\x125', '\x5', '\x34', '\x1B', '\x5', + '\x121', '\x122', '\f', '\x3', '\x2', '\x2', '\x122', '\x123', '\a', '\x36', + '\x2', '\x2', '\x123', '\x125', '\x5', '\x34', '\x1B', '\x4', '\x124', + '\x11E', '\x3', '\x2', '\x2', '\x2', '\x124', '\x121', '\x3', '\x2', '\x2', + '\x2', '\x125', '\x128', '\x3', '\x2', '\x2', '\x2', '\x126', '\x124', + '\x3', '\x2', '\x2', '\x2', '\x126', '\x127', '\x3', '\x2', '\x2', '\x2', + '\x127', '\x35', '\x3', '\x2', '\x2', '\x2', '\x128', '\x126', '\x3', + '\x2', '\x2', '\x2', '\x129', '\x12B', '\x5', '<', '\x1F', '\x2', '\x12A', + '\x12C', '\a', '\x33', '\x2', '\x2', '\x12B', '\x12A', '\x3', '\x2', '\x2', + '\x2', '\x12B', '\x12C', '\x3', '\x2', '\x2', '\x2', '\x12C', '\x12D', + '\x3', '\x2', '\x2', '\x2', '\x12D', '\x12E', '\a', '-', '\x2', '\x2', + '\x12E', '\x12F', '\a', '\x5', '\x2', '\x2', '\x12F', '\x130', '\x5', + 'V', ',', '\x2', '\x130', '\x131', '\a', '\x6', '\x2', '\x2', '\x131', + '\x37', '\x3', '\x2', '\x2', '\x2', '\x132', '\x134', '\x5', '<', '\x1F', + '\x2', '\x133', '\x135', '\a', '\x33', '\x2', '\x2', '\x134', '\x133', + '\x3', '\x2', '\x2', '\x2', '\x134', '\x135', '\x3', '\x2', '\x2', '\x2', + '\x135', '\x136', '\x3', '\x2', '\x2', '\x2', '\x136', '\x137', '\a', + '\x31', '\x2', '\x2', '\x137', '\x139', '\x5', '<', '\x1F', '\x2', '\x138', + '\x13A', '\x5', ':', '\x1E', '\x2', '\x139', '\x138', '\x3', '\x2', '\x2', + '\x2', '\x139', '\x13A', '\x3', '\x2', '\x2', '\x2', '\x13A', '\x39', + '\x3', '\x2', '\x2', '\x2', '\x13B', '\x13C', '\a', '\'', '\x2', '\x2', + '\x13C', '\x13D', '\a', '\x43', '\x2', '\x2', '\x13D', ';', '\x3', '\x2', + '\x2', '\x2', '\x13E', '\x13F', '\b', '\x1F', '\x1', '\x2', '\x13F', '\x140', + '\x5', 'N', '(', '\x2', '\x140', '\x163', '\x3', '\x2', '\x2', '\x2', + '\x141', '\x142', '\f', '\n', '\x2', '\x2', '\x142', '\x143', '\x5', '>', + ' ', '\x2', '\x143', '\x144', '\x5', '<', '\x1F', '\v', '\x144', '\x162', + '\x3', '\x2', '\x2', '\x2', '\x145', '\x146', '\f', '\t', '\x2', '\x2', + '\x146', '\x147', '\x5', '@', '!', '\x2', '\x147', '\x148', '\x5', '<', + '\x1F', '\n', '\x148', '\x162', '\x3', '\x2', '\x2', '\x2', '\x149', '\x14A', + '\f', '\b', '\x2', '\x2', '\x14A', '\x14B', '\x5', '\x42', '\"', '\x2', + '\x14B', '\x14C', '\x5', '<', '\x1F', '\t', '\x14C', '\x162', '\x3', '\x2', + '\x2', '\x2', '\x14D', '\x14E', '\f', '\a', '\x2', '\x2', '\x14E', '\x14F', + '\x5', '\x44', '#', '\x2', '\x14F', '\x150', '\x5', '<', '\x1F', '\b', + '\x150', '\x162', '\x3', '\x2', '\x2', '\x2', '\x151', '\x152', '\f', + '\x6', '\x2', '\x2', '\x152', '\x153', '\x5', '\x46', '$', '\x2', '\x153', + '\x154', '\x5', '<', '\x1F', '\a', '\x154', '\x162', '\x3', '\x2', '\x2', + '\x2', '\x155', '\x156', '\f', '\x5', '\x2', '\x2', '\x156', '\x157', + '\x5', 'H', '%', '\x2', '\x157', '\x158', '\x5', '<', '\x1F', '\x6', '\x158', + '\x162', '\x3', '\x2', '\x2', '\x2', '\x159', '\x15A', '\f', '\x4', '\x2', + '\x2', '\x15A', '\x15B', '\x5', 'J', '&', '\x2', '\x15B', '\x15C', '\x5', + '<', '\x1F', '\x5', '\x15C', '\x162', '\x3', '\x2', '\x2', '\x2', '\x15D', + '\x15E', '\f', '\x3', '\x2', '\x2', '\x15E', '\x15F', '\x5', 'L', '\'', + '\x2', '\x15F', '\x160', '\x5', '<', '\x1F', '\x4', '\x160', '\x162', + '\x3', '\x2', '\x2', '\x2', '\x161', '\x141', '\x3', '\x2', '\x2', '\x2', + '\x161', '\x145', '\x3', '\x2', '\x2', '\x2', '\x161', '\x149', '\x3', + '\x2', '\x2', '\x2', '\x161', '\x14D', '\x3', '\x2', '\x2', '\x2', '\x161', + '\x151', '\x3', '\x2', '\x2', '\x2', '\x161', '\x155', '\x3', '\x2', '\x2', + '\x2', '\x161', '\x159', '\x3', '\x2', '\x2', '\x2', '\x161', '\x15D', + '\x3', '\x2', '\x2', '\x2', '\x162', '\x165', '\x3', '\x2', '\x2', '\x2', + '\x163', '\x161', '\x3', '\x2', '\x2', '\x2', '\x163', '\x164', '\x3', + '\x2', '\x2', '\x2', '\x164', '=', '\x3', '\x2', '\x2', '\x2', '\x165', + '\x163', '\x3', '\x2', '\x2', '\x2', '\x166', '\x167', '\t', '\x4', '\x2', + '\x2', '\x167', '?', '\x3', '\x2', '\x2', '\x2', '\x168', '\x169', '\t', + '\x5', '\x2', '\x2', '\x169', '\x41', '\x3', '\x2', '\x2', '\x2', '\x16A', + '\x16B', '\t', '\x6', '\x2', '\x2', '\x16B', '\x43', '\x3', '\x2', '\x2', + '\x2', '\x16C', '\x16D', '\t', '\a', '\x2', '\x2', '\x16D', '\x45', '\x3', + '\x2', '\x2', '\x2', '\x16E', '\x16F', '\a', '\x17', '\x2', '\x2', '\x16F', + 'G', '\x3', '\x2', '\x2', '\x2', '\x170', '\x171', '\a', '\x18', '\x2', + '\x2', '\x171', 'I', '\x3', '\x2', '\x2', '\x2', '\x172', '\x173', '\a', + '\x19', '\x2', '\x2', '\x173', 'K', '\x3', '\x2', '\x2', '\x2', '\x174', + '\x175', '\a', '\x1A', '\x2', '\x2', '\x175', 'M', '\x3', '\x2', '\x2', + '\x2', '\x176', '\x17B', '\x5', 'R', '*', '\x2', '\x177', '\x178', '\x5', + 'P', ')', '\x2', '\x178', '\x179', '\x5', 'N', '(', '\x2', '\x179', '\x17B', + '\x3', '\x2', '\x2', '\x2', '\x17A', '\x176', '\x3', '\x2', '\x2', '\x2', + '\x17A', '\x177', '\x3', '\x2', '\x2', '\x2', '\x17B', 'O', '\x3', '\x2', + '\x2', '\x2', '\x17C', '\x17D', '\t', '\b', '\x2', '\x2', '\x17D', 'Q', + '\x3', '\x2', '\x2', '\x2', '\x17E', '\x17F', '\b', '*', '\x1', '\x2', + '\x17F', '\x1AF', '\x5', '\\', '/', '\x2', '\x180', '\x1AF', '\a', '\x45', + '\x2', '\x2', '\x181', '\x1AF', '\x5', '^', '\x30', '\x2', '\x182', '\x184', + '\a', '\b', '\x2', '\x2', '\x183', '\x185', '\x5', 'V', ',', '\x2', '\x184', + '\x183', '\x3', '\x2', '\x2', '\x2', '\x184', '\x185', '\x3', '\x2', '\x2', + '\x2', '\x185', '\x186', '\x3', '\x2', '\x2', '\x2', '\x186', '\x1AF', + '\a', '\t', '\x2', '\x2', '\x187', '\x189', '\a', '\x1C', '\x2', '\x2', + '\x188', '\x18A', '\x5', 'X', '-', '\x2', '\x189', '\x188', '\x3', '\x2', + '\x2', '\x2', '\x189', '\x18A', '\x3', '\x2', '\x2', '\x2', '\x18A', '\x18B', + '\x3', '\x2', '\x2', '\x2', '\x18B', '\x1AF', '\a', '\x1D', '\x2', '\x2', + '\x18C', '\x18D', '\a', '\x5', '\x2', '\x2', '\x18D', '\x18E', '\x5', + '\x32', '\x1A', '\x2', '\x18E', '\x18F', '\a', '\x6', '\x2', '\x2', '\x18F', + '\x1AF', '\x3', '\x2', '\x2', '\x2', '\x190', '\x191', '\a', '\x5', '\x2', + '\x2', '\x191', '\x192', '\x5', '\x4', '\x3', '\x2', '\x192', '\x193', + '\a', '\x6', '\x2', '\x2', '\x193', '\x1AF', '\x3', '\x2', '\x2', '\x2', + '\x194', '\x195', '\a', '(', '\x2', '\x2', '\x195', '\x196', '\a', '\x5', + '\x2', '\x2', '\x196', '\x197', '\x5', '\x4', '\x3', '\x2', '\x197', '\x198', + '\a', '\x6', '\x2', '\x2', '\x198', '\x1AF', '\x3', '\x2', '\x2', '\x2', + '\x199', '\x19A', '\a', ' ', '\x2', '\x2', '\x19A', '\x19B', '\a', '\x5', + '\x2', '\x2', '\x19B', '\x19C', '\x5', '\x4', '\x3', '\x2', '\x19C', '\x19D', + '\a', '\x6', '\x2', '\x2', '\x19D', '\x1AF', '\x3', '\x2', '\x2', '\x2', + '\x19E', '\x19F', '\a', '\x1E', '\x2', '\x2', '\x19F', '\x1A0', '\a', + '\x5', '\x2', '\x2', '\x1A0', '\x1A1', '\x5', '\x4', '\x3', '\x2', '\x1A1', + '\x1A2', '\a', '\x6', '\x2', '\x2', '\x1A2', '\x1AF', '\x3', '\x2', '\x2', + '\x2', '\x1A3', '\x1A4', '\a', ')', '\x2', '\x2', '\x1A4', '\x1A5', '\a', + '\x5', '\x2', '\x2', '\x1A5', '\x1A6', '\x5', '\x4', '\x3', '\x2', '\x1A6', + '\x1A7', '\a', '\x6', '\x2', '\x2', '\x1A7', '\x1AF', '\x3', '\x2', '\x2', + '\x2', '\x1A8', '\x1A9', '\a', '/', '\x2', '\x2', '\x1A9', '\x1AA', '\a', + '\x5', '\x2', '\x2', '\x1AA', '\x1AB', '\x5', '\x4', '\x3', '\x2', '\x1AB', + '\x1AC', '\a', '\x6', '\x2', '\x2', '\x1AC', '\x1AF', '\x3', '\x2', '\x2', + '\x2', '\x1AD', '\x1AF', '\x5', 'T', '+', '\x2', '\x1AE', '\x17E', '\x3', + '\x2', '\x2', '\x2', '\x1AE', '\x180', '\x3', '\x2', '\x2', '\x2', '\x1AE', + '\x181', '\x3', '\x2', '\x2', '\x2', '\x1AE', '\x182', '\x3', '\x2', '\x2', + '\x2', '\x1AE', '\x187', '\x3', '\x2', '\x2', '\x2', '\x1AE', '\x18C', + '\x3', '\x2', '\x2', '\x2', '\x1AE', '\x190', '\x3', '\x2', '\x2', '\x2', + '\x1AE', '\x194', '\x3', '\x2', '\x2', '\x2', '\x1AE', '\x199', '\x3', + '\x2', '\x2', '\x2', '\x1AE', '\x19E', '\x3', '\x2', '\x2', '\x2', '\x1AE', + '\x1A3', '\x3', '\x2', '\x2', '\x2', '\x1AE', '\x1A8', '\x3', '\x2', '\x2', + '\x2', '\x1AE', '\x1AD', '\x3', '\x2', '\x2', '\x2', '\x1AF', '\x1BA', + '\x3', '\x2', '\x2', '\x2', '\x1B0', '\x1B1', '\f', '\n', '\x2', '\x2', + '\x1B1', '\x1B2', '\a', '\a', '\x2', '\x2', '\x1B2', '\x1B9', '\x5', '\\', + '/', '\x2', '\x1B3', '\x1B4', '\f', '\t', '\x2', '\x2', '\x1B4', '\x1B5', + '\a', '\b', '\x2', '\x2', '\x1B5', '\x1B6', '\x5', '\x32', '\x1A', '\x2', + '\x1B6', '\x1B7', '\a', '\t', '\x2', '\x2', '\x1B7', '\x1B9', '\x3', '\x2', + '\x2', '\x2', '\x1B8', '\x1B0', '\x3', '\x2', '\x2', '\x2', '\x1B8', '\x1B3', + '\x3', '\x2', '\x2', '\x2', '\x1B9', '\x1BC', '\x3', '\x2', '\x2', '\x2', + '\x1BA', '\x1B8', '\x3', '\x2', '\x2', '\x2', '\x1BA', '\x1BB', '\x3', + '\x2', '\x2', '\x2', '\x1BB', 'S', '\x3', '\x2', '\x2', '\x2', '\x1BC', + '\x1BA', '\x3', '\x2', '\x2', '\x2', '\x1BD', '\x1BE', '\a', '=', '\x2', + '\x2', '\x1BE', '\x1C0', '\a', '\a', '\x2', '\x2', '\x1BF', '\x1BD', '\x3', + '\x2', '\x2', '\x2', '\x1BF', '\x1C0', '\x3', '\x2', '\x2', '\x2', '\x1C0', + '\x1C1', '\x3', '\x2', '\x2', '\x2', '\x1C1', '\x1C2', '\x5', '\\', '/', + '\x2', '\x1C2', '\x1C4', '\a', '\x5', '\x2', '\x2', '\x1C3', '\x1C5', + '\x5', 'V', ',', '\x2', '\x1C4', '\x1C3', '\x3', '\x2', '\x2', '\x2', + '\x1C4', '\x1C5', '\x3', '\x2', '\x2', '\x2', '\x1C5', '\x1C6', '\x3', + '\x2', '\x2', '\x2', '\x1C6', '\x1C7', '\a', '\x6', '\x2', '\x2', '\x1C7', + '\x1D5', '\x3', '\x2', '\x2', '\x2', '\x1C8', '\x1C9', '\a', '\x30', '\x2', + '\x2', '\x1C9', '\x1CB', '\a', '\x5', '\x2', '\x2', '\x1CA', '\x1CC', + '\x5', 'V', ',', '\x2', '\x1CB', '\x1CA', '\x3', '\x2', '\x2', '\x2', + '\x1CB', '\x1CC', '\x3', '\x2', '\x2', '\x2', '\x1CC', '\x1CD', '\x3', + '\x2', '\x2', '\x2', '\x1CD', '\x1D5', '\a', '\x6', '\x2', '\x2', '\x1CE', + '\x1CF', '\a', '\x39', '\x2', '\x2', '\x1CF', '\x1D1', '\a', '\x5', '\x2', + '\x2', '\x1D0', '\x1D2', '\x5', 'V', ',', '\x2', '\x1D1', '\x1D0', '\x3', + '\x2', '\x2', '\x2', '\x1D1', '\x1D2', '\x3', '\x2', '\x2', '\x2', '\x1D2', + '\x1D3', '\x3', '\x2', '\x2', '\x2', '\x1D3', '\x1D5', '\a', '\x6', '\x2', + '\x2', '\x1D4', '\x1BF', '\x3', '\x2', '\x2', '\x2', '\x1D4', '\x1C8', + '\x3', '\x2', '\x2', '\x2', '\x1D4', '\x1CE', '\x3', '\x2', '\x2', '\x2', + '\x1D5', 'U', '\x3', '\x2', '\x2', '\x2', '\x1D6', '\x1DB', '\x5', '\x32', + '\x1A', '\x2', '\x1D7', '\x1D8', '\a', '\x4', '\x2', '\x2', '\x1D8', '\x1DA', + '\x5', '\x32', '\x1A', '\x2', '\x1D9', '\x1D7', '\x3', '\x2', '\x2', '\x2', + '\x1DA', '\x1DD', '\x3', '\x2', '\x2', '\x2', '\x1DB', '\x1D9', '\x3', + '\x2', '\x2', '\x2', '\x1DB', '\x1DC', '\x3', '\x2', '\x2', '\x2', '\x1DC', + 'W', '\x3', '\x2', '\x2', '\x2', '\x1DD', '\x1DB', '\x3', '\x2', '\x2', + '\x2', '\x1DE', '\x1E3', '\x5', 'Z', '.', '\x2', '\x1DF', '\x1E0', '\a', + '\x4', '\x2', '\x2', '\x1E0', '\x1E2', '\x5', 'Z', '.', '\x2', '\x1E1', + '\x1DF', '\x3', '\x2', '\x2', '\x2', '\x1E2', '\x1E5', '\x3', '\x2', '\x2', + '\x2', '\x1E3', '\x1E1', '\x3', '\x2', '\x2', '\x2', '\x1E3', '\x1E4', + '\x3', '\x2', '\x2', '\x2', '\x1E4', 'Y', '\x3', '\x2', '\x2', '\x2', + '\x1E5', '\x1E3', '\x3', '\x2', '\x2', '\x2', '\x1E6', '\x1E7', '\a', + '\x43', '\x2', '\x2', '\x1E7', '\x1E8', '\a', '\v', '\x2', '\x2', '\x1E8', + '\x1E9', '\x5', '\x32', '\x1A', '\x2', '\x1E9', '[', '\x3', '\x2', '\x2', + '\x2', '\x1EA', '\x1EB', '\t', '\t', '\x2', '\x2', '\x1EB', ']', '\x3', + '\x2', '\x2', '\x2', '\x1EC', '\x1ED', '\t', '\n', '\x2', '\x2', '\x1ED', + '_', '\x3', '\x2', '\x2', '\x2', '\x32', '\x65', 'h', 'k', 'n', 'q', 'u', + 'x', '\x82', '\x8E', '\x94', '\x9C', '\x9F', '\xA5', '\xAC', '\xB1', '\xB7', + '\xC5', '\xC7', '\xD8', '\xDF', '\xE4', '\xEB', '\xF0', '\x101', '\x108', + '\x113', '\x115', '\x11C', '\x124', '\x126', '\x12B', '\x134', '\x139', + '\x161', '\x163', '\x17A', '\x184', '\x189', '\x1AE', '\x1B8', '\x1BA', + '\x1BF', '\x1C4', '\x1CB', '\x1D1', '\x1D4', '\x1DB', '\x1E3', + }; + + public static readonly ATN _ATN = + new ATNDeserializer().Deserialize(_serializedATN); + + +} From 5d9e380a314a5bbbf59f48d07b529ce3332ad6be Mon Sep 17 00:00:00 2001 From: Minh Le Date: Thu, 6 Mar 2025 17:43:35 -0800 Subject: [PATCH 3/8] update dom --- .../src/Query/Core/Parser/CstToAstVisitor.cs | 55 ++++++++++++++++--- .../src/SqlObjects/SqlOrderbyClause.cs | 32 ++++++++++- .../SqlScoreExpressionOrderByItem.cs | 52 ++++++++++++++++++ .../Visitors/SqlObjectEqualityVisitor.cs | 43 +++++++++++++-- .../SqlObjects/Visitors/SqlObjectHasher.cs | 43 ++++++++++++--- .../Visitors/SqlObjectObfuscator.cs | 38 ++++++++++--- .../Visitors/SqlObjectTextSerializer.cs | 27 +++++++-- .../SqlObjects/Visitors/SqlObjectVisitor.cs | 3 +- .../SqlObjectVisitor{TArg,TOutput}.cs | 3 +- .../Visitors/SqlObjectVisitor{TResult}.cs | 3 +- 10 files changed, 261 insertions(+), 38 deletions(-) create mode 100644 Microsoft.Azure.Cosmos/src/SqlObjects/SqlScoreExpressionOrderByItem.cs diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs index fd92b233a8..550b0965bd 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs @@ -355,15 +355,29 @@ public override SqlObject VisitGroup_by_clause([NotNull] sqlParser.Group_by_clau public override SqlObject VisitOrder_by_clause([NotNull] sqlParser.Order_by_clauseContext context) { Contract.Requires(context != null); - - List orderByItems = new List(); - foreach (sqlParser.Order_by_itemContext orderByItemContext in context.order_by_items().order_by_item()) - { - SqlOrderByItem orderByItem = (SqlOrderByItem)this.VisitOrder_by_item(orderByItemContext); - orderByItems.Add(orderByItem); + + if (context.K_RANK != null) + { + List orderByItems = new List(); + foreach (sqlParser.Score_expression_order_by_itemContext orderByItemContext in context.score_expression_order_by_items().score_expression_order_by_item()) + { + SqlScoreExpressionOrderByItem orderByItem = (SqlScoreExpressionOrderByItem)this.VisitScore_expression_order_by_item(orderByItemContext); + orderByItems.Add(orderByItem); + } + + return SqlOrderByClause.Create(orderByItems.ToImmutableArray()); + } + else + { + List orderByItems = new List(); + foreach (sqlParser.Order_by_itemContext orderByItemContext in context.order_by_items().order_by_item()) + { + SqlOrderByItem orderByItem = (SqlOrderByItem)this.VisitOrder_by_item(orderByItemContext); + orderByItems.Add(orderByItem); + } + + return SqlOrderByClause.Create(orderByItems.ToImmutableArray()); } - - return SqlOrderByClause.Create(orderByItems.ToImmutableArray()); } public override SqlObject VisitOrder_by_item([NotNull] sqlParser.Order_by_itemContext context) @@ -389,6 +403,31 @@ public override SqlObject VisitOrder_by_item([NotNull] sqlParser.Order_by_itemCo } return SqlOrderByItem.Create(expression, isDescending); + } + + public override SqlObject VisitScore_expression_order_by_item([NotNull] sqlParser.Score_expression_order_by_itemContext context) + { + Contract.Requires(context != null); + + SqlFunctionCallScalarExpression expression = (SqlFunctionCallScalarExpression)this.Visit(context.function_call_scalar_expression()); + bool isDescending = false; + if (context.sort_order() != null) + { + if (context.sort_order().K_ASC() != null) + { + isDescending = false; + } + else if (context.sort_order().K_DESC() != null) + { + isDescending = true; + } + else + { + throw new ArgumentOutOfRangeException($"Unknown sort order : {context.sort_order()}."); + } + } + + return SqlScoreExpressionOrderByItem.Create(expression, isDescending); } #endregion diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/SqlOrderbyClause.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/SqlOrderbyClause.cs index 0716a1a2ad..f92e1a70be 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/SqlOrderbyClause.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/SqlOrderbyClause.cs @@ -22,14 +22,30 @@ private SqlOrderByClause(ImmutableArray orderByItems) { if (sqlOrderbyItem == null) { - throw new ArgumentException($"{nameof(sqlOrderbyItem)} must have have null items."); + throw new ArgumentException($"{nameof(sqlOrderbyItem)} must not have null items."); } } - this.OrderByItems = orderByItems; + this.OrderByItems = orderByItems; + this.Rank = false; + } + + private SqlOrderByClause(ImmutableArray scoreExpressionOrderByItems) + { + foreach (SqlScoreExpressionOrderByItem sqlOrderbyItem in scoreExpressionOrderByItems) + { + if (sqlOrderbyItem == null) + { + throw new ArgumentException($"{nameof(sqlOrderbyItem)} must not have null items."); + } + } + + this.Rank = true; } - public ImmutableArray OrderByItems { get; } + public ImmutableArray OrderByItems { get; } + public ImmutableArray ScoreExpressionOrderByItems { get; } + public bool Rank { get; } public static SqlOrderByClause Create(params SqlOrderByItem[] orderByItems) { @@ -37,6 +53,16 @@ public static SqlOrderByClause Create(params SqlOrderByItem[] orderByItems) } public static SqlOrderByClause Create(ImmutableArray orderByItems) + { + return new SqlOrderByClause(orderByItems); + } + + public static SqlOrderByClause Create(params SqlScoreExpressionOrderByItem[] orderByItems) + { + return new SqlOrderByClause(orderByItems.ToImmutableArray()); + } + + public static SqlOrderByClause Create(ImmutableArray orderByItems) { return new SqlOrderByClause(orderByItems); } diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/SqlScoreExpressionOrderByItem.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/SqlScoreExpressionOrderByItem.cs new file mode 100644 index 0000000000..00578678eb --- /dev/null +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/SqlScoreExpressionOrderByItem.cs @@ -0,0 +1,52 @@ +//------------------------------------------------------------ +// Copyright (c) Microsoft Corporation. All rights reserved. +//------------------------------------------------------------ +namespace Microsoft.Azure.Cosmos.SqlObjects +{ + using System; + 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 SqlScoreExpressionOrderByItem : SqlObject + { + private SqlScoreExpressionOrderByItem( + SqlFunctionCallScalarExpression expression, + bool isDescending) + { + this.Expression = expression ?? throw new ArgumentNullException(nameof(expression)); + this.IsDescending = isDescending; + } + + public SqlFunctionCallScalarExpression Expression { get; } + + public bool IsDescending { get; } + + public static SqlScoreExpressionOrderByItem Create( + SqlFunctionCallScalarExpression expression, + bool isDescending) + { + return new SqlScoreExpressionOrderByItem(expression, isDescending); + } + + 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); + } + } +} diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectEqualityVisitor.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectEqualityVisitor.cs index 8d7770ba9e..0509c4331d 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectEqualityVisitor.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectEqualityVisitor.cs @@ -612,10 +612,25 @@ public override bool Visit(SqlOrderByClause first, SqlObject secondAsObject) { return false; } - - if (!SequenceEquals(first.OrderByItems, second.OrderByItems)) - { - return false; + + if (first.Rank != second.Rank) + { + return false; + } + + if (first.Rank) + { + if (!SequenceEquals(first.ScoreExpressionOrderByItems, second.ScoreExpressionOrderByItems)) + { + return false; + } + } + else + { + if (!SequenceEquals(first.OrderByItems, second.OrderByItems)) + { + return false; + } } return true; @@ -755,6 +770,26 @@ public override bool Visit(SqlQuery first, SqlObject secondAsObject) return true; } + + public override bool Visit(SqlScoreExpressionOrderByItem first, SqlObject secondAsObject) + { + if (!(secondAsObject is SqlScoreExpressionOrderByItem second)) + { + return false; + } + + if (first.IsDescending != second.IsDescending) + { + return false; + } + + if (!Equals(first.Expression, second.Expression)) + { + return false; + } + + return true; + } public override bool Visit(SqlSelectClause first, SqlObject secondAsObject) { diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectHasher.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectHasher.cs index f4f55009ec..c3894ad657 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectHasher.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectHasher.cs @@ -57,7 +57,10 @@ internal sealed class SqlObjectHasher : SqlObjectVisitor private const int SqlProgramHashCode = -492711050; private const int SqlPropertyNameHashCode = 1262661966; private const int SqlPropertyRefScalarExpressionHashCode = -1586896865; - private const int SqlQueryHashCode = 1968642960; + private const int SqlQueryHashCode = 1968642960; + private const int SqlScoreExpressionOrderbyItemHashCode = 46457293; + private const int SqlScoreExpressionOrderbyItemAscendingHashCode = -5155123; + private const int SqlScoreExpressionOrderbyItemDescendingHashCode = 10615937; private const int SqlSelectClauseHashCode = 19731870; private const int SqlSelectClauseDistinctHashCode = 1467616881; private const int SqlSelectItemHashCode = -611151157; @@ -419,11 +422,21 @@ public override int Visit(SqlOffsetSpec sqlObject) public override int Visit(SqlOrderByClause sqlOrderByClause) { - int hashCode = SqlOrderbyClauseHashCode; - for (int i = 0; i < sqlOrderByClause.OrderByItems.Length; i++) - { - hashCode = CombineHashes(hashCode, sqlOrderByClause.OrderByItems[i].Accept(this)); - } + int hashCode = SqlOrderbyClauseHashCode; + if (sqlOrderByClause.Rank) + { + for (int i = 0; i < sqlOrderByClause.ScoreExpressionOrderByItems.Length; i++) + { + hashCode = CombineHashes(hashCode, sqlOrderByClause.ScoreExpressionOrderByItems[i].Accept(this)); + } + } + else + { + for (int i = 0; i < sqlOrderByClause.OrderByItems.Length; i++) + { + hashCode = CombineHashes(hashCode, sqlOrderByClause.OrderByItems[i].Accept(this)); + } + } return hashCode; } @@ -515,7 +528,23 @@ public override int Visit(SqlQuery sqlQuery) } return hashCode; - } + } + + public override int Visit(SqlScoreExpressionOrderByItem sqlOrderByItem) + { + int hashCode = SqlScoreExpressionOrderbyItemHashCode; + hashCode = CombineHashes(hashCode, sqlOrderByItem.Expression.Accept(this)); + if (sqlOrderByItem.IsDescending) + { + hashCode = CombineHashes(hashCode, SqlScoreExpressionOrderbyItemDescendingHashCode); + } + else + { + hashCode = CombineHashes(hashCode, SqlScoreExpressionOrderbyItemAscendingHashCode); + } + + return hashCode; + } public override int Visit(SqlSelectClause sqlSelectClause) { diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectObfuscator.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectObfuscator.cs index 2120f16567..742292afd7 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectObfuscator.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectObfuscator.cs @@ -276,14 +276,27 @@ public override SqlObject Visit(SqlOffsetSpec sqlObject) } public override SqlObject Visit(SqlOrderByClause sqlOrderByClause) - { - SqlOrderByItem[] items = new SqlOrderByItem[sqlOrderByClause.OrderByItems.Length]; - for (int i = 0; i < sqlOrderByClause.OrderByItems.Length; i++) - { - items[i] = sqlOrderByClause.OrderByItems[i].Accept(this) as SqlOrderByItem; + { + if (sqlOrderByClause.Rank) + { + SqlScoreExpressionOrderByItem[] items = new SqlScoreExpressionOrderByItem[sqlOrderByClause.ScoreExpressionOrderByItems.Length]; + for (int i = 0; i < sqlOrderByClause.ScoreExpressionOrderByItems.Length; i++) + { + items[i] = sqlOrderByClause.ScoreExpressionOrderByItems[i].Accept(this) as SqlScoreExpressionOrderByItem; + } + + return SqlOrderByClause.Create(items); + } + else + { + SqlOrderByItem[] items = new SqlOrderByItem[sqlOrderByClause.OrderByItems.Length]; + for (int i = 0; i < sqlOrderByClause.OrderByItems.Length; i++) + { + items[i] = sqlOrderByClause.OrderByItems[i].Accept(this) as SqlOrderByItem; + } + + return SqlOrderByClause.Create(items); } - - return SqlOrderByClause.Create(items); } public override SqlObject Visit(SqlOrderByItem sqlOrderByItem) @@ -337,6 +350,13 @@ public override SqlObject Visit(SqlQuery sqlQuery) sqlQuery.GroupByClause?.Accept(this) as SqlGroupByClause, sqlQuery.OrderByClause?.Accept(this) as SqlOrderByClause, sqlQuery.OffsetLimitClause?.Accept(this) as SqlOffsetLimitClause); + } + + public override SqlObject Visit(SqlScoreExpressionOrderByItem sqlScoreOrderByItem) + { + return SqlScoreExpressionOrderByItem.Create( + sqlScoreOrderByItem.Expression.Accept(this) as SqlFunctionCallScalarExpression, + sqlScoreOrderByItem.IsDescending); } public override SqlObject Visit(SqlSelectClause sqlSelectClause) @@ -423,8 +443,8 @@ public override SqlObject Visit(SqlUndefinedLiteral sqlUndefinedLiteral) public override SqlObject Visit(SqlWhereClause sqlWhereClause) { return SqlWhereClause.Create(sqlWhereClause.FilterExpression.Accept(this) as SqlScalarExpression); - } - + } + private Number64 GetObfuscatedNumber(Number64 value) { Number64 obfuscatedNumber; diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectTextSerializer.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectTextSerializer.cs index 150be14275..027fa8c9c0 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectTextSerializer.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectTextSerializer.cs @@ -421,13 +421,19 @@ public override void Visit(SqlOffsetSpec sqlObject) public override void Visit(SqlOrderByClause sqlOrderByClause) { - this.writer.Write("ORDER BY "); - sqlOrderByClause.OrderByItems[0].Accept(this); + this.writer.Write("ORDER BY "); + if (sqlOrderByClause.Rank) + { + this.writer.Write("RANK "); + } + + dynamic items = sqlOrderByClause.Rank ? sqlOrderByClause.ScoreExpressionOrderByItems : sqlOrderByClause.OrderByItems; + items[0].Accept(this); - for (int i = 1; i < sqlOrderByClause.OrderByItems.Length; i++) + for (int i = 1; i < items.Length; i++) { this.writer.Write(", "); - sqlOrderByClause.OrderByItems[i].Accept(this); + items[i].Accept(this); } } @@ -512,6 +518,19 @@ public override void Visit(SqlQuery sqlQuery) sqlQuery.OffsetLimitClause.Accept(this); } } + + public override void Visit(SqlScoreExpressionOrderByItem sqlScoreExpressionOrderByItem) + { + sqlScoreExpressionOrderByItem.Expression.Accept(this); + if (sqlScoreExpressionOrderByItem.IsDescending) + { + this.writer.Write(" DESC"); + } + else + { + this.writer.Write(" ASC"); + } + } public override void Visit(SqlSelectClause sqlSelectClause) { diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectVisitor.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectVisitor.cs index 3dfe3a9193..ff60c55a6c 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectVisitor.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectVisitor.cs @@ -52,7 +52,8 @@ abstract class SqlObjectVisitor public abstract void Visit(SqlProgram sqlObject); public abstract void Visit(SqlPropertyName sqlObject); public abstract void Visit(SqlPropertyRefScalarExpression sqlObject); - public abstract void Visit(SqlQuery sqlObject); + public abstract void Visit(SqlQuery sqlObject); + public abstract void Visit(SqlScoreExpressionOrderByItem sqlObject); public abstract void Visit(SqlSelectClause sqlObject); public abstract void Visit(SqlSelectItem sqlObject); public abstract void Visit(SqlSelectListSpec 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 449cd6adaf..901cbf8383 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectVisitor{TArg,TOutput}.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectVisitor{TArg,TOutput}.cs @@ -52,7 +52,8 @@ abstract class SqlObjectVisitor public abstract TOutput Visit(SqlProgram sqlObject, TArg input); public abstract TOutput Visit(SqlPropertyName sqlObject, TArg input); public abstract TOutput Visit(SqlPropertyRefScalarExpression sqlObject, TArg input); - public abstract TOutput Visit(SqlQuery sqlObject, TArg input); + public abstract TOutput Visit(SqlQuery sqlObject, TArg input); + public abstract TOutput Visit(SqlScoreExpressionOrderByItem sqlObject, TArg input); public abstract TOutput Visit(SqlSelectClause sqlObject, TArg input); public abstract TOutput Visit(SqlSelectItem sqlObject, TArg input); public abstract TOutput Visit(SqlSelectListSpec 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 3d1000a171..13ec20a70b 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectVisitor{TResult}.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectVisitor{TResult}.cs @@ -52,7 +52,8 @@ abstract class SqlObjectVisitor public abstract TResult Visit(SqlProgram sqlObject); public abstract TResult Visit(SqlPropertyName sqlObject); public abstract TResult Visit(SqlPropertyRefScalarExpression sqlObject); - public abstract TResult Visit(SqlQuery sqlObject); + public abstract TResult Visit(SqlQuery sqlObject); + public abstract TResult Visit(SqlScoreExpressionOrderByItem sqlObject); public abstract TResult Visit(SqlSelectClause sqlObject); public abstract TResult Visit(SqlSelectItem sqlObject); public abstract TResult Visit(SqlSelectListSpec sqlObject); From 1623b15daae55fbf99b007540e29dca510817b93 Mon Sep 17 00:00:00 2001 From: Minh Le Date: Thu, 6 Mar 2025 20:30:02 -0800 Subject: [PATCH 4/8] update baseline --- .../src/Query/Core/Parser/CstToAstVisitor.cs | 2 +- .../src/SqlObjects/SqlOrderbyClause.cs | 3 +- .../SqlScoreExpressionOrderByItem.cs | 8 +- .../SqlObjects/Visitors/SqlObjectHasher.cs | 18 +-- .../Visitors/SqlObjectTextSerializer.cs | 17 +- ...qlParserBaselineTests.MultiOrderByRank.xml | 56 +++++++ ...lParserBaselineTests.SingleOrderByRank.xml | 65 ++++++++ .../OrderByClauseSqlParserBaselineTests.cs | 145 +++++++++++------- 8 files changed, 238 insertions(+), 76 deletions(-) create mode 100644 Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/BaselineTest/TestBaseline/OrderByClauseSqlParserBaselineTests.MultiOrderByRank.xml create mode 100644 Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/BaselineTest/TestBaseline/OrderByClauseSqlParserBaselineTests.SingleOrderByRank.xml diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs index 550b0965bd..17642c1878 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs @@ -410,7 +410,7 @@ public override SqlObject VisitScore_expression_order_by_item([NotNull] sqlParse Contract.Requires(context != null); SqlFunctionCallScalarExpression expression = (SqlFunctionCallScalarExpression)this.Visit(context.function_call_scalar_expression()); - bool isDescending = false; + bool? isDescending = null; if (context.sort_order() != null) { if (context.sort_order().K_ASC() != null) diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/SqlOrderbyClause.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/SqlOrderbyClause.cs index f92e1a70be..47a75a5724 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/SqlOrderbyClause.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/SqlOrderbyClause.cs @@ -39,7 +39,8 @@ private SqlOrderByClause(ImmutableArray scoreExpr throw new ArgumentException($"{nameof(sqlOrderbyItem)} must not have null items."); } } - + + this.ScoreExpressionOrderByItems = scoreExpressionOrderByItems; this.Rank = true; } diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/SqlScoreExpressionOrderByItem.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/SqlScoreExpressionOrderByItem.cs index 00578678eb..b061d90e9c 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/SqlScoreExpressionOrderByItem.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/SqlScoreExpressionOrderByItem.cs @@ -17,19 +17,19 @@ sealed class SqlScoreExpressionOrderByItem : SqlObject { private SqlScoreExpressionOrderByItem( SqlFunctionCallScalarExpression expression, - bool isDescending) + bool? isDescending) { this.Expression = expression ?? throw new ArgumentNullException(nameof(expression)); - this.IsDescending = isDescending; + if (isDescending.HasValue) this.IsDescending = isDescending; } public SqlFunctionCallScalarExpression Expression { get; } - public bool IsDescending { get; } + public bool? IsDescending { get; } public static SqlScoreExpressionOrderByItem Create( SqlFunctionCallScalarExpression expression, - bool isDescending) + bool? isDescending) { return new SqlScoreExpressionOrderByItem(expression, isDescending); } diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectHasher.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectHasher.cs index c3894ad657..2edc2d3ad7 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectHasher.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectHasher.cs @@ -533,16 +533,14 @@ public override int Visit(SqlQuery sqlQuery) public override int Visit(SqlScoreExpressionOrderByItem sqlOrderByItem) { int hashCode = SqlScoreExpressionOrderbyItemHashCode; - hashCode = CombineHashes(hashCode, sqlOrderByItem.Expression.Accept(this)); - if (sqlOrderByItem.IsDescending) - { - hashCode = CombineHashes(hashCode, SqlScoreExpressionOrderbyItemDescendingHashCode); - } - else - { - hashCode = CombineHashes(hashCode, SqlScoreExpressionOrderbyItemAscendingHashCode); - } - + hashCode = CombineHashes(hashCode, sqlOrderByItem.Expression.Accept(this)); + if (sqlOrderByItem.IsDescending.HasValue) + { + hashCode = sqlOrderByItem.IsDescending.Value + ? CombineHashes(hashCode, SqlScoreExpressionOrderbyItemDescendingHashCode) + : CombineHashes(hashCode, SqlScoreExpressionOrderbyItemAscendingHashCode); + } + return hashCode; } diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectTextSerializer.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectTextSerializer.cs index 027fa8c9c0..aea446b850 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectTextSerializer.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectTextSerializer.cs @@ -522,13 +522,16 @@ public override void Visit(SqlQuery sqlQuery) public override void Visit(SqlScoreExpressionOrderByItem sqlScoreExpressionOrderByItem) { sqlScoreExpressionOrderByItem.Expression.Accept(this); - if (sqlScoreExpressionOrderByItem.IsDescending) - { - this.writer.Write(" DESC"); - } - else - { - this.writer.Write(" ASC"); + if (sqlScoreExpressionOrderByItem.IsDescending.HasValue) + { + if (sqlScoreExpressionOrderByItem.IsDescending.Value) + { + this.writer.Write(" DESC"); + } + else + { + this.writer.Write(" ASC"); + } } } diff --git a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/BaselineTest/TestBaseline/OrderByClauseSqlParserBaselineTests.MultiOrderByRank.xml b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/BaselineTest/TestBaseline/OrderByClauseSqlParserBaselineTests.MultiOrderByRank.xml new file mode 100644 index 0000000000..3809e7e879 --- /dev/null +++ b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/BaselineTest/TestBaseline/OrderByClauseSqlParserBaselineTests.MultiOrderByRank.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/BaselineTest/TestBaseline/OrderByClauseSqlParserBaselineTests.SingleOrderByRank.xml b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/BaselineTest/TestBaseline/OrderByClauseSqlParserBaselineTests.SingleOrderByRank.xml new file mode 100644 index 0000000000..fc1fee0704 --- /dev/null +++ b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/BaselineTest/TestBaseline/OrderByClauseSqlParserBaselineTests.SingleOrderByRank.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/Parser/OrderByClauseSqlParserBaselineTests.cs b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/Parser/OrderByClauseSqlParserBaselineTests.cs index bc576b27d7..066d32d63f 100644 --- a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/Parser/OrderByClauseSqlParserBaselineTests.cs +++ b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Query/Parser/OrderByClauseSqlParserBaselineTests.cs @@ -1,54 +1,93 @@ -//------------------------------------------------------------ -// 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 OrderByClauseSqlParserBaselineTests : SqlParserBaselineTests - { - [TestMethod] - public void SingleOrderBy() - { - List inputs = new List() - { - // Positive - CreateInput(description: "Basic", orderByClause: "ORDER BY 1"), - CreateInput(description: "Ascending", orderByClause: "ORDER BY 1 asc"), - CreateInput(description: "Multi Item Array", orderByClause: "ORDER BY 1 DESC"), - CreateInput(description: "Case Insensitive", orderByClause: "OrDeR By 1 DeSc"), - - // Negative - CreateInput(description: "No spaces", orderByClause: "ORDERBY 1"), - CreateInput(description: "Wrong Keyword", orderByClause: "ORER BY 1"), - }; - - this.ExecuteTestSuite(inputs); - } - - [TestMethod] - public void MultiOrderBy() - { - List inputs = new List() - { - // Positive - CreateInput(description: "Basic", orderByClause: "ORDER BY 1, 2, 3"), - CreateInput(description: "Only one sort order", orderByClause: "ORDER BY 1, 2 DESC, 3"), - CreateInput(description: "All sort order", orderByClause: "ORDER BY 1 ASC, 2 DESC, 3 ASC"), - - // Negative - CreateInput(description: "Trailing comma", orderByClause: "ORDER BY 1 ASC,"), - }; - - this.ExecuteTestSuite(inputs); - } - - public static SqlParserBaselineTestInput CreateInput(string description, string orderByClause) - { - return new SqlParserBaselineTestInput(description, $"SELECT * {orderByClause}"); - } - } +//------------------------------------------------------------ +// 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 OrderByClauseSqlParserBaselineTests : SqlParserBaselineTests + { + [TestMethod] + public void SingleOrderBy() + { + List inputs = new List() + { + // Positive + CreateInput(description: "Basic", orderByClause: "ORDER BY 1"), + CreateInput(description: "Ascending", orderByClause: "ORDER BY 1 asc"), + CreateInput(description: "Multi Item Array", orderByClause: "ORDER BY 1 DESC"), + CreateInput(description: "Case Insensitive", orderByClause: "OrDeR By 1 DeSc"), + + // Negative + CreateInput(description: "No spaces", orderByClause: "ORDERBY 1"), + CreateInput(description: "Wrong Keyword", orderByClause: "ORER BY 1"), + }; + + this.ExecuteTestSuite(inputs); + } + + [TestMethod] + public void MultiOrderBy() + { + List inputs = new List() + { + // Positive + CreateInput(description: "Basic", orderByClause: "ORDER BY 1, 2, 3"), + CreateInput(description: "Only one sort order", orderByClause: "ORDER BY 1, 2 DESC, 3"), + CreateInput(description: "All sort order", orderByClause: "ORDER BY 1 ASC, 2 DESC, 3 ASC"), + + // Negative + CreateInput(description: "Trailing comma", orderByClause: "ORDER BY 1 ASC,"), + }; + + this.ExecuteTestSuite(inputs); + } + + [TestMethod] + public void SingleOrderByRank() + { + List inputs = new List() + { + // Positive + CreateInput(description: "Basic", orderByClause: "ORDER BY RANK FullTextScore(c.text, [\"keyword\"])"), + CreateInput(description: "Ascending", orderByClause: "ORDER BY RANK FullTextScore(c.text, [\"keyword\"]) ASC"), + CreateInput(description: "Descending", orderByClause: "ORDER BY RANK FullTextScore(c.text, [\"keyword\"]) DESC"), + CreateInput(description: "Case Insensitive", orderByClause: "OrDeR By rANk FullTextScore(c.text, [\"keyword\"]) DeSc"), + + // Negative + CreateInput(description: "No spaces", orderByClause: "ORDERBYRANK FullTextScore(c.text, [\"keyword\"])"), + CreateInput(description: "Wrong Keyword", orderByClause: "ORDER BY RANKS FullTextScore(c.text, [\"keyword\"])"), + CreateInput(description: "Not a function call", orderByClause: "ORDER BY RANK 1") + }; + + this.ExecuteTestSuite(inputs); + } + + [TestMethod] + public void MultiOrderByRank() + { + List inputs = new List() + { + // Positive + CreateInput(description: "Basic", orderByClause: "ORDER BY RANK FullTextScore(c.text, [\"keyword\"]), FullTextScore(c.text2, [\"keyword\"]), FullTextScore(c.text3, [\"keyword\"])"), + CreateInput(description: "Only one sort order", orderByClause: "ORDER BY RANK FullTextScore(c.text, [\"keyword\"]) ASC, FullTextScore(c.text2, [\"keyword\"]) ASC, FullTextScore(c.text3, [\"keyword\"]) ASC"), + CreateInput(description: "All sort order", orderByClause: "ORDER BY RANK FullTextScore(c.text, [\"keyword\"]) ASC, FullTextScore(c.text2, [\"keyword\"]) DESC, FullTextScore(c.text3, [\"keyword\"]) ASC"), + + // Negative + CreateInput(description: "Trailing comma", orderByClause: "ORDER BY RANK FullTextScore(c.text, [\"keyword\"]) ASC,"), + CreateInput(description: "All fields not function call", orderByClause: "ORDER BY RANK 1, 2, 3"), + CreateInput(description: "Some fields not function call", orderByClause: "ORDER BY RANK RANK FullTextScore(c.text, [\"keyword\"]) ASC, 2, 3 ASC") + }; + + this.ExecuteTestSuite(inputs); + } + + public static SqlParserBaselineTestInput CreateInput(string description, string orderByClause) + { + return new SqlParserBaselineTestInput(description, $"SELECT * {orderByClause}"); + } + } } \ No newline at end of file From 11a591b84f3019422fc10a2214cccfd70321f6ea Mon Sep 17 00:00:00 2001 From: Minh Le Date: Tue, 18 Mar 2025 04:25:09 -0700 Subject: [PATCH 5/8] address code review --- .../src/Query/Core/Parser/CstToAstVisitor.cs | 18 +++---- .../src/SqlObjects/SqlOrderByItem.cs | 6 +-- .../src/SqlObjects/SqlOrderbyClause.cs | 39 +++++--------- .../SqlScoreExpressionOrderByItem.cs | 52 ------------------- .../Visitors/SqlObjectEqualityVisitor.cs | 37 +------------ .../SqlObjects/Visitors/SqlObjectHasher.cs | 42 +++------------ .../Visitors/SqlObjectObfuscator.cs | 28 ++-------- .../Visitors/SqlObjectTextSerializer.cs | 43 +++++---------- .../SqlObjects/Visitors/SqlObjectVisitor.cs | 3 +- .../SqlObjectVisitor{TArg,TOutput}.cs | 3 +- .../Visitors/SqlObjectVisitor{TResult}.cs | 3 +- .../Pagination/InMemoryContainer.cs | 4 +- .../Query/OfflineEngine/SqlInterpreter.cs | 6 +-- 13 files changed, 58 insertions(+), 226 deletions(-) delete mode 100644 Microsoft.Azure.Cosmos/src/SqlObjects/SqlScoreExpressionOrderByItem.cs diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs index 17642c1878..465189b078 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs @@ -356,28 +356,26 @@ public override SqlObject VisitOrder_by_clause([NotNull] sqlParser.Order_by_clau { Contract.Requires(context != null); - if (context.K_RANK != null) + bool rank = context.K_RANK != null; + List orderByItems = new List(); + if (rank) { - List orderByItems = new List(); - foreach (sqlParser.Score_expression_order_by_itemContext orderByItemContext in context.score_expression_order_by_items().score_expression_order_by_item()) + foreach (sqlParser.Score_expression_order_by_itemContext scoreOrderByItemContext in context.score_expression_order_by_items().score_expression_order_by_item()) { - SqlScoreExpressionOrderByItem orderByItem = (SqlScoreExpressionOrderByItem)this.VisitScore_expression_order_by_item(orderByItemContext); + SqlOrderByItem orderByItem = (SqlOrderByItem)this.VisitScore_expression_order_by_item(scoreOrderByItemContext); orderByItems.Add(orderByItem); } - - return SqlOrderByClause.Create(orderByItems.ToImmutableArray()); } else { - List orderByItems = new List(); foreach (sqlParser.Order_by_itemContext orderByItemContext in context.order_by_items().order_by_item()) { SqlOrderByItem orderByItem = (SqlOrderByItem)this.VisitOrder_by_item(orderByItemContext); orderByItems.Add(orderByItem); } + } - return SqlOrderByClause.Create(orderByItems.ToImmutableArray()); - } + return SqlOrderByClause.Create(rank, orderByItems.ToImmutableArray()); } public override SqlObject VisitOrder_by_item([NotNull] sqlParser.Order_by_itemContext context) @@ -427,7 +425,7 @@ public override SqlObject VisitScore_expression_order_by_item([NotNull] sqlParse } } - return SqlScoreExpressionOrderByItem.Create(expression, isDescending); + return SqlOrderByItem.Create(expression, isDescending); } #endregion diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/SqlOrderByItem.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/SqlOrderByItem.cs index e0a973ebdd..a6f7d371d8 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/SqlOrderByItem.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/SqlOrderByItem.cs @@ -17,7 +17,7 @@ sealed class SqlOrderByItem : SqlObject { private SqlOrderByItem( SqlScalarExpression expression, - bool isDescending) + bool? isDescending) { this.Expression = expression ?? throw new ArgumentNullException(nameof(expression)); this.IsDescending = isDescending; @@ -25,11 +25,11 @@ private SqlOrderByItem( public SqlScalarExpression Expression { get; } - public bool IsDescending { get; } + public bool? IsDescending { get; } public static SqlOrderByItem Create( SqlScalarExpression expression, - bool isDescending) + bool? isDescending) { return new SqlOrderByItem(expression, isDescending); } diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/SqlOrderbyClause.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/SqlOrderbyClause.cs index 47a75a5724..3d6cd4327e 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/SqlOrderbyClause.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/SqlOrderbyClause.cs @@ -16,7 +16,7 @@ namespace Microsoft.Azure.Cosmos.SqlObjects #endif sealed class SqlOrderByClause : SqlObject { - private SqlOrderByClause(ImmutableArray orderByItems) + private SqlOrderByClause(bool rank, ImmutableArray orderByItems) { foreach (SqlOrderByItem sqlOrderbyItem in orderByItems) { @@ -27,46 +27,31 @@ private SqlOrderByClause(ImmutableArray orderByItems) } this.OrderByItems = orderByItems; - this.Rank = false; + this.Rank = rank; } - - private SqlOrderByClause(ImmutableArray scoreExpressionOrderByItems) - { - foreach (SqlScoreExpressionOrderByItem sqlOrderbyItem in scoreExpressionOrderByItems) - { - if (sqlOrderbyItem == null) - { - throw new ArgumentException($"{nameof(sqlOrderbyItem)} must not have null items."); - } - } - - this.ScoreExpressionOrderByItems = scoreExpressionOrderByItems; - this.Rank = true; - } public ImmutableArray OrderByItems { get; } - public ImmutableArray ScoreExpressionOrderByItems { get; } - public bool Rank { get; } - + public bool Rank { get; } + public static SqlOrderByClause Create(params SqlOrderByItem[] orderByItems) { - return new SqlOrderByClause(orderByItems.ToImmutableArray()); + return new SqlOrderByClause(rank: false, orderByItems.ToImmutableArray()); } public static SqlOrderByClause Create(ImmutableArray orderByItems) { - return new SqlOrderByClause(orderByItems); + return new SqlOrderByClause(rank: false, orderByItems); } - - public static SqlOrderByClause Create(params SqlScoreExpressionOrderByItem[] orderByItems) + + public static SqlOrderByClause Create(bool rank, params SqlOrderByItem[] orderByItems) { - return new SqlOrderByClause(orderByItems.ToImmutableArray()); + return new SqlOrderByClause(rank, orderByItems.ToImmutableArray()); } - public static SqlOrderByClause Create(ImmutableArray orderByItems) + public static SqlOrderByClause Create(bool rank, ImmutableArray orderByItems) { - return new SqlOrderByClause(orderByItems); - } + return new SqlOrderByClause(rank, orderByItems); + } public override void Accept(SqlObjectVisitor visitor) { diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/SqlScoreExpressionOrderByItem.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/SqlScoreExpressionOrderByItem.cs deleted file mode 100644 index b061d90e9c..0000000000 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/SqlScoreExpressionOrderByItem.cs +++ /dev/null @@ -1,52 +0,0 @@ -//------------------------------------------------------------ -// Copyright (c) Microsoft Corporation. All rights reserved. -//------------------------------------------------------------ -namespace Microsoft.Azure.Cosmos.SqlObjects -{ - using System; - 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 SqlScoreExpressionOrderByItem : SqlObject - { - private SqlScoreExpressionOrderByItem( - SqlFunctionCallScalarExpression expression, - bool? isDescending) - { - this.Expression = expression ?? throw new ArgumentNullException(nameof(expression)); - if (isDescending.HasValue) this.IsDescending = isDescending; - } - - public SqlFunctionCallScalarExpression Expression { get; } - - public bool? IsDescending { get; } - - public static SqlScoreExpressionOrderByItem Create( - SqlFunctionCallScalarExpression expression, - bool? isDescending) - { - return new SqlScoreExpressionOrderByItem(expression, isDescending); - } - - 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); - } - } -} diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectEqualityVisitor.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectEqualityVisitor.cs index 0509c4331d..23dae5579c 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectEqualityVisitor.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectEqualityVisitor.cs @@ -618,22 +618,7 @@ public override bool Visit(SqlOrderByClause first, SqlObject secondAsObject) return false; } - if (first.Rank) - { - if (!SequenceEquals(first.ScoreExpressionOrderByItems, second.ScoreExpressionOrderByItems)) - { - return false; - } - } - else - { - if (!SequenceEquals(first.OrderByItems, second.OrderByItems)) - { - return false; - } - } - - return true; + return SequenceEquals(first.OrderByItems, second.OrderByItems); } public override bool Visit(SqlOrderByItem first, SqlObject secondAsObject) @@ -770,26 +755,6 @@ public override bool Visit(SqlQuery first, SqlObject secondAsObject) return true; } - - public override bool Visit(SqlScoreExpressionOrderByItem first, SqlObject secondAsObject) - { - if (!(secondAsObject is SqlScoreExpressionOrderByItem second)) - { - return false; - } - - if (first.IsDescending != second.IsDescending) - { - return false; - } - - if (!Equals(first.Expression, second.Expression)) - { - return false; - } - - return true; - } public override bool Visit(SqlSelectClause first, SqlObject secondAsObject) { diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectHasher.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectHasher.cs index 2edc2d3ad7..1a8f5aca88 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectHasher.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectHasher.cs @@ -58,9 +58,7 @@ internal sealed class SqlObjectHasher : SqlObjectVisitor private const int SqlPropertyNameHashCode = 1262661966; private const int SqlPropertyRefScalarExpressionHashCode = -1586896865; private const int SqlQueryHashCode = 1968642960; - private const int SqlScoreExpressionOrderbyItemHashCode = 46457293; - private const int SqlScoreExpressionOrderbyItemAscendingHashCode = -5155123; - private const int SqlScoreExpressionOrderbyItemDescendingHashCode = 10615937; + private const int SqlRankHashCode = 46457293; private const int SqlSelectClauseHashCode = 19731870; private const int SqlSelectClauseDistinctHashCode = 1467616881; private const int SqlSelectItemHashCode = -611151157; @@ -425,17 +423,12 @@ public override int Visit(SqlOrderByClause sqlOrderByClause) int hashCode = SqlOrderbyClauseHashCode; if (sqlOrderByClause.Rank) { - for (int i = 0; i < sqlOrderByClause.ScoreExpressionOrderByItems.Length; i++) - { - hashCode = CombineHashes(hashCode, sqlOrderByClause.ScoreExpressionOrderByItems[i].Accept(this)); - } + hashCode = CombineHashes(hashCode, SqlRankHashCode); } - else + + for (int i = 0; i < sqlOrderByClause.OrderByItems.Length; i++) { - for (int i = 0; i < sqlOrderByClause.OrderByItems.Length; i++) - { - hashCode = CombineHashes(hashCode, sqlOrderByClause.OrderByItems[i].Accept(this)); - } + hashCode = CombineHashes(hashCode, sqlOrderByClause.OrderByItems[i].Accept(this)); } return hashCode; @@ -445,14 +438,9 @@ public override int Visit(SqlOrderByItem sqlOrderByItem) { int hashCode = SqlOrderbyItemHashCode; hashCode = CombineHashes(hashCode, sqlOrderByItem.Expression.Accept(this)); - if (sqlOrderByItem.IsDescending) - { - hashCode = CombineHashes(hashCode, SqlOrderbyItemDescendingHashCode); - } - else - { - hashCode = CombineHashes(hashCode, SqlOrderbyItemAscendingHashCode); - } + hashCode = sqlOrderByItem.IsDescending.HasValue && sqlOrderByItem.IsDescending.Value + ? CombineHashes(hashCode, SqlOrderbyItemDescendingHashCode) + : CombineHashes(hashCode, SqlOrderbyItemAscendingHashCode); return hashCode; } @@ -529,20 +517,6 @@ public override int Visit(SqlQuery sqlQuery) return hashCode; } - - public override int Visit(SqlScoreExpressionOrderByItem sqlOrderByItem) - { - int hashCode = SqlScoreExpressionOrderbyItemHashCode; - hashCode = CombineHashes(hashCode, sqlOrderByItem.Expression.Accept(this)); - if (sqlOrderByItem.IsDescending.HasValue) - { - hashCode = sqlOrderByItem.IsDescending.Value - ? CombineHashes(hashCode, SqlScoreExpressionOrderbyItemDescendingHashCode) - : CombineHashes(hashCode, SqlScoreExpressionOrderbyItemAscendingHashCode); - } - - return hashCode; - } public override int Visit(SqlSelectClause sqlSelectClause) { diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectObfuscator.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectObfuscator.cs index 742292afd7..99f13d251b 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectObfuscator.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectObfuscator.cs @@ -277,26 +277,13 @@ public override SqlObject Visit(SqlOffsetSpec sqlObject) public override SqlObject Visit(SqlOrderByClause sqlOrderByClause) { - if (sqlOrderByClause.Rank) + SqlOrderByItem[] items = new SqlOrderByItem[sqlOrderByClause.OrderByItems.Length]; + for (int i = 0; i < sqlOrderByClause.OrderByItems.Length; i++) { - SqlScoreExpressionOrderByItem[] items = new SqlScoreExpressionOrderByItem[sqlOrderByClause.ScoreExpressionOrderByItems.Length]; - for (int i = 0; i < sqlOrderByClause.ScoreExpressionOrderByItems.Length; i++) - { - items[i] = sqlOrderByClause.ScoreExpressionOrderByItems[i].Accept(this) as SqlScoreExpressionOrderByItem; - } - - return SqlOrderByClause.Create(items); + items[i] = sqlOrderByClause.OrderByItems[i].Accept(this) as SqlOrderByItem; } - else - { - SqlOrderByItem[] items = new SqlOrderByItem[sqlOrderByClause.OrderByItems.Length]; - for (int i = 0; i < sqlOrderByClause.OrderByItems.Length; i++) - { - items[i] = sqlOrderByClause.OrderByItems[i].Accept(this) as SqlOrderByItem; - } - return SqlOrderByClause.Create(items); - } + return SqlOrderByClause.Create(sqlOrderByClause.Rank, items); } public override SqlObject Visit(SqlOrderByItem sqlOrderByItem) @@ -351,13 +338,6 @@ public override SqlObject Visit(SqlQuery sqlQuery) sqlQuery.OrderByClause?.Accept(this) as SqlOrderByClause, sqlQuery.OffsetLimitClause?.Accept(this) as SqlOffsetLimitClause); } - - public override SqlObject Visit(SqlScoreExpressionOrderByItem sqlScoreOrderByItem) - { - return SqlScoreExpressionOrderByItem.Create( - sqlScoreOrderByItem.Expression.Accept(this) as SqlFunctionCallScalarExpression, - sqlScoreOrderByItem.IsDescending); - } public override SqlObject Visit(SqlSelectClause sqlSelectClause) { diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectTextSerializer.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectTextSerializer.cs index aea446b850..7e5aa7a742 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectTextSerializer.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectTextSerializer.cs @@ -426,27 +426,28 @@ public override void Visit(SqlOrderByClause sqlOrderByClause) { this.writer.Write("RANK "); } - - dynamic items = sqlOrderByClause.Rank ? sqlOrderByClause.ScoreExpressionOrderByItems : sqlOrderByClause.OrderByItems; - items[0].Accept(this); - for (int i = 1; i < items.Length; i++) + sqlOrderByClause.OrderByItems[0].Accept(this); + for (int i = 1; i < sqlOrderByClause.OrderByItems.Length; i++) { this.writer.Write(", "); - items[i].Accept(this); + sqlOrderByClause.OrderByItems[i].Accept(this); } } public override void Visit(SqlOrderByItem sqlOrderByItem) { - sqlOrderByItem.Expression.Accept(this); - if (sqlOrderByItem.IsDescending) - { - this.writer.Write(" DESC"); - } - else - { - this.writer.Write(" ASC"); + sqlOrderByItem.Expression.Accept(this); + if (sqlOrderByItem.IsDescending.HasValue) + { + if (sqlOrderByItem.IsDescending.Value) + { + this.writer.Write(" DESC"); + } + else + { + this.writer.Write(" ASC"); + } } } @@ -518,22 +519,6 @@ public override void Visit(SqlQuery sqlQuery) sqlQuery.OffsetLimitClause.Accept(this); } } - - public override void Visit(SqlScoreExpressionOrderByItem sqlScoreExpressionOrderByItem) - { - sqlScoreExpressionOrderByItem.Expression.Accept(this); - if (sqlScoreExpressionOrderByItem.IsDescending.HasValue) - { - if (sqlScoreExpressionOrderByItem.IsDescending.Value) - { - this.writer.Write(" DESC"); - } - else - { - this.writer.Write(" ASC"); - } - } - } public override void Visit(SqlSelectClause sqlSelectClause) { diff --git a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectVisitor.cs b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectVisitor.cs index ff60c55a6c..3dfe3a9193 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectVisitor.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectVisitor.cs @@ -52,8 +52,7 @@ abstract class SqlObjectVisitor public abstract void Visit(SqlProgram sqlObject); public abstract void Visit(SqlPropertyName sqlObject); public abstract void Visit(SqlPropertyRefScalarExpression sqlObject); - public abstract void Visit(SqlQuery sqlObject); - public abstract void Visit(SqlScoreExpressionOrderByItem sqlObject); + public abstract void Visit(SqlQuery sqlObject); public abstract void Visit(SqlSelectClause sqlObject); public abstract void Visit(SqlSelectItem sqlObject); public abstract void Visit(SqlSelectListSpec 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 901cbf8383..449cd6adaf 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectVisitor{TArg,TOutput}.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectVisitor{TArg,TOutput}.cs @@ -52,8 +52,7 @@ abstract class SqlObjectVisitor public abstract TOutput Visit(SqlProgram sqlObject, TArg input); public abstract TOutput Visit(SqlPropertyName sqlObject, TArg input); public abstract TOutput Visit(SqlPropertyRefScalarExpression sqlObject, TArg input); - public abstract TOutput Visit(SqlQuery sqlObject, TArg input); - public abstract TOutput Visit(SqlScoreExpressionOrderByItem sqlObject, TArg input); + public abstract TOutput Visit(SqlQuery sqlObject, TArg input); public abstract TOutput Visit(SqlSelectClause sqlObject, TArg input); public abstract TOutput Visit(SqlSelectItem sqlObject, TArg input); public abstract TOutput Visit(SqlSelectListSpec 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 13ec20a70b..3d1000a171 100644 --- a/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectVisitor{TResult}.cs +++ b/Microsoft.Azure.Cosmos/src/SqlObjects/Visitors/SqlObjectVisitor{TResult}.cs @@ -52,8 +52,7 @@ abstract class SqlObjectVisitor public abstract TResult Visit(SqlProgram sqlObject); public abstract TResult Visit(SqlPropertyName sqlObject); public abstract TResult Visit(SqlPropertyRefScalarExpression sqlObject); - public abstract TResult Visit(SqlQuery sqlObject); - public abstract TResult Visit(SqlScoreExpressionOrderByItem sqlObject); + public abstract TResult Visit(SqlQuery sqlObject); public abstract TResult Visit(SqlSelectClause sqlObject); public abstract TResult Visit(SqlSelectItem sqlObject); public abstract TResult Visit(SqlSelectListSpec sqlObject); diff --git a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Pagination/InMemoryContainer.cs b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Pagination/InMemoryContainer.cs index e51b1adf03..ac63a64b15 100644 --- a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Pagination/InMemoryContainer.cs +++ b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/Pagination/InMemoryContainer.cs @@ -541,7 +541,7 @@ public virtual Task> MonadicQueryAsync( SqlOrderByItem orderByItem = sqlQuery.OrderByClause.OrderByItems[0]; CosmosObject parsedContinuationToken = CosmosObject.Parse(((CosmosString)feedRangeState.State.Value).Value); SqlBinaryScalarExpression resumeFilter = SqlBinaryScalarExpression.Create( - orderByItem.IsDescending ? SqlBinaryScalarOperatorKind.LessThan : SqlBinaryScalarOperatorKind.GreaterThan, + orderByItem.IsDescending.GetValueOrDefault() ? SqlBinaryScalarOperatorKind.LessThan : SqlBinaryScalarOperatorKind.GreaterThan, orderByItem.Expression, parsedContinuationToken["orderByItem"].Accept(CosmosElementToSqlScalarExpressionVisitor.Singleton)); @@ -588,7 +588,7 @@ public virtual Task> MonadicQueryAsync( if (sortOrderCompare != 0) { - sortOrderCompare = orderByItem.IsDescending ? -sortOrderCompare : sortOrderCompare; + sortOrderCompare = orderByItem.IsDescending.GetValueOrDefault() ? -sortOrderCompare : sortOrderCompare; } if (sortOrderCompare < 0) 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 e0d02d45c5..875b08eeaa 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 @@ -286,7 +286,7 @@ private static IEnumerable ExecuteOrderByClause( element) is not CosmosUndefined); } - IOrderedEnumerable orderedDataSource = firstItem.IsDescending + IOrderedEnumerable orderedDataSource = firstItem.IsDescending.GetValueOrDefault() ? dataSource.OrderByDescending( element => firstItem.Expression.Accept( ScalarExpressionEvaluator.Singleton, @@ -297,7 +297,7 @@ private static IEnumerable ExecuteOrderByClause( element)); foreach (SqlOrderByItem sqlOrderByItem in sqlOrderByClause.OrderByItems.Skip(1)) { - orderedDataSource = sqlOrderByItem.IsDescending + orderedDataSource = sqlOrderByItem.IsDescending.GetValueOrDefault() ? orderedDataSource.ThenByDescending( element => sqlOrderByItem.Expression.Accept( ScalarExpressionEvaluator.Singleton, @@ -319,7 +319,7 @@ private static IEnumerable ExecuteOrderByClause( StringComparer.Ordinal); // Break all final ties within partition by document id - orderedDataSource = firstItem.IsDescending + orderedDataSource = firstItem.IsDescending.GetValueOrDefault() ? orderedDataSource .ThenByDescending(element => ResourceId.Parse(((CosmosString)((CosmosObject)element)["_rid"]).Value).Document) : orderedDataSource From e1acacc18688aece8a7b65573f327a6b2eb0be7c Mon Sep 17 00:00:00 2001 From: Minh Le Date: Tue, 25 Mar 2025 01:04:56 -0700 Subject: [PATCH 6/8] Fix comparison bug --- Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs index 465189b078..220b10591c 100644 --- a/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs +++ b/Microsoft.Azure.Cosmos/src/Query/Core/Parser/CstToAstVisitor.cs @@ -356,7 +356,7 @@ public override SqlObject VisitOrder_by_clause([NotNull] sqlParser.Order_by_clau { Contract.Requires(context != null); - bool rank = context.K_RANK != null; + bool rank = context.K_RANK() != null; List orderByItems = new List(); if (rank) { From f33cadeeed18d7b7a2f763e968135a2cce524054 Mon Sep 17 00:00:00 2001 From: Minh Le Date: Tue, 25 Mar 2025 11:26:22 -0700 Subject: [PATCH 7/8] update csproj to copy xml file --- .../Microsoft.Azure.Cosmos.Tests.csproj | 6 ++++++ 1 file changed, 6 insertions(+) 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 40aff3569c..a1683c164d 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 @@ -116,6 +116,12 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + PreserveNewest From 27bdb3aea91772544bce2d2d0b017fb1d3475aac Mon Sep 17 00:00:00 2001 From: Minh Le Date: Wed, 26 Mar 2025 13:31:19 -0700 Subject: [PATCH 8/8] update baseline --- ...lObjectVisitorBaselineTests.SqlQueries.xml | 2860 +++++++++-------- 1 file changed, 1433 insertions(+), 1427 deletions(-) diff --git a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/BaselineTest/TestBaseline/SqlObjectVisitorBaselineTests.SqlQueries.xml b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/BaselineTest/TestBaseline/SqlObjectVisitorBaselineTests.SqlQueries.xml index 94eeeffc08..10d8db834f 100644 --- a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/BaselineTest/TestBaseline/SqlObjectVisitorBaselineTests.SqlQueries.xml +++ b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.Tests/BaselineTest/TestBaseline/SqlObjectVisitorBaselineTests.SqlQueries.xml @@ -1,1428 +1,1434 @@ - - - - SqlSelectClause useStar: True, useTop: True, hasDistinct: True - - - - - - 372798874 - - - - - - SqlSelectClause useStar: True, useTop: True, hasDistinct: False - - - - - - 580462256 - - - - - - SqlSelectClause useStar: True, useTop: False, hasDistinct: True - - - - - - -963590009 - - - - - - SqlSelectClause useStar: True, useTop: False, hasDistinct: False - - - - - - -1484669806 - - - - - - SqlSelectClause useStar: False, useTop: True, hasDistinct: True - - - - - - 12611449 - - - - - - SqlSelectClause useStar: False, useTop: True, hasDistinct: False - - - - - - 221367697 - - - - - - SqlSelectClause useStar: False, useTop: False, hasDistinct: True - - - - - - -590815832 - - - - - - SqlSelectClause useStar: False, useTop: False, hasDistinct: False - - - - - - -1116099659 - - - - - - SqlAliasedCollectionExpression collectionType: SqlInputPathCollection - - - - - - 731060836 - - - - - - SqlArrayIteratorCollectionExpression collectionType: SqlInputPathCollection - - - - - - -1837737795 - - - - - - SqlJoinCollectionExpression collectionType: SqlInputPathCollection - - - - - - -177330079 - - - - - - SqlAliasedCollectionExpression collectionType: SqlSubqueryCollection - - - - - - -1405666129 - - - - - - SqlArrayIteratorCollectionExpression collectionType: SqlSubqueryCollection - - - - - - 1487656476 - - - - - - SqlJoinCollectionExpression collectionType: SqlSubqueryCollection - - - - - - -1208716422 - - - - - - SqlWhereClause - - - - - - 620327797 - - - - - - SqlGroupByClause Single - - - - - - 230037773 - - - - - - SqlGroupByClause Multi - - - - - - -2051019965 - - - - - - SqlOrderByClause Single - - - - - - -322931644 - - - - - - SqlOrderByClause Multi - - - - - - 1705766684 - - - - - - SqlOffsetSpec - - - - - - -75208571 - - - - - - SqlLimitSpec - - - - - - -1199678923 - - - - - - SqlOffsetLimitClause - - - - - - -2001423568 - - - - - - SqlQuery - - - - - - -245344741 - - - - - - SqlSubqueryScalarExpression - - - - - - 51808704 - - - - - - SqlArrayScalarExpression - - - - - - -1922520573 - - - - - - SqlExistsScalarExpression - - - - - - 1317938775 - - - + + + + SqlSelectClause useStar: True, useTop: True, hasDistinct: True + + + + + + 372798874 + + + + + + SqlSelectClause useStar: True, useTop: True, hasDistinct: False + + + + + + 580462256 + + + + + + SqlSelectClause useStar: True, useTop: False, hasDistinct: True + + + + + + -963590009 + + + + + + SqlSelectClause useStar: True, useTop: False, hasDistinct: False + + + + + + -1484669806 + + + + + + SqlSelectClause useStar: False, useTop: True, hasDistinct: True + + + + + + 12611449 + + + + + + SqlSelectClause useStar: False, useTop: True, hasDistinct: False + + + + + + 221367697 + + + + + + SqlSelectClause useStar: False, useTop: False, hasDistinct: True + + + + + + -590815832 + + + + + + SqlSelectClause useStar: False, useTop: False, hasDistinct: False + + + + + + -1116099659 + + + + + + SqlAliasedCollectionExpression collectionType: SqlInputPathCollection + + + + + + 731060836 + + + + + + SqlArrayIteratorCollectionExpression collectionType: SqlInputPathCollection + + + + + + -1837737795 + + + + + + SqlJoinCollectionExpression collectionType: SqlInputPathCollection + + + + + + -177330079 + + + + + + SqlAliasedCollectionExpression collectionType: SqlSubqueryCollection + + + + + + -1405666129 + + + + + + SqlArrayIteratorCollectionExpression collectionType: SqlSubqueryCollection + + + + + + 1487656476 + + + + + + SqlJoinCollectionExpression collectionType: SqlSubqueryCollection + + + + + + -1208716422 + + + + + + SqlWhereClause + + + + + + 620327797 + + + + + + SqlGroupByClause Single + + + + + + 230037773 + + + + + + SqlGroupByClause Multi + + + + + + -2051019965 + + + + + + SqlOrderByClause Single + + + + + + -322931644 + + + + + + SqlOrderByClause Multi + + + + + + 1705766684 + + + + + + SqlOffsetSpec + + + + + + -75208571 + + + + + + SqlLimitSpec + + + + + + -1199678923 + + + + + + SqlOffsetLimitClause + + + + + + -2001423568 + + + + + + SqlQuery + + + + + + -245344741 + + + + + + SqlSubqueryScalarExpression + + + + + + 51808704 + + + + + + SqlArrayScalarExpression + + + + + + -1922520573 + + + + + + SqlExistsScalarExpression + + + + + + 1317938775 + + + \ No newline at end of file