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.
Files changed (482) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/codeql.yml +2 -14
  3. data/.github/workflows/rake.yml +6 -364
  4. data/.github/workflows/release.yml +15 -178
  5. data/.github/workflows/stress.yml +1 -18
  6. data/.rubocop.yml +1 -0
  7. data/.rubocop_todo.yml +21 -0
  8. data/Gemfile +12 -0
  9. data/README.adoc +6 -19
  10. data/Rakefile +6 -7
  11. data/exe/{format-test → expressir-format-test} +1 -1
  12. data/expressir.gemspec +23 -32
  13. data/expressir_wrapped.txt +23068 -0
  14. data/lib/expressir/cli.rb +1 -1
  15. data/lib/expressir/express/formatter.rb +661 -661
  16. data/lib/expressir/express/parser.rb +299 -33
  17. data/lib/expressir/express/visitor.rb +238 -133
  18. data/lib/expressir/liquid/cache_drop.rb +20 -0
  19. data/lib/expressir/liquid/data_type_drop.rb +8 -0
  20. data/lib/expressir/liquid/data_types/aggregate_drop.rb +21 -0
  21. data/lib/expressir/liquid/data_types/array_drop.rb +34 -0
  22. data/lib/expressir/liquid/data_types/bag_drop.rb +26 -0
  23. data/lib/expressir/liquid/data_types/binary_drop.rb +22 -0
  24. data/lib/expressir/liquid/data_types/boolean_drop.rb +10 -0
  25. data/lib/expressir/liquid/data_types/enumeration_drop.rb +30 -0
  26. data/lib/expressir/liquid/data_types/enumeration_item_drop.rb +17 -0
  27. data/lib/expressir/liquid/data_types/generic_drop.rb +17 -0
  28. data/lib/expressir/liquid/data_types/generic_entity_drop.rb +17 -0
  29. data/lib/expressir/liquid/data_types/integer_drop.rb +10 -0
  30. data/lib/expressir/liquid/data_types/list_drop.rb +30 -0
  31. data/lib/expressir/liquid/data_types/logical_drop.rb +10 -0
  32. data/lib/expressir/liquid/data_types/number_drop.rb +10 -0
  33. data/lib/expressir/liquid/data_types/real_drop.rb +18 -0
  34. data/lib/expressir/liquid/data_types/select_drop.rb +34 -0
  35. data/lib/expressir/liquid/data_types/set_drop.rb +26 -0
  36. data/lib/expressir/liquid/data_types/string_drop.rb +22 -0
  37. data/lib/expressir/liquid/declaration_drop.rb +8 -0
  38. data/lib/expressir/liquid/declarations/attribute_drop.rb +37 -0
  39. data/lib/expressir/liquid/declarations/constant_drop.rb +25 -0
  40. data/lib/expressir/liquid/declarations/entity_drop.rb +65 -0
  41. data/lib/expressir/liquid/declarations/function_drop.rb +93 -0
  42. data/lib/expressir/liquid/declarations/interface_drop.rb +30 -0
  43. data/lib/expressir/liquid/declarations/interface_item_drop.rb +22 -0
  44. data/lib/expressir/liquid/declarations/interfaced_item_drop.rb +34 -0
  45. data/lib/expressir/liquid/declarations/parameter_drop.rb +25 -0
  46. data/lib/expressir/liquid/declarations/procedure_drop.rb +89 -0
  47. data/lib/expressir/liquid/declarations/remark_item_drop.rb +22 -0
  48. data/lib/expressir/liquid/declarations/rule_drop.rb +105 -0
  49. data/lib/expressir/liquid/declarations/schema_drop.rb +91 -0
  50. data/lib/expressir/liquid/declarations/schema_version_drop.rb +26 -0
  51. data/lib/expressir/liquid/declarations/schema_version_item_drop.rb +22 -0
  52. data/lib/expressir/liquid/declarations/subtype_constraint_drop.rb +37 -0
  53. data/lib/expressir/liquid/declarations/type_drop.rb +37 -0
  54. data/lib/expressir/liquid/declarations/unique_rule_drop.rb +21 -0
  55. data/lib/expressir/liquid/declarations/variable_drop.rb +25 -0
  56. data/lib/expressir/liquid/declarations/where_rule_drop.rb +21 -0
  57. data/lib/expressir/liquid/expression_drop.rb +8 -0
  58. data/lib/expressir/liquid/expressions/aggregate_initializer_drop.rb +24 -0
  59. data/lib/expressir/liquid/expressions/aggregate_initializer_item_drop.rb +22 -0
  60. data/lib/expressir/liquid/expressions/binary_expression_drop.rb +26 -0
  61. data/lib/expressir/liquid/expressions/entity_constructor_drop.rb +26 -0
  62. data/lib/expressir/liquid/expressions/function_call_drop.rb +26 -0
  63. data/lib/expressir/liquid/expressions/interval_drop.rb +34 -0
  64. data/lib/expressir/liquid/expressions/query_expression_drop.rb +25 -0
  65. data/lib/expressir/liquid/expressions/unary_expression_drop.rb +22 -0
  66. data/lib/expressir/liquid/identifier_drop.rb +33 -0
  67. data/lib/expressir/liquid/literal_drop.rb +8 -0
  68. data/lib/expressir/liquid/literals/binary_drop.rb +18 -0
  69. data/lib/expressir/liquid/literals/integer_drop.rb +18 -0
  70. data/lib/expressir/liquid/literals/logical_drop.rb +18 -0
  71. data/lib/expressir/liquid/literals/real_drop.rb +18 -0
  72. data/lib/expressir/liquid/literals/string_drop.rb +22 -0
  73. data/lib/expressir/liquid/model_element_drop.rb +33 -0
  74. data/lib/expressir/liquid/reference_drop.rb +8 -0
  75. data/lib/expressir/liquid/references/attribute_reference_drop.rb +22 -0
  76. data/lib/expressir/liquid/references/group_reference_drop.rb +22 -0
  77. data/lib/expressir/liquid/references/index_reference_drop.rb +26 -0
  78. data/lib/expressir/liquid/references/simple_reference_drop.rb +22 -0
  79. data/lib/expressir/liquid/repository_drop.rb +22 -0
  80. data/lib/expressir/liquid/statement_drop.rb +8 -0
  81. data/lib/expressir/liquid/statements/alias_drop.rb +29 -0
  82. data/lib/expressir/liquid/statements/assignment_drop.rb +22 -0
  83. data/lib/expressir/liquid/statements/case_action_drop.rb +26 -0
  84. data/lib/expressir/liquid/statements/case_drop.rb +30 -0
  85. data/lib/expressir/liquid/statements/compound_drop.rb +22 -0
  86. data/lib/expressir/liquid/statements/escape_drop.rb +10 -0
  87. data/lib/expressir/liquid/statements/if_drop.rb +34 -0
  88. data/lib/expressir/liquid/statements/null_drop.rb +10 -0
  89. data/lib/expressir/liquid/statements/procedure_call_drop.rb +26 -0
  90. data/lib/expressir/liquid/statements/repeat_drop.rb +45 -0
  91. data/lib/expressir/liquid/statements/return_drop.rb +18 -0
  92. data/lib/expressir/liquid/statements/skip_drop.rb +10 -0
  93. data/lib/expressir/liquid/supertype_expression_drop.rb +8 -0
  94. data/lib/expressir/liquid/supertype_expressions/binary_supertype_expression_drop.rb +26 -0
  95. data/lib/expressir/liquid/supertype_expressions/oneof_supertype_expression_drop.rb +22 -0
  96. data/lib/expressir/liquid.rb +18 -0
  97. data/lib/expressir/model/declarations/interface_item.rb +1 -1
  98. data/lib/expressir/model/model_element.rb +7 -0
  99. data/lib/expressir/version.rb +1 -1
  100. data/lib/expressir.rb +2 -0
  101. metadata +101 -569
  102. data/.cross_rubies +0 -28
  103. data/.gitmodules +0 -6
  104. data/.yardopts +0 -11
  105. data/exe/generate-parser +0 -51
  106. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/CMakeLists.txt +0 -191
  107. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2019.vcxproj +0 -652
  108. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2019.vcxproj.filters +0 -948
  109. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2022.vcxproj +0 -652
  110. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2022.vcxproj.filters +0 -948
  111. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp-ios/Info.plist +0 -26
  112. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp-ios/antlrcpp_ios.h +0 -17
  113. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/project.pbxproj +0 -3040
  114. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  115. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  116. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/xcshareddata/xcschemes/antlr4.xcscheme +0 -76
  117. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/xcshareddata/xcschemes/antlr4_ios.xcscheme +0 -76
  118. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/xcshareddata/xcschemes/antlr4_static.xcscheme +0 -76
  119. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/nuget/ANTLR4.Runtime.cpp.noarch.nuspec +0 -23
  120. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/nuget/ANTLR4.Runtime.cpp.noarch.targets +0 -8
  121. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/nuget/ANTLR4.Runtime.cpp.shared.nuspec +0 -30
  122. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/nuget/ANTLR4.Runtime.cpp.shared.props +0 -21
  123. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/nuget/ANTLR4.Runtime.cpp.shared.targets +0 -44
  124. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/nuget/ANTLR4.Runtime.cpp.static.nuspec +0 -29
  125. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/nuget/ANTLR4.Runtime.cpp.static.targets +0 -44
  126. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/nuget/antlr4.jpg +0 -0
  127. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/nuget/pack.cmd +0 -93
  128. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorListener.cpp +0 -10
  129. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorListener.h +0 -167
  130. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorStrategy.cpp +0 -10
  131. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorStrategy.h +0 -121
  132. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRFileStream.cpp +0 -23
  133. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRFileStream.h +0 -30
  134. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRInputStream.cpp +0 -180
  135. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRInputStream.h +0 -79
  136. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/BailErrorStrategy.cpp +0 -61
  137. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/BailErrorStrategy.h +0 -59
  138. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/BaseErrorListener.cpp +0 -25
  139. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/BaseErrorListener.h +0 -36
  140. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/BufferedTokenStream.cpp +0 -414
  141. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/BufferedTokenStream.h +0 -200
  142. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/CharStream.cpp +0 -11
  143. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/CharStream.h +0 -37
  144. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonToken.cpp +0 -193
  145. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonToken.h +0 -158
  146. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenFactory.cpp +0 -39
  147. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenFactory.h +0 -74
  148. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenStream.cpp +0 -78
  149. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenStream.h +0 -79
  150. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ConsoleErrorListener.cpp +0 -15
  151. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ConsoleErrorListener.h +0 -35
  152. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/DefaultErrorStrategy.cpp +0 -336
  153. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/DefaultErrorStrategy.h +0 -466
  154. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/DiagnosticErrorListener.cpp +0 -84
  155. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/DiagnosticErrorListener.h +0 -80
  156. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Exceptions.cpp +0 -64
  157. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Exceptions.h +0 -99
  158. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/FailedPredicateException.cpp +0 -52
  159. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/FailedPredicateException.h +0 -32
  160. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/FlatHashMap.h +0 -57
  161. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/FlatHashSet.h +0 -57
  162. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/InputMismatchException.cpp +0 -18
  163. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/InputMismatchException.h +0 -24
  164. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/IntStream.cpp +0 -12
  165. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/IntStream.h +0 -218
  166. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/InterpreterRuleContext.cpp +0 -19
  167. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/InterpreterRuleContext.h +0 -45
  168. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Lexer.cpp +0 -294
  169. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Lexer.h +0 -196
  170. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerInterpreter.cpp +0 -60
  171. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerInterpreter.h +0 -46
  172. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerNoViableAltException.cpp +0 -36
  173. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerNoViableAltException.h +0 -31
  174. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ListTokenSource.cpp +0 -92
  175. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ListTokenSource.h +0 -88
  176. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/NoViableAltException.cpp +0 -46
  177. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/NoViableAltException.h +0 -42
  178. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Parser.cpp +0 -670
  179. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Parser.h +0 -461
  180. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserInterpreter.cpp +0 -294
  181. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserInterpreter.h +0 -173
  182. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserRuleContext.cpp +0 -138
  183. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserRuleContext.h +0 -147
  184. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ProxyErrorListener.cpp +0 -53
  185. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ProxyErrorListener.h +0 -38
  186. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/RecognitionException.cpp +0 -65
  187. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/RecognitionException.h +0 -98
  188. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Recognizer.cpp +0 -157
  189. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Recognizer.h +0 -160
  190. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContext.cpp +0 -144
  191. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContext.h +0 -141
  192. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContextWithAltNum.cpp +0 -27
  193. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContextWithAltNum.h +0 -32
  194. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/RuntimeMetaData.cpp +0 -54
  195. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/RuntimeMetaData.h +0 -155
  196. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Token.cpp +0 -9
  197. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Token.h +0 -92
  198. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenFactory.h +0 -30
  199. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenSource.cpp +0 -9
  200. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenSource.h +0 -85
  201. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStream.cpp +0 -11
  202. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStream.h +0 -137
  203. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStreamRewriter.cpp +0 -425
  204. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStreamRewriter.h +0 -295
  205. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedCharStream.cpp +0 -208
  206. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedCharStream.h +0 -117
  207. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedTokenStream.cpp +0 -270
  208. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedTokenStream.h +0 -115
  209. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Version.h +0 -42
  210. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Vocabulary.cpp +0 -64
  211. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Vocabulary.h +0 -177
  212. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/WritableToken.cpp +0 -9
  213. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/WritableToken.h +0 -23
  214. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/antlr4-common.h +0 -101
  215. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/antlr4-runtime.h +0 -168
  216. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATN.cpp +0 -159
  217. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATN.h +0 -133
  218. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfig.cpp +0 -106
  219. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfig.h +0 -157
  220. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfigSet.cpp +0 -233
  221. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfigSet.h +0 -157
  222. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.cpp +0 -39
  223. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.h +0 -48
  224. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializer.cpp +0 -628
  225. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializer.h +0 -32
  226. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSimulator.cpp +0 -33
  227. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSimulator.h +0 -71
  228. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNState.cpp +0 -56
  229. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNState.h +0 -139
  230. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNStateType.cpp +0 -33
  231. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNStateType.h +0 -36
  232. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNType.h +0 -20
  233. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ActionTransition.cpp +0 -29
  234. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ActionTransition.h +0 -35
  235. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AmbiguityInfo.cpp +0 -16
  236. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AmbiguityInfo.h +0 -68
  237. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.cpp +0 -129
  238. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.h +0 -51
  239. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AtomTransition.cpp +0 -27
  240. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AtomTransition.h +0 -33
  241. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicBlockStartState.h +0 -24
  242. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicState.h +0 -23
  243. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockEndState.h +0 -26
  244. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockStartState.h +0 -30
  245. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ContextSensitivityInfo.cpp +0 -14
  246. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ContextSensitivityInfo.h +0 -47
  247. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionEventInfo.cpp +0 -14
  248. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionEventInfo.h +0 -70
  249. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionInfo.cpp +0 -25
  250. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionInfo.h +0 -227
  251. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionState.cpp +0 -12
  252. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionState.h +0 -34
  253. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EpsilonTransition.cpp +0 -31
  254. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EpsilonTransition.h +0 -42
  255. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ErrorInfo.cpp +0 -15
  256. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ErrorInfo.h +0 -43
  257. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/HashUtils.h +0 -18
  258. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LL1Analyzer.cpp +0 -189
  259. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LL1Analyzer.h +0 -76
  260. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNConfig.cpp +0 -67
  261. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNConfig.h +0 -44
  262. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNSimulator.cpp +0 -621
  263. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNSimulator.h +0 -199
  264. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerAction.cpp +0 -15
  265. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerAction.h +0 -100
  266. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionExecutor.cpp +0 -108
  267. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionExecutor.h +0 -128
  268. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionType.h +0 -57
  269. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerChannelAction.cpp +0 -43
  270. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerChannelAction.h +0 -59
  271. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerCustomAction.cpp +0 -45
  272. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerCustomAction.h +0 -75
  273. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.cpp +0 -50
  274. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.h +0 -76
  275. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerModeAction.cpp +0 -43
  276. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerModeAction.h +0 -57
  277. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerMoreAction.cpp +0 -36
  278. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerMoreAction.h +0 -53
  279. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPopModeAction.cpp +0 -36
  280. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPopModeAction.h +0 -53
  281. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPushModeAction.cpp +0 -43
  282. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPushModeAction.h +0 -57
  283. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerSkipAction.cpp +0 -36
  284. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerSkipAction.h +0 -51
  285. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerTypeAction.cpp +0 -43
  286. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerTypeAction.h +0 -51
  287. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LookaheadEventInfo.cpp +0 -16
  288. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LookaheadEventInfo.h +0 -42
  289. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LoopEndState.h +0 -26
  290. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/NotSetTransition.cpp +0 -22
  291. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/NotSetTransition.h +0 -27
  292. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.cpp +0 -16
  293. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.h +0 -25
  294. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParseInfo.cpp +0 -102
  295. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParseInfo.h +0 -102
  296. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulator.cpp +0 -1413
  297. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulator.h +0 -911
  298. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulatorOptions.h +0 -50
  299. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusBlockStartState.h +0 -29
  300. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusLoopbackState.h +0 -25
  301. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.cpp +0 -23
  302. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.h +0 -35
  303. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.cpp +0 -17
  304. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.h +0 -62
  305. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateTransition.cpp +0 -24
  306. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateTransition.h +0 -50
  307. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContext.cpp +0 -601
  308. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContext.h +0 -225
  309. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextCache.cpp +0 -56
  310. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextCache.h +0 -63
  311. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextMergeCache.cpp +0 -167
  312. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextMergeCache.h +0 -101
  313. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextMergeCacheOptions.h +0 -71
  314. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextType.h +0 -21
  315. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionMode.cpp +0 -202
  316. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionMode.h +0 -436
  317. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.cpp +0 -179
  318. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.h +0 -60
  319. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RangeTransition.cpp +0 -26
  320. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RangeTransition.h +0 -31
  321. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStartState.h +0 -26
  322. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStopState.h +0 -27
  323. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleTransition.cpp +0 -33
  324. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleTransition.h +0 -42
  325. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContext.cpp +0 -418
  326. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContext.h +0 -237
  327. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContextType.h +0 -23
  328. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SerializedATNView.h +0 -101
  329. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SetTransition.cpp +0 -28
  330. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SetTransition.h +0 -38
  331. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.cpp +0 -79
  332. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.h +0 -43
  333. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarBlockStartState.h +0 -24
  334. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopEntryState.h +0 -37
  335. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopbackState.cpp +0 -19
  336. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopbackState.h +0 -25
  337. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TokensStartState.h +0 -24
  338. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Transition.cpp +0 -36
  339. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Transition.h +0 -65
  340. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TransitionType.cpp +0 -27
  341. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TransitionType.h +0 -33
  342. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/WildcardTransition.cpp +0 -21
  343. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/WildcardTransition.h +0 -27
  344. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFA.cpp +0 -115
  345. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFA.h +0 -96
  346. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFASerializer.cpp +0 -60
  347. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFASerializer.h +0 -32
  348. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFAState.cpp +0 -59
  349. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFAState.h +0 -154
  350. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.cpp +0 -17
  351. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.h +0 -22
  352. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/internal/Synchronization.cpp +0 -100
  353. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/internal/Synchronization.h +0 -154
  354. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/InterpreterDataReader.cpp +0 -124
  355. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/InterpreterDataReader.h +0 -33
  356. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Interval.cpp +0 -61
  357. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Interval.h +0 -84
  358. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/IntervalSet.cpp +0 -508
  359. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/IntervalSet.h +0 -190
  360. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/MurmurHash.cpp +0 -120
  361. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/MurmurHash.h +0 -102
  362. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Predicate.cpp +0 -4
  363. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Predicate.h +0 -21
  364. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Any.cpp +0 -8
  365. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Any.h +0 -16
  366. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Arrays.cpp +0 -43
  367. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Arrays.h +0 -149
  368. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/BitSet.h +0 -76
  369. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/CPPUtils.cpp +0 -207
  370. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/CPPUtils.h +0 -65
  371. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Casts.h +0 -34
  372. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Declarations.h +0 -161
  373. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/StringUtils.cpp +0 -38
  374. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/StringUtils.h +0 -16
  375. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Unicode.h +0 -28
  376. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Utf8.cpp +0 -242
  377. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Utf8.h +0 -54
  378. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/AbstractParseTreeVisitor.h +0 -129
  379. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNode.h +0 -24
  380. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.cpp +0 -54
  381. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.h +0 -43
  382. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/IterativeParseTreeWalker.cpp +0 -66
  383. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/IterativeParseTreeWalker.h +0 -53
  384. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTree.cpp +0 -12
  385. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTree.h +0 -111
  386. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeListener.cpp +0 -9
  387. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeListener.h +0 -39
  388. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeProperty.h +0 -50
  389. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeType.h +0 -22
  390. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeVisitor.cpp +0 -9
  391. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeVisitor.h +0 -57
  392. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeWalker.cpp +0 -48
  393. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeWalker.h +0 -55
  394. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNode.h +0 -40
  395. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.cpp +0 -54
  396. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.h +0 -32
  397. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/Trees.cpp +0 -241
  398. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/Trees.h +0 -78
  399. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/Chunk.cpp +0 -9
  400. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/Chunk.h +0 -44
  401. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreeMatch.cpp +0 -69
  402. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreeMatch.h +0 -132
  403. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePattern.cpp +0 -64
  404. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePattern.h +0 -105
  405. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePatternMatcher.cpp +0 -370
  406. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePatternMatcher.h +0 -185
  407. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/RuleTagToken.cpp +0 -77
  408. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/RuleTagToken.h +0 -117
  409. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TagChunk.cpp +0 -39
  410. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TagChunk.h +0 -86
  411. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TextChunk.cpp +0 -28
  412. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TextChunk.h +0 -51
  413. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TokenTagToken.cpp +0 -36
  414. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TokenTagToken.h +0 -80
  415. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPath.cpp +0 -154
  416. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPath.h +0 -86
  417. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathElement.cpp +0 -31
  418. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathElement.h +0 -40
  419. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.cpp +0 -180
  420. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.g4 +0 -64
  421. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.h +0 -53
  422. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.tokens +0 -12
  423. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexerErrorListener.cpp +0 -13
  424. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexerErrorListener.h +0 -22
  425. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleAnywhereElement.cpp +0 -20
  426. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleAnywhereElement.h +0 -27
  427. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleElement.cpp +0 -30
  428. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleElement.h +0 -26
  429. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenAnywhereElement.cpp +0 -20
  430. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenAnywhereElement.h +0 -25
  431. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenElement.cpp +0 -33
  432. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenElement.h +0 -26
  433. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardAnywhereElement.cpp +0 -23
  434. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardAnywhereElement.h +0 -23
  435. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardElement.cpp +0 -24
  436. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardElement.h +0 -23
  437. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/tests/Utf8Test.cpp +0 -110
  438. data/ext/express_parser/antlrgen/Express.interp +0 -532
  439. data/ext/express_parser/antlrgen/Express.tokens +0 -190
  440. data/ext/express_parser/antlrgen/ExpressBaseListener.cpp +0 -7
  441. data/ext/express_parser/antlrgen/ExpressBaseListener.h +0 -623
  442. data/ext/express_parser/antlrgen/ExpressBaseVisitor.cpp +0 -7
  443. data/ext/express_parser/antlrgen/ExpressBaseVisitor.h +0 -816
  444. data/ext/express_parser/antlrgen/ExpressLexer.cpp +0 -685
  445. data/ext/express_parser/antlrgen/ExpressLexer.h +0 -78
  446. data/ext/express_parser/antlrgen/ExpressLexer.interp +0 -534
  447. data/ext/express_parser/antlrgen/ExpressLexer.tokens +0 -190
  448. data/ext/express_parser/antlrgen/ExpressListener.cpp +0 -7
  449. data/ext/express_parser/antlrgen/ExpressListener.h +0 -616
  450. data/ext/express_parser/antlrgen/ExpressParser.cpp +0 -17591
  451. data/ext/express_parser/antlrgen/ExpressParser.h +0 -3692
  452. data/ext/express_parser/antlrgen/ExpressVisitor.cpp +0 -7
  453. data/ext/express_parser/antlrgen/ExpressVisitor.h +0 -422
  454. data/ext/express_parser/express_parser.cpp +0 -19405
  455. data/ext/express_parser/extconf.rb +0 -63
  456. data/rakelib/antlr4-native.rake +0 -173
  457. data/rakelib/cross-ruby.rake +0 -403
  458. data/spec/acceptance/version_spec.rb +0 -30
  459. data/spec/expressir/express/cache_spec.rb +0 -89
  460. data/spec/expressir/express/formatter_spec.rb +0 -171
  461. data/spec/expressir/express/parser_spec.rb +0 -141
  462. data/spec/expressir/model/model_element_spec.rb +0 -343
  463. data/spec/spec_helper.rb +0 -24
  464. data/spec/support/console_helper.rb +0 -29
  465. data/spec/syntax/multiple.exp +0 -23
  466. data/spec/syntax/multiple.yaml +0 -198
  467. data/spec/syntax/multiple_formatted.exp +0 -71
  468. data/spec/syntax/multiple_hyperlink_formatted.exp +0 -71
  469. data/spec/syntax/multiple_schema_head_hyperlink_formatted.exp +0 -13
  470. data/spec/syntax/remark.exp +0 -193
  471. data/spec/syntax/remark.yaml +0 -471
  472. data/spec/syntax/remark_formatted.exp +0 -228
  473. data/spec/syntax/single.exp +0 -4
  474. data/spec/syntax/single.yaml +0 -18
  475. data/spec/syntax/single_formatted.exp +0 -10
  476. data/spec/syntax/single_formatted.yaml +0 -36
  477. data/spec/syntax/syntax.exp +0 -333
  478. data/spec/syntax/syntax.yaml +0 -3509
  479. data/spec/syntax/syntax_formatted.exp +0 -902
  480. data/spec/syntax/syntax_hyperlink_formatted.exp +0 -902
  481. data/spec/syntax/syntax_schema_head_formatted.exp +0 -18
  482. /data/exe/{format → expressir-format} +0 -0
@@ -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