expressir 1.2.3 → 1.2.6

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 (328) hide show
  1. checksums.yaml +4 -4
  2. data/.cross_rubies +0 -6
  3. data/.github/workflows/rake.yml +223 -31
  4. data/.gitignore +7 -1
  5. data/.gitmodules +3 -0
  6. data/.rubocop.yml +13 -4
  7. data/README.adoc +8 -0
  8. data/Rakefile +4 -1
  9. data/bin/console +0 -1
  10. data/bin/rspec +3 -3
  11. data/exe/expressir +4 -2
  12. data/exe/format +1 -1
  13. data/exe/format-test +25 -25
  14. data/exe/generate-parser +16 -13
  15. data/expressir.gemspec +11 -9
  16. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/CMakeLists.txt +44 -9
  17. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2013.vcxproj +11 -5
  18. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2013.vcxproj.filters +0 -3
  19. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2015.vcxproj +11 -4
  20. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2015.vcxproj.filters +0 -3
  21. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2017.vcxproj +11 -4
  22. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2017.vcxproj.filters +0 -3
  23. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2019.vcxproj +19 -4
  24. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2019.vcxproj.filters +0 -3
  25. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/project.pbxproj +51 -35
  26. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/xcshareddata/xcschemes/antlr4.xcscheme +1 -1
  27. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/xcshareddata/xcschemes/antlr4_ios.xcscheme +1 -5
  28. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/xcshareddata/xcschemes/antlr4_static.xcscheme +1 -5
  29. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRFileStream.cpp +1 -12
  30. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRFileStream.h +9 -6
  31. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRInputStream.cpp +43 -18
  32. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRInputStream.h +16 -6
  33. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonToken.cpp +2 -4
  34. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenFactory.cpp +1 -1
  35. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenFactory.h +1 -1
  36. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/DefaultErrorStrategy.cpp +16 -13
  37. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Exceptions.cpp +2 -2
  38. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Exceptions.h +2 -2
  39. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/FailedPredicateException.cpp +5 -4
  40. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/FailedPredicateException.h +1 -1
  41. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/IntStream.h +1 -1
  42. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Lexer.cpp +2 -3
  43. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Lexer.h +9 -9
  44. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerInterpreter.cpp +0 -15
  45. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerInterpreter.h +1 -7
  46. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ListTokenSource.cpp +2 -2
  47. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ListTokenSource.h +2 -2
  48. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Parser.cpp +51 -31
  49. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Parser.h +1 -7
  50. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserInterpreter.cpp +27 -39
  51. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserInterpreter.h +1 -7
  52. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserRuleContext.cpp +20 -23
  53. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserRuleContext.h +21 -21
  54. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ProxyErrorListener.cpp +4 -4
  55. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RecognitionException.cpp +0 -1
  56. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Recognizer.cpp +16 -27
  57. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Recognizer.h +12 -17
  58. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContext.cpp +4 -3
  59. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContext.h +5 -1
  60. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuntimeMetaData.cpp +2 -1
  61. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Token.h +7 -7
  62. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenSource.h +1 -1
  63. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStreamRewriter.cpp +6 -6
  64. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStreamRewriter.h +4 -2
  65. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedCharStream.cpp +15 -18
  66. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedCharStream.h +12 -18
  67. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Version.h +42 -0
  68. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Vocabulary.cpp +13 -53
  69. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Vocabulary.h +11 -27
  70. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/antlr4-common.h +19 -58
  71. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/antlr4-runtime.h +7 -5
  72. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATN.cpp +6 -57
  73. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATN.h +35 -15
  74. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfig.cpp +29 -36
  75. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfig.h +36 -27
  76. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfigSet.cpp +58 -54
  77. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfigSet.h +77 -31
  78. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.cpp +22 -32
  79. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.h +22 -24
  80. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializer.cpp +335 -464
  81. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializer.h +9 -62
  82. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSimulator.cpp +9 -39
  83. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSimulator.h +6 -22
  84. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNState.cpp +10 -26
  85. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNState.h +42 -36
  86. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNStateType.cpp +33 -0
  87. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNStateType.h +36 -0
  88. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ActionTransition.cpp +2 -6
  89. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ActionTransition.h +4 -2
  90. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.cpp +49 -22
  91. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.h +20 -12
  92. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AtomTransition.cpp +1 -5
  93. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AtomTransition.h +5 -2
  94. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicBlockStartState.h +4 -2
  95. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicState.h +4 -2
  96. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockEndState.h +5 -3
  97. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockStartState.h +10 -1
  98. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionInfo.h +1 -1
  99. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionState.cpp +0 -5
  100. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionState.h +12 -8
  101. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EpsilonTransition.cpp +2 -6
  102. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EpsilonTransition.h +6 -3
  103. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LL1Analyzer.cpp +139 -108
  104. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LL1Analyzer.h +10 -43
  105. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNConfig.cpp +16 -33
  106. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNConfig.h +12 -12
  107. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNSimulator.cpp +69 -82
  108. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNSimulator.h +17 -28
  109. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerAction.cpp +12 -6
  110. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerAction.h +45 -11
  111. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionExecutor.cpp +48 -44
  112. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionExecutor.h +31 -18
  113. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionType.h +3 -1
  114. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerChannelAction.cpp +14 -26
  115. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerChannelAction.h +12 -16
  116. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerCustomAction.cpp +15 -32
  117. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerCustomAction.h +12 -24
  118. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.cpp +23 -29
  119. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.h +13 -19
  120. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerModeAction.cpp +13 -26
  121. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerModeAction.h +12 -16
  122. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerMoreAction.cpp +6 -17
  123. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerMoreAction.h +12 -16
  124. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPopModeAction.cpp +6 -17
  125. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPopModeAction.h +12 -16
  126. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPushModeAction.cpp +13 -26
  127. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPushModeAction.h +12 -16
  128. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerSkipAction.cpp +6 -17
  129. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerSkipAction.h +11 -15
  130. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerTypeAction.cpp +13 -26
  131. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerTypeAction.h +13 -17
  132. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LoopEndState.h +5 -1
  133. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/NotSetTransition.cpp +1 -6
  134. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/NotSetTransition.h +4 -2
  135. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.cpp +6 -2
  136. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.h +8 -3
  137. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulator.cpp +169 -152
  138. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulator.h +26 -19
  139. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulatorOptions.h +50 -0
  140. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusBlockStartState.h +5 -1
  141. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusLoopbackState.h +5 -2
  142. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.cpp +2 -11
  143. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.h +15 -9
  144. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.cpp +2 -2
  145. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.h +2 -2
  146. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateTransition.cpp +4 -14
  147. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateTransition.h +22 -11
  148. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContext.cpp +255 -338
  149. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContext.h +87 -116
  150. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextCache.cpp +56 -0
  151. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextCache.h +64 -0
  152. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextMergeCache.cpp +167 -0
  153. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextMergeCache.h +101 -0
  154. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextMergeCacheOptions.h +71 -0
  155. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextType.h +21 -0
  156. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionMode.cpp +18 -17
  157. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionMode.h +1 -1
  158. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.cpp +2 -2
  159. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.h +2 -2
  160. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RangeTransition.cpp +1 -5
  161. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RangeTransition.h +4 -2
  162. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStartState.h +4 -3
  163. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStopState.h +4 -2
  164. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleTransition.cpp +1 -5
  165. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleTransition.h +5 -3
  166. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContext.cpp +197 -156
  167. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContext.h +92 -81
  168. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContextType.h +23 -0
  169. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SerializedATNView.h +101 -0
  170. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SetTransition.cpp +2 -6
  171. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SetTransition.h +11 -3
  172. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.cpp +39 -34
  173. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.h +17 -10
  174. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarBlockStartState.h +5 -2
  175. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopEntryState.h +4 -2
  176. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopbackState.cpp +6 -6
  177. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopbackState.h +6 -2
  178. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TokensStartState.h +5 -2
  179. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Transition.cpp +1 -9
  180. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Transition.h +11 -22
  181. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TransitionType.cpp +27 -0
  182. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TransitionType.h +33 -0
  183. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/WildcardTransition.cpp +1 -5
  184. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/WildcardTransition.h +4 -2
  185. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFA.cpp +11 -23
  186. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFA.h +20 -15
  187. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFASerializer.cpp +2 -9
  188. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFASerializer.h +4 -4
  189. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFAState.cpp +9 -50
  190. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFAState.h +57 -48
  191. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.cpp +1 -4
  192. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.h +3 -4
  193. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/InterpreterDataReader.cpp +2 -2
  194. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/InterpreterDataReader.h +3 -1
  195. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Interval.cpp +1 -29
  196. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Interval.h +10 -10
  197. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/IntervalSet.cpp +15 -28
  198. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/IntervalSet.h +1 -9
  199. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/MurmurHash.cpp +54 -68
  200. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/MurmurHash.h +35 -9
  201. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Any.cpp +0 -5
  202. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Any.h +1 -155
  203. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Arrays.cpp +2 -2
  204. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Arrays.h +39 -0
  205. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/BitSet.h +1 -1
  206. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/CPPUtils.cpp +13 -54
  207. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/CPPUtils.h +16 -29
  208. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Casts.h +34 -0
  209. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Declarations.h +0 -2
  210. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/StringUtils.cpp +25 -23
  211. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/StringUtils.h +2 -40
  212. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Unicode.h +28 -0
  213. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Utf8.cpp +242 -0
  214. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Utf8.h +54 -0
  215. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/AbstractParseTreeVisitor.h +13 -12
  216. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNode.h +7 -2
  217. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.cpp +36 -5
  218. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.h +14 -4
  219. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/IterativeParseTreeWalker.cpp +14 -19
  220. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTree.cpp +0 -3
  221. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTree.h +14 -5
  222. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeType.h +22 -0
  223. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeVisitor.h +4 -4
  224. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeWalker.cpp +8 -9
  225. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeWalker.h +30 -6
  226. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNode.h +10 -2
  227. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.cpp +2 -5
  228. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.h +4 -5
  229. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/Trees.cpp +1 -1
  230. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePattern.cpp +1 -1
  231. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePatternMatcher.cpp +1 -2
  232. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPath.cpp +1 -1
  233. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.cpp +128 -119
  234. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.h +18 -27
  235. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleElement.cpp +1 -1
  236. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenElement.cpp +1 -1
  237. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/tests/Utf8Test.cpp +110 -0
  238. data/ext/express-parser/antlrgen/Express.interp +1 -1
  239. data/ext/express-parser/antlrgen/ExpressBaseListener.cpp +1 -1
  240. data/ext/express-parser/antlrgen/ExpressBaseListener.h +1 -1
  241. data/ext/express-parser/antlrgen/ExpressBaseVisitor.cpp +1 -1
  242. data/ext/express-parser/antlrgen/ExpressBaseVisitor.h +200 -200
  243. data/ext/express-parser/antlrgen/ExpressLexer.cpp +645 -1129
  244. data/ext/express-parser/antlrgen/ExpressLexer.h +20 -27
  245. data/ext/express-parser/antlrgen/ExpressLexer.interp +1 -1
  246. data/ext/express-parser/antlrgen/ExpressListener.cpp +1 -1
  247. data/ext/express-parser/antlrgen/ExpressListener.h +1 -1
  248. data/ext/express-parser/antlrgen/ExpressParser.cpp +1754 -1447
  249. data/ext/express-parser/antlrgen/ExpressParser.h +219 -223
  250. data/ext/express-parser/antlrgen/ExpressVisitor.cpp +1 -1
  251. data/ext/express-parser/antlrgen/ExpressVisitor.h +200 -200
  252. data/ext/express-parser/express_parser.cpp +165 -101
  253. data/ext/express-parser/extconf.rb +14 -14
  254. data/lib/expressir/config.rb +1 -1
  255. data/lib/expressir/express/parser.rb +17 -15
  256. data/lib/expressir/express/visitor.rb +7 -3
  257. data/lib/expressir/model.rb +78 -78
  258. data/lib/expressir/version.rb +1 -1
  259. data/rakelib/antlr4-native.rake +161 -0
  260. data/rakelib/cross-ruby.rake +213 -162
  261. data/spec/acceptance/version_spec.rb +17 -2
  262. data/spec/expressir/express/cache_spec.rb +23 -5
  263. data/spec/expressir/express/formatter_spec.rb +54 -8
  264. data/spec/expressir/express/parser_spec.rb +47 -11
  265. data/spec/expressir/model/model_element_spec.rb +198 -146
  266. data/spec/spec_helper.rb +7 -0
  267. metadata +79 -91
  268. data/demo.rb +0 -18
  269. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSerializer.cpp +0 -621
  270. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSerializer.h +0 -61
  271. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AbstractPredicateTransition.cpp +0 -14
  272. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AbstractPredicateTransition.h +0 -24
  273. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicBlockStartState.cpp +0 -12
  274. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicState.cpp +0 -12
  275. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockEndState.cpp +0 -15
  276. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockStartState.cpp +0 -9
  277. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EmptyPredictionContext.cpp +0 -35
  278. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EmptyPredictionContext.h +0 -27
  279. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LoopEndState.cpp +0 -12
  280. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Makefile +0 -67
  281. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusBlockStartState.cpp +0 -12
  282. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusLoopbackState.cpp +0 -12
  283. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStartState.cpp +0 -16
  284. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStopState.cpp +0 -12
  285. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarBlockStartState.cpp +0 -12
  286. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopEntryState.cpp +0 -15
  287. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TokensStartState.cpp +0 -12
  288. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/guid.cpp +0 -303
  289. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/guid.h +0 -112
  290. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNode.cpp +0 -9
  291. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNode.cpp +0 -9
  292. data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.exp +0 -9589
  293. data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.owl +0 -36619
  294. data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.xml +0 -13294
  295. data/original/examples/employment/eclipse/.project +0 -17
  296. data/original/examples/employment/eclipse/Export/Employment.png +0 -0
  297. data/original/examples/employment/eclipse/Express/employment_schema.exp +0 -33
  298. data/original/examples/employment/eclipse/Express/employment_schema.xmi +0 -77
  299. data/original/examples/employment/eclipse/Express/employment_schema.xml +0 -93
  300. data/original/examples/employment/eclipse/Models/Employment.uml +0 -4
  301. data/original/examples/employment/eclipse/Models/Employment.umldi +0 -240
  302. data/original/examples/employment/eclipse/readme.txt +0 -7
  303. data/original/examples/employment/employment_schema.exp +0 -33
  304. data/original/examples/employment/employment_schema.rb +0 -232
  305. data/original/examples/employment/employment_schema.xml +0 -93
  306. data/original/examples/employment/employment_schema___module.rb +0 -46
  307. data/original/examples/employment/employment_schema___p28attr.rb +0 -126
  308. data/original/examples/employment/employment_schema___p28inst.rb +0 -26
  309. data/original/examples/employment/example_employment_data.xml +0 -1
  310. data/original/examples/employment/example_employment_data_copy.xml +0 -1
  311. data/original/examples/employment/example_employment_reader.rb +0 -30
  312. data/original/examples/employment/example_employment_writer.rb +0 -51
  313. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.exp +0 -3710
  314. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.owl +0 -35880
  315. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.xmi +0 -15357
  316. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.xml +0 -9468
  317. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.exp +0 -8404
  318. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.owl +0 -43147
  319. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.xmi +0 -18341
  320. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.xml +0 -11632
  321. data/original/exp2ruby.rb +0 -525
  322. data/original/expsm.rb +0 -34
  323. data/original/mapping_owl.rb +0 -1018
  324. data/original/mapping_sysml.rb +0 -2281
  325. data/original/mapping_uml2.rb +0 -599
  326. data/original/mapping_uml2_eclipse.rb +0 -433
  327. data/original/reeper.rb +0 -134
  328. data/spec/expressr_spec.rb +0 -5
@@ -12,9 +12,13 @@ namespace atn {
12
12
 
13
13
  class ANTLR4CPP_PUBLIC StarLoopbackState final : public ATNState {
14
14
  public:
15
- StarLoopEntryState *getLoopEntryState();
15
+ static bool is(const ATNState &atnState) { return atnState.getStateType() == ATNStateType::STAR_LOOP_BACK; }
16
16
 
17
- virtual size_t getStateType() override;
17
+ static bool is(const ATNState *atnState) { return atnState != nullptr && is(*atnState); }
18
+
19
+ StarLoopbackState() : ATNState(ATNStateType::STAR_LOOP_BACK) {}
20
+
21
+ StarLoopEntryState *getLoopEntryState() const;
18
22
  };
19
23
 
20
24
  } // namespace atn
@@ -12,9 +12,12 @@ namespace atn {
12
12
 
13
13
  /// The Tokens rule start state linking to each lexer rule start state.
14
14
  class ANTLR4CPP_PUBLIC TokensStartState final : public DecisionState {
15
-
16
15
  public:
17
- virtual size_t getStateType() override;
16
+ static bool is(const ATNState &atnState) { return atnState.getStateType() == ATNStateType::TOKEN_START; }
17
+
18
+ static bool is(const ATNState *atnState) { return atnState != nullptr && is(*atnState); }
19
+
20
+ TokensStartState() : DecisionState(ATNStateType::TOKEN_START) {}
18
21
  };
19
22
 
20
23
  } // namespace atn
@@ -10,14 +10,9 @@
10
10
 
11
11
  using namespace antlr4;
12
12
  using namespace antlr4::atn;
13
-
14
13
  using namespace antlrcpp;
15
14
 
16
- const std::vector<std::string> Transition::serializationNames = {
17
- "INVALID", "EPSILON", "RANGE", "RULE", "PREDICATE", "ATOM", "ACTION", "SET", "NOT_SET", "WILDCARD", "PRECEDENCE"
18
- };
19
-
20
- Transition::Transition(ATNState *target) {
15
+ Transition::Transition(TransitionType transitionType, ATNState *target) : _transitionType(transitionType) {
21
16
  if (target == nullptr) {
22
17
  throw NullPointerException("target cannot be null.");
23
18
  }
@@ -25,9 +20,6 @@ Transition::Transition(ATNState *target) {
25
20
  this->target = target;
26
21
  }
27
22
 
28
- Transition::~Transition() {
29
- }
30
-
31
23
  bool Transition::isEpsilon() const {
32
24
  return false;
33
25
  }
@@ -6,6 +6,7 @@
6
6
  #pragma once
7
7
 
8
8
  #include "misc/IntervalSet.h"
9
+ #include "atn/TransitionType.h"
9
10
 
10
11
  namespace antlr4 {
11
12
  namespace atn {
@@ -25,33 +26,13 @@ namespace atn {
25
26
  /// </summary>
26
27
  class ANTLR4CPP_PUBLIC Transition {
27
28
  public:
28
- // constants for serialization
29
- enum SerializationType {
30
- EPSILON = 1,
31
- RANGE = 2,
32
- RULE = 3,
33
- PREDICATE = 4, // e.g., {isType(input.LT(1))}?
34
- ATOM = 5,
35
- ACTION = 6,
36
- SET = 7, // ~(A|B) or ~atom, wildcard, which convert to next 2
37
- NOT_SET = 8,
38
- WILDCARD = 9,
39
- PRECEDENCE = 10,
40
- };
41
-
42
- static const std::vector<std::string> serializationNames;
43
-
44
29
  /// The target of this transition.
45
30
  // ml: this is a reference into the ATN.
46
31
  ATNState *target;
47
32
 
48
- virtual ~Transition();
33
+ virtual ~Transition() = default;
49
34
 
50
- protected:
51
- Transition(ATNState *target);
52
-
53
- public:
54
- virtual SerializationType getSerializationType() const = 0;
35
+ TransitionType getTransitionType() const { return _transitionType; }
55
36
 
56
37
  /**
57
38
  * Determines if the transition is an "epsilon" transition.
@@ -70,7 +51,15 @@ namespace atn {
70
51
 
71
52
  Transition(Transition const&) = delete;
72
53
  Transition& operator=(Transition const&) = delete;
54
+
55
+ protected:
56
+ Transition(TransitionType transitionType, ATNState *target);
57
+
58
+ private:
59
+ const TransitionType _transitionType;
73
60
  };
74
61
 
62
+ using ConstTransitionPtr = std::unique_ptr<const Transition>;
63
+
75
64
  } // namespace atn
76
65
  } // namespace antlr4
@@ -0,0 +1,27 @@
1
+ #include "atn/TransitionType.h"
2
+
3
+ std::string antlr4::atn::transitionTypeName(TransitionType transitionType) {
4
+ switch (transitionType) {
5
+ case TransitionType::EPSILON:
6
+ return "EPSILON";
7
+ case TransitionType::RANGE:
8
+ return "RANGE";
9
+ case TransitionType::RULE:
10
+ return "RULE";
11
+ case TransitionType::PREDICATE:
12
+ return "PREDICATE";
13
+ case TransitionType::ATOM:
14
+ return "ATOM";
15
+ case TransitionType::ACTION:
16
+ return "ACTION";
17
+ case TransitionType::SET:
18
+ return "SET";
19
+ case TransitionType::NOT_SET:
20
+ return "NOT_SET";
21
+ case TransitionType::WILDCARD:
22
+ return "WILDCARD";
23
+ case TransitionType::PRECEDENCE:
24
+ return "PRECEDENCE";
25
+ }
26
+ return "UNKNOWN";
27
+ }
@@ -0,0 +1,33 @@
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 <cstddef>
9
+ #include <string>
10
+
11
+ #include "antlr4-common.h"
12
+
13
+ namespace antlr4 {
14
+ namespace atn {
15
+
16
+ // Constants for transition serialization.
17
+ enum class TransitionType : size_t {
18
+ EPSILON = 1,
19
+ RANGE = 2,
20
+ RULE = 3,
21
+ PREDICATE = 4, // e.g., {isType(input.LT(1))}?
22
+ ATOM = 5,
23
+ ACTION = 6,
24
+ SET = 7, // ~(A|B) or ~atom, wildcard, which convert to next 2
25
+ NOT_SET = 8,
26
+ WILDCARD = 9,
27
+ PRECEDENCE = 10,
28
+ };
29
+
30
+ ANTLR4CPP_PUBLIC std::string transitionTypeName(TransitionType transitionType);
31
+
32
+ } // namespace atn
33
+ } // namespace antlr4
@@ -9,11 +9,7 @@
9
9
 
10
10
  using namespace antlr4::atn;
11
11
 
12
- WildcardTransition::WildcardTransition(ATNState *target) : Transition(target) {
13
- }
14
-
15
- Transition::SerializationType WildcardTransition::getSerializationType() const {
16
- return WILDCARD;
12
+ WildcardTransition::WildcardTransition(ATNState *target) : Transition(TransitionType::WILDCARD, target) {
17
13
  }
18
14
 
19
15
  bool WildcardTransition::matches(size_t symbol, size_t minVocabSymbol, size_t maxVocabSymbol) const {
@@ -12,9 +12,11 @@ namespace atn {
12
12
 
13
13
  class ANTLR4CPP_PUBLIC WildcardTransition final : public Transition {
14
14
  public:
15
- WildcardTransition(ATNState *target);
15
+ static bool is(const Transition &transition) { return transition.getTransitionType() == TransitionType::WILDCARD; }
16
16
 
17
- virtual SerializationType getSerializationType() const override;
17
+ static bool is(const Transition *transition) { return transition != nullptr && is(*transition); }
18
+
19
+ explicit WildcardTransition(ATNState *target);
18
20
 
19
21
  virtual bool matches(size_t symbol, size_t minVocabSymbol, size_t maxVocabSymbol) const override;
20
22
 
@@ -8,6 +8,7 @@
8
8
  #include "support/CPPUtils.h"
9
9
  #include "atn/StarLoopEntryState.h"
10
10
  #include "atn/ATNConfigSet.h"
11
+ #include "support/Casts.h"
11
12
 
12
13
  #include "dfa/DFA.h"
13
14
 
@@ -22,8 +23,8 @@ DFA::DFA(atn::DecisionState *atnStartState, size_t decision)
22
23
  : atnStartState(atnStartState), s0(nullptr), decision(decision) {
23
24
 
24
25
  _precedenceDfa = false;
25
- if (is<atn::StarLoopEntryState *>(atnStartState)) {
26
- if (static_cast<atn::StarLoopEntryState *>(atnStartState)->isPrecedenceDecision) {
26
+ if (atn::StarLoopEntryState::is(atnStartState)) {
27
+ if (downCast<atn::StarLoopEntryState*>(atnStartState)->isPrecedenceDecision) {
27
28
  _precedenceDfa = true;
28
29
  s0 = new DFAState(std::unique_ptr<atn::ATNConfigSet>(new atn::ATNConfigSet()));
29
30
  s0->isAcceptState = false;
@@ -32,13 +33,12 @@ DFA::DFA(atn::DecisionState *atnStartState, size_t decision)
32
33
  }
33
34
  }
34
35
 
35
- DFA::DFA(DFA &&other) : atnStartState(other.atnStartState), decision(other.decision) {
36
+ DFA::DFA(DFA &&other) : atnStartState(other.atnStartState), s0(other.s0), decision(other.decision) {
36
37
  // Source states are implicitly cleared by the move.
37
38
  states = std::move(other.states);
38
39
 
39
40
  other.atnStartState = nullptr;
40
41
  other.decision = 0;
41
- s0 = other.s0;
42
42
  other.s0 = nullptr;
43
43
  _precedenceDfa = other._precedenceDfa;
44
44
  other._precedenceDfa = false;
@@ -46,14 +46,15 @@ DFA::DFA(DFA &&other) : atnStartState(other.atnStartState), decision(other.decis
46
46
 
47
47
  DFA::~DFA() {
48
48
  bool s0InList = (s0 == nullptr);
49
- for (auto state : states) {
49
+ for (auto *state : states) {
50
50
  if (state == s0)
51
51
  s0InList = true;
52
52
  delete state;
53
53
  }
54
54
 
55
- if (!s0InList)
55
+ if (!s0InList) {
56
56
  delete s0;
57
+ }
57
58
  }
58
59
 
59
60
  bool DFA::isPrecedenceDfa() const {
@@ -70,7 +71,7 @@ DFAState* DFA::getPrecedenceStartState(int precedence) const {
70
71
  return iterator->second;
71
72
  }
72
73
 
73
- void DFA::setPrecedenceStartState(int precedence, DFAState *startState, SingleWriteMultipleReadLock &lock) {
74
+ void DFA::setPrecedenceStartState(int precedence, DFAState *startState) {
74
75
  if (!isPrecedenceDfa()) {
75
76
  throw IllegalStateException("Only precedence DFAs may contain a precedence start state.");
76
77
  }
@@ -79,16 +80,12 @@ void DFA::setPrecedenceStartState(int precedence, DFAState *startState, SingleWr
79
80
  return;
80
81
  }
81
82
 
82
- {
83
- lock.writeLock();
84
- s0->edges[precedence] = startState;
85
- lock.writeUnlock();
86
- }
83
+ s0->edges[precedence] = startState;
87
84
  }
88
85
 
89
86
  std::vector<DFAState *> DFA::getStates() const {
90
87
  std::vector<DFAState *> result;
91
- for (auto state : states)
88
+ for (auto *state : states)
92
89
  result.push_back(state);
93
90
 
94
91
  std::sort(result.begin(), result.end(), [](DFAState *o1, DFAState *o2) -> bool {
@@ -98,15 +95,6 @@ std::vector<DFAState *> DFA::getStates() const {
98
95
  return result;
99
96
  }
100
97
 
101
- std::string DFA::toString(const std::vector<std::string> &tokenNames) {
102
- if (s0 == nullptr) {
103
- return "";
104
- }
105
- DFASerializer serializer(this, tokenNames);
106
-
107
- return serializer.toString();
108
- }
109
-
110
98
  std::string DFA::toString(const Vocabulary &vocabulary) const {
111
99
  if (s0 == nullptr) {
112
100
  return "";
@@ -116,7 +104,7 @@ std::string DFA::toString(const Vocabulary &vocabulary) const {
116
104
  return serializer.toString();
117
105
  }
118
106
 
119
- std::string DFA::toLexerString() {
107
+ std::string DFA::toLexerString() const {
120
108
  if (s0 == nullptr) {
121
109
  return "";
122
110
  }
@@ -7,29 +7,38 @@
7
7
 
8
8
  #include "dfa/DFAState.h"
9
9
 
10
- namespace antlrcpp {
11
- class SingleWriteMultipleReadLock;
12
- }
13
-
14
10
  namespace antlr4 {
15
11
  namespace dfa {
16
12
 
17
- class ANTLR4CPP_PUBLIC DFA {
13
+ class ANTLR4CPP_PUBLIC DFA final {
14
+ private:
15
+ struct DFAStateHasher final {
16
+ size_t operator()(const DFAState *dfaState) const {
17
+ return dfaState->hashCode();
18
+ }
19
+ };
20
+
21
+ struct DFAStateComparer final {
22
+ bool operator()(const DFAState *lhs, const DFAState *rhs) const {
23
+ return lhs == rhs || *lhs == *rhs;
24
+ }
25
+ };
26
+
18
27
  public:
19
28
  /// A set of all DFA states. Use a map so we can get old state back.
20
29
  /// Set only allows you to see if it's there.
21
30
 
22
31
  /// From which ATN state did we create this DFA?
23
32
  atn::DecisionState *atnStartState;
24
- std::unordered_set<DFAState *, DFAState::Hasher, DFAState::Comparer> states; // States are owned by this class.
33
+ std::unordered_set<DFAState*, DFAStateHasher, DFAStateComparer> states; // States are owned by this class.
25
34
  DFAState *s0;
26
35
  size_t decision;
27
36
 
28
- DFA(atn::DecisionState *atnStartState);
37
+ explicit DFA(atn::DecisionState *atnStartState);
29
38
  DFA(atn::DecisionState *atnStartState, size_t decision);
30
39
  DFA(const DFA &other) = delete;
31
40
  DFA(DFA &&other);
32
- virtual ~DFA();
41
+ ~DFA();
33
42
 
34
43
  /**
35
44
  * Gets whether this DFA is a precedence DFA. Precedence DFAs use a special
@@ -66,18 +75,14 @@ namespace dfa {
66
75
  * @throws IllegalStateException if this is not a precedence DFA.
67
76
  * @see #isPrecedenceDfa()
68
77
  */
69
- void setPrecedenceStartState(int precedence, DFAState *startState, antlrcpp::SingleWriteMultipleReadLock &lock);
78
+ void setPrecedenceStartState(int precedence, DFAState *startState);
70
79
 
71
80
  /// Return a list of all states in this DFA, ordered by state number.
72
- virtual std::vector<DFAState *> getStates() const;
81
+ std::vector<DFAState *> getStates() const;
73
82
 
74
- /**
75
- * @deprecated Use {@link #toString(Vocabulary)} instead.
76
- */
77
- virtual std::string toString(const std::vector<std::string>& tokenNames);
78
83
  std::string toString(const Vocabulary &vocabulary) const;
79
84
 
80
- virtual std::string toLexerString();
85
+ std::string toLexerString() const;
81
86
 
82
87
  private:
83
88
  /**
@@ -10,16 +10,9 @@
10
10
 
11
11
  using namespace antlr4::dfa;
12
12
 
13
- DFASerializer::DFASerializer(const DFA *dfa, const std::vector<std::string>& tokenNames)
14
- : DFASerializer(dfa, Vocabulary::fromTokenNames(tokenNames)) {
15
- }
16
-
17
13
  DFASerializer::DFASerializer(const DFA *dfa, const Vocabulary &vocabulary) : _dfa(dfa), _vocabulary(vocabulary) {
18
14
  }
19
15
 
20
- DFASerializer::~DFASerializer() {
21
- }
22
-
23
16
  std::string DFASerializer::toString() const {
24
17
  if (_dfa->s0 == nullptr) {
25
18
  return "";
@@ -27,7 +20,7 @@ std::string DFASerializer::toString() const {
27
20
 
28
21
  std::stringstream ss;
29
22
  std::vector<DFAState *> states = _dfa->getStates();
30
- for (auto s : states) {
23
+ for (auto *s : states) {
31
24
  for (size_t i = 0; i < s->edges.size(); i++) {
32
25
  DFAState *t = s->edges[i];
33
26
  if (t != nullptr && t->stateNumber != INT32_MAX) {
@@ -55,7 +48,7 @@ std::string DFASerializer::getStateString(DFAState *s) const {
55
48
  if (!s->predicates.empty()) {
56
49
  std::string buf;
57
50
  for (size_t i = 0; i < s->predicates.size(); i++) {
58
- buf.append(s->predicates[i]->toString());
51
+ buf.append(s->predicates[i].toString());
59
52
  }
60
53
  return baseStateStr + "=>" + buf;
61
54
  } else {
@@ -13,15 +13,15 @@ namespace dfa {
13
13
  /// A DFA walker that knows how to dump them to serialized strings.
14
14
  class ANTLR4CPP_PUBLIC DFASerializer {
15
15
  public:
16
- DFASerializer(const DFA *dfa, const std::vector<std::string>& tnames);
17
16
  DFASerializer(const DFA *dfa, const Vocabulary &vocabulary);
18
- virtual ~DFASerializer();
19
17
 
20
- virtual std::string toString() const;
18
+ virtual ~DFASerializer() = default;
19
+
20
+ std::string toString() const;
21
21
 
22
22
  protected:
23
23
  virtual std::string getEdgeLabel(size_t i) const;
24
- virtual std::string getStateString(DFAState *s) const;
24
+ std::string getStateString(DFAState *s) const;
25
25
 
26
26
  private:
27
27
  const DFA *_dfa;
@@ -13,41 +13,11 @@
13
13
  using namespace antlr4::dfa;
14
14
  using namespace antlr4::atn;
15
15
 
16
- DFAState::PredPrediction::PredPrediction(const Ref<SemanticContext> &pred, int alt) : pred(pred) {
17
- InitializeInstanceFields();
18
- this->alt = alt;
19
- }
20
-
21
- DFAState::PredPrediction::~PredPrediction() {
22
- }
23
-
24
- std::string DFAState::PredPrediction::toString() {
16
+ std::string DFAState::PredPrediction::toString() const {
25
17
  return std::string("(") + pred->toString() + ", " + std::to_string(alt) + ")";
26
18
  }
27
19
 
28
- void DFAState::PredPrediction::InitializeInstanceFields() {
29
- alt = 0;
30
- }
31
-
32
- DFAState::DFAState() {
33
- InitializeInstanceFields();
34
- }
35
-
36
- DFAState::DFAState(int state) : DFAState() {
37
- stateNumber = state;
38
- }
39
-
40
- DFAState::DFAState(std::unique_ptr<ATNConfigSet> configs_) : DFAState() {
41
- configs = std::move(configs_);
42
- }
43
-
44
- DFAState::~DFAState() {
45
- for (auto predicate : predicates) {
46
- delete predicate;
47
- }
48
- }
49
-
50
- std::set<size_t> DFAState::getAltSet() {
20
+ std::set<size_t> DFAState::getAltSet() const {
51
21
  std::set<size_t> alts;
52
22
  if (configs != nullptr) {
53
23
  for (size_t i = 0; i < configs->size(); i++) {
@@ -58,22 +28,18 @@ std::set<size_t> DFAState::getAltSet() {
58
28
  }
59
29
 
60
30
  size_t DFAState::hashCode() const {
61
- size_t hash = misc::MurmurHash::initialize(7);
62
- hash = misc::MurmurHash::update(hash, configs->hashCode());
63
- hash = misc::MurmurHash::finish(hash, 1);
64
- return hash;
31
+ return configs != nullptr ? configs->hashCode() : 0;
65
32
  }
66
33
 
67
- bool DFAState::operator == (const DFAState &o) const {
68
- // compare set of ATN configurations in this set with other
69
- if (this == &o) {
34
+ bool DFAState::equals(const DFAState &other) const {
35
+ if (this == std::addressof(other)) {
70
36
  return true;
71
37
  }
72
-
73
- return *configs == *o.configs;
38
+ return configs == other.configs ||
39
+ (configs != nullptr && other.configs != nullptr && *configs == *other.configs);
74
40
  }
75
41
 
76
- std::string DFAState::toString() {
42
+ std::string DFAState::toString() const {
77
43
  std::stringstream ss;
78
44
  ss << stateNumber;
79
45
  if (configs) {
@@ -83,7 +49,7 @@ std::string DFAState::toString() {
83
49
  ss << " => ";
84
50
  if (!predicates.empty()) {
85
51
  for (size_t i = 0; i < predicates.size(); i++) {
86
- ss << predicates[i]->toString();
52
+ ss << predicates[i].toString();
87
53
  }
88
54
  } else {
89
55
  ss << prediction;
@@ -91,10 +57,3 @@ std::string DFAState::toString() {
91
57
  }
92
58
  return ss.str();
93
59
  }
94
-
95
- void DFAState::InitializeInstanceFields() {
96
- stateNumber = -1;
97
- isAcceptState = false;
98
- prediction = 0;
99
- requiresFullContext = false;
100
- }