expressir 1.4.2 → 2.0.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 (399) 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 +7 -0
  8. data/Gemfile +13 -0
  9. data/README.adoc +6 -19
  10. data/Rakefile +6 -7
  11. data/expressir.gemspec +23 -32
  12. data/expressir_wrapped.txt +23068 -0
  13. data/lib/expressir/cli.rb +3 -2
  14. data/lib/expressir/express/formatter.rb +661 -661
  15. data/lib/expressir/express/parser.rb +299 -33
  16. data/lib/expressir/express/visitor.rb +238 -133
  17. data/lib/expressir/model/declarations/interface_item.rb +1 -1
  18. data/lib/expressir/version.rb +1 -1
  19. metadata +15 -573
  20. data/.cross_rubies +0 -28
  21. data/.gitmodules +0 -6
  22. data/.yardopts +0 -11
  23. data/exe/generate-parser +0 -51
  24. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/CMakeLists.txt +0 -191
  25. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2019.vcxproj +0 -652
  26. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2019.vcxproj.filters +0 -948
  27. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2022.vcxproj +0 -652
  28. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2022.vcxproj.filters +0 -948
  29. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp-ios/Info.plist +0 -26
  30. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp-ios/antlrcpp_ios.h +0 -17
  31. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/project.pbxproj +0 -3040
  32. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  33. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  34. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/xcshareddata/xcschemes/antlr4.xcscheme +0 -76
  35. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/xcshareddata/xcschemes/antlr4_ios.xcscheme +0 -76
  36. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/xcshareddata/xcschemes/antlr4_static.xcscheme +0 -76
  37. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/nuget/ANTLR4.Runtime.cpp.noarch.nuspec +0 -23
  38. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/nuget/ANTLR4.Runtime.cpp.noarch.targets +0 -8
  39. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/nuget/ANTLR4.Runtime.cpp.shared.nuspec +0 -30
  40. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/nuget/ANTLR4.Runtime.cpp.shared.props +0 -21
  41. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/nuget/ANTLR4.Runtime.cpp.shared.targets +0 -44
  42. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/nuget/ANTLR4.Runtime.cpp.static.nuspec +0 -29
  43. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/nuget/ANTLR4.Runtime.cpp.static.targets +0 -44
  44. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/nuget/antlr4.jpg +0 -0
  45. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/nuget/pack.cmd +0 -93
  46. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorListener.cpp +0 -10
  47. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorListener.h +0 -167
  48. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorStrategy.cpp +0 -10
  49. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorStrategy.h +0 -121
  50. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRFileStream.cpp +0 -23
  51. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRFileStream.h +0 -30
  52. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRInputStream.cpp +0 -180
  53. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRInputStream.h +0 -79
  54. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/BailErrorStrategy.cpp +0 -61
  55. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/BailErrorStrategy.h +0 -59
  56. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/BaseErrorListener.cpp +0 -25
  57. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/BaseErrorListener.h +0 -36
  58. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/BufferedTokenStream.cpp +0 -414
  59. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/BufferedTokenStream.h +0 -200
  60. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/CharStream.cpp +0 -11
  61. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/CharStream.h +0 -37
  62. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonToken.cpp +0 -193
  63. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonToken.h +0 -158
  64. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenFactory.cpp +0 -39
  65. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenFactory.h +0 -74
  66. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenStream.cpp +0 -78
  67. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenStream.h +0 -79
  68. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ConsoleErrorListener.cpp +0 -15
  69. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ConsoleErrorListener.h +0 -35
  70. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/DefaultErrorStrategy.cpp +0 -336
  71. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/DefaultErrorStrategy.h +0 -466
  72. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/DiagnosticErrorListener.cpp +0 -84
  73. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/DiagnosticErrorListener.h +0 -80
  74. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Exceptions.cpp +0 -64
  75. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Exceptions.h +0 -99
  76. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/FailedPredicateException.cpp +0 -52
  77. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/FailedPredicateException.h +0 -32
  78. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/FlatHashMap.h +0 -57
  79. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/FlatHashSet.h +0 -57
  80. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/InputMismatchException.cpp +0 -18
  81. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/InputMismatchException.h +0 -24
  82. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/IntStream.cpp +0 -12
  83. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/IntStream.h +0 -218
  84. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/InterpreterRuleContext.cpp +0 -19
  85. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/InterpreterRuleContext.h +0 -45
  86. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Lexer.cpp +0 -294
  87. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Lexer.h +0 -196
  88. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerInterpreter.cpp +0 -60
  89. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerInterpreter.h +0 -46
  90. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerNoViableAltException.cpp +0 -36
  91. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerNoViableAltException.h +0 -31
  92. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ListTokenSource.cpp +0 -92
  93. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ListTokenSource.h +0 -88
  94. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/NoViableAltException.cpp +0 -46
  95. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/NoViableAltException.h +0 -42
  96. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Parser.cpp +0 -670
  97. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Parser.h +0 -461
  98. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserInterpreter.cpp +0 -294
  99. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserInterpreter.h +0 -173
  100. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserRuleContext.cpp +0 -138
  101. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserRuleContext.h +0 -147
  102. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ProxyErrorListener.cpp +0 -53
  103. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/ProxyErrorListener.h +0 -38
  104. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/RecognitionException.cpp +0 -65
  105. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/RecognitionException.h +0 -98
  106. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Recognizer.cpp +0 -157
  107. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Recognizer.h +0 -160
  108. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContext.cpp +0 -144
  109. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContext.h +0 -141
  110. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContextWithAltNum.cpp +0 -27
  111. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContextWithAltNum.h +0 -32
  112. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/RuntimeMetaData.cpp +0 -54
  113. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/RuntimeMetaData.h +0 -155
  114. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Token.cpp +0 -9
  115. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Token.h +0 -92
  116. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenFactory.h +0 -30
  117. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenSource.cpp +0 -9
  118. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenSource.h +0 -85
  119. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStream.cpp +0 -11
  120. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStream.h +0 -137
  121. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStreamRewriter.cpp +0 -425
  122. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStreamRewriter.h +0 -295
  123. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedCharStream.cpp +0 -208
  124. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedCharStream.h +0 -117
  125. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedTokenStream.cpp +0 -270
  126. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedTokenStream.h +0 -115
  127. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Version.h +0 -42
  128. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Vocabulary.cpp +0 -64
  129. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/Vocabulary.h +0 -177
  130. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/WritableToken.cpp +0 -9
  131. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/WritableToken.h +0 -23
  132. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/antlr4-common.h +0 -101
  133. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/antlr4-runtime.h +0 -168
  134. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATN.cpp +0 -159
  135. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATN.h +0 -133
  136. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfig.cpp +0 -106
  137. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfig.h +0 -157
  138. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfigSet.cpp +0 -233
  139. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfigSet.h +0 -157
  140. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.cpp +0 -39
  141. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.h +0 -48
  142. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializer.cpp +0 -628
  143. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializer.h +0 -32
  144. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSimulator.cpp +0 -33
  145. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSimulator.h +0 -71
  146. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNState.cpp +0 -56
  147. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNState.h +0 -139
  148. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNStateType.cpp +0 -33
  149. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNStateType.h +0 -36
  150. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNType.h +0 -20
  151. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ActionTransition.cpp +0 -29
  152. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ActionTransition.h +0 -35
  153. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AmbiguityInfo.cpp +0 -16
  154. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AmbiguityInfo.h +0 -68
  155. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.cpp +0 -129
  156. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.h +0 -51
  157. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AtomTransition.cpp +0 -27
  158. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AtomTransition.h +0 -33
  159. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicBlockStartState.h +0 -24
  160. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicState.h +0 -23
  161. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockEndState.h +0 -26
  162. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockStartState.h +0 -30
  163. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ContextSensitivityInfo.cpp +0 -14
  164. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ContextSensitivityInfo.h +0 -47
  165. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionEventInfo.cpp +0 -14
  166. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionEventInfo.h +0 -70
  167. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionInfo.cpp +0 -25
  168. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionInfo.h +0 -227
  169. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionState.cpp +0 -12
  170. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionState.h +0 -34
  171. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EpsilonTransition.cpp +0 -31
  172. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EpsilonTransition.h +0 -42
  173. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ErrorInfo.cpp +0 -15
  174. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ErrorInfo.h +0 -43
  175. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/HashUtils.h +0 -18
  176. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LL1Analyzer.cpp +0 -189
  177. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LL1Analyzer.h +0 -76
  178. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNConfig.cpp +0 -67
  179. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNConfig.h +0 -44
  180. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNSimulator.cpp +0 -621
  181. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNSimulator.h +0 -199
  182. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerAction.cpp +0 -15
  183. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerAction.h +0 -100
  184. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionExecutor.cpp +0 -108
  185. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionExecutor.h +0 -128
  186. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionType.h +0 -57
  187. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerChannelAction.cpp +0 -43
  188. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerChannelAction.h +0 -59
  189. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerCustomAction.cpp +0 -45
  190. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerCustomAction.h +0 -75
  191. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.cpp +0 -50
  192. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.h +0 -76
  193. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerModeAction.cpp +0 -43
  194. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerModeAction.h +0 -57
  195. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerMoreAction.cpp +0 -36
  196. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerMoreAction.h +0 -53
  197. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPopModeAction.cpp +0 -36
  198. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPopModeAction.h +0 -53
  199. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPushModeAction.cpp +0 -43
  200. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPushModeAction.h +0 -57
  201. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerSkipAction.cpp +0 -36
  202. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerSkipAction.h +0 -51
  203. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerTypeAction.cpp +0 -43
  204. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerTypeAction.h +0 -51
  205. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LookaheadEventInfo.cpp +0 -16
  206. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LookaheadEventInfo.h +0 -42
  207. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LoopEndState.h +0 -26
  208. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/NotSetTransition.cpp +0 -22
  209. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/NotSetTransition.h +0 -27
  210. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.cpp +0 -16
  211. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.h +0 -25
  212. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParseInfo.cpp +0 -102
  213. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParseInfo.h +0 -102
  214. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulator.cpp +0 -1413
  215. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulator.h +0 -911
  216. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulatorOptions.h +0 -50
  217. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusBlockStartState.h +0 -29
  218. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusLoopbackState.h +0 -25
  219. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.cpp +0 -23
  220. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.h +0 -35
  221. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.cpp +0 -17
  222. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.h +0 -62
  223. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateTransition.cpp +0 -24
  224. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateTransition.h +0 -50
  225. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContext.cpp +0 -601
  226. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContext.h +0 -225
  227. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextCache.cpp +0 -56
  228. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextCache.h +0 -63
  229. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextMergeCache.cpp +0 -167
  230. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextMergeCache.h +0 -101
  231. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextMergeCacheOptions.h +0 -71
  232. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextType.h +0 -21
  233. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionMode.cpp +0 -202
  234. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionMode.h +0 -436
  235. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.cpp +0 -179
  236. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.h +0 -60
  237. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RangeTransition.cpp +0 -26
  238. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RangeTransition.h +0 -31
  239. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStartState.h +0 -26
  240. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStopState.h +0 -27
  241. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleTransition.cpp +0 -33
  242. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleTransition.h +0 -42
  243. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContext.cpp +0 -418
  244. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContext.h +0 -237
  245. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContextType.h +0 -23
  246. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SerializedATNView.h +0 -101
  247. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SetTransition.cpp +0 -28
  248. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SetTransition.h +0 -38
  249. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.cpp +0 -79
  250. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.h +0 -43
  251. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarBlockStartState.h +0 -24
  252. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopEntryState.h +0 -37
  253. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopbackState.cpp +0 -19
  254. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopbackState.h +0 -25
  255. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TokensStartState.h +0 -24
  256. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Transition.cpp +0 -36
  257. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Transition.h +0 -65
  258. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TransitionType.cpp +0 -27
  259. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TransitionType.h +0 -33
  260. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/WildcardTransition.cpp +0 -21
  261. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/WildcardTransition.h +0 -27
  262. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFA.cpp +0 -115
  263. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFA.h +0 -96
  264. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFASerializer.cpp +0 -60
  265. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFASerializer.h +0 -32
  266. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFAState.cpp +0 -59
  267. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFAState.h +0 -154
  268. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.cpp +0 -17
  269. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.h +0 -22
  270. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/internal/Synchronization.cpp +0 -100
  271. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/internal/Synchronization.h +0 -154
  272. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/InterpreterDataReader.cpp +0 -124
  273. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/InterpreterDataReader.h +0 -33
  274. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Interval.cpp +0 -61
  275. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Interval.h +0 -84
  276. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/IntervalSet.cpp +0 -508
  277. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/IntervalSet.h +0 -190
  278. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/MurmurHash.cpp +0 -120
  279. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/MurmurHash.h +0 -102
  280. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Predicate.cpp +0 -4
  281. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Predicate.h +0 -21
  282. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Any.cpp +0 -8
  283. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Any.h +0 -16
  284. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Arrays.cpp +0 -43
  285. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Arrays.h +0 -149
  286. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/BitSet.h +0 -76
  287. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/CPPUtils.cpp +0 -207
  288. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/CPPUtils.h +0 -65
  289. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Casts.h +0 -34
  290. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Declarations.h +0 -161
  291. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/StringUtils.cpp +0 -38
  292. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/StringUtils.h +0 -16
  293. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Unicode.h +0 -28
  294. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Utf8.cpp +0 -242
  295. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Utf8.h +0 -54
  296. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/AbstractParseTreeVisitor.h +0 -129
  297. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNode.h +0 -24
  298. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.cpp +0 -54
  299. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.h +0 -43
  300. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/IterativeParseTreeWalker.cpp +0 -66
  301. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/IterativeParseTreeWalker.h +0 -53
  302. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTree.cpp +0 -12
  303. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTree.h +0 -111
  304. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeListener.cpp +0 -9
  305. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeListener.h +0 -39
  306. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeProperty.h +0 -50
  307. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeType.h +0 -22
  308. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeVisitor.cpp +0 -9
  309. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeVisitor.h +0 -57
  310. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeWalker.cpp +0 -48
  311. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeWalker.h +0 -55
  312. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNode.h +0 -40
  313. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.cpp +0 -54
  314. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.h +0 -32
  315. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/Trees.cpp +0 -241
  316. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/Trees.h +0 -78
  317. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/Chunk.cpp +0 -9
  318. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/Chunk.h +0 -44
  319. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreeMatch.cpp +0 -69
  320. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreeMatch.h +0 -132
  321. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePattern.cpp +0 -64
  322. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePattern.h +0 -105
  323. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePatternMatcher.cpp +0 -370
  324. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePatternMatcher.h +0 -185
  325. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/RuleTagToken.cpp +0 -77
  326. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/RuleTagToken.h +0 -117
  327. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TagChunk.cpp +0 -39
  328. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TagChunk.h +0 -86
  329. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TextChunk.cpp +0 -28
  330. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TextChunk.h +0 -51
  331. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TokenTagToken.cpp +0 -36
  332. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TokenTagToken.h +0 -80
  333. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPath.cpp +0 -154
  334. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPath.h +0 -86
  335. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathElement.cpp +0 -31
  336. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathElement.h +0 -40
  337. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.cpp +0 -180
  338. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.g4 +0 -64
  339. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.h +0 -53
  340. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.tokens +0 -12
  341. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexerErrorListener.cpp +0 -13
  342. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexerErrorListener.h +0 -22
  343. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleAnywhereElement.cpp +0 -20
  344. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleAnywhereElement.h +0 -27
  345. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleElement.cpp +0 -30
  346. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleElement.h +0 -26
  347. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenAnywhereElement.cpp +0 -20
  348. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenAnywhereElement.h +0 -25
  349. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenElement.cpp +0 -33
  350. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenElement.h +0 -26
  351. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardAnywhereElement.cpp +0 -23
  352. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardAnywhereElement.h +0 -23
  353. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardElement.cpp +0 -24
  354. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardElement.h +0 -23
  355. data/ext/express_parser/antlr4-upstream/runtime/Cpp/runtime/tests/Utf8Test.cpp +0 -110
  356. data/ext/express_parser/antlrgen/Express.interp +0 -532
  357. data/ext/express_parser/antlrgen/Express.tokens +0 -190
  358. data/ext/express_parser/antlrgen/ExpressBaseListener.cpp +0 -7
  359. data/ext/express_parser/antlrgen/ExpressBaseListener.h +0 -623
  360. data/ext/express_parser/antlrgen/ExpressBaseVisitor.cpp +0 -7
  361. data/ext/express_parser/antlrgen/ExpressBaseVisitor.h +0 -816
  362. data/ext/express_parser/antlrgen/ExpressLexer.cpp +0 -685
  363. data/ext/express_parser/antlrgen/ExpressLexer.h +0 -78
  364. data/ext/express_parser/antlrgen/ExpressLexer.interp +0 -534
  365. data/ext/express_parser/antlrgen/ExpressLexer.tokens +0 -190
  366. data/ext/express_parser/antlrgen/ExpressListener.cpp +0 -7
  367. data/ext/express_parser/antlrgen/ExpressListener.h +0 -616
  368. data/ext/express_parser/antlrgen/ExpressParser.cpp +0 -17591
  369. data/ext/express_parser/antlrgen/ExpressParser.h +0 -3692
  370. data/ext/express_parser/antlrgen/ExpressVisitor.cpp +0 -7
  371. data/ext/express_parser/antlrgen/ExpressVisitor.h +0 -422
  372. data/ext/express_parser/express_parser.cpp +0 -19405
  373. data/ext/express_parser/extconf.rb +0 -63
  374. data/rakelib/antlr4-native.rake +0 -173
  375. data/rakelib/cross-ruby.rake +0 -403
  376. data/spec/acceptance/version_spec.rb +0 -30
  377. data/spec/expressir/express/cache_spec.rb +0 -89
  378. data/spec/expressir/express/formatter_spec.rb +0 -171
  379. data/spec/expressir/express/parser_spec.rb +0 -141
  380. data/spec/expressir/model/model_element_spec.rb +0 -343
  381. data/spec/spec_helper.rb +0 -24
  382. data/spec/support/console_helper.rb +0 -29
  383. data/spec/syntax/multiple.exp +0 -23
  384. data/spec/syntax/multiple.yaml +0 -198
  385. data/spec/syntax/multiple_formatted.exp +0 -71
  386. data/spec/syntax/multiple_hyperlink_formatted.exp +0 -71
  387. data/spec/syntax/multiple_schema_head_hyperlink_formatted.exp +0 -13
  388. data/spec/syntax/remark.exp +0 -193
  389. data/spec/syntax/remark.yaml +0 -471
  390. data/spec/syntax/remark_formatted.exp +0 -228
  391. data/spec/syntax/single.exp +0 -4
  392. data/spec/syntax/single.yaml +0 -18
  393. data/spec/syntax/single_formatted.exp +0 -10
  394. data/spec/syntax/single_formatted.yaml +0 -36
  395. data/spec/syntax/syntax.exp +0 -333
  396. data/spec/syntax/syntax.yaml +0 -3509
  397. data/spec/syntax/syntax_formatted.exp +0 -902
  398. data/spec/syntax/syntax_hyperlink_formatted.exp +0 -902
  399. data/spec/syntax/syntax_schema_head_formatted.exp +0 -18
@@ -1,601 +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 "atn/SingletonPredictionContext.h"
7
- #include "misc/MurmurHash.h"
8
- #include "atn/ArrayPredictionContext.h"
9
- #include "atn/PredictionContextCache.h"
10
- #include "atn/PredictionContextMergeCache.h"
11
- #include "RuleContext.h"
12
- #include "ParserRuleContext.h"
13
- #include "atn/RuleTransition.h"
14
- #include "support/Arrays.h"
15
- #include "support/CPPUtils.h"
16
- #include "support/Casts.h"
17
-
18
- #include "atn/PredictionContext.h"
19
-
20
- using namespace antlr4;
21
- using namespace antlr4::misc;
22
- using namespace antlr4::atn;
23
- using namespace antlrcpp;
24
-
25
- namespace {
26
-
27
- void combineCommonParents(std::vector<Ref<const PredictionContext>> &parents) {
28
- std::unordered_set<Ref<const PredictionContext>> uniqueParents;
29
- uniqueParents.reserve(parents.size());
30
- for (const auto &parent : parents) {
31
- uniqueParents.insert(parent);
32
- }
33
- for (auto &parent : parents) {
34
- parent = *uniqueParents.find(parent);
35
- }
36
- }
37
-
38
- Ref<const PredictionContext> getCachedContextImpl(const Ref<const PredictionContext> &context,
39
- PredictionContextCache &contextCache,
40
- std::unordered_map<Ref<const PredictionContext>,
41
- Ref<const PredictionContext>> &visited) {
42
- if (context->isEmpty()) {
43
- return context;
44
- }
45
-
46
- {
47
- auto iterator = visited.find(context);
48
- if (iterator != visited.end()) {
49
- return iterator->second; // Not necessarly the same as context.
50
- }
51
- }
52
-
53
- auto cached = contextCache.get(context);
54
- if (cached) {
55
- visited[context] = cached;
56
- return cached;
57
- }
58
-
59
- bool changed = false;
60
-
61
- std::vector<Ref<const PredictionContext>> parents(context->size());
62
- for (size_t i = 0; i < parents.size(); i++) {
63
- auto parent = getCachedContextImpl(context->getParent(i), contextCache, visited);
64
- if (changed || parent != context->getParent(i)) {
65
- if (!changed) {
66
- parents.clear();
67
- for (size_t j = 0; j < context->size(); j++) {
68
- parents.push_back(context->getParent(j));
69
- }
70
-
71
- changed = true;
72
- }
73
-
74
- parents[i] = std::move(parent);
75
- }
76
- }
77
-
78
- if (!changed) {
79
- visited[context] = context;
80
- contextCache.put(context);
81
- return context;
82
- }
83
-
84
- Ref<const PredictionContext> updated;
85
- if (parents.empty()) {
86
- updated = PredictionContext::EMPTY;
87
- } else if (parents.size() == 1) {
88
- updated = SingletonPredictionContext::create(std::move(parents[0]), context->getReturnState(0));
89
- contextCache.put(updated);
90
- } else {
91
- updated = std::make_shared<ArrayPredictionContext>(std::move(parents), downCast<const ArrayPredictionContext*>(context.get())->returnStates);
92
- contextCache.put(updated);
93
- }
94
-
95
- visited[updated] = updated;
96
- visited[context] = updated;
97
-
98
- return updated;
99
- }
100
-
101
- void getAllContextNodesImpl(const Ref<const PredictionContext> &context,
102
- std::vector<Ref<const PredictionContext>> &nodes,
103
- std::unordered_set<const PredictionContext*> &visited) {
104
-
105
- if (visited.find(context.get()) != visited.end()) {
106
- return; // Already done.
107
- }
108
-
109
- visited.insert(context.get());
110
- nodes.push_back(context);
111
-
112
- for (size_t i = 0; i < context->size(); i++) {
113
- getAllContextNodesImpl(context->getParent(i), nodes, visited);
114
- }
115
- }
116
-
117
- size_t insertOrAssignNodeId(std::unordered_map<const PredictionContext*, size_t> &nodeIds, size_t &nodeId, const PredictionContext *node) {
118
- auto existing = nodeIds.find(node);
119
- if (existing != nodeIds.end()) {
120
- return existing->second;
121
- }
122
- return nodeIds.insert({node, nodeId++}).first->second;
123
- }
124
-
125
- }
126
-
127
- const Ref<const PredictionContext> PredictionContext::EMPTY = std::make_shared<SingletonPredictionContext>(nullptr, PredictionContext::EMPTY_RETURN_STATE);
128
-
129
- //----------------- PredictionContext ----------------------------------------------------------------------------------
130
-
131
- PredictionContext::PredictionContext(PredictionContextType contextType) : _contextType(contextType), _hashCode(0) {}
132
-
133
- PredictionContext::PredictionContext(PredictionContext&& other) : _contextType(other._contextType), _hashCode(other._hashCode.exchange(0, std::memory_order_relaxed)) {}
134
-
135
- Ref<const PredictionContext> PredictionContext::fromRuleContext(const ATN &atn, RuleContext *outerContext) {
136
- if (outerContext == nullptr) {
137
- return PredictionContext::EMPTY;
138
- }
139
-
140
- // if we are in RuleContext of start rule, s, then PredictionContext
141
- // is EMPTY. Nobody called us. (if we are empty, return empty)
142
- if (outerContext->parent == nullptr || outerContext == &ParserRuleContext::EMPTY) {
143
- return PredictionContext::EMPTY;
144
- }
145
-
146
- // If we have a parent, convert it to a PredictionContext graph
147
- auto parent = PredictionContext::fromRuleContext(atn, RuleContext::is(outerContext->parent) ? downCast<RuleContext*>(outerContext->parent) : nullptr);
148
- const auto *transition = downCast<const RuleTransition*>(atn.states[outerContext->invokingState]->transitions[0].get());
149
- return SingletonPredictionContext::create(std::move(parent), transition->followState->stateNumber);
150
- }
151
-
152
- bool PredictionContext::hasEmptyPath() const {
153
- // since EMPTY_RETURN_STATE can only appear in the last position, we check last one
154
- return getReturnState(size() - 1) == EMPTY_RETURN_STATE;
155
- }
156
-
157
- size_t PredictionContext::hashCode() const {
158
- auto hash = cachedHashCode();
159
- if (hash == 0) {
160
- hash = hashCodeImpl();
161
- if (hash == 0) {
162
- hash = std::numeric_limits<size_t>::max();
163
- }
164
- _hashCode.store(hash, std::memory_order_relaxed);
165
- }
166
- return hash;
167
- }
168
-
169
- Ref<const PredictionContext> PredictionContext::merge(Ref<const PredictionContext> a, Ref<const PredictionContext> b,
170
- bool rootIsWildcard, PredictionContextMergeCache *mergeCache) {
171
- assert(a && b);
172
-
173
- // share same graph if both same
174
- if (a == b || *a == *b) {
175
- return a;
176
- }
177
-
178
- const auto aType = a->getContextType();
179
- const auto bType = b->getContextType();
180
-
181
- if (aType == PredictionContextType::SINGLETON && bType == PredictionContextType::SINGLETON) {
182
- return mergeSingletons(std::static_pointer_cast<const SingletonPredictionContext>(std::move(a)),
183
- std::static_pointer_cast<const SingletonPredictionContext>(std::move(b)), rootIsWildcard, mergeCache);
184
- }
185
-
186
- // At least one of a or b is array.
187
- // If one is $ and rootIsWildcard, return $ as * wildcard.
188
- if (rootIsWildcard) {
189
- if (a == PredictionContext::EMPTY) {
190
- return a;
191
- }
192
- if (b == PredictionContext::EMPTY) {
193
- return b;
194
- }
195
- }
196
-
197
- // convert singleton so both are arrays to normalize
198
- Ref<const ArrayPredictionContext> left;
199
- if (aType == PredictionContextType::SINGLETON) {
200
- left = std::make_shared<ArrayPredictionContext>(downCast<const SingletonPredictionContext&>(*a));
201
- } else {
202
- left = std::static_pointer_cast<const ArrayPredictionContext>(std::move(a));
203
- }
204
- Ref<const ArrayPredictionContext> right;
205
- if (bType == PredictionContextType::SINGLETON) {
206
- right = std::make_shared<ArrayPredictionContext>(downCast<const SingletonPredictionContext&>(*b));
207
- } else {
208
- right = std::static_pointer_cast<const ArrayPredictionContext>(std::move(b));
209
- }
210
- return mergeArrays(std::move(left), std::move(right), rootIsWildcard, mergeCache);
211
- }
212
-
213
- Ref<const PredictionContext> PredictionContext::mergeSingletons(Ref<const SingletonPredictionContext> a, Ref<const SingletonPredictionContext> b,
214
- bool rootIsWildcard, PredictionContextMergeCache *mergeCache) {
215
-
216
- if (mergeCache) {
217
- auto existing = mergeCache->get(a, b);
218
- if (existing) {
219
- return existing;
220
- }
221
- existing = mergeCache->get(b, a);
222
- if (existing) {
223
- return existing;
224
- }
225
- }
226
-
227
- auto rootMerge = mergeRoot(a, b, rootIsWildcard);
228
- if (rootMerge) {
229
- if (mergeCache) {
230
- return mergeCache->put(a, b, std::move(rootMerge));
231
- }
232
- return rootMerge;
233
- }
234
-
235
- const auto& parentA = a->parent;
236
- const auto& parentB = b->parent;
237
- if (a->returnState == b->returnState) { // a == b
238
- auto parent = merge(parentA, parentB, rootIsWildcard, mergeCache);
239
-
240
- // If parent is same as existing a or b parent or reduced to a parent, return it.
241
- if (parent == parentA) { // ax + bx = ax, if a=b
242
- return a;
243
- }
244
- if (parent == parentB) { // ax + bx = bx, if a=b
245
- return b;
246
- }
247
-
248
- // else: ax + ay = a'[x,y]
249
- // merge parents x and y, giving array node with x,y then remainders
250
- // of those graphs. dup a, a' points at merged array
251
- // new joined parent so create new singleton pointing to it, a'
252
- auto c = SingletonPredictionContext::create(std::move(parent), a->returnState);
253
- if (mergeCache) {
254
- return mergeCache->put(a, b, std::move(c));
255
- }
256
- return c;
257
- }
258
- // a != b payloads differ
259
- // see if we can collapse parents due to $+x parents if local ctx
260
- Ref<const PredictionContext> singleParent;
261
- if (a == b || (*parentA == *parentB)) { // ax + bx = [a,b]x
262
- singleParent = parentA;
263
- }
264
- if (singleParent) { // parents are same, sort payloads and use same parent
265
- std::vector<size_t> payloads = { a->returnState, b->returnState };
266
- if (a->returnState > b->returnState) {
267
- payloads[0] = b->returnState;
268
- payloads[1] = a->returnState;
269
- }
270
- std::vector<Ref<const PredictionContext>> parents = { singleParent, singleParent };
271
- auto c = std::make_shared<ArrayPredictionContext>(std::move(parents), std::move(payloads));
272
- if (mergeCache) {
273
- return mergeCache->put(a, b, std::move(c));
274
- }
275
- return c;
276
- }
277
-
278
- // parents differ and can't merge them. Just pack together
279
- // into array; can't merge.
280
- // ax + by = [ax,by]
281
- if (a->returnState > b->returnState) { // sort by payload
282
- std::vector<size_t> payloads = { b->returnState, a->returnState };
283
- std::vector<Ref<const PredictionContext>> parents = { b->parent, a->parent };
284
- auto c = std::make_shared<ArrayPredictionContext>(std::move(parents), std::move(payloads));
285
- if (mergeCache) {
286
- return mergeCache->put(a, b, std::move(c));
287
- }
288
- return c;
289
- }
290
- std::vector<size_t> payloads = {a->returnState, b->returnState};
291
- std::vector<Ref<const PredictionContext>> parents = { a->parent, b->parent };
292
- auto c = std::make_shared<ArrayPredictionContext>(std::move(parents), std::move(payloads));
293
- if (mergeCache) {
294
- return mergeCache->put(a, b, std::move(c));
295
- }
296
- return c;
297
- }
298
-
299
- Ref<const PredictionContext> PredictionContext::mergeRoot(Ref<const SingletonPredictionContext> a, Ref<const SingletonPredictionContext> b,
300
- bool rootIsWildcard) {
301
- if (rootIsWildcard) {
302
- if (a == EMPTY) { // * + b = *
303
- return EMPTY;
304
- }
305
- if (b == EMPTY) { // a + * = *
306
- return EMPTY;
307
- }
308
- } else {
309
- if (a == EMPTY && b == EMPTY) { // $ + $ = $
310
- return EMPTY;
311
- }
312
- if (a == EMPTY) { // $ + x = [$,x]
313
- std::vector<size_t> payloads = { b->returnState, EMPTY_RETURN_STATE };
314
- std::vector<Ref<const PredictionContext>> parents = { b->parent, nullptr };
315
- return std::make_shared<ArrayPredictionContext>(std::move(parents), std::move(payloads));
316
- }
317
- if (b == EMPTY) { // x + $ = [$,x] ($ is always first if present)
318
- std::vector<size_t> payloads = { a->returnState, EMPTY_RETURN_STATE };
319
- std::vector<Ref<const PredictionContext>> parents = { a->parent, nullptr };
320
- return std::make_shared<ArrayPredictionContext>(std::move(parents), std::move(payloads));
321
- }
322
- }
323
- return nullptr;
324
- }
325
-
326
- Ref<const PredictionContext> PredictionContext::mergeArrays(Ref<const ArrayPredictionContext> a, Ref<const ArrayPredictionContext> b,
327
- bool rootIsWildcard, PredictionContextMergeCache *mergeCache) {
328
- if (mergeCache) {
329
- auto existing = mergeCache->get(a, b);
330
- if (existing) {
331
- #if TRACE_ATN_SIM == 1
332
- std::cout << "mergeArrays a=" << a->toString() << ",b=" << b->toString() << " -> previous" << std::endl;
333
- #endif
334
- return existing;
335
- }
336
- existing = mergeCache->get(b, a);
337
- if (existing) {
338
- #if TRACE_ATN_SIM == 1
339
- std::cout << "mergeArrays a=" << a->toString() << ",b=" << b->toString() << " -> previous" << std::endl;
340
- #endif
341
- return existing;
342
- }
343
- }
344
-
345
- // merge sorted payloads a + b => M
346
- size_t i = 0; // walks a
347
- size_t j = 0; // walks b
348
- size_t k = 0; // walks target M array
349
-
350
- std::vector<size_t> mergedReturnStates(a->returnStates.size() + b->returnStates.size());
351
- std::vector<Ref<const PredictionContext>> mergedParents(a->returnStates.size() + b->returnStates.size());
352
-
353
- // walk and merge to yield mergedParents, mergedReturnStates
354
- while (i < a->returnStates.size() && j < b->returnStates.size()) {
355
- const auto& parentA = a->parents[i];
356
- const auto& parentB = b->parents[j];
357
- if (a->returnStates[i] == b->returnStates[j]) {
358
- // same payload (stack tops are equal), must yield merged singleton
359
- size_t payload = a->returnStates[i];
360
- // $+$ = $
361
- bool both$ = payload == EMPTY_RETURN_STATE && !parentA && !parentB;
362
- bool ax_ax = (parentA && parentB) && *parentA == *parentB; // ax+ax -> ax
363
- if (both$ || ax_ax) {
364
- mergedParents[k] = parentA; // choose left
365
- mergedReturnStates[k] = payload;
366
- } else { // ax+ay -> a'[x,y]
367
- mergedParents[k] = merge(parentA, parentB, rootIsWildcard, mergeCache);
368
- mergedReturnStates[k] = payload;
369
- }
370
- i++; // hop over left one as usual
371
- j++; // but also skip one in right side since we merge
372
- } else if (a->returnStates[i] < b->returnStates[j]) { // copy a[i] to M
373
- mergedParents[k] = parentA;
374
- mergedReturnStates[k] = a->returnStates[i];
375
- i++;
376
- } else { // b > a, copy b[j] to M
377
- mergedParents[k] = parentB;
378
- mergedReturnStates[k] = b->returnStates[j];
379
- j++;
380
- }
381
- k++;
382
- }
383
-
384
- // copy over any payloads remaining in either array
385
- if (i < a->returnStates.size()) {
386
- for (auto p = i; p < a->returnStates.size(); p++) {
387
- mergedParents[k] = a->parents[p];
388
- mergedReturnStates[k] = a->returnStates[p];
389
- k++;
390
- }
391
- } else {
392
- for (auto p = j; p < b->returnStates.size(); p++) {
393
- mergedParents[k] = b->parents[p];
394
- mergedReturnStates[k] = b->returnStates[p];
395
- k++;
396
- }
397
- }
398
-
399
- // trim merged if we combined a few that had same stack tops
400
- if (k < mergedParents.size()) { // write index < last position; trim
401
- if (k == 1) { // for just one merged element, return singleton top
402
- auto c = SingletonPredictionContext::create(std::move(mergedParents[0]), mergedReturnStates[0]);
403
- if (mergeCache) {
404
- return mergeCache->put(a, b, std::move(c));
405
- }
406
- return c;
407
- }
408
- mergedParents.resize(k);
409
- mergedReturnStates.resize(k);
410
- }
411
-
412
- ArrayPredictionContext m(std::move(mergedParents), std::move(mergedReturnStates));
413
-
414
- // if we created same array as a or b, return that instead
415
- // TODO: track whether this is possible above during merge sort for speed
416
- if (m == *a) {
417
- if (mergeCache) {
418
- #if TRACE_ATN_SIM == 1
419
- std::cout << "mergeArrays a=" << a->toString() << ",b=" << b->toString() << " -> a" << std::endl;
420
- #endif
421
- return mergeCache->put(a, b, a);
422
- }
423
- #if TRACE_ATN_SIM == 1
424
- std::cout << "mergeArrays a=" << a->toString() << ",b=" << b->toString() << " -> a" << std::endl;
425
- #endif
426
- return a;
427
- }
428
- if (m == *b) {
429
- if (mergeCache) {
430
- #if TRACE_ATN_SIM == 1
431
- std::cout << "mergeArrays a=" << a->toString() << ",b=" << b->toString() << " -> b" << std::endl;
432
- #endif
433
- return mergeCache->put(a, b, b);
434
- }
435
- #if TRACE_ATN_SIM == 1
436
- std::cout << "mergeArrays a=" << a->toString() << ",b=" << b->toString() << " -> b" << std::endl;
437
- #endif
438
- return b;
439
- }
440
-
441
- combineCommonParents(m.parents);
442
- auto c = std::make_shared<ArrayPredictionContext>(std::move(m));
443
-
444
- #if TRACE_ATN_SIM == 1
445
- std::cout << "mergeArrays a=" << a->toString() << ",b=" << b->toString() << " -> " << c->toString() << std::endl;
446
- #endif
447
-
448
- if (mergeCache) {
449
- return mergeCache->put(a, b, std::move(c));
450
- }
451
- return c;
452
- }
453
-
454
- std::string PredictionContext::toDOTString(const Ref<const PredictionContext> &context) {
455
- if (context == nullptr) {
456
- return "";
457
- }
458
-
459
- std::stringstream ss;
460
- ss << "digraph G {\n" << "rankdir=LR;\n";
461
-
462
- std::vector<Ref<const PredictionContext>> nodes = getAllContextNodes(context);
463
- std::unordered_map<const PredictionContext*, size_t> nodeIds;
464
- size_t nodeId = 0;
465
-
466
- for (const auto &current : nodes) {
467
- if (current->getContextType() == PredictionContextType::SINGLETON) {
468
- std::string s = std::to_string(insertOrAssignNodeId(nodeIds, nodeId, current.get()));
469
- ss << " s" << s;
470
- std::string returnState = std::to_string(current->getReturnState(0));
471
- if (current == PredictionContext::EMPTY) {
472
- returnState = "$";
473
- }
474
- ss << " [label=\"" << returnState << "\"];\n";
475
- continue;
476
- }
477
- Ref<const ArrayPredictionContext> arr = std::static_pointer_cast<const ArrayPredictionContext>(current);
478
- ss << " s" << insertOrAssignNodeId(nodeIds, nodeId, arr.get()) << " [shape=box, label=\"" << "[";
479
- bool first = true;
480
- for (auto inv : arr->returnStates) {
481
- if (!first) {
482
- ss << ", ";
483
- }
484
- if (inv == EMPTY_RETURN_STATE) {
485
- ss << "$";
486
- } else {
487
- ss << inv;
488
- }
489
- first = false;
490
- }
491
- ss << "]";
492
- ss << "\"];\n";
493
- }
494
-
495
- for (const auto &current : nodes) {
496
- if (current == EMPTY) {
497
- continue;
498
- }
499
- for (size_t i = 0; i < current->size(); i++) {
500
- if (!current->getParent(i)) {
501
- continue;
502
- }
503
- ss << " s" << insertOrAssignNodeId(nodeIds, nodeId, current.get()) << "->" << "s" << insertOrAssignNodeId(nodeIds, nodeId, current->getParent(i).get());
504
- if (current->size() > 1) {
505
- ss << " [label=\"parent[" << i << "]\"];\n";
506
- } else {
507
- ss << ";\n";
508
- }
509
- }
510
- }
511
-
512
- ss << "}\n";
513
- return ss.str();
514
- }
515
-
516
- // The "visited" map is just a temporary structure to control the retrieval process (which is recursive).
517
- Ref<const PredictionContext> PredictionContext::getCachedContext(const Ref<const PredictionContext> &context,
518
- PredictionContextCache &contextCache) {
519
- std::unordered_map<Ref<const PredictionContext>, Ref<const PredictionContext>> visited;
520
- return getCachedContextImpl(context, contextCache, visited);
521
- }
522
-
523
- std::vector<Ref<const PredictionContext>> PredictionContext::getAllContextNodes(const Ref<const PredictionContext> &context) {
524
- std::vector<Ref<const PredictionContext>> nodes;
525
- std::unordered_set<const PredictionContext*> visited;
526
- getAllContextNodesImpl(context, nodes, visited);
527
- return nodes;
528
- }
529
-
530
- std::vector<std::string> PredictionContext::toStrings(Recognizer *recognizer, int currentState) const {
531
- return toStrings(recognizer, EMPTY, currentState);
532
- }
533
-
534
- std::vector<std::string> PredictionContext::toStrings(Recognizer *recognizer, const Ref<const PredictionContext> &stop, int currentState) const {
535
-
536
- std::vector<std::string> result;
537
-
538
- for (size_t perm = 0; ; perm++) {
539
- size_t offset = 0;
540
- bool last = true;
541
- const PredictionContext *p = this;
542
- size_t stateNumber = currentState;
543
-
544
- std::stringstream ss;
545
- ss << "[";
546
- bool outerContinue = false;
547
- while (!p->isEmpty() && p != stop.get()) {
548
- size_t index = 0;
549
- if (p->size() > 0) {
550
- size_t bits = 1;
551
- while ((1ULL << bits) < p->size()) {
552
- bits++;
553
- }
554
-
555
- size_t mask = (1 << bits) - 1;
556
- index = (perm >> offset) & mask;
557
- last &= index >= p->size() - 1;
558
- if (index >= p->size()) {
559
- outerContinue = true;
560
- break;
561
- }
562
- offset += bits;
563
- }
564
-
565
- if (recognizer != nullptr) {
566
- if (ss.tellp() > 1) {
567
- // first char is '[', if more than that this isn't the first rule
568
- ss << ' ';
569
- }
570
-
571
- const ATN &atn = recognizer->getATN();
572
- ATNState *s = atn.states[stateNumber];
573
- std::string ruleName = recognizer->getRuleNames()[s->ruleIndex];
574
- ss << ruleName;
575
- } else if (p->getReturnState(index) != EMPTY_RETURN_STATE) {
576
- if (!p->isEmpty()) {
577
- if (ss.tellp() > 1) {
578
- // first char is '[', if more than that this isn't the first rule
579
- ss << ' ';
580
- }
581
-
582
- ss << p->getReturnState(index);
583
- }
584
- }
585
- stateNumber = p->getReturnState(index);
586
- p = p->getParent(index).get();
587
- }
588
-
589
- if (outerContinue)
590
- continue;
591
-
592
- ss << "]";
593
- result.push_back(ss.str());
594
-
595
- if (last) {
596
- break;
597
- }
598
- }
599
-
600
- return result;
601
- }