expressir 1.2.4 → 1.2.7

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 (312) hide show
  1. checksums.yaml +4 -4
  2. data/.cross_rubies +0 -6
  3. data/.github/workflows/rake.yml +200 -21
  4. data/.gitignore +7 -2
  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 +12 -10
  16. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/CMakeLists.txt +44 -34
  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 +11 -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 +20 -20
  26. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRFileStream.cpp +0 -6
  27. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRInputStream.cpp +30 -19
  28. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRInputStream.h +13 -10
  29. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonToken.cpp +2 -4
  30. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/DefaultErrorStrategy.cpp +16 -13
  31. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Exceptions.cpp +2 -2
  32. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Exceptions.h +2 -2
  33. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/FailedPredicateException.cpp +5 -4
  34. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/FailedPredicateException.h +1 -1
  35. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/IntStream.h +0 -6
  36. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Lexer.cpp +0 -1
  37. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Lexer.h +0 -13
  38. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerInterpreter.cpp +0 -15
  39. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerInterpreter.h +1 -7
  40. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Parser.cpp +47 -27
  41. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Parser.h +0 -6
  42. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserInterpreter.cpp +27 -39
  43. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserInterpreter.h +1 -7
  44. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserRuleContext.cpp +19 -22
  45. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserRuleContext.h +20 -20
  46. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RecognitionException.cpp +0 -1
  47. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Recognizer.cpp +16 -27
  48. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Recognizer.h +10 -21
  49. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContext.cpp +4 -3
  50. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContext.h +5 -1
  51. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuntimeMetaData.cpp +2 -1
  52. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Token.h +0 -32
  53. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStreamRewriter.cpp +1 -1
  54. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStreamRewriter.h +2 -7
  55. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedCharStream.cpp +15 -18
  56. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedCharStream.h +12 -18
  57. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Version.h +42 -0
  58. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Vocabulary.cpp +13 -45
  59. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Vocabulary.h +11 -26
  60. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/antlr4-common.h +19 -61
  61. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/antlr4-runtime.h +7 -5
  62. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATN.cpp +4 -55
  63. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATN.h +34 -20
  64. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfig.cpp +30 -35
  65. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfig.h +35 -32
  66. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfigSet.cpp +58 -54
  67. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfigSet.h +77 -31
  68. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.cpp +22 -32
  69. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.h +22 -24
  70. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializer.cpp +335 -462
  71. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializer.h +9 -68
  72. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSimulator.cpp +9 -39
  73. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSimulator.h +6 -22
  74. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNState.cpp +10 -26
  75. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNState.h +41 -42
  76. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNStateType.cpp +33 -0
  77. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNStateType.h +36 -0
  78. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ActionTransition.cpp +2 -6
  79. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ActionTransition.h +4 -2
  80. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.cpp +49 -22
  81. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.h +20 -12
  82. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AtomTransition.cpp +1 -5
  83. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AtomTransition.h +5 -2
  84. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicBlockStartState.h +4 -2
  85. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicState.h +4 -2
  86. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockEndState.h +5 -3
  87. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockStartState.h +10 -1
  88. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionInfo.h +1 -1
  89. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionState.cpp +0 -5
  90. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionState.h +12 -8
  91. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EpsilonTransition.cpp +2 -6
  92. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EpsilonTransition.h +6 -3
  93. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LL1Analyzer.cpp +139 -106
  94. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LL1Analyzer.h +9 -48
  95. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNConfig.cpp +16 -33
  96. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNConfig.h +12 -12
  97. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNSimulator.cpp +69 -82
  98. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNSimulator.h +15 -33
  99. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerAction.cpp +12 -6
  100. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerAction.h +45 -11
  101. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionExecutor.cpp +48 -44
  102. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionExecutor.h +31 -18
  103. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionType.h +3 -1
  104. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerChannelAction.cpp +14 -26
  105. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerChannelAction.h +12 -16
  106. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerCustomAction.cpp +15 -32
  107. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerCustomAction.h +12 -24
  108. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.cpp +23 -29
  109. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.h +13 -19
  110. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerModeAction.cpp +13 -26
  111. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerModeAction.h +12 -16
  112. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerMoreAction.cpp +6 -17
  113. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerMoreAction.h +12 -16
  114. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPopModeAction.cpp +6 -17
  115. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPopModeAction.h +12 -16
  116. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPushModeAction.cpp +13 -26
  117. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPushModeAction.h +12 -16
  118. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerSkipAction.cpp +6 -17
  119. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerSkipAction.h +11 -15
  120. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerTypeAction.cpp +13 -26
  121. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerTypeAction.h +13 -17
  122. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LoopEndState.h +5 -1
  123. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/NotSetTransition.cpp +1 -6
  124. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/NotSetTransition.h +4 -2
  125. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.cpp +6 -2
  126. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.h +8 -3
  127. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulator.cpp +164 -151
  128. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulator.h +26 -19
  129. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulatorOptions.h +50 -0
  130. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusBlockStartState.h +5 -1
  131. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusLoopbackState.h +5 -2
  132. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.cpp +2 -11
  133. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.h +15 -9
  134. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.cpp +2 -2
  135. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.h +2 -2
  136. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateTransition.cpp +4 -14
  137. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateTransition.h +22 -11
  138. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContext.cpp +255 -338
  139. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContext.h +86 -127
  140. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextCache.cpp +56 -0
  141. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextCache.h +64 -0
  142. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextMergeCache.cpp +167 -0
  143. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextMergeCache.h +101 -0
  144. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextMergeCacheOptions.h +71 -0
  145. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContextType.h +21 -0
  146. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionMode.cpp +18 -17
  147. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionMode.h +1 -1
  148. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.cpp +2 -2
  149. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.h +2 -2
  150. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RangeTransition.cpp +1 -5
  151. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RangeTransition.h +4 -2
  152. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStartState.h +4 -3
  153. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStopState.h +4 -2
  154. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleTransition.cpp +1 -5
  155. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleTransition.h +5 -3
  156. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContext.cpp +197 -156
  157. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContext.h +92 -81
  158. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContextType.h +23 -0
  159. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SerializedATNView.h +101 -0
  160. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SetTransition.cpp +2 -6
  161. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SetTransition.h +11 -3
  162. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.cpp +39 -34
  163. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.h +17 -10
  164. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarBlockStartState.h +5 -2
  165. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopEntryState.h +4 -2
  166. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopbackState.cpp +6 -6
  167. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopbackState.h +6 -2
  168. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TokensStartState.h +5 -2
  169. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Transition.cpp +1 -9
  170. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Transition.h +11 -22
  171. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TransitionType.cpp +27 -0
  172. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TransitionType.h +33 -0
  173. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/WildcardTransition.cpp +1 -5
  174. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/WildcardTransition.h +4 -2
  175. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFA.cpp +9 -21
  176. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFA.h +20 -15
  177. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFASerializer.cpp +1 -8
  178. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFASerializer.h +4 -4
  179. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFAState.cpp +9 -50
  180. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFAState.h +57 -48
  181. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.cpp +1 -4
  182. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.h +3 -4
  183. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/InterpreterDataReader.cpp +2 -2
  184. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/InterpreterDataReader.h +3 -1
  185. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Interval.cpp +1 -29
  186. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Interval.h +10 -10
  187. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/IntervalSet.cpp +7 -20
  188. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/IntervalSet.h +1 -9
  189. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/MurmurHash.cpp +54 -68
  190. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/MurmurHash.h +34 -14
  191. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Any.cpp +0 -5
  192. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Any.h +1 -155
  193. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Arrays.h +39 -0
  194. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/BitSet.h +1 -1
  195. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/CPPUtils.cpp +12 -53
  196. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/CPPUtils.h +16 -29
  197. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Casts.h +34 -0
  198. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Declarations.h +0 -2
  199. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/StringUtils.cpp +25 -33
  200. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/StringUtils.h +2 -62
  201. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Unicode.h +28 -0
  202. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Utf8.cpp +242 -0
  203. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Utf8.h +54 -0
  204. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/AbstractParseTreeVisitor.h +13 -12
  205. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNode.h +7 -2
  206. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.cpp +36 -5
  207. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.h +14 -4
  208. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/IterativeParseTreeWalker.cpp +14 -19
  209. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTree.cpp +0 -3
  210. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTree.h +13 -4
  211. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeType.h +22 -0
  212. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeVisitor.h +4 -4
  213. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeWalker.cpp +8 -9
  214. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeWalker.h +4 -4
  215. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNode.h +10 -2
  216. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.cpp +2 -5
  217. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.h +4 -5
  218. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePatternMatcher.cpp +1 -2
  219. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.cpp +128 -119
  220. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.h +18 -27
  221. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/tests/Utf8Test.cpp +110 -0
  222. data/ext/express-parser/antlrgen/Express.interp +1 -1
  223. data/ext/express-parser/antlrgen/ExpressBaseListener.cpp +1 -1
  224. data/ext/express-parser/antlrgen/ExpressBaseListener.h +1 -1
  225. data/ext/express-parser/antlrgen/ExpressBaseVisitor.cpp +1 -1
  226. data/ext/express-parser/antlrgen/ExpressBaseVisitor.h +200 -200
  227. data/ext/express-parser/antlrgen/ExpressLexer.cpp +645 -1129
  228. data/ext/express-parser/antlrgen/ExpressLexer.h +20 -27
  229. data/ext/express-parser/antlrgen/ExpressLexer.interp +1 -1
  230. data/ext/express-parser/antlrgen/ExpressListener.cpp +1 -1
  231. data/ext/express-parser/antlrgen/ExpressListener.h +1 -1
  232. data/ext/express-parser/antlrgen/ExpressParser.cpp +1754 -1447
  233. data/ext/express-parser/antlrgen/ExpressParser.h +219 -223
  234. data/ext/express-parser/antlrgen/ExpressVisitor.cpp +1 -1
  235. data/ext/express-parser/antlrgen/ExpressVisitor.h +200 -200
  236. data/ext/express-parser/express_parser.cpp +294 -86
  237. data/ext/express-parser/extconf.rb +13 -12
  238. data/lib/expressir/config.rb +1 -1
  239. data/lib/expressir/express/parser.rb +3 -4
  240. data/lib/expressir/express/visitor.rb +7 -5
  241. data/lib/expressir/model.rb +78 -78
  242. data/lib/expressir/version.rb +1 -1
  243. data/rakelib/antlr4-native.rake +161 -0
  244. data/rakelib/cross-ruby.rake +213 -162
  245. data/spec/acceptance/version_spec.rb +17 -2
  246. data/spec/expressir/express/cache_spec.rb +23 -5
  247. data/spec/expressir/express/formatter_spec.rb +54 -8
  248. data/spec/expressir/express/parser_spec.rb +47 -11
  249. data/spec/expressir/model/model_element_spec.rb +198 -146
  250. data/spec/spec_helper.rb +7 -0
  251. metadata +81 -93
  252. data/demo.rb +0 -18
  253. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSerializer.cpp +0 -621
  254. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSerializer.h +0 -61
  255. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AbstractPredicateTransition.cpp +0 -14
  256. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AbstractPredicateTransition.h +0 -24
  257. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicBlockStartState.cpp +0 -12
  258. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicState.cpp +0 -12
  259. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockEndState.cpp +0 -15
  260. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockStartState.cpp +0 -9
  261. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EmptyPredictionContext.cpp +0 -35
  262. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EmptyPredictionContext.h +0 -27
  263. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LoopEndState.cpp +0 -12
  264. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Makefile +0 -67
  265. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusBlockStartState.cpp +0 -12
  266. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusLoopbackState.cpp +0 -12
  267. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStartState.cpp +0 -16
  268. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStopState.cpp +0 -12
  269. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarBlockStartState.cpp +0 -12
  270. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopEntryState.cpp +0 -15
  271. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TokensStartState.cpp +0 -12
  272. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/guid.cpp +0 -303
  273. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/guid.h +0 -112
  274. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNode.cpp +0 -9
  275. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNode.cpp +0 -9
  276. data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.exp +0 -9589
  277. data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.owl +0 -36619
  278. data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.xml +0 -13294
  279. data/original/examples/employment/eclipse/.project +0 -17
  280. data/original/examples/employment/eclipse/Export/Employment.png +0 -0
  281. data/original/examples/employment/eclipse/Express/employment_schema.exp +0 -33
  282. data/original/examples/employment/eclipse/Express/employment_schema.xmi +0 -77
  283. data/original/examples/employment/eclipse/Express/employment_schema.xml +0 -93
  284. data/original/examples/employment/eclipse/Models/Employment.uml +0 -4
  285. data/original/examples/employment/eclipse/Models/Employment.umldi +0 -240
  286. data/original/examples/employment/eclipse/readme.txt +0 -7
  287. data/original/examples/employment/employment_schema.exp +0 -33
  288. data/original/examples/employment/employment_schema.rb +0 -232
  289. data/original/examples/employment/employment_schema.xml +0 -93
  290. data/original/examples/employment/employment_schema___module.rb +0 -46
  291. data/original/examples/employment/employment_schema___p28attr.rb +0 -126
  292. data/original/examples/employment/employment_schema___p28inst.rb +0 -26
  293. data/original/examples/employment/example_employment_data.xml +0 -1
  294. data/original/examples/employment/example_employment_data_copy.xml +0 -1
  295. data/original/examples/employment/example_employment_reader.rb +0 -30
  296. data/original/examples/employment/example_employment_writer.rb +0 -51
  297. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.exp +0 -3710
  298. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.owl +0 -35880
  299. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.xmi +0 -15357
  300. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.xml +0 -9468
  301. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.exp +0 -8404
  302. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.owl +0 -43147
  303. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.xmi +0 -18341
  304. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.xml +0 -11632
  305. data/original/exp2ruby.rb +0 -525
  306. data/original/expsm.rb +0 -34
  307. data/original/mapping_owl.rb +0 -1018
  308. data/original/mapping_sysml.rb +0 -2281
  309. data/original/mapping_uml2.rb +0 -599
  310. data/original/mapping_uml2_eclipse.rb +0 -433
  311. data/original/reeper.rb +0 -134
  312. data/spec/expressr_spec.rb +0 -5
@@ -5,52 +5,39 @@
5
5
 
6
6
  #include "misc/MurmurHash.h"
7
7
  #include "Lexer.h"
8
+ #include "support/Casts.h"
8
9
 
9
10
  #include "atn/LexerModeAction.h"
10
11
 
11
12
  using namespace antlr4;
12
13
  using namespace antlr4::atn;
13
14
  using namespace antlr4::misc;
15
+ using namespace antlrcpp;
14
16
 
15
- LexerModeAction::LexerModeAction(int mode) : _mode(mode) {
16
- }
17
-
18
- int LexerModeAction::getMode() {
19
- return _mode;
20
- }
21
-
22
- LexerActionType LexerModeAction::getActionType() const {
23
- return LexerActionType::MODE;
24
- }
17
+ LexerModeAction::LexerModeAction(int mode) : LexerAction(LexerActionType::MODE, false), _mode(mode) {}
25
18
 
26
- bool LexerModeAction::isPositionDependent() const {
27
- return false;
19
+ void LexerModeAction::execute(Lexer *lexer) const {
20
+ lexer->setMode(getMode());
28
21
  }
29
22
 
30
- void LexerModeAction::execute(Lexer *lexer) {
31
- lexer->setMode(_mode);
32
- }
33
-
34
- size_t LexerModeAction::hashCode() const {
23
+ size_t LexerModeAction::hashCodeImpl() const {
35
24
  size_t hash = MurmurHash::initialize();
36
25
  hash = MurmurHash::update(hash, static_cast<size_t>(getActionType()));
37
- hash = MurmurHash::update(hash, _mode);
26
+ hash = MurmurHash::update(hash, getMode());
38
27
  return MurmurHash::finish(hash, 2);
39
28
  }
40
29
 
41
- bool LexerModeAction::operator == (const LexerAction &obj) const {
42
- if (&obj == this) {
30
+ bool LexerModeAction::equals(const LexerAction &other) const {
31
+ if (this == std::addressof(other)) {
43
32
  return true;
44
33
  }
45
-
46
- const LexerModeAction *action = dynamic_cast<const LexerModeAction *>(&obj);
47
- if (action == nullptr) {
34
+ if (getActionType() != other.getActionType()) {
48
35
  return false;
49
36
  }
50
-
51
- return _mode == action->_mode;
37
+ const auto &lexerAction = downCast<const LexerModeAction&>(other);
38
+ return getMode() == lexerAction.getMode();
52
39
  }
53
40
 
54
41
  std::string LexerModeAction::toString() const {
55
- return "mode(" + std::to_string(_mode) + ")";
42
+ return "mode(" + std::to_string(getMode()) + ")";
56
43
  }
@@ -20,26 +20,20 @@ namespace atn {
20
20
  /// </summary>
21
21
  class ANTLR4CPP_PUBLIC LexerModeAction final : public LexerAction {
22
22
  public:
23
+ static bool is(const LexerAction &lexerAction) { return lexerAction.getActionType() == LexerActionType::MODE; }
24
+
25
+ static bool is(const LexerAction *lexerAction) { return lexerAction != nullptr && is(*lexerAction); }
26
+
23
27
  /// <summary>
24
28
  /// Constructs a new {@code mode} action with the specified mode value. </summary>
25
29
  /// <param name="mode"> The mode value to pass to <seealso cref="Lexer#mode"/>. </param>
26
- LexerModeAction(int mode);
30
+ explicit LexerModeAction(int mode);
27
31
 
28
32
  /// <summary>
29
33
  /// Get the lexer mode this action should transition the lexer to.
30
34
  /// </summary>
31
35
  /// <returns> The lexer mode for this {@code mode} command. </returns>
32
- int getMode();
33
-
34
- /// <summary>
35
- /// {@inheritDoc} </summary>
36
- /// <returns> This method returns <seealso cref="LexerActionType#MODE"/>. </returns>
37
- virtual LexerActionType getActionType() const override;
38
-
39
- /// <summary>
40
- /// {@inheritDoc} </summary>
41
- /// <returns> This method returns {@code false}. </returns>
42
- virtual bool isPositionDependent() const override;
36
+ int getMode() const { return _mode; }
43
37
 
44
38
  /// <summary>
45
39
  /// {@inheritDoc}
@@ -47,11 +41,13 @@ namespace atn {
47
41
  /// <para>This action is implemented by calling <seealso cref="Lexer#mode"/> with the
48
42
  /// value provided by <seealso cref="#getMode"/>.</para>
49
43
  /// </summary>
50
- virtual void execute(Lexer *lexer) override;
44
+ void execute(Lexer *lexer) const override;
45
+
46
+ bool equals(const LexerAction &obj) const override;
47
+ std::string toString() const override;
51
48
 
52
- virtual size_t hashCode() const override;
53
- virtual bool operator == (const LexerAction &obj) const override;
54
- virtual std::string toString() const override;
49
+ protected:
50
+ size_t hashCodeImpl() const override;
55
51
 
56
52
  private:
57
53
  const int _mode;
@@ -12,34 +12,23 @@ using namespace antlr4;
12
12
  using namespace antlr4::atn;
13
13
  using namespace antlr4::misc;
14
14
 
15
- const Ref<LexerMoreAction> LexerMoreAction::getInstance() {
16
- static Ref<LexerMoreAction> instance(new LexerMoreAction());
15
+ const Ref<const LexerMoreAction>& LexerMoreAction::getInstance() {
16
+ static const Ref<const LexerMoreAction> instance(new LexerMoreAction());
17
17
  return instance;
18
18
  }
19
19
 
20
- LexerMoreAction::LexerMoreAction() {
21
- }
22
-
23
- LexerActionType LexerMoreAction::getActionType() const {
24
- return LexerActionType::MORE;
25
- }
26
-
27
- bool LexerMoreAction::isPositionDependent() const {
28
- return false;
29
- }
30
-
31
- void LexerMoreAction::execute(Lexer *lexer) {
20
+ void LexerMoreAction::execute(Lexer *lexer) const {
32
21
  lexer->more();
33
22
  }
34
23
 
35
- size_t LexerMoreAction::hashCode() const {
24
+ size_t LexerMoreAction::hashCodeImpl() const {
36
25
  size_t hash = MurmurHash::initialize();
37
26
  hash = MurmurHash::update(hash, static_cast<size_t>(getActionType()));
38
27
  return MurmurHash::finish(hash, 1);
39
28
  }
40
29
 
41
- bool LexerMoreAction::operator == (const LexerAction &obj) const {
42
- return &obj == this;
30
+ bool LexerMoreAction::equals(const LexerAction &other) const {
31
+ return this == std::addressof(other);
43
32
  }
44
33
 
45
34
  std::string LexerMoreAction::toString() const {
@@ -22,35 +22,31 @@ namespace atn {
22
22
  /// </summary>
23
23
  class ANTLR4CPP_PUBLIC LexerMoreAction final : public LexerAction {
24
24
  public:
25
- /// <summary>
26
- /// Provides a singleton instance of this parameterless lexer action.
27
- /// </summary>
28
- static const Ref<LexerMoreAction> getInstance();
25
+ static bool is(const LexerAction &lexerAction) { return lexerAction.getActionType() == LexerActionType::MORE; }
29
26
 
30
- /// <summary>
31
- /// {@inheritDoc} </summary>
32
- /// <returns> This method returns <seealso cref="LexerActionType#MORE"/>. </returns>
33
- virtual LexerActionType getActionType() const override;
27
+ static bool is(const LexerAction *lexerAction) { return lexerAction != nullptr && is(*lexerAction); }
34
28
 
35
29
  /// <summary>
36
- /// {@inheritDoc} </summary>
37
- /// <returns> This method returns {@code false}. </returns>
38
- virtual bool isPositionDependent() const override;
30
+ /// Provides a singleton instance of this parameterless lexer action.
31
+ /// </summary>
32
+ static const Ref<const LexerMoreAction>& getInstance();
39
33
 
40
34
  /// <summary>
41
35
  /// {@inheritDoc}
42
36
  ///
43
37
  /// <para>This action is implemented by calling <seealso cref="Lexer#more"/>.</para>
44
38
  /// </summary>
45
- virtual void execute(Lexer *lexer) override;
39
+ void execute(Lexer *lexer) const override;
40
+
41
+ bool equals(const LexerAction &obj) const override;
42
+ std::string toString() const override;
46
43
 
47
- virtual size_t hashCode() const override;
48
- virtual bool operator == (const LexerAction &obj) const override;
49
- virtual std::string toString() const override;
44
+ protected:
45
+ size_t hashCodeImpl() const override;
50
46
 
51
47
  private:
52
48
  /// Constructs the singleton instance of the lexer {@code more} command.
53
- LexerMoreAction();
49
+ LexerMoreAction() : LexerAction(LexerActionType::MORE, false) {}
54
50
  };
55
51
 
56
52
  } // namespace atn
@@ -12,34 +12,23 @@ using namespace antlr4;
12
12
  using namespace antlr4::atn;
13
13
  using namespace antlr4::misc;
14
14
 
15
- const Ref<LexerPopModeAction> LexerPopModeAction::getInstance() {
16
- static Ref<LexerPopModeAction> instance(new LexerPopModeAction());
15
+ const Ref<const LexerPopModeAction>& LexerPopModeAction::getInstance() {
16
+ static const Ref<const LexerPopModeAction> instance(new LexerPopModeAction());
17
17
  return instance;
18
18
  }
19
19
 
20
- LexerPopModeAction::LexerPopModeAction() {
21
- }
22
-
23
- LexerActionType LexerPopModeAction::getActionType() const {
24
- return LexerActionType::POP_MODE;
25
- }
26
-
27
- bool LexerPopModeAction::isPositionDependent() const {
28
- return false;
29
- }
30
-
31
- void LexerPopModeAction::execute(Lexer *lexer) {
20
+ void LexerPopModeAction::execute(Lexer *lexer) const {
32
21
  lexer->popMode();
33
22
  }
34
23
 
35
- size_t LexerPopModeAction::hashCode() const {
24
+ size_t LexerPopModeAction::hashCodeImpl() const {
36
25
  size_t hash = MurmurHash::initialize();
37
26
  hash = MurmurHash::update(hash, static_cast<size_t>(getActionType()));
38
27
  return MurmurHash::finish(hash, 1);
39
28
  }
40
29
 
41
- bool LexerPopModeAction::operator == (const LexerAction &obj) const {
42
- return &obj == this;
30
+ bool LexerPopModeAction::equals(const LexerAction &other) const {
31
+ return this == std::addressof(other);
43
32
  }
44
33
 
45
34
  std::string LexerPopModeAction::toString() const {
@@ -22,35 +22,31 @@ namespace atn {
22
22
  /// </summary>
23
23
  class ANTLR4CPP_PUBLIC LexerPopModeAction final : public LexerAction {
24
24
  public:
25
- /// <summary>
26
- /// Provides a singleton instance of this parameterless lexer action.
27
- /// </summary>
28
- static const Ref<LexerPopModeAction> getInstance();
25
+ static bool is(const LexerAction &lexerAction) { return lexerAction.getActionType() == LexerActionType::POP_MODE; }
29
26
 
30
- /// <summary>
31
- /// {@inheritDoc} </summary>
32
- /// <returns> This method returns <seealso cref="LexerActionType#POP_MODE"/>. </returns>
33
- virtual LexerActionType getActionType() const override;
27
+ static bool is(const LexerAction *lexerAction) { return lexerAction != nullptr && is(*lexerAction); }
34
28
 
35
29
  /// <summary>
36
- /// {@inheritDoc} </summary>
37
- /// <returns> This method returns {@code false}. </returns>
38
- virtual bool isPositionDependent() const override;
30
+ /// Provides a singleton instance of this parameterless lexer action.
31
+ /// </summary>
32
+ static const Ref<const LexerPopModeAction>& getInstance();
39
33
 
40
34
  /// <summary>
41
35
  /// {@inheritDoc}
42
36
  ///
43
37
  /// <para>This action is implemented by calling <seealso cref="Lexer#popMode"/>.</para>
44
38
  /// </summary>
45
- virtual void execute(Lexer *lexer) override;
39
+ void execute(Lexer *lexer) const override;
40
+
41
+ bool equals(const LexerAction &other) const override;
42
+ std::string toString() const override;
46
43
 
47
- virtual size_t hashCode() const override;
48
- virtual bool operator == (const LexerAction &obj) const override;
49
- virtual std::string toString() const override;
44
+ protected:
45
+ size_t hashCodeImpl() const override;
50
46
 
51
47
  private:
52
48
  /// Constructs the singleton instance of the lexer {@code popMode} command.
53
- LexerPopModeAction();
49
+ LexerPopModeAction() : LexerAction(LexerActionType::POP_MODE, false) {}
54
50
  };
55
51
 
56
52
  } // namespace atn
@@ -5,52 +5,39 @@
5
5
 
6
6
  #include "misc/MurmurHash.h"
7
7
  #include "Lexer.h"
8
+ #include "support/Casts.h"
8
9
 
9
10
  #include "atn/LexerPushModeAction.h"
10
11
 
11
12
  using namespace antlr4;
12
13
  using namespace antlr4::atn;
13
14
  using namespace antlr4::misc;
15
+ using namespace antlrcpp;
14
16
 
15
- LexerPushModeAction::LexerPushModeAction(int mode) : _mode(mode) {
16
- }
17
-
18
- int LexerPushModeAction::getMode() const {
19
- return _mode;
20
- }
21
-
22
- LexerActionType LexerPushModeAction::getActionType() const {
23
- return LexerActionType::PUSH_MODE;
24
- }
17
+ LexerPushModeAction::LexerPushModeAction(int mode) : LexerAction(LexerActionType::PUSH_MODE, false), _mode(mode) {}
25
18
 
26
- bool LexerPushModeAction::isPositionDependent() const {
27
- return false;
19
+ void LexerPushModeAction::execute(Lexer *lexer) const {
20
+ lexer->pushMode(getMode());
28
21
  }
29
22
 
30
- void LexerPushModeAction::execute(Lexer *lexer) {
31
- lexer->pushMode(_mode);
32
- }
33
-
34
- size_t LexerPushModeAction::hashCode() const {
23
+ size_t LexerPushModeAction::hashCodeImpl() const {
35
24
  size_t hash = MurmurHash::initialize();
36
25
  hash = MurmurHash::update(hash, static_cast<size_t>(getActionType()));
37
- hash = MurmurHash::update(hash, _mode);
26
+ hash = MurmurHash::update(hash, getMode());
38
27
  return MurmurHash::finish(hash, 2);
39
28
  }
40
29
 
41
- bool LexerPushModeAction::operator == (const LexerAction &obj) const {
42
- if (&obj == this) {
30
+ bool LexerPushModeAction::equals(const LexerAction &other) const {
31
+ if (this == std::addressof(other)) {
43
32
  return true;
44
33
  }
45
-
46
- const LexerPushModeAction *action = dynamic_cast<const LexerPushModeAction *>(&obj);
47
- if (action == nullptr) {
34
+ if (getActionType() != other.getActionType()) {
48
35
  return false;
49
36
  }
50
-
51
- return _mode == action->_mode;
37
+ const auto &lexerAction = downCast<const LexerPushModeAction&>(other);
38
+ return getMode() == lexerAction.getMode();
52
39
  }
53
40
 
54
41
  std::string LexerPushModeAction::toString() const {
55
- return "pushMode(" + std::to_string(_mode) + ")";
42
+ return "pushMode(" + std::to_string(getMode()) + ")";
56
43
  }
@@ -20,26 +20,20 @@ namespace atn {
20
20
  /// </summary>
21
21
  class ANTLR4CPP_PUBLIC LexerPushModeAction final : public LexerAction {
22
22
  public:
23
+ static bool is(const LexerAction &lexerAction) { return lexerAction.getActionType() == LexerActionType::PUSH_MODE; }
24
+
25
+ static bool is(const LexerAction *lexerAction) { return lexerAction != nullptr && is(*lexerAction); }
26
+
23
27
  /// <summary>
24
28
  /// Constructs a new {@code pushMode} action with the specified mode value. </summary>
25
29
  /// <param name="mode"> The mode value to pass to <seealso cref="Lexer#pushMode"/>. </param>
26
- LexerPushModeAction(int mode);
30
+ explicit LexerPushModeAction(int mode);
27
31
 
28
32
  /// <summary>
29
33
  /// Get the lexer mode this action should transition the lexer to.
30
34
  /// </summary>
31
35
  /// <returns> The lexer mode for this {@code pushMode} command. </returns>
32
- int getMode() const;
33
-
34
- /// <summary>
35
- /// {@inheritDoc} </summary>
36
- /// <returns> This method returns <seealso cref="LexerActionType#PUSH_MODE"/>. </returns>
37
- virtual LexerActionType getActionType() const override;
38
-
39
- /// <summary>
40
- /// {@inheritDoc} </summary>
41
- /// <returns> This method returns {@code false}. </returns>
42
- virtual bool isPositionDependent() const override;
36
+ int getMode() const { return _mode; }
43
37
 
44
38
  /// <summary>
45
39
  /// {@inheritDoc}
@@ -47,11 +41,13 @@ namespace atn {
47
41
  /// <para>This action is implemented by calling <seealso cref="Lexer#pushMode"/> with the
48
42
  /// value provided by <seealso cref="#getMode"/>.</para>
49
43
  /// </summary>
50
- virtual void execute(Lexer *lexer) override;
44
+ void execute(Lexer *lexer) const override;
45
+
46
+ bool equals(const LexerAction &obj) const override;
47
+ std::string toString() const override;
51
48
 
52
- virtual size_t hashCode() const override;
53
- virtual bool operator == (const LexerAction &obj) const override;
54
- virtual std::string toString() const override;
49
+ protected:
50
+ size_t hashCodeImpl() const override;
55
51
 
56
52
  private:
57
53
  const int _mode;
@@ -12,34 +12,23 @@ using namespace antlr4;
12
12
  using namespace antlr4::atn;
13
13
  using namespace antlr4::misc;
14
14
 
15
- const Ref<LexerSkipAction> LexerSkipAction::getInstance() {
16
- static Ref<LexerSkipAction> instance(new LexerSkipAction());
15
+ const Ref<const LexerSkipAction>& LexerSkipAction::getInstance() {
16
+ static const Ref<const LexerSkipAction> instance(new LexerSkipAction());
17
17
  return instance;
18
18
  }
19
19
 
20
- LexerSkipAction::LexerSkipAction() {
21
- }
22
-
23
- LexerActionType LexerSkipAction::getActionType() const {
24
- return LexerActionType::SKIP;
25
- }
26
-
27
- bool LexerSkipAction::isPositionDependent() const {
28
- return false;
29
- }
30
-
31
- void LexerSkipAction::execute(Lexer *lexer) {
20
+ void LexerSkipAction::execute(Lexer *lexer) const {
32
21
  lexer->skip();
33
22
  }
34
23
 
35
- size_t LexerSkipAction::hashCode() const {
24
+ size_t LexerSkipAction::hashCodeImpl() const {
36
25
  size_t hash = MurmurHash::initialize();
37
26
  hash = MurmurHash::update(hash, static_cast<size_t>(getActionType()));
38
27
  return MurmurHash::finish(hash, 1);
39
28
  }
40
29
 
41
- bool LexerSkipAction::operator == (const LexerAction &obj) const {
42
- return &obj == this;
30
+ bool LexerSkipAction::equals(const LexerAction &other) const {
31
+ return this == std::addressof(other);
43
32
  }
44
33
 
45
34
  std::string LexerSkipAction::toString() const {
@@ -22,33 +22,29 @@ namespace atn {
22
22
  /// </summary>
23
23
  class ANTLR4CPP_PUBLIC LexerSkipAction final : public LexerAction {
24
24
  public:
25
- /// Provides a singleton instance of this parameterless lexer action.
26
- static const Ref<LexerSkipAction> getInstance();
25
+ static bool is(const LexerAction &lexerAction) { return lexerAction.getActionType() == LexerActionType::SKIP; }
27
26
 
28
- /// <summary>
29
- /// {@inheritDoc} </summary>
30
- /// <returns> This method returns <seealso cref="LexerActionType#SKIP"/>. </returns>
31
- virtual LexerActionType getActionType() const override;
27
+ static bool is(const LexerAction *lexerAction) { return lexerAction != nullptr && is(*lexerAction); }
32
28
 
33
- /// <summary>
34
- /// {@inheritDoc} </summary>
35
- /// <returns> This method returns {@code false}. </returns>
36
- virtual bool isPositionDependent() const override;
29
+ /// Provides a singleton instance of this parameterless lexer action.
30
+ static const Ref<const LexerSkipAction>& getInstance();
37
31
 
38
32
  /// <summary>
39
33
  /// {@inheritDoc}
40
34
  ///
41
35
  /// <para>This action is implemented by calling <seealso cref="Lexer#skip"/>.</para>
42
36
  /// </summary>
43
- virtual void execute(Lexer *lexer) override;
37
+ void execute(Lexer *lexer) const override;
38
+
39
+ bool equals(const LexerAction &obj) const override;
40
+ std::string toString() const override;
44
41
 
45
- virtual size_t hashCode() const override;
46
- virtual bool operator == (const LexerAction &obj) const override;
47
- virtual std::string toString() const override;
42
+ protected:
43
+ size_t hashCodeImpl() const override;
48
44
 
49
45
  private:
50
46
  /// Constructs the singleton instance of the lexer {@code skip} command.
51
- LexerSkipAction();
47
+ LexerSkipAction() : LexerAction(LexerActionType::SKIP, false) {}
52
48
  };
53
49
 
54
50
  } // namespace atn
@@ -5,52 +5,39 @@
5
5
 
6
6
  #include "misc/MurmurHash.h"
7
7
  #include "Lexer.h"
8
+ #include "support/Casts.h"
8
9
 
9
10
  #include "atn/LexerTypeAction.h"
10
11
 
11
12
  using namespace antlr4;
12
13
  using namespace antlr4::atn;
13
14
  using namespace antlr4::misc;
15
+ using namespace antlrcpp;
14
16
 
15
- LexerTypeAction::LexerTypeAction(int type) : _type(type) {
16
- }
17
-
18
- int LexerTypeAction::getType() const {
19
- return _type;
20
- }
21
-
22
- LexerActionType LexerTypeAction::getActionType() const {
23
- return LexerActionType::TYPE;
24
- }
17
+ LexerTypeAction::LexerTypeAction(int type) : LexerAction(LexerActionType::TYPE, false), _type(type) {}
25
18
 
26
- bool LexerTypeAction::isPositionDependent() const {
27
- return false;
19
+ void LexerTypeAction::execute(Lexer *lexer) const {
20
+ lexer->setType(getType());
28
21
  }
29
22
 
30
- void LexerTypeAction::execute(Lexer *lexer) {
31
- lexer->setType(_type);
32
- }
33
-
34
- size_t LexerTypeAction::hashCode() const {
23
+ size_t LexerTypeAction::hashCodeImpl() const {
35
24
  size_t hash = MurmurHash::initialize();
36
25
  hash = MurmurHash::update(hash, static_cast<size_t>(getActionType()));
37
- hash = MurmurHash::update(hash, _type);
26
+ hash = MurmurHash::update(hash, getType());
38
27
  return MurmurHash::finish(hash, 2);
39
28
  }
40
29
 
41
- bool LexerTypeAction::operator == (const LexerAction &obj) const {
42
- if (&obj == this) {
30
+ bool LexerTypeAction::equals(const LexerAction &other) const {
31
+ if (this == std::addressof(other)) {
43
32
  return true;
44
33
  }
45
-
46
- const LexerTypeAction *action = dynamic_cast<const LexerTypeAction *>(&obj);
47
- if (action == nullptr) {
34
+ if (getActionType() != other.getActionType()) {
48
35
  return false;
49
36
  }
50
-
51
- return _type == action->_type;
37
+ const auto &lexerAction = downCast<const LexerTypeAction&>(other);
38
+ return getType() == lexerAction.getType();
52
39
  }
53
40
 
54
41
  std::string LexerTypeAction::toString() const {
55
- return "type(" + std::to_string(_type) + ")";
42
+ return "type(" + std::to_string(getType()) + ")";
56
43
  }
@@ -13,27 +13,21 @@ namespace atn {
13
13
 
14
14
  /// Implements the {@code type} lexer action by calling <seealso cref="Lexer#setType"/>
15
15
  /// with the assigned type.
16
- class ANTLR4CPP_PUBLIC LexerTypeAction : public LexerAction {
16
+ class ANTLR4CPP_PUBLIC LexerTypeAction final : public LexerAction {
17
17
  public:
18
+ static bool is(const LexerAction &lexerAction) { return lexerAction.getActionType() == LexerActionType::TYPE; }
19
+
20
+ static bool is(const LexerAction *lexerAction) { return lexerAction != nullptr && is(*lexerAction); }
21
+
18
22
  /// <summary>
19
23
  /// Constructs a new {@code type} action with the specified token type value. </summary>
20
24
  /// <param name="type"> The type to assign to the token using <seealso cref="Lexer#setType"/>. </param>
21
- LexerTypeAction(int type);
25
+ explicit LexerTypeAction(int type);
22
26
 
23
27
  /// <summary>
24
28
  /// Gets the type to assign to a token created by the lexer. </summary>
25
29
  /// <returns> The type to assign to a token created by the lexer. </returns>
26
- virtual int getType() const;
27
-
28
- /// <summary>
29
- /// {@inheritDoc} </summary>
30
- /// <returns> This method returns <seealso cref="LexerActionType#TYPE"/>. </returns>
31
- virtual LexerActionType getActionType() const override;
32
-
33
- /// <summary>
34
- /// {@inheritDoc} </summary>
35
- /// <returns> This method returns {@code false}. </returns>
36
- virtual bool isPositionDependent() const override;
30
+ int getType() const { return _type; }
37
31
 
38
32
  /// <summary>
39
33
  /// {@inheritDoc}
@@ -41,11 +35,13 @@ namespace atn {
41
35
  /// <para>This action is implemented by calling <seealso cref="Lexer#setType"/> with the
42
36
  /// value provided by <seealso cref="#getType"/>.</para>
43
37
  /// </summary>
44
- virtual void execute(Lexer *lexer) override;
38
+ void execute(Lexer *lexer) const override;
39
+
40
+ bool equals(const LexerAction &obj) const override;
41
+ std::string toString() const override;
45
42
 
46
- virtual size_t hashCode() const override;
47
- virtual bool operator == (const LexerAction &obj) const override;
48
- virtual std::string toString() const override;
43
+ protected:
44
+ size_t hashCodeImpl() const override;
49
45
 
50
46
  private:
51
47
  const int _type;
@@ -13,9 +13,13 @@ namespace atn {
13
13
  /// Mark the end of a * or + loop.
14
14
  class ANTLR4CPP_PUBLIC LoopEndState final : public ATNState {
15
15
  public:
16
+ static bool is(const ATNState &atnState) { return atnState.getStateType() == ATNStateType::LOOP_END; }
17
+
18
+ static bool is(const ATNState *atnState) { return atnState != nullptr && is(*atnState); }
19
+
16
20
  ATNState *loopBackState = nullptr;
17
21
 
18
- virtual size_t getStateType() override;
22
+ LoopEndState() : ATNState(ATNStateType::LOOP_END) {}
19
23
  };
20
24
 
21
25
  } // namespace atn
@@ -10,12 +10,7 @@
10
10
  using namespace antlr4;
11
11
  using namespace antlr4::atn;
12
12
 
13
- NotSetTransition::NotSetTransition(ATNState *target, const misc::IntervalSet &set) : SetTransition(target, set) {
14
- }
15
-
16
- Transition::SerializationType NotSetTransition::getSerializationType() const {
17
- return NOT_SET;
18
- }
13
+ NotSetTransition::NotSetTransition(ATNState *target, misc::IntervalSet set) : SetTransition(TransitionType::NOT_SET, target, std::move(set)) {}
19
14
 
20
15
  bool NotSetTransition::matches(size_t symbol, size_t minVocabSymbol, size_t maxVocabSymbol) const {
21
16
  return symbol >= minVocabSymbol && symbol <= maxVocabSymbol