expressir 1.4.3 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/codeql.yml +2 -14
- data/.github/workflows/rake.yml +6 -364
- data/.github/workflows/release.yml +15 -178
- data/.github/workflows/stress.yml +1 -18
- data/.rubocop.yml +1 -0
- data/.rubocop_todo.yml +21 -0
- data/Gemfile +12 -0
- data/README.adoc +6 -19
- data/Rakefile +6 -7
- data/exe/{format-test → expressir-format-test} +1 -1
- data/expressir.gemspec +23 -32
- data/expressir_wrapped.txt +23068 -0
- data/lib/expressir/cli.rb +1 -1
- data/lib/expressir/express/formatter.rb +661 -661
- data/lib/expressir/express/parser.rb +299 -33
- data/lib/expressir/express/visitor.rb +238 -133
- data/lib/expressir/liquid/cache_drop.rb +20 -0
- data/lib/expressir/liquid/data_type_drop.rb +8 -0
- data/lib/expressir/liquid/data_types/aggregate_drop.rb +21 -0
- data/lib/expressir/liquid/data_types/array_drop.rb +34 -0
- data/lib/expressir/liquid/data_types/bag_drop.rb +26 -0
- data/lib/expressir/liquid/data_types/binary_drop.rb +22 -0
- data/lib/expressir/liquid/data_types/boolean_drop.rb +10 -0
- data/lib/expressir/liquid/data_types/enumeration_drop.rb +30 -0
- data/lib/expressir/liquid/data_types/enumeration_item_drop.rb +17 -0
- data/lib/expressir/liquid/data_types/generic_drop.rb +17 -0
- data/lib/expressir/liquid/data_types/generic_entity_drop.rb +17 -0
- data/lib/expressir/liquid/data_types/integer_drop.rb +10 -0
- data/lib/expressir/liquid/data_types/list_drop.rb +30 -0
- data/lib/expressir/liquid/data_types/logical_drop.rb +10 -0
- data/lib/expressir/liquid/data_types/number_drop.rb +10 -0
- data/lib/expressir/liquid/data_types/real_drop.rb +18 -0
- data/lib/expressir/liquid/data_types/select_drop.rb +34 -0
- data/lib/expressir/liquid/data_types/set_drop.rb +26 -0
- data/lib/expressir/liquid/data_types/string_drop.rb +22 -0
- data/lib/expressir/liquid/declaration_drop.rb +8 -0
- data/lib/expressir/liquid/declarations/attribute_drop.rb +37 -0
- data/lib/expressir/liquid/declarations/constant_drop.rb +25 -0
- data/lib/expressir/liquid/declarations/entity_drop.rb +65 -0
- data/lib/expressir/liquid/declarations/function_drop.rb +93 -0
- data/lib/expressir/liquid/declarations/interface_drop.rb +30 -0
- data/lib/expressir/liquid/declarations/interface_item_drop.rb +22 -0
- data/lib/expressir/liquid/declarations/interfaced_item_drop.rb +34 -0
- data/lib/expressir/liquid/declarations/parameter_drop.rb +25 -0
- data/lib/expressir/liquid/declarations/procedure_drop.rb +89 -0
- data/lib/expressir/liquid/declarations/remark_item_drop.rb +22 -0
- data/lib/expressir/liquid/declarations/rule_drop.rb +105 -0
- data/lib/expressir/liquid/declarations/schema_drop.rb +91 -0
- data/lib/expressir/liquid/declarations/schema_version_drop.rb +26 -0
- data/lib/expressir/liquid/declarations/schema_version_item_drop.rb +22 -0
- data/lib/expressir/liquid/declarations/subtype_constraint_drop.rb +37 -0
- data/lib/expressir/liquid/declarations/type_drop.rb +37 -0
- data/lib/expressir/liquid/declarations/unique_rule_drop.rb +21 -0
- data/lib/expressir/liquid/declarations/variable_drop.rb +25 -0
- data/lib/expressir/liquid/declarations/where_rule_drop.rb +21 -0
- data/lib/expressir/liquid/expression_drop.rb +8 -0
- data/lib/expressir/liquid/expressions/aggregate_initializer_drop.rb +24 -0
- data/lib/expressir/liquid/expressions/aggregate_initializer_item_drop.rb +22 -0
- data/lib/expressir/liquid/expressions/binary_expression_drop.rb +26 -0
- data/lib/expressir/liquid/expressions/entity_constructor_drop.rb +26 -0
- data/lib/expressir/liquid/expressions/function_call_drop.rb +26 -0
- data/lib/expressir/liquid/expressions/interval_drop.rb +34 -0
- data/lib/expressir/liquid/expressions/query_expression_drop.rb +25 -0
- data/lib/expressir/liquid/expressions/unary_expression_drop.rb +22 -0
- data/lib/expressir/liquid/identifier_drop.rb +33 -0
- data/lib/expressir/liquid/literal_drop.rb +8 -0
- data/lib/expressir/liquid/literals/binary_drop.rb +18 -0
- data/lib/expressir/liquid/literals/integer_drop.rb +18 -0
- data/lib/expressir/liquid/literals/logical_drop.rb +18 -0
- data/lib/expressir/liquid/literals/real_drop.rb +18 -0
- data/lib/expressir/liquid/literals/string_drop.rb +22 -0
- data/lib/expressir/liquid/model_element_drop.rb +33 -0
- data/lib/expressir/liquid/reference_drop.rb +8 -0
- data/lib/expressir/liquid/references/attribute_reference_drop.rb +22 -0
- data/lib/expressir/liquid/references/group_reference_drop.rb +22 -0
- data/lib/expressir/liquid/references/index_reference_drop.rb +26 -0
- data/lib/expressir/liquid/references/simple_reference_drop.rb +22 -0
- data/lib/expressir/liquid/repository_drop.rb +22 -0
- data/lib/expressir/liquid/statement_drop.rb +8 -0
- data/lib/expressir/liquid/statements/alias_drop.rb +29 -0
- data/lib/expressir/liquid/statements/assignment_drop.rb +22 -0
- data/lib/expressir/liquid/statements/case_action_drop.rb +26 -0
- data/lib/expressir/liquid/statements/case_drop.rb +30 -0
- data/lib/expressir/liquid/statements/compound_drop.rb +22 -0
- data/lib/expressir/liquid/statements/escape_drop.rb +10 -0
- data/lib/expressir/liquid/statements/if_drop.rb +34 -0
- data/lib/expressir/liquid/statements/null_drop.rb +10 -0
- data/lib/expressir/liquid/statements/procedure_call_drop.rb +26 -0
- data/lib/expressir/liquid/statements/repeat_drop.rb +45 -0
- data/lib/expressir/liquid/statements/return_drop.rb +18 -0
- data/lib/expressir/liquid/statements/skip_drop.rb +10 -0
- data/lib/expressir/liquid/supertype_expression_drop.rb +8 -0
- data/lib/expressir/liquid/supertype_expressions/binary_supertype_expression_drop.rb +26 -0
- data/lib/expressir/liquid/supertype_expressions/oneof_supertype_expression_drop.rb +22 -0
- data/lib/expressir/liquid.rb +18 -0
- data/lib/expressir/model/declarations/interface_item.rb +1 -1
- data/lib/expressir/model/model_element.rb +7 -0
- data/lib/expressir/version.rb +1 -1
- data/lib/expressir.rb +2 -0
- metadata +101 -569
- data/.cross_rubies +0 -28
- data/.gitmodules +0 -6
- data/.yardopts +0 -11
- data/exe/generate-parser +0 -51
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/CMakeLists.txt +0 -191
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2019.vcxproj +0 -652
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2019.vcxproj.filters +0 -948
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2022.vcxproj +0 -652
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2022.vcxproj.filters +0 -948
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp-ios/Info.plist +0 -26
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp-ios/antlrcpp_ios.h +0 -17
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/project.pbxproj +0 -3040
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/xcshareddata/xcschemes/antlr4.xcscheme +0 -76
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/xcshareddata/xcschemes/antlr4_ios.xcscheme +0 -76
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/xcshareddata/xcschemes/antlr4_static.xcscheme +0 -76
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/nuget/ANTLR4.Runtime.cpp.noarch.nuspec +0 -23
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/nuget/ANTLR4.Runtime.cpp.noarch.targets +0 -8
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/nuget/ANTLR4.Runtime.cpp.shared.nuspec +0 -30
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/nuget/ANTLR4.Runtime.cpp.shared.props +0 -21
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/nuget/ANTLR4.Runtime.cpp.shared.targets +0 -44
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/nuget/ANTLR4.Runtime.cpp.static.nuspec +0 -29
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/nuget/ANTLR4.Runtime.cpp.static.targets +0 -44
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/nuget/antlr4.jpg +0 -0
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/nuget/pack.cmd +0 -93
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorListener.cpp +0 -10
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorListener.h +0 -167
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorStrategy.cpp +0 -10
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorStrategy.h +0 -121
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRFileStream.cpp +0 -23
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRFileStream.h +0 -30
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRInputStream.cpp +0 -180
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRInputStream.h +0 -79
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/BailErrorStrategy.cpp +0 -61
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/BailErrorStrategy.h +0 -59
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/BaseErrorListener.cpp +0 -25
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/BaseErrorListener.h +0 -36
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/BufferedTokenStream.cpp +0 -414
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/BufferedTokenStream.h +0 -200
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/CharStream.cpp +0 -11
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/CharStream.h +0 -37
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonToken.cpp +0 -193
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonToken.h +0 -158
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenFactory.cpp +0 -39
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenFactory.h +0 -74
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenStream.cpp +0 -78
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenStream.h +0 -79
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ConsoleErrorListener.cpp +0 -15
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ConsoleErrorListener.h +0 -35
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/DefaultErrorStrategy.cpp +0 -336
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/DefaultErrorStrategy.h +0 -466
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/DiagnosticErrorListener.cpp +0 -84
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/DiagnosticErrorListener.h +0 -80
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Exceptions.cpp +0 -64
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Exceptions.h +0 -99
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/FailedPredicateException.cpp +0 -52
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/FailedPredicateException.h +0 -32
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/FlatHashMap.h +0 -57
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/FlatHashSet.h +0 -57
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/InputMismatchException.cpp +0 -18
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/InputMismatchException.h +0 -24
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/IntStream.cpp +0 -12
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/IntStream.h +0 -218
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/InterpreterRuleContext.cpp +0 -19
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/InterpreterRuleContext.h +0 -45
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Lexer.cpp +0 -294
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Lexer.h +0 -196
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerInterpreter.cpp +0 -60
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerInterpreter.h +0 -46
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerNoViableAltException.cpp +0 -36
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerNoViableAltException.h +0 -31
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ListTokenSource.cpp +0 -92
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ListTokenSource.h +0 -88
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/NoViableAltException.cpp +0 -46
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/NoViableAltException.h +0 -42
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Parser.cpp +0 -670
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Parser.h +0 -461
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserInterpreter.cpp +0 -294
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserInterpreter.h +0 -173
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserRuleContext.cpp +0 -138
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserRuleContext.h +0 -147
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ProxyErrorListener.cpp +0 -53
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ProxyErrorListener.h +0 -38
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/RecognitionException.cpp +0 -65
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/RecognitionException.h +0 -98
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Recognizer.cpp +0 -157
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Recognizer.h +0 -160
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContext.cpp +0 -144
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContext.h +0 -141
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContextWithAltNum.cpp +0 -27
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContextWithAltNum.h +0 -32
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/RuntimeMetaData.cpp +0 -54
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/RuntimeMetaData.h +0 -155
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Token.cpp +0 -9
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Token.h +0 -92
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenFactory.h +0 -30
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenSource.cpp +0 -9
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenSource.h +0 -85
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStream.cpp +0 -11
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStream.h +0 -137
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStreamRewriter.cpp +0 -425
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStreamRewriter.h +0 -295
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedCharStream.cpp +0 -208
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedCharStream.h +0 -117
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedTokenStream.cpp +0 -270
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedTokenStream.h +0 -115
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Version.h +0 -42
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Vocabulary.cpp +0 -64
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Vocabulary.h +0 -177
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/WritableToken.cpp +0 -9
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/WritableToken.h +0 -23
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/antlr4-common.h +0 -101
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/antlr4-runtime.h +0 -168
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATN.cpp +0 -159
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATN.h +0 -133
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfig.cpp +0 -106
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfig.h +0 -157
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfigSet.cpp +0 -233
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfigSet.h +0 -157
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.cpp +0 -39
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.h +0 -48
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializer.cpp +0 -628
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializer.h +0 -32
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSimulator.cpp +0 -33
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSimulator.h +0 -71
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNState.cpp +0 -56
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNState.h +0 -139
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNStateType.cpp +0 -33
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNStateType.h +0 -36
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNType.h +0 -20
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ActionTransition.cpp +0 -29
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ActionTransition.h +0 -35
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AmbiguityInfo.cpp +0 -16
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AmbiguityInfo.h +0 -68
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.cpp +0 -129
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.h +0 -51
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AtomTransition.cpp +0 -27
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AtomTransition.h +0 -33
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicBlockStartState.h +0 -24
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicState.h +0 -23
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockEndState.h +0 -26
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockStartState.h +0 -30
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ContextSensitivityInfo.cpp +0 -14
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ContextSensitivityInfo.h +0 -47
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionEventInfo.cpp +0 -14
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionEventInfo.h +0 -70
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionInfo.cpp +0 -25
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionInfo.h +0 -227
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionState.cpp +0 -12
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionState.h +0 -34
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EpsilonTransition.cpp +0 -31
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EpsilonTransition.h +0 -42
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ErrorInfo.cpp +0 -15
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ErrorInfo.h +0 -43
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/HashUtils.h +0 -18
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LL1Analyzer.cpp +0 -189
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LL1Analyzer.h +0 -76
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNConfig.cpp +0 -67
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNConfig.h +0 -44
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNSimulator.cpp +0 -621
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNSimulator.h +0 -199
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerAction.cpp +0 -15
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerAction.h +0 -100
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionExecutor.cpp +0 -108
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionExecutor.h +0 -128
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionType.h +0 -57
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerChannelAction.cpp +0 -43
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerChannelAction.h +0 -59
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerCustomAction.cpp +0 -45
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerCustomAction.h +0 -75
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.cpp +0 -50
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.h +0 -76
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerModeAction.cpp +0 -43
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerModeAction.h +0 -57
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerMoreAction.cpp +0 -36
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerMoreAction.h +0 -53
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPopModeAction.cpp +0 -36
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPopModeAction.h +0 -53
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPushModeAction.cpp +0 -43
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPushModeAction.h +0 -57
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerSkipAction.cpp +0 -36
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerSkipAction.h +0 -51
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerTypeAction.cpp +0 -43
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerTypeAction.h +0 -51
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LookaheadEventInfo.cpp +0 -16
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LookaheadEventInfo.h +0 -42
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LoopEndState.h +0 -26
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/NotSetTransition.cpp +0 -22
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/NotSetTransition.h +0 -27
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.cpp +0 -16
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.h +0 -25
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParseInfo.cpp +0 -102
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParseInfo.h +0 -102
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulator.cpp +0 -1413
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulator.h +0 -911
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulatorOptions.h +0 -50
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusBlockStartState.h +0 -29
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusLoopbackState.h +0 -25
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.cpp +0 -23
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.h +0 -35
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.cpp +0 -17
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.h +0 -62
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateTransition.cpp +0 -24
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateTransition.h +0 -50
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContext.cpp +0 -601
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContext.h +0 -225
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextCache.cpp +0 -56
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextCache.h +0 -63
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextMergeCache.cpp +0 -167
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextMergeCache.h +0 -101
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextMergeCacheOptions.h +0 -71
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextType.h +0 -21
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionMode.cpp +0 -202
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionMode.h +0 -436
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.cpp +0 -179
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.h +0 -60
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RangeTransition.cpp +0 -26
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RangeTransition.h +0 -31
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStartState.h +0 -26
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStopState.h +0 -27
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleTransition.cpp +0 -33
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleTransition.h +0 -42
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContext.cpp +0 -418
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContext.h +0 -237
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContextType.h +0 -23
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SerializedATNView.h +0 -101
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SetTransition.cpp +0 -28
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SetTransition.h +0 -38
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.cpp +0 -79
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.h +0 -43
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarBlockStartState.h +0 -24
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopEntryState.h +0 -37
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopbackState.cpp +0 -19
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopbackState.h +0 -25
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TokensStartState.h +0 -24
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Transition.cpp +0 -36
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Transition.h +0 -65
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TransitionType.cpp +0 -27
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TransitionType.h +0 -33
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/WildcardTransition.cpp +0 -21
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/WildcardTransition.h +0 -27
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFA.cpp +0 -115
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFA.h +0 -96
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFASerializer.cpp +0 -60
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFASerializer.h +0 -32
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFAState.cpp +0 -59
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFAState.h +0 -154
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.cpp +0 -17
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.h +0 -22
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/internal/Synchronization.cpp +0 -100
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/internal/Synchronization.h +0 -154
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/InterpreterDataReader.cpp +0 -124
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/InterpreterDataReader.h +0 -33
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Interval.cpp +0 -61
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Interval.h +0 -84
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/IntervalSet.cpp +0 -508
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/IntervalSet.h +0 -190
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/MurmurHash.cpp +0 -120
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/MurmurHash.h +0 -102
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Predicate.cpp +0 -4
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Predicate.h +0 -21
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Any.cpp +0 -8
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Any.h +0 -16
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Arrays.cpp +0 -43
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Arrays.h +0 -149
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/BitSet.h +0 -76
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/CPPUtils.cpp +0 -207
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/CPPUtils.h +0 -65
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Casts.h +0 -34
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Declarations.h +0 -161
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/StringUtils.cpp +0 -38
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/StringUtils.h +0 -16
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Unicode.h +0 -28
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Utf8.cpp +0 -242
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Utf8.h +0 -54
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/AbstractParseTreeVisitor.h +0 -129
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNode.h +0 -24
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.cpp +0 -54
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.h +0 -43
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/IterativeParseTreeWalker.cpp +0 -66
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/IterativeParseTreeWalker.h +0 -53
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTree.cpp +0 -12
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTree.h +0 -111
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeListener.cpp +0 -9
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeListener.h +0 -39
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeProperty.h +0 -50
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeType.h +0 -22
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeVisitor.cpp +0 -9
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeVisitor.h +0 -57
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeWalker.cpp +0 -48
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeWalker.h +0 -55
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNode.h +0 -40
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.cpp +0 -54
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.h +0 -32
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/Trees.cpp +0 -241
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/Trees.h +0 -78
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/Chunk.cpp +0 -9
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/Chunk.h +0 -44
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreeMatch.cpp +0 -69
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreeMatch.h +0 -132
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePattern.cpp +0 -64
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePattern.h +0 -105
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePatternMatcher.cpp +0 -370
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePatternMatcher.h +0 -185
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/RuleTagToken.cpp +0 -77
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/RuleTagToken.h +0 -117
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TagChunk.cpp +0 -39
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TagChunk.h +0 -86
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TextChunk.cpp +0 -28
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TextChunk.h +0 -51
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TokenTagToken.cpp +0 -36
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TokenTagToken.h +0 -80
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPath.cpp +0 -154
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPath.h +0 -86
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathElement.cpp +0 -31
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathElement.h +0 -40
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.cpp +0 -180
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.g4 +0 -64
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.h +0 -53
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.tokens +0 -12
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexerErrorListener.cpp +0 -13
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexerErrorListener.h +0 -22
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleAnywhereElement.cpp +0 -20
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleAnywhereElement.h +0 -27
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleElement.cpp +0 -30
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleElement.h +0 -26
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenAnywhereElement.cpp +0 -20
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenAnywhereElement.h +0 -25
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenElement.cpp +0 -33
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenElement.h +0 -26
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardAnywhereElement.cpp +0 -23
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardAnywhereElement.h +0 -23
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardElement.cpp +0 -24
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardElement.h +0 -23
- data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/tests/Utf8Test.cpp +0 -110
- data/ext/express_parser/antlrgen/Express.interp +0 -532
- data/ext/express_parser/antlrgen/Express.tokens +0 -190
- data/ext/express_parser/antlrgen/ExpressBaseListener.cpp +0 -7
- data/ext/express_parser/antlrgen/ExpressBaseListener.h +0 -623
- data/ext/express_parser/antlrgen/ExpressBaseVisitor.cpp +0 -7
- data/ext/express_parser/antlrgen/ExpressBaseVisitor.h +0 -816
- data/ext/express_parser/antlrgen/ExpressLexer.cpp +0 -685
- data/ext/express_parser/antlrgen/ExpressLexer.h +0 -78
- data/ext/express_parser/antlrgen/ExpressLexer.interp +0 -534
- data/ext/express_parser/antlrgen/ExpressLexer.tokens +0 -190
- data/ext/express_parser/antlrgen/ExpressListener.cpp +0 -7
- data/ext/express_parser/antlrgen/ExpressListener.h +0 -616
- data/ext/express_parser/antlrgen/ExpressParser.cpp +0 -17591
- data/ext/express_parser/antlrgen/ExpressParser.h +0 -3692
- data/ext/express_parser/antlrgen/ExpressVisitor.cpp +0 -7
- data/ext/express_parser/antlrgen/ExpressVisitor.h +0 -422
- data/ext/express_parser/express_parser.cpp +0 -19405
- data/ext/express_parser/extconf.rb +0 -63
- data/rakelib/antlr4-native.rake +0 -173
- data/rakelib/cross-ruby.rake +0 -403
- data/spec/acceptance/version_spec.rb +0 -30
- data/spec/expressir/express/cache_spec.rb +0 -89
- data/spec/expressir/express/formatter_spec.rb +0 -171
- data/spec/expressir/express/parser_spec.rb +0 -141
- data/spec/expressir/model/model_element_spec.rb +0 -343
- data/spec/spec_helper.rb +0 -24
- data/spec/support/console_helper.rb +0 -29
- data/spec/syntax/multiple.exp +0 -23
- data/spec/syntax/multiple.yaml +0 -198
- data/spec/syntax/multiple_formatted.exp +0 -71
- data/spec/syntax/multiple_hyperlink_formatted.exp +0 -71
- data/spec/syntax/multiple_schema_head_hyperlink_formatted.exp +0 -13
- data/spec/syntax/remark.exp +0 -193
- data/spec/syntax/remark.yaml +0 -471
- data/spec/syntax/remark_formatted.exp +0 -228
- data/spec/syntax/single.exp +0 -4
- data/spec/syntax/single.yaml +0 -18
- data/spec/syntax/single_formatted.exp +0 -10
- data/spec/syntax/single_formatted.yaml +0 -36
- data/spec/syntax/syntax.exp +0 -333
- data/spec/syntax/syntax.yaml +0 -3509
- data/spec/syntax/syntax_formatted.exp +0 -902
- data/spec/syntax/syntax_hyperlink_formatted.exp +0 -902
- data/spec/syntax/syntax_schema_head_formatted.exp +0 -18
- /data/exe/{format → expressir-format} +0 -0
data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePattern.h
DELETED
@@ -1,105 +0,0 @@
|
|
1
|
-
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
|
2
|
-
* Use of this file is governed by the BSD 3-clause license that
|
3
|
-
* can be found in the LICENSE.txt file in the project root.
|
4
|
-
*/
|
5
|
-
|
6
|
-
#pragma once
|
7
|
-
|
8
|
-
#include "antlr4-common.h"
|
9
|
-
|
10
|
-
namespace antlr4 {
|
11
|
-
namespace tree {
|
12
|
-
namespace pattern {
|
13
|
-
|
14
|
-
/// <summary>
|
15
|
-
/// A pattern like {@code <ID> = <expr>;} converted to a <seealso cref="ParseTree"/> by
|
16
|
-
/// <seealso cref="ParseTreePatternMatcher#compile(String, int)"/>.
|
17
|
-
/// </summary>
|
18
|
-
class ANTLR4CPP_PUBLIC ParseTreePattern {
|
19
|
-
public:
|
20
|
-
/// <summary>
|
21
|
-
/// Construct a new instance of the <seealso cref="ParseTreePattern"/> class.
|
22
|
-
/// </summary>
|
23
|
-
/// <param name="matcher"> The <seealso cref="ParseTreePatternMatcher"/> which created this
|
24
|
-
/// tree pattern. </param>
|
25
|
-
/// <param name="pattern"> The tree pattern in concrete syntax form. </param>
|
26
|
-
/// <param name="patternRuleIndex"> The parser rule which serves as the root of the
|
27
|
-
/// tree pattern. </param>
|
28
|
-
/// <param name="patternTree"> The tree pattern in <seealso cref="ParseTree"/> form. </param>
|
29
|
-
ParseTreePattern(ParseTreePatternMatcher *matcher, const std::string &pattern, int patternRuleIndex,
|
30
|
-
ParseTree *patternTree);
|
31
|
-
ParseTreePattern(ParseTreePattern const&) = default;
|
32
|
-
virtual ~ParseTreePattern();
|
33
|
-
|
34
|
-
/// <summary>
|
35
|
-
/// Match a specific parse tree against this tree pattern.
|
36
|
-
/// </summary>
|
37
|
-
/// <param name="tree"> The parse tree to match against this tree pattern. </param>
|
38
|
-
/// <returns> A <seealso cref="ParseTreeMatch"/> object describing the result of the
|
39
|
-
/// match operation. The <seealso cref="ParseTreeMatch#succeeded()"/> method can be
|
40
|
-
/// used to determine whether or not the match was successful. </returns>
|
41
|
-
virtual ParseTreeMatch match(ParseTree *tree);
|
42
|
-
|
43
|
-
/// <summary>
|
44
|
-
/// Determine whether or not a parse tree matches this tree pattern.
|
45
|
-
/// </summary>
|
46
|
-
/// <param name="tree"> The parse tree to match against this tree pattern. </param>
|
47
|
-
/// <returns> {@code true} if {@code tree} is a match for the current tree
|
48
|
-
/// pattern; otherwise, {@code false}. </returns>
|
49
|
-
virtual bool matches(ParseTree *tree);
|
50
|
-
|
51
|
-
/// Find all nodes using XPath and then try to match those subtrees against
|
52
|
-
/// this tree pattern.
|
53
|
-
/// @param tree The ParseTree to match against this pattern.
|
54
|
-
/// @param xpath An expression matching the nodes
|
55
|
-
///
|
56
|
-
/// @returns A collection of ParseTreeMatch objects describing the
|
57
|
-
/// successful matches. Unsuccessful matches are omitted from the result,
|
58
|
-
/// regardless of the reason for the failure.
|
59
|
-
virtual std::vector<ParseTreeMatch> findAll(ParseTree *tree, const std::string &xpath);
|
60
|
-
|
61
|
-
/// <summary>
|
62
|
-
/// Get the <seealso cref="ParseTreePatternMatcher"/> which created this tree pattern.
|
63
|
-
/// </summary>
|
64
|
-
/// <returns> The <seealso cref="ParseTreePatternMatcher"/> which created this tree
|
65
|
-
/// pattern. </returns>
|
66
|
-
virtual ParseTreePatternMatcher *getMatcher() const;
|
67
|
-
|
68
|
-
/// <summary>
|
69
|
-
/// Get the tree pattern in concrete syntax form.
|
70
|
-
/// </summary>
|
71
|
-
/// <returns> The tree pattern in concrete syntax form. </returns>
|
72
|
-
virtual std::string getPattern() const;
|
73
|
-
|
74
|
-
/// <summary>
|
75
|
-
/// Get the parser rule which serves as the outermost rule for the tree
|
76
|
-
/// pattern.
|
77
|
-
/// </summary>
|
78
|
-
/// <returns> The parser rule which serves as the outermost rule for the tree
|
79
|
-
/// pattern. </returns>
|
80
|
-
virtual int getPatternRuleIndex() const;
|
81
|
-
|
82
|
-
/// <summary>
|
83
|
-
/// Get the tree pattern as a <seealso cref="ParseTree"/>. The rule and token tags from
|
84
|
-
/// the pattern are present in the parse tree as terminal nodes with a symbol
|
85
|
-
/// of type <seealso cref="RuleTagToken"/> or <seealso cref="TokenTagToken"/>.
|
86
|
-
/// </summary>
|
87
|
-
/// <returns> The tree pattern as a <seealso cref="ParseTree"/>. </returns>
|
88
|
-
virtual ParseTree* getPatternTree() const;
|
89
|
-
|
90
|
-
private:
|
91
|
-
const int patternRuleIndex;
|
92
|
-
|
93
|
-
/// This is the backing field for <seealso cref="#getPattern()"/>.
|
94
|
-
const std::string _pattern;
|
95
|
-
|
96
|
-
/// This is the backing field for <seealso cref="#getPatternTree()"/>.
|
97
|
-
ParseTree *_patternTree;
|
98
|
-
|
99
|
-
/// This is the backing field for <seealso cref="#getMatcher()"/>.
|
100
|
-
ParseTreePatternMatcher *const _matcher;
|
101
|
-
};
|
102
|
-
|
103
|
-
} // namespace pattern
|
104
|
-
} // namespace tree
|
105
|
-
} // namespace antlr4
|
@@ -1,370 +0,0 @@
|
|
1
|
-
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
|
2
|
-
* Use of this file is governed by the BSD 3-clause license that
|
3
|
-
* can be found in the LICENSE.txt file in the project root.
|
4
|
-
*/
|
5
|
-
|
6
|
-
#include "tree/pattern/ParseTreePattern.h"
|
7
|
-
#include "tree/pattern/ParseTreeMatch.h"
|
8
|
-
#include "tree/TerminalNode.h"
|
9
|
-
#include "CommonTokenStream.h"
|
10
|
-
#include "ParserInterpreter.h"
|
11
|
-
#include "tree/pattern/TokenTagToken.h"
|
12
|
-
#include "ParserRuleContext.h"
|
13
|
-
#include "tree/pattern/RuleTagToken.h"
|
14
|
-
#include "tree/pattern/TagChunk.h"
|
15
|
-
#include "atn/ATN.h"
|
16
|
-
#include "Lexer.h"
|
17
|
-
#include "BailErrorStrategy.h"
|
18
|
-
|
19
|
-
#include "ListTokenSource.h"
|
20
|
-
#include "tree/pattern/TextChunk.h"
|
21
|
-
#include "ANTLRInputStream.h"
|
22
|
-
#include "support/Arrays.h"
|
23
|
-
#include "Exceptions.h"
|
24
|
-
#include "support/CPPUtils.h"
|
25
|
-
|
26
|
-
#include "tree/pattern/ParseTreePatternMatcher.h"
|
27
|
-
|
28
|
-
using namespace antlr4;
|
29
|
-
using namespace antlr4::tree;
|
30
|
-
using namespace antlr4::tree::pattern;
|
31
|
-
using namespace antlrcpp;
|
32
|
-
|
33
|
-
ParseTreePatternMatcher::CannotInvokeStartRule::CannotInvokeStartRule(const RuntimeException &e) : RuntimeException(e.what()) {
|
34
|
-
}
|
35
|
-
|
36
|
-
ParseTreePatternMatcher::CannotInvokeStartRule::~CannotInvokeStartRule() {
|
37
|
-
}
|
38
|
-
|
39
|
-
ParseTreePatternMatcher::StartRuleDoesNotConsumeFullPattern::~StartRuleDoesNotConsumeFullPattern() {
|
40
|
-
}
|
41
|
-
|
42
|
-
ParseTreePatternMatcher::ParseTreePatternMatcher(Lexer *lexer, Parser *parser) : _lexer(lexer), _parser(parser) {
|
43
|
-
InitializeInstanceFields();
|
44
|
-
}
|
45
|
-
|
46
|
-
ParseTreePatternMatcher::~ParseTreePatternMatcher() {
|
47
|
-
}
|
48
|
-
|
49
|
-
void ParseTreePatternMatcher::setDelimiters(const std::string &start, const std::string &stop, const std::string &escapeLeft) {
|
50
|
-
if (start.empty()) {
|
51
|
-
throw IllegalArgumentException("start cannot be null or empty");
|
52
|
-
}
|
53
|
-
|
54
|
-
if (stop.empty()) {
|
55
|
-
throw IllegalArgumentException("stop cannot be null or empty");
|
56
|
-
}
|
57
|
-
|
58
|
-
_start = start;
|
59
|
-
_stop = stop;
|
60
|
-
_escape = escapeLeft;
|
61
|
-
}
|
62
|
-
|
63
|
-
bool ParseTreePatternMatcher::matches(ParseTree *tree, const std::string &pattern, int patternRuleIndex) {
|
64
|
-
ParseTreePattern p = compile(pattern, patternRuleIndex);
|
65
|
-
return matches(tree, p);
|
66
|
-
}
|
67
|
-
|
68
|
-
bool ParseTreePatternMatcher::matches(ParseTree *tree, const ParseTreePattern &pattern) {
|
69
|
-
std::map<std::string, std::vector<ParseTree *>> labels;
|
70
|
-
ParseTree *mismatchedNode = matchImpl(tree, pattern.getPatternTree(), labels);
|
71
|
-
return mismatchedNode == nullptr;
|
72
|
-
}
|
73
|
-
|
74
|
-
ParseTreeMatch ParseTreePatternMatcher::match(ParseTree *tree, const std::string &pattern, int patternRuleIndex) {
|
75
|
-
ParseTreePattern p = compile(pattern, patternRuleIndex);
|
76
|
-
return match(tree, p);
|
77
|
-
}
|
78
|
-
|
79
|
-
ParseTreeMatch ParseTreePatternMatcher::match(ParseTree *tree, const ParseTreePattern &pattern) {
|
80
|
-
std::map<std::string, std::vector<ParseTree *>> labels;
|
81
|
-
tree::ParseTree *mismatchedNode = matchImpl(tree, pattern.getPatternTree(), labels);
|
82
|
-
return ParseTreeMatch(tree, pattern, labels, mismatchedNode);
|
83
|
-
}
|
84
|
-
|
85
|
-
ParseTreePattern ParseTreePatternMatcher::compile(const std::string &pattern, int patternRuleIndex) {
|
86
|
-
ListTokenSource tokenSrc(tokenize(pattern));
|
87
|
-
CommonTokenStream tokens(&tokenSrc);
|
88
|
-
|
89
|
-
ParserInterpreter parserInterp(_parser->getGrammarFileName(), _parser->getVocabulary(),
|
90
|
-
_parser->getRuleNames(), _parser->getATNWithBypassAlts(), &tokens);
|
91
|
-
|
92
|
-
ParserRuleContext *tree = nullptr;
|
93
|
-
try {
|
94
|
-
parserInterp.setErrorHandler(std::make_shared<BailErrorStrategy>());
|
95
|
-
tree = parserInterp.parse(patternRuleIndex);
|
96
|
-
} catch (ParseCancellationException &e) {
|
97
|
-
#if defined(_MSC_FULL_VER) && _MSC_FULL_VER < 190023026
|
98
|
-
// rethrow_if_nested is not available before VS 2015.
|
99
|
-
throw e;
|
100
|
-
#else
|
101
|
-
std::rethrow_if_nested(e); // Unwrap the nested exception.
|
102
|
-
#endif
|
103
|
-
} catch (RecognitionException &re) {
|
104
|
-
throw re;
|
105
|
-
#if defined(_MSC_FULL_VER) && _MSC_FULL_VER < 190023026
|
106
|
-
} catch (std::exception &e) {
|
107
|
-
// throw_with_nested is not available before VS 2015.
|
108
|
-
throw e;
|
109
|
-
#else
|
110
|
-
} catch (std::exception & /*e*/) {
|
111
|
-
std::throw_with_nested(RuntimeException("Cannot invoke start rule")); // Wrap any other exception.
|
112
|
-
#endif
|
113
|
-
}
|
114
|
-
|
115
|
-
// Make sure tree pattern compilation checks for a complete parse
|
116
|
-
if (tokens.LA(1) != Token::EOF) {
|
117
|
-
throw StartRuleDoesNotConsumeFullPattern();
|
118
|
-
}
|
119
|
-
|
120
|
-
return ParseTreePattern(this, pattern, patternRuleIndex, tree);
|
121
|
-
}
|
122
|
-
|
123
|
-
Lexer* ParseTreePatternMatcher::getLexer() {
|
124
|
-
return _lexer;
|
125
|
-
}
|
126
|
-
|
127
|
-
Parser* ParseTreePatternMatcher::getParser() {
|
128
|
-
return _parser;
|
129
|
-
}
|
130
|
-
|
131
|
-
ParseTree* ParseTreePatternMatcher::matchImpl(ParseTree *tree, ParseTree *patternTree,
|
132
|
-
std::map<std::string, std::vector<ParseTree *>> &labels) {
|
133
|
-
if (tree == nullptr) {
|
134
|
-
throw IllegalArgumentException("tree cannot be nul");
|
135
|
-
}
|
136
|
-
|
137
|
-
if (patternTree == nullptr) {
|
138
|
-
throw IllegalArgumentException("patternTree cannot be nul");
|
139
|
-
}
|
140
|
-
|
141
|
-
// x and <ID>, x and y, or x and x; or could be mismatched types
|
142
|
-
if (is<TerminalNode *>(tree) && is<TerminalNode *>(patternTree)) {
|
143
|
-
TerminalNode *t1 = dynamic_cast<TerminalNode *>(tree);
|
144
|
-
TerminalNode *t2 = dynamic_cast<TerminalNode *>(patternTree);
|
145
|
-
|
146
|
-
ParseTree *mismatchedNode = nullptr;
|
147
|
-
// both are tokens and they have same type
|
148
|
-
if (t1->getSymbol()->getType() == t2->getSymbol()->getType()) {
|
149
|
-
if (is<TokenTagToken *>(t2->getSymbol())) { // x and <ID>
|
150
|
-
TokenTagToken *tokenTagToken = dynamic_cast<TokenTagToken *>(t2->getSymbol());
|
151
|
-
|
152
|
-
// track label->list-of-nodes for both token name and label (if any)
|
153
|
-
labels[tokenTagToken->getTokenName()].push_back(tree);
|
154
|
-
if (tokenTagToken->getLabel() != "") {
|
155
|
-
labels[tokenTagToken->getLabel()].push_back(tree);
|
156
|
-
}
|
157
|
-
} else if (t1->getText() == t2->getText()) {
|
158
|
-
// x and x
|
159
|
-
} else {
|
160
|
-
// x and y
|
161
|
-
if (mismatchedNode == nullptr) {
|
162
|
-
mismatchedNode = t1;
|
163
|
-
}
|
164
|
-
}
|
165
|
-
} else {
|
166
|
-
if (mismatchedNode == nullptr) {
|
167
|
-
mismatchedNode = t1;
|
168
|
-
}
|
169
|
-
}
|
170
|
-
|
171
|
-
return mismatchedNode;
|
172
|
-
}
|
173
|
-
|
174
|
-
if (is<ParserRuleContext *>(tree) && is<ParserRuleContext *>(patternTree)) {
|
175
|
-
ParserRuleContext *r1 = dynamic_cast<ParserRuleContext *>(tree);
|
176
|
-
ParserRuleContext *r2 = dynamic_cast<ParserRuleContext *>(patternTree);
|
177
|
-
ParseTree *mismatchedNode = nullptr;
|
178
|
-
|
179
|
-
// (expr ...) and <expr>
|
180
|
-
RuleTagToken *ruleTagToken = getRuleTagToken(r2);
|
181
|
-
if (ruleTagToken != nullptr) {
|
182
|
-
//ParseTreeMatch *m = nullptr; // unused?
|
183
|
-
if (r1->getRuleIndex() == r2->getRuleIndex()) {
|
184
|
-
// track label->list-of-nodes for both rule name and label (if any)
|
185
|
-
labels[ruleTagToken->getRuleName()].push_back(tree);
|
186
|
-
if (ruleTagToken->getLabel() != "") {
|
187
|
-
labels[ruleTagToken->getLabel()].push_back(tree);
|
188
|
-
}
|
189
|
-
} else {
|
190
|
-
if (!mismatchedNode) {
|
191
|
-
mismatchedNode = r1;
|
192
|
-
}
|
193
|
-
}
|
194
|
-
|
195
|
-
return mismatchedNode;
|
196
|
-
}
|
197
|
-
|
198
|
-
// (expr ...) and (expr ...)
|
199
|
-
if (r1->children.size() != r2->children.size()) {
|
200
|
-
if (mismatchedNode == nullptr) {
|
201
|
-
mismatchedNode = r1;
|
202
|
-
}
|
203
|
-
|
204
|
-
return mismatchedNode;
|
205
|
-
}
|
206
|
-
|
207
|
-
std::size_t n = r1->children.size();
|
208
|
-
for (size_t i = 0; i < n; i++) {
|
209
|
-
ParseTree *childMatch = matchImpl(r1->children[i], patternTree->children[i], labels);
|
210
|
-
if (childMatch) {
|
211
|
-
return childMatch;
|
212
|
-
}
|
213
|
-
}
|
214
|
-
|
215
|
-
return mismatchedNode;
|
216
|
-
}
|
217
|
-
|
218
|
-
// if nodes aren't both tokens or both rule nodes, can't match
|
219
|
-
return tree;
|
220
|
-
}
|
221
|
-
|
222
|
-
RuleTagToken* ParseTreePatternMatcher::getRuleTagToken(ParseTree *t) {
|
223
|
-
if (t->children.size() == 1 && is<TerminalNode *>(t->children[0])) {
|
224
|
-
TerminalNode *c = dynamic_cast<TerminalNode *>(t->children[0]);
|
225
|
-
if (is<RuleTagToken *>(c->getSymbol())) {
|
226
|
-
return dynamic_cast<RuleTagToken *>(c->getSymbol());
|
227
|
-
}
|
228
|
-
}
|
229
|
-
return nullptr;
|
230
|
-
}
|
231
|
-
|
232
|
-
std::vector<std::unique_ptr<Token>> ParseTreePatternMatcher::tokenize(const std::string &pattern) {
|
233
|
-
// split pattern into chunks: sea (raw input) and islands (<ID>, <expr>)
|
234
|
-
std::vector<Chunk> chunks = split(pattern);
|
235
|
-
|
236
|
-
// create token stream from text and tags
|
237
|
-
std::vector<std::unique_ptr<Token>> tokens;
|
238
|
-
for (auto chunk : chunks) {
|
239
|
-
if (is<TagChunk *>(&chunk)) {
|
240
|
-
TagChunk &tagChunk = (TagChunk&)chunk;
|
241
|
-
// add special rule token or conjure up new token from name
|
242
|
-
if (isupper(tagChunk.getTag()[0])) {
|
243
|
-
size_t ttype = _parser->getTokenType(tagChunk.getTag());
|
244
|
-
if (ttype == Token::INVALID_TYPE) {
|
245
|
-
throw IllegalArgumentException("Unknown token " + tagChunk.getTag() + " in pattern: " + pattern);
|
246
|
-
}
|
247
|
-
tokens.emplace_back(new TokenTagToken(tagChunk.getTag(), (int)ttype, tagChunk.getLabel()));
|
248
|
-
} else if (islower(tagChunk.getTag()[0])) {
|
249
|
-
size_t ruleIndex = _parser->getRuleIndex(tagChunk.getTag());
|
250
|
-
if (ruleIndex == INVALID_INDEX) {
|
251
|
-
throw IllegalArgumentException("Unknown rule " + tagChunk.getTag() + " in pattern: " + pattern);
|
252
|
-
}
|
253
|
-
size_t ruleImaginaryTokenType = _parser->getATNWithBypassAlts().ruleToTokenType[ruleIndex];
|
254
|
-
tokens.emplace_back(new RuleTagToken(tagChunk.getTag(), ruleImaginaryTokenType, tagChunk.getLabel()));
|
255
|
-
} else {
|
256
|
-
throw IllegalArgumentException("invalid tag: " + tagChunk.getTag() + " in pattern: " + pattern);
|
257
|
-
}
|
258
|
-
} else {
|
259
|
-
TextChunk &textChunk = (TextChunk&)chunk;
|
260
|
-
ANTLRInputStream input(textChunk.getText());
|
261
|
-
_lexer->setInputStream(&input);
|
262
|
-
std::unique_ptr<Token> t(_lexer->nextToken());
|
263
|
-
while (t->getType() != Token::EOF) {
|
264
|
-
tokens.push_back(std::move(t));
|
265
|
-
t = _lexer->nextToken();
|
266
|
-
}
|
267
|
-
_lexer->setInputStream(nullptr);
|
268
|
-
}
|
269
|
-
}
|
270
|
-
|
271
|
-
return tokens;
|
272
|
-
}
|
273
|
-
|
274
|
-
std::vector<Chunk> ParseTreePatternMatcher::split(const std::string &pattern) {
|
275
|
-
size_t p = 0;
|
276
|
-
size_t n = pattern.length();
|
277
|
-
std::vector<Chunk> chunks;
|
278
|
-
|
279
|
-
// find all start and stop indexes first, then collect
|
280
|
-
std::vector<size_t> starts;
|
281
|
-
std::vector<size_t> stops;
|
282
|
-
while (p < n) {
|
283
|
-
if (p == pattern.find(_escape + _start,p)) {
|
284
|
-
p += _escape.length() + _start.length();
|
285
|
-
} else if (p == pattern.find(_escape + _stop,p)) {
|
286
|
-
p += _escape.length() + _stop.length();
|
287
|
-
} else if (p == pattern.find(_start,p)) {
|
288
|
-
starts.push_back(p);
|
289
|
-
p += _start.length();
|
290
|
-
} else if (p == pattern.find(_stop,p)) {
|
291
|
-
stops.push_back(p);
|
292
|
-
p += _stop.length();
|
293
|
-
} else {
|
294
|
-
p++;
|
295
|
-
}
|
296
|
-
}
|
297
|
-
|
298
|
-
if (starts.size() > stops.size()) {
|
299
|
-
throw IllegalArgumentException("unterminated tag in pattern: " + pattern);
|
300
|
-
}
|
301
|
-
|
302
|
-
if (starts.size() < stops.size()) {
|
303
|
-
throw IllegalArgumentException("missing start tag in pattern: " + pattern);
|
304
|
-
}
|
305
|
-
|
306
|
-
size_t ntags = starts.size();
|
307
|
-
for (size_t i = 0; i < ntags; i++) {
|
308
|
-
if (starts[i] >= stops[i]) {
|
309
|
-
throw IllegalArgumentException("tag delimiters out of order in pattern: " + pattern);
|
310
|
-
}
|
311
|
-
}
|
312
|
-
|
313
|
-
// collect into chunks now
|
314
|
-
if (ntags == 0) {
|
315
|
-
std::string text = pattern.substr(0, n);
|
316
|
-
chunks.push_back(TextChunk(text));
|
317
|
-
}
|
318
|
-
|
319
|
-
if (ntags > 0 && starts[0] > 0) { // copy text up to first tag into chunks
|
320
|
-
std::string text = pattern.substr(0, starts[0]);
|
321
|
-
chunks.push_back(TextChunk(text));
|
322
|
-
}
|
323
|
-
|
324
|
-
for (size_t i = 0; i < ntags; i++) {
|
325
|
-
// copy inside of <tag>
|
326
|
-
std::string tag = pattern.substr(starts[i] + _start.length(), stops[i] - (starts[i] + _start.length()));
|
327
|
-
std::string ruleOrToken = tag;
|
328
|
-
std::string label = "";
|
329
|
-
size_t colon = tag.find(':');
|
330
|
-
if (colon != std::string::npos) {
|
331
|
-
label = tag.substr(0,colon);
|
332
|
-
ruleOrToken = tag.substr(colon + 1, tag.length() - (colon + 1));
|
333
|
-
}
|
334
|
-
chunks.push_back(TagChunk(label, ruleOrToken));
|
335
|
-
if (i + 1 < ntags) {
|
336
|
-
// copy from end of <tag> to start of next
|
337
|
-
std::string text = pattern.substr(stops[i] + _stop.length(), starts[i + 1] - (stops[i] + _stop.length()));
|
338
|
-
chunks.push_back(TextChunk(text));
|
339
|
-
}
|
340
|
-
}
|
341
|
-
|
342
|
-
if (ntags > 0) {
|
343
|
-
size_t afterLastTag = stops[ntags - 1] + _stop.length();
|
344
|
-
if (afterLastTag < n) { // copy text from end of last tag to end
|
345
|
-
std::string text = pattern.substr(afterLastTag, n - afterLastTag);
|
346
|
-
chunks.push_back(TextChunk(text));
|
347
|
-
}
|
348
|
-
}
|
349
|
-
|
350
|
-
// strip out all backslashes from text chunks but not tags
|
351
|
-
for (size_t i = 0; i < chunks.size(); i++) {
|
352
|
-
Chunk &c = chunks[i];
|
353
|
-
if (is<TextChunk *>(&c)) {
|
354
|
-
TextChunk &tc = (TextChunk&)c;
|
355
|
-
std::string unescaped = tc.getText();
|
356
|
-
unescaped.erase(std::remove(unescaped.begin(), unescaped.end(), '\\'), unescaped.end());
|
357
|
-
if (unescaped.length() < tc.getText().length()) {
|
358
|
-
chunks[i] = TextChunk(unescaped);
|
359
|
-
}
|
360
|
-
}
|
361
|
-
}
|
362
|
-
|
363
|
-
return chunks;
|
364
|
-
}
|
365
|
-
|
366
|
-
void ParseTreePatternMatcher::InitializeInstanceFields() {
|
367
|
-
_start = "<";
|
368
|
-
_stop = ">";
|
369
|
-
_escape = "\\";
|
370
|
-
}
|
@@ -1,185 +0,0 @@
|
|
1
|
-
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
|
2
|
-
* Use of this file is governed by the BSD 3-clause license that
|
3
|
-
* can be found in the LICENSE.txt file in the project root.
|
4
|
-
*/
|
5
|
-
|
6
|
-
#pragma once
|
7
|
-
|
8
|
-
#include "Exceptions.h"
|
9
|
-
|
10
|
-
namespace antlr4 {
|
11
|
-
namespace tree {
|
12
|
-
namespace pattern {
|
13
|
-
|
14
|
-
/// <summary>
|
15
|
-
/// A tree pattern matching mechanism for ANTLR <seealso cref="ParseTree"/>s.
|
16
|
-
/// <p/>
|
17
|
-
/// Patterns are strings of source input text with special tags representing
|
18
|
-
/// token or rule references such as:
|
19
|
-
/// <p/>
|
20
|
-
/// {@code <ID> = <expr>;}
|
21
|
-
/// <p/>
|
22
|
-
/// Given a pattern start rule such as {@code statement}, this object constructs
|
23
|
-
/// a <seealso cref="ParseTree"/> with placeholders for the {@code ID} and {@code expr}
|
24
|
-
/// subtree. Then the <seealso cref="#match"/> routines can compare an actual
|
25
|
-
/// <seealso cref="ParseTree"/> from a parse with this pattern. Tag {@code <ID>} matches
|
26
|
-
/// any {@code ID} token and tag {@code <expr>} references the result of the
|
27
|
-
/// {@code expr} rule (generally an instance of {@code ExprContext}.
|
28
|
-
/// <p/>
|
29
|
-
/// Pattern {@code x = 0;} is a similar pattern that matches the same pattern
|
30
|
-
/// except that it requires the identifier to be {@code x} and the expression to
|
31
|
-
/// be {@code 0}.
|
32
|
-
/// <p/>
|
33
|
-
/// The <seealso cref="#matches"/> routines return {@code true} or {@code false} based
|
34
|
-
/// upon a match for the tree rooted at the parameter sent in. The
|
35
|
-
/// <seealso cref="#match"/> routines return a <seealso cref="ParseTreeMatch"/> object that
|
36
|
-
/// contains the parse tree, the parse tree pattern, and a map from tag name to
|
37
|
-
/// matched nodes (more below). A subtree that fails to match, returns with
|
38
|
-
/// <seealso cref="ParseTreeMatch#mismatchedNode"/> set to the first tree node that did not
|
39
|
-
/// match.
|
40
|
-
/// <p/>
|
41
|
-
/// For efficiency, you can compile a tree pattern in string form to a
|
42
|
-
/// <seealso cref="ParseTreePattern"/> object.
|
43
|
-
/// <p/>
|
44
|
-
/// See {@code TestParseTreeMatcher} for lots of examples.
|
45
|
-
/// <seealso cref="ParseTreePattern"/> has two static helper methods:
|
46
|
-
/// <seealso cref="ParseTreePattern#findAll"/> and <seealso cref="ParseTreePattern#match"/> that
|
47
|
-
/// are easy to use but not super efficient because they create new
|
48
|
-
/// <seealso cref="ParseTreePatternMatcher"/> objects each time and have to compile the
|
49
|
-
/// pattern in string form before using it.
|
50
|
-
/// <p/>
|
51
|
-
/// The lexer and parser that you pass into the <seealso cref="ParseTreePatternMatcher"/>
|
52
|
-
/// constructor are used to parse the pattern in string form. The lexer converts
|
53
|
-
/// the {@code <ID> = <expr>;} into a sequence of four tokens (assuming lexer
|
54
|
-
/// throws out whitespace or puts it on a hidden channel). Be aware that the
|
55
|
-
/// input stream is reset for the lexer (but not the parser; a
|
56
|
-
/// <seealso cref="ParserInterpreter"/> is created to parse the input.). Any user-defined
|
57
|
-
/// fields you have put into the lexer might get changed when this mechanism asks
|
58
|
-
/// it to scan the pattern string.
|
59
|
-
/// <p/>
|
60
|
-
/// Normally a parser does not accept token {@code <expr>} as a valid
|
61
|
-
/// {@code expr} but, from the parser passed in, we create a special version of
|
62
|
-
/// the underlying grammar representation (an <seealso cref="ATN"/>) that allows imaginary
|
63
|
-
/// tokens representing rules ({@code <expr>}) to match entire rules. We call
|
64
|
-
/// these <em>bypass alternatives</em>.
|
65
|
-
/// <p/>
|
66
|
-
/// Delimiters are {@code <} and {@code >}, with {@code \} as the escape string
|
67
|
-
/// by default, but you can set them to whatever you want using
|
68
|
-
/// <seealso cref="#setDelimiters"/>. You must escape both start and stop strings
|
69
|
-
/// {@code \<} and {@code \>}.
|
70
|
-
/// </summary>
|
71
|
-
class ANTLR4CPP_PUBLIC ParseTreePatternMatcher {
|
72
|
-
public:
|
73
|
-
class CannotInvokeStartRule : public RuntimeException {
|
74
|
-
public:
|
75
|
-
CannotInvokeStartRule(const RuntimeException &e);
|
76
|
-
~CannotInvokeStartRule();
|
77
|
-
};
|
78
|
-
|
79
|
-
// Fixes https://github.com/antlr/antlr4/issues/413
|
80
|
-
// "Tree pattern compilation doesn't check for a complete parse"
|
81
|
-
class StartRuleDoesNotConsumeFullPattern : public RuntimeException {
|
82
|
-
public:
|
83
|
-
StartRuleDoesNotConsumeFullPattern() = default;
|
84
|
-
StartRuleDoesNotConsumeFullPattern(StartRuleDoesNotConsumeFullPattern const&) = default;
|
85
|
-
~StartRuleDoesNotConsumeFullPattern();
|
86
|
-
|
87
|
-
StartRuleDoesNotConsumeFullPattern& operator=(StartRuleDoesNotConsumeFullPattern const&) = default;
|
88
|
-
};
|
89
|
-
|
90
|
-
/// Constructs a <seealso cref="ParseTreePatternMatcher"/> or from a <seealso cref="Lexer"/> and
|
91
|
-
/// <seealso cref="Parser"/> object. The lexer input stream is altered for tokenizing
|
92
|
-
/// the tree patterns. The parser is used as a convenient mechanism to get
|
93
|
-
/// the grammar name, plus token, rule names.
|
94
|
-
ParseTreePatternMatcher(Lexer *lexer, Parser *parser);
|
95
|
-
virtual ~ParseTreePatternMatcher();
|
96
|
-
|
97
|
-
/// <summary>
|
98
|
-
/// Set the delimiters used for marking rule and token tags within concrete
|
99
|
-
/// syntax used by the tree pattern parser.
|
100
|
-
/// </summary>
|
101
|
-
/// <param name="start"> The start delimiter. </param>
|
102
|
-
/// <param name="stop"> The stop delimiter. </param>
|
103
|
-
/// <param name="escapeLeft"> The escape sequence to use for escaping a start or stop delimiter.
|
104
|
-
/// </param>
|
105
|
-
/// <exception cref="IllegalArgumentException"> if {@code start} is {@code null} or empty. </exception>
|
106
|
-
/// <exception cref="IllegalArgumentException"> if {@code stop} is {@code null} or empty. </exception>
|
107
|
-
virtual void setDelimiters(const std::string &start, const std::string &stop, const std::string &escapeLeft);
|
108
|
-
|
109
|
-
/// <summary>
|
110
|
-
/// Does {@code pattern} matched as rule {@code patternRuleIndex} match {@code tree}? </summary>
|
111
|
-
virtual bool matches(ParseTree *tree, const std::string &pattern, int patternRuleIndex);
|
112
|
-
|
113
|
-
/// <summary>
|
114
|
-
/// Does {@code pattern} matched as rule patternRuleIndex match tree? Pass in a
|
115
|
-
/// compiled pattern instead of a string representation of a tree pattern.
|
116
|
-
/// </summary>
|
117
|
-
virtual bool matches(ParseTree *tree, const ParseTreePattern &pattern);
|
118
|
-
|
119
|
-
/// <summary>
|
120
|
-
/// Compare {@code pattern} matched as rule {@code patternRuleIndex} against
|
121
|
-
/// {@code tree} and return a <seealso cref="ParseTreeMatch"/> object that contains the
|
122
|
-
/// matched elements, or the node at which the match failed.
|
123
|
-
/// </summary>
|
124
|
-
virtual ParseTreeMatch match(ParseTree *tree, const std::string &pattern, int patternRuleIndex);
|
125
|
-
|
126
|
-
/// <summary>
|
127
|
-
/// Compare {@code pattern} matched against {@code tree} and return a
|
128
|
-
/// <seealso cref="ParseTreeMatch"/> object that contains the matched elements, or the
|
129
|
-
/// node at which the match failed. Pass in a compiled pattern instead of a
|
130
|
-
/// string representation of a tree pattern.
|
131
|
-
/// </summary>
|
132
|
-
virtual ParseTreeMatch match(ParseTree *tree, const ParseTreePattern &pattern);
|
133
|
-
|
134
|
-
/// <summary>
|
135
|
-
/// For repeated use of a tree pattern, compile it to a
|
136
|
-
/// <seealso cref="ParseTreePattern"/> using this method.
|
137
|
-
/// </summary>
|
138
|
-
virtual ParseTreePattern compile(const std::string &pattern, int patternRuleIndex);
|
139
|
-
|
140
|
-
/// <summary>
|
141
|
-
/// Used to convert the tree pattern string into a series of tokens. The
|
142
|
-
/// input stream is reset.
|
143
|
-
/// </summary>
|
144
|
-
virtual Lexer* getLexer();
|
145
|
-
|
146
|
-
/// <summary>
|
147
|
-
/// Used to collect to the grammar file name, token names, rule names for
|
148
|
-
/// used to parse the pattern into a parse tree.
|
149
|
-
/// </summary>
|
150
|
-
virtual Parser* getParser();
|
151
|
-
|
152
|
-
// ---- SUPPORT CODE ----
|
153
|
-
|
154
|
-
virtual std::vector<std::unique_ptr<Token>> tokenize(const std::string &pattern);
|
155
|
-
|
156
|
-
/// Split "<ID> = <e:expr>;" into 4 chunks for tokenizing by tokenize().
|
157
|
-
virtual std::vector<Chunk> split(const std::string &pattern);
|
158
|
-
|
159
|
-
protected:
|
160
|
-
std::string _start;
|
161
|
-
std::string _stop;
|
162
|
-
std::string _escape; // e.g., \< and \> must escape BOTH!
|
163
|
-
|
164
|
-
/// Recursively walk {@code tree} against {@code patternTree}, filling
|
165
|
-
/// {@code match.}<seealso cref="ParseTreeMatch#labels labels"/>.
|
166
|
-
///
|
167
|
-
/// <returns> the first node encountered in {@code tree} which does not match
|
168
|
-
/// a corresponding node in {@code patternTree}, or {@code null} if the match
|
169
|
-
/// was successful. The specific node returned depends on the matching
|
170
|
-
/// algorithm used by the implementation, and may be overridden. </returns>
|
171
|
-
virtual ParseTree* matchImpl(ParseTree *tree, ParseTree *patternTree, std::map<std::string, std::vector<ParseTree *>> &labels);
|
172
|
-
|
173
|
-
/// Is t <expr> subtree?
|
174
|
-
virtual RuleTagToken* getRuleTagToken(ParseTree *t);
|
175
|
-
|
176
|
-
private:
|
177
|
-
Lexer *_lexer;
|
178
|
-
Parser *_parser;
|
179
|
-
|
180
|
-
void InitializeInstanceFields();
|
181
|
-
};
|
182
|
-
|
183
|
-
} // namespace pattern
|
184
|
-
} // namespace tree
|
185
|
-
} // namespace antlr4
|