expressir 0.2.4-x64-mingw32

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 (520) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/rake.yml +46 -0
  3. data/.github/workflows/release.yml +75 -0
  4. data/.gitignore +15 -0
  5. data/.gitmodules +3 -0
  6. data/.rspec +2 -0
  7. data/.rubocop.yml +508 -0
  8. data/Gemfile +6 -0
  9. data/README.adoc +147 -0
  10. data/Rakefile +17 -0
  11. data/bin/console +12 -0
  12. data/bin/rspec +29 -0
  13. data/bin/setup +8 -0
  14. data/demo.rb +18 -0
  15. data/docs/development.md +90 -0
  16. data/exe/expressir +20 -0
  17. data/exe/generate-parser +48 -0
  18. data/expressir.gemspec +40 -0
  19. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/CMakeLists.txt +118 -0
  20. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2013.vcxproj +637 -0
  21. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2013.vcxproj.filters +984 -0
  22. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2015.vcxproj +652 -0
  23. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2015.vcxproj.filters +990 -0
  24. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2017.vcxproj +652 -0
  25. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2017.vcxproj.filters +990 -0
  26. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2019.vcxproj +652 -0
  27. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2019.vcxproj.filters +990 -0
  28. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp-ios/Info.plist +26 -0
  29. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp-ios/antlrcpp_ios.h +17 -0
  30. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/project.pbxproj +3024 -0
  31. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  32. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  33. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/xcshareddata/xcschemes/antlr4.xcscheme +76 -0
  34. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/xcshareddata/xcschemes/antlr4_ios.xcscheme +80 -0
  35. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/xcshareddata/xcschemes/antlr4_static.xcscheme +80 -0
  36. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorListener.cpp +10 -0
  37. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorListener.h +167 -0
  38. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorStrategy.cpp +10 -0
  39. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorStrategy.h +121 -0
  40. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRFileStream.cpp +34 -0
  41. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRFileStream.h +27 -0
  42. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRInputStream.cpp +155 -0
  43. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRInputStream.h +69 -0
  44. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BailErrorStrategy.cpp +61 -0
  45. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BailErrorStrategy.h +59 -0
  46. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BaseErrorListener.cpp +25 -0
  47. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BaseErrorListener.h +36 -0
  48. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BufferedTokenStream.cpp +414 -0
  49. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BufferedTokenStream.h +200 -0
  50. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CharStream.cpp +11 -0
  51. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CharStream.h +37 -0
  52. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonToken.cpp +195 -0
  53. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonToken.h +158 -0
  54. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenFactory.cpp +39 -0
  55. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenFactory.h +74 -0
  56. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenStream.cpp +78 -0
  57. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenStream.h +79 -0
  58. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ConsoleErrorListener.cpp +15 -0
  59. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ConsoleErrorListener.h +35 -0
  60. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/DefaultErrorStrategy.cpp +333 -0
  61. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/DefaultErrorStrategy.h +466 -0
  62. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/DiagnosticErrorListener.cpp +84 -0
  63. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/DiagnosticErrorListener.h +80 -0
  64. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Exceptions.cpp +64 -0
  65. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Exceptions.h +99 -0
  66. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/FailedPredicateException.cpp +51 -0
  67. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/FailedPredicateException.h +32 -0
  68. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/InputMismatchException.cpp +18 -0
  69. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/InputMismatchException.h +24 -0
  70. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/IntStream.cpp +12 -0
  71. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/IntStream.h +218 -0
  72. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/InterpreterRuleContext.cpp +19 -0
  73. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/InterpreterRuleContext.h +45 -0
  74. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Lexer.cpp +295 -0
  75. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Lexer.h +196 -0
  76. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerInterpreter.cpp +75 -0
  77. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerInterpreter.h +52 -0
  78. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerNoViableAltException.cpp +36 -0
  79. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerNoViableAltException.h +31 -0
  80. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ListTokenSource.cpp +92 -0
  81. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ListTokenSource.h +88 -0
  82. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/NoViableAltException.cpp +46 -0
  83. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/NoViableAltException.h +42 -0
  84. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Parser.cpp +648 -0
  85. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Parser.h +467 -0
  86. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserInterpreter.cpp +306 -0
  87. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserInterpreter.h +179 -0
  88. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserRuleContext.cpp +141 -0
  89. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserRuleContext.h +147 -0
  90. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ProxyErrorListener.cpp +53 -0
  91. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ProxyErrorListener.h +38 -0
  92. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RecognitionException.cpp +66 -0
  93. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RecognitionException.h +98 -0
  94. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Recognizer.cpp +167 -0
  95. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Recognizer.h +164 -0
  96. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContext.cpp +143 -0
  97. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContext.h +137 -0
  98. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContextWithAltNum.cpp +27 -0
  99. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContextWithAltNum.h +32 -0
  100. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuntimeMetaData.cpp +53 -0
  101. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuntimeMetaData.h +155 -0
  102. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Token.cpp +9 -0
  103. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Token.h +92 -0
  104. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenFactory.h +30 -0
  105. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenSource.cpp +9 -0
  106. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenSource.h +85 -0
  107. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStream.cpp +11 -0
  108. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStream.h +137 -0
  109. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStreamRewriter.cpp +425 -0
  110. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStreamRewriter.h +293 -0
  111. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedCharStream.cpp +211 -0
  112. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedCharStream.h +123 -0
  113. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedTokenStream.cpp +270 -0
  114. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedTokenStream.h +115 -0
  115. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Vocabulary.cpp +104 -0
  116. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Vocabulary.h +193 -0
  117. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/WritableToken.cpp +9 -0
  118. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/WritableToken.h +23 -0
  119. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/antlr4-common.h +137 -0
  120. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/antlr4-runtime.h +167 -0
  121. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATN.cpp +209 -0
  122. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATN.h +112 -0
  123. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfig.cpp +113 -0
  124. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfig.h +148 -0
  125. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfigSet.cpp +228 -0
  126. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfigSet.h +110 -0
  127. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.cpp +64 -0
  128. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.h +50 -0
  129. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializer.cpp +758 -0
  130. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializer.h +85 -0
  131. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSerializer.cpp +621 -0
  132. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSerializer.h +61 -0
  133. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSimulator.cpp +63 -0
  134. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSimulator.h +87 -0
  135. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNState.cpp +72 -0
  136. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNState.h +133 -0
  137. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNType.h +20 -0
  138. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AbstractPredicateTransition.cpp +14 -0
  139. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AbstractPredicateTransition.h +24 -0
  140. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ActionTransition.cpp +33 -0
  141. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ActionTransition.h +33 -0
  142. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AmbiguityInfo.cpp +16 -0
  143. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AmbiguityInfo.h +68 -0
  144. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.cpp +82 -0
  145. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.h +43 -0
  146. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AtomTransition.cpp +31 -0
  147. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AtomTransition.h +30 -0
  148. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicBlockStartState.cpp +12 -0
  149. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicBlockStartState.h +22 -0
  150. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicState.cpp +12 -0
  151. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicState.h +21 -0
  152. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockEndState.cpp +15 -0
  153. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockEndState.h +24 -0
  154. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockStartState.cpp +9 -0
  155. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockStartState.h +21 -0
  156. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ContextSensitivityInfo.cpp +14 -0
  157. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ContextSensitivityInfo.h +47 -0
  158. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionEventInfo.cpp +14 -0
  159. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionEventInfo.h +70 -0
  160. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionInfo.cpp +25 -0
  161. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionInfo.h +227 -0
  162. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionState.cpp +17 -0
  163. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionState.h +30 -0
  164. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EmptyPredictionContext.cpp +35 -0
  165. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EmptyPredictionContext.h +27 -0
  166. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EpsilonTransition.cpp +35 -0
  167. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EpsilonTransition.h +39 -0
  168. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ErrorInfo.cpp +15 -0
  169. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ErrorInfo.h +43 -0
  170. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LL1Analyzer.cpp +158 -0
  171. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LL1Analyzer.h +109 -0
  172. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNConfig.cpp +84 -0
  173. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNConfig.h +44 -0
  174. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNSimulator.cpp +628 -0
  175. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNSimulator.h +210 -0
  176. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerAction.cpp +9 -0
  177. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerAction.h +66 -0
  178. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionExecutor.cpp +107 -0
  179. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionExecutor.h +115 -0
  180. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionType.h +55 -0
  181. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerChannelAction.cpp +55 -0
  182. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerChannelAction.h +63 -0
  183. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerCustomAction.cpp +62 -0
  184. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerCustomAction.h +87 -0
  185. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.cpp +63 -0
  186. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.h +82 -0
  187. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerModeAction.cpp +56 -0
  188. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerModeAction.h +61 -0
  189. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerMoreAction.cpp +47 -0
  190. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerMoreAction.h +57 -0
  191. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPopModeAction.cpp +47 -0
  192. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPopModeAction.h +57 -0
  193. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPushModeAction.cpp +56 -0
  194. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPushModeAction.h +61 -0
  195. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerSkipAction.cpp +47 -0
  196. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerSkipAction.h +55 -0
  197. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerTypeAction.cpp +56 -0
  198. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerTypeAction.h +55 -0
  199. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LookaheadEventInfo.cpp +16 -0
  200. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LookaheadEventInfo.h +42 -0
  201. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LoopEndState.cpp +12 -0
  202. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LoopEndState.h +22 -0
  203. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Makefile +67 -0
  204. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/NotSetTransition.cpp +27 -0
  205. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/NotSetTransition.h +25 -0
  206. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.cpp +12 -0
  207. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.h +20 -0
  208. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParseInfo.cpp +102 -0
  209. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParseInfo.h +102 -0
  210. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulator.cpp +1366 -0
  211. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulator.h +904 -0
  212. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusBlockStartState.cpp +12 -0
  213. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusBlockStartState.h +25 -0
  214. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusLoopbackState.cpp +12 -0
  215. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusLoopbackState.h +22 -0
  216. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.cpp +32 -0
  217. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.h +29 -0
  218. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.cpp +17 -0
  219. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.h +62 -0
  220. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateTransition.cpp +34 -0
  221. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateTransition.h +39 -0
  222. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContext.cpp +662 -0
  223. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContext.h +254 -0
  224. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionMode.cpp +201 -0
  225. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionMode.h +436 -0
  226. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.cpp +179 -0
  227. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.h +60 -0
  228. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RangeTransition.cpp +30 -0
  229. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RangeTransition.h +29 -0
  230. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStartState.cpp +16 -0
  231. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStartState.h +25 -0
  232. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStopState.cpp +12 -0
  233. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStopState.h +25 -0
  234. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleTransition.cpp +37 -0
  235. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleTransition.h +40 -0
  236. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContext.cpp +377 -0
  237. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContext.h +222 -0
  238. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SetTransition.cpp +32 -0
  239. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SetTransition.h +30 -0
  240. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.cpp +81 -0
  241. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.h +36 -0
  242. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarBlockStartState.cpp +12 -0
  243. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarBlockStartState.h +21 -0
  244. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopEntryState.cpp +15 -0
  245. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopEntryState.h +35 -0
  246. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopbackState.cpp +19 -0
  247. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopbackState.h +21 -0
  248. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TokensStartState.cpp +12 -0
  249. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TokensStartState.h +21 -0
  250. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Transition.cpp +44 -0
  251. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Transition.h +76 -0
  252. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/WildcardTransition.cpp +25 -0
  253. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/WildcardTransition.h +25 -0
  254. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFA.cpp +127 -0
  255. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFA.h +91 -0
  256. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFASerializer.cpp +67 -0
  257. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFASerializer.h +32 -0
  258. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFAState.cpp +100 -0
  259. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFAState.h +144 -0
  260. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.cpp +20 -0
  261. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.h +23 -0
  262. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/InterpreterDataReader.cpp +124 -0
  263. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/InterpreterDataReader.h +31 -0
  264. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Interval.cpp +89 -0
  265. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Interval.h +84 -0
  266. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/IntervalSet.cpp +521 -0
  267. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/IntervalSet.h +198 -0
  268. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/MurmurHash.cpp +134 -0
  269. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/MurmurHash.h +76 -0
  270. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Predicate.cpp +4 -0
  271. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Predicate.h +21 -0
  272. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Any.cpp +13 -0
  273. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Any.h +170 -0
  274. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Arrays.cpp +43 -0
  275. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Arrays.h +110 -0
  276. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/BitSet.h +76 -0
  277. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/CPPUtils.cpp +248 -0
  278. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/CPPUtils.h +78 -0
  279. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Declarations.h +163 -0
  280. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/StringUtils.cpp +36 -0
  281. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/StringUtils.h +54 -0
  282. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/guid.cpp +303 -0
  283. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/guid.h +112 -0
  284. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/AbstractParseTreeVisitor.h +128 -0
  285. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNode.cpp +9 -0
  286. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNode.h +19 -0
  287. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.cpp +23 -0
  288. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.h +33 -0
  289. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/IterativeParseTreeWalker.cpp +71 -0
  290. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/IterativeParseTreeWalker.h +53 -0
  291. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTree.cpp +15 -0
  292. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTree.h +102 -0
  293. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeListener.cpp +9 -0
  294. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeListener.h +39 -0
  295. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeProperty.h +50 -0
  296. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeVisitor.cpp +9 -0
  297. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeVisitor.h +57 -0
  298. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeWalker.cpp +49 -0
  299. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeWalker.h +31 -0
  300. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNode.cpp +9 -0
  301. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNode.h +32 -0
  302. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.cpp +57 -0
  303. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.h +33 -0
  304. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/Trees.cpp +241 -0
  305. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/Trees.h +78 -0
  306. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/Chunk.cpp +9 -0
  307. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/Chunk.h +44 -0
  308. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreeMatch.cpp +69 -0
  309. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreeMatch.h +132 -0
  310. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePattern.cpp +64 -0
  311. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePattern.h +105 -0
  312. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePatternMatcher.cpp +371 -0
  313. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePatternMatcher.h +185 -0
  314. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/RuleTagToken.cpp +77 -0
  315. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/RuleTagToken.h +117 -0
  316. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TagChunk.cpp +39 -0
  317. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TagChunk.h +86 -0
  318. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TextChunk.cpp +28 -0
  319. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TextChunk.h +51 -0
  320. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TokenTagToken.cpp +36 -0
  321. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TokenTagToken.h +80 -0
  322. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPath.cpp +154 -0
  323. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPath.h +86 -0
  324. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathElement.cpp +31 -0
  325. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathElement.h +40 -0
  326. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.cpp +173 -0
  327. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.g4 +64 -0
  328. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.h +56 -0
  329. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.tokens +12 -0
  330. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexerErrorListener.cpp +13 -0
  331. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexerErrorListener.h +22 -0
  332. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleAnywhereElement.cpp +20 -0
  333. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleAnywhereElement.h +27 -0
  334. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleElement.cpp +30 -0
  335. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleElement.h +26 -0
  336. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenAnywhereElement.cpp +20 -0
  337. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenAnywhereElement.h +25 -0
  338. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenElement.cpp +33 -0
  339. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenElement.h +26 -0
  340. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardAnywhereElement.cpp +23 -0
  341. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardAnywhereElement.h +23 -0
  342. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardElement.cpp +24 -0
  343. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardElement.h +23 -0
  344. data/ext/express-parser/antlrgen/Express.interp +532 -0
  345. data/ext/express-parser/antlrgen/Express.tokens +190 -0
  346. data/ext/express-parser/antlrgen/ExpressBaseListener.cpp +7 -0
  347. data/ext/express-parser/antlrgen/ExpressBaseListener.h +623 -0
  348. data/ext/express-parser/antlrgen/ExpressBaseVisitor.cpp +7 -0
  349. data/ext/express-parser/antlrgen/ExpressBaseVisitor.h +816 -0
  350. data/ext/express-parser/antlrgen/ExpressLexer.cpp +1169 -0
  351. data/ext/express-parser/antlrgen/ExpressLexer.h +85 -0
  352. data/ext/express-parser/antlrgen/ExpressLexer.interp +534 -0
  353. data/ext/express-parser/antlrgen/ExpressLexer.tokens +190 -0
  354. data/ext/express-parser/antlrgen/ExpressListener.cpp +7 -0
  355. data/ext/express-parser/antlrgen/ExpressListener.h +616 -0
  356. data/ext/express-parser/antlrgen/ExpressParser.cpp +17284 -0
  357. data/ext/express-parser/antlrgen/ExpressParser.h +3696 -0
  358. data/ext/express-parser/antlrgen/ExpressVisitor.cpp +7 -0
  359. data/ext/express-parser/antlrgen/ExpressVisitor.h +422 -0
  360. data/ext/express-parser/express_parser.cpp +17931 -0
  361. data/ext/express-parser/extconf.rb +34 -0
  362. data/lib/express_parser.so +0 -0
  363. data/lib/expressir.rb +21 -0
  364. data/lib/expressir/cli.rb +27 -0
  365. data/lib/expressir/cli/ui.rb +36 -0
  366. data/lib/expressir/config.rb +23 -0
  367. data/lib/expressir/express.rb +11 -0
  368. data/lib/expressir/express/aggregate_dimension.rb +38 -0
  369. data/lib/expressir/express/attribute.rb +15 -0
  370. data/lib/expressir/express/comment.rb +7 -0
  371. data/lib/expressir/express/defined_type.rb +36 -0
  372. data/lib/expressir/express/derived.rb +65 -0
  373. data/lib/expressir/express/derived_aggregate.rb +43 -0
  374. data/lib/expressir/express/entity.rb +137 -0
  375. data/lib/expressir/express/explicit.rb +70 -0
  376. data/lib/expressir/express/explicit_aggregate.rb +46 -0
  377. data/lib/expressir/express/explicit_or_derived.rb +16 -0
  378. data/lib/expressir/express/global_rule.rb +44 -0
  379. data/lib/expressir/express/interface_specification.rb +51 -0
  380. data/lib/expressir/express/interfaced_item.rb +38 -0
  381. data/lib/expressir/express/inverse.rb +46 -0
  382. data/lib/expressir/express/inverse_aggregate.rb +37 -0
  383. data/lib/expressir/express/model_element.rb +7 -0
  384. data/lib/expressir/express/named_type.rb +19 -0
  385. data/lib/expressir/express/remark.rb +8 -0
  386. data/lib/expressir/express/repository.rb +306 -0
  387. data/lib/expressir/express/schema_definition.rb +96 -0
  388. data/lib/expressir/express/subtype_constraint.rb +14 -0
  389. data/lib/expressir/express/type.rb +26 -0
  390. data/lib/expressir/express/type_aggregate.rb +42 -0
  391. data/lib/expressir/express/type_enum.rb +29 -0
  392. data/lib/expressir/express/type_parser.rb +45 -0
  393. data/lib/expressir/express/type_select.rb +82 -0
  394. data/lib/expressir/express/unique_rule.rb +35 -0
  395. data/lib/expressir/express/where_rule.rb +32 -0
  396. data/lib/expressir/express_exp/formatter.rb +1450 -0
  397. data/lib/expressir/express_exp/parser.rb +36 -0
  398. data/lib/expressir/express_exp/visitor.rb +2451 -0
  399. data/lib/expressir/express_parser.rb +30 -0
  400. data/lib/expressir/model.rb +65 -0
  401. data/lib/expressir/model/attribute.rb +27 -0
  402. data/lib/expressir/model/constant.rb +17 -0
  403. data/lib/expressir/model/entity.rb +46 -0
  404. data/lib/expressir/model/enumeration_item.rb +11 -0
  405. data/lib/expressir/model/expressions/aggregate_initializer.rb +13 -0
  406. data/lib/expressir/model/expressions/aggregate_item.rb +15 -0
  407. data/lib/expressir/model/expressions/attribute_reference.rb +15 -0
  408. data/lib/expressir/model/expressions/binary_expression.rb +40 -0
  409. data/lib/expressir/model/expressions/call.rb +15 -0
  410. data/lib/expressir/model/expressions/entity_constructor.rb +15 -0
  411. data/lib/expressir/model/expressions/group_reference.rb +15 -0
  412. data/lib/expressir/model/expressions/index_reference.rb +17 -0
  413. data/lib/expressir/model/expressions/interval.rb +21 -0
  414. data/lib/expressir/model/expressions/query_expression.rb +26 -0
  415. data/lib/expressir/model/expressions/simple_reference.rb +13 -0
  416. data/lib/expressir/model/expressions/unary_expression.rb +19 -0
  417. data/lib/expressir/model/function.rb +62 -0
  418. data/lib/expressir/model/identifier.rb +9 -0
  419. data/lib/expressir/model/interface.rb +18 -0
  420. data/lib/expressir/model/literals/binary.rb +13 -0
  421. data/lib/expressir/model/literals/integer.rb +13 -0
  422. data/lib/expressir/model/literals/logical.rb +17 -0
  423. data/lib/expressir/model/literals/real.rb +13 -0
  424. data/lib/expressir/model/literals/string.rb +15 -0
  425. data/lib/expressir/model/parameter.rb +17 -0
  426. data/lib/expressir/model/procedure.rb +60 -0
  427. data/lib/expressir/model/renamed_ref.rb +13 -0
  428. data/lib/expressir/model/repository.rb +19 -0
  429. data/lib/expressir/model/rule.rb +62 -0
  430. data/lib/expressir/model/schema.rb +67 -0
  431. data/lib/expressir/model/scope.rb +17 -0
  432. data/lib/expressir/model/statements/alias.rb +26 -0
  433. data/lib/expressir/model/statements/assignment.rb +15 -0
  434. data/lib/expressir/model/statements/call.rb +15 -0
  435. data/lib/expressir/model/statements/case.rb +17 -0
  436. data/lib/expressir/model/statements/case_action.rb +15 -0
  437. data/lib/expressir/model/statements/compound.rb +13 -0
  438. data/lib/expressir/model/statements/escape.rb +8 -0
  439. data/lib/expressir/model/statements/if.rb +17 -0
  440. data/lib/expressir/model/statements/null.rb +8 -0
  441. data/lib/expressir/model/statements/repeat.rb +34 -0
  442. data/lib/expressir/model/statements/return.rb +13 -0
  443. data/lib/expressir/model/statements/skip.rb +8 -0
  444. data/lib/expressir/model/subtype_constraint.rb +27 -0
  445. data/lib/expressir/model/type.rb +24 -0
  446. data/lib/expressir/model/types/aggregate.rb +17 -0
  447. data/lib/expressir/model/types/array.rb +21 -0
  448. data/lib/expressir/model/types/bag.rb +17 -0
  449. data/lib/expressir/model/types/binary.rb +15 -0
  450. data/lib/expressir/model/types/boolean.rb +8 -0
  451. data/lib/expressir/model/types/enumeration.rb +19 -0
  452. data/lib/expressir/model/types/generic.rb +13 -0
  453. data/lib/expressir/model/types/generic_entity.rb +13 -0
  454. data/lib/expressir/model/types/integer.rb +8 -0
  455. data/lib/expressir/model/types/list.rb +19 -0
  456. data/lib/expressir/model/types/logical.rb +8 -0
  457. data/lib/expressir/model/types/number.rb +8 -0
  458. data/lib/expressir/model/types/real.rb +13 -0
  459. data/lib/expressir/model/types/select.rb +21 -0
  460. data/lib/expressir/model/types/set.rb +17 -0
  461. data/lib/expressir/model/types/string.rb +15 -0
  462. data/lib/expressir/model/unique.rb +15 -0
  463. data/lib/expressir/model/variable.rb +17 -0
  464. data/lib/expressir/model/where.rb +15 -0
  465. data/lib/expressir/parser.rb +6 -0
  466. data/lib/expressir/parser/owl_parser.rb +8 -0
  467. data/lib/expressir/version.rb +3 -0
  468. data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.exp +9589 -0
  469. data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.owl +36619 -0
  470. data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.xml +13294 -0
  471. data/original/examples/employment/eclipse/.project +17 -0
  472. data/original/examples/employment/eclipse/Export/Employment.png +0 -0
  473. data/original/examples/employment/eclipse/Express/employment_schema.exp +33 -0
  474. data/original/examples/employment/eclipse/Express/employment_schema.xmi +77 -0
  475. data/original/examples/employment/eclipse/Express/employment_schema.xml +93 -0
  476. data/original/examples/employment/eclipse/Models/Employment.uml +4 -0
  477. data/original/examples/employment/eclipse/Models/Employment.umldi +240 -0
  478. data/original/examples/employment/eclipse/readme.txt +7 -0
  479. data/original/examples/employment/employment_schema.exp +33 -0
  480. data/original/examples/employment/employment_schema.rb +232 -0
  481. data/original/examples/employment/employment_schema.xml +93 -0
  482. data/original/examples/employment/employment_schema___module.rb +46 -0
  483. data/original/examples/employment/employment_schema___p28attr.rb +126 -0
  484. data/original/examples/employment/employment_schema___p28inst.rb +26 -0
  485. data/original/examples/employment/example_employment_data.xml +1 -0
  486. data/original/examples/employment/example_employment_data_copy.xml +1 -0
  487. data/original/examples/employment/example_employment_reader.rb +30 -0
  488. data/original/examples/employment/example_employment_writer.rb +51 -0
  489. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.exp +3710 -0
  490. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.owl +35880 -0
  491. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.xmi +15357 -0
  492. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.xml +9468 -0
  493. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.exp +8404 -0
  494. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.owl +43147 -0
  495. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.xmi +18341 -0
  496. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.xml +11632 -0
  497. data/original/examples/syntax/remark.exp +145 -0
  498. data/original/examples/syntax/remark_formatted.exp +174 -0
  499. data/original/examples/syntax/syntax.exp +310 -0
  500. data/original/examples/syntax/syntax_formatted.exp +1187 -0
  501. data/original/exp2ruby.rb +525 -0
  502. data/original/expsm.rb +34 -0
  503. data/original/mapping_owl.rb +1018 -0
  504. data/original/mapping_sysml.rb +2281 -0
  505. data/original/mapping_uml2.rb +599 -0
  506. data/original/mapping_uml2_eclipse.rb +433 -0
  507. data/original/reeper.rb +134 -0
  508. data/spec/acceptance/express_to_owl_spec.rb +18 -0
  509. data/spec/acceptance/version_spec.rb +12 -0
  510. data/spec/expressir/express/repository_spec.rb +25 -0
  511. data/spec/expressir/express_exp/ap233_spec.rb +22 -0
  512. data/spec/expressir/express_exp/format_remark_spec.rb +28 -0
  513. data/spec/expressir/express_exp/format_syntax_spec.rb +28 -0
  514. data/spec/expressir/express_exp/parse_remark_spec.rb +345 -0
  515. data/spec/expressir/express_exp/parse_syntax_spec.rb +2998 -0
  516. data/spec/expressir/model/find_spec.rb +110 -0
  517. data/spec/expressr_spec.rb +5 -0
  518. data/spec/spec_helper.rb +17 -0
  519. data/spec/support/console_helper.rb +29 -0
  520. metadata +695 -0
@@ -0,0 +1,39 @@
1
+ /* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
2
+ * Use of this file is governed by the BSD 3-clause license that
3
+ * can be found in the LICENSE.txt file in the project root.
4
+ */
5
+
6
+ #include "misc/Interval.h"
7
+ #include "CommonToken.h"
8
+ #include "CharStream.h"
9
+
10
+ #include "CommonTokenFactory.h"
11
+
12
+ using namespace antlr4;
13
+
14
+ const Ref<TokenFactory<CommonToken>> CommonTokenFactory::DEFAULT = std::make_shared<CommonTokenFactory>();
15
+
16
+ CommonTokenFactory::CommonTokenFactory(bool copyText_) : copyText(copyText_) {
17
+ }
18
+
19
+ CommonTokenFactory::CommonTokenFactory() : CommonTokenFactory(false) {
20
+ }
21
+
22
+ std::unique_ptr<CommonToken> CommonTokenFactory::create(std::pair<TokenSource*, CharStream*> source, size_t type,
23
+ const std::string &text, size_t channel, size_t start, size_t stop, size_t line, size_t charPositionInLine) {
24
+
25
+ std::unique_ptr<CommonToken> t(new CommonToken(source, type, channel, start, stop));
26
+ t->setLine(line);
27
+ t->setCharPositionInLine(charPositionInLine);
28
+ if (text != "") {
29
+ t->setText(text);
30
+ } else if (copyText && source.second != nullptr) {
31
+ t->setText(source.second->getText(misc::Interval(start, stop)));
32
+ }
33
+
34
+ return t;
35
+ }
36
+
37
+ std::unique_ptr<CommonToken> CommonTokenFactory::create(size_t type, const std::string &text) {
38
+ return std::unique_ptr<CommonToken>(new CommonToken(type, text));
39
+ }
@@ -0,0 +1,74 @@
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 "TokenFactory.h"
9
+
10
+ namespace antlr4 {
11
+
12
+ /**
13
+ * This default implementation of {@link TokenFactory} creates
14
+ * {@link CommonToken} objects.
15
+ */
16
+ class ANTLR4CPP_PUBLIC CommonTokenFactory : public TokenFactory<CommonToken> {
17
+ public:
18
+ /**
19
+ * The default {@link CommonTokenFactory} instance.
20
+ *
21
+ * <p>
22
+ * This token factory does not explicitly copy token text when constructing
23
+ * tokens.</p>
24
+ */
25
+ static const Ref<TokenFactory<CommonToken>> DEFAULT;
26
+
27
+ protected:
28
+ /**
29
+ * Indicates whether {@link CommonToken#setText} should be called after
30
+ * constructing tokens to explicitly set the text. This is useful for cases
31
+ * where the input stream might not be able to provide arbitrary substrings
32
+ * of text from the input after the lexer creates a token (e.g. the
33
+ * implementation of {@link CharStream#getText} in
34
+ * {@link UnbufferedCharStream} throws an
35
+ * {@link UnsupportedOperationException}). Explicitly setting the token text
36
+ * allows {@link Token#getText} to be called at any time regardless of the
37
+ * input stream implementation.
38
+ *
39
+ * <p>
40
+ * The default value is {@code false} to avoid the performance and memory
41
+ * overhead of copying text for every token unless explicitly requested.</p>
42
+ */
43
+ const bool copyText;
44
+
45
+ public:
46
+ /**
47
+ * Constructs a {@link CommonTokenFactory} with the specified value for
48
+ * {@link #copyText}.
49
+ *
50
+ * <p>
51
+ * When {@code copyText} is {@code false}, the {@link #DEFAULT} instance
52
+ * should be used instead of constructing a new instance.</p>
53
+ *
54
+ * @param copyText The value for {@link #copyText}.
55
+ */
56
+ CommonTokenFactory(bool copyText);
57
+
58
+ /**
59
+ * Constructs a {@link CommonTokenFactory} with {@link #copyText} set to
60
+ * {@code false}.
61
+ *
62
+ * <p>
63
+ * The {@link #DEFAULT} instance should be used instead of calling this
64
+ * directly.</p>
65
+ */
66
+ CommonTokenFactory();
67
+
68
+ virtual std::unique_ptr<CommonToken> create(std::pair<TokenSource*, CharStream*> source, size_t type,
69
+ const std::string &text, size_t channel, size_t start, size_t stop, size_t line, size_t charPositionInLine) override;
70
+
71
+ virtual std::unique_ptr<CommonToken> create(size_t type, const std::string &text) override;
72
+ };
73
+
74
+ } // namespace antlr4
@@ -0,0 +1,78 @@
1
+ /* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
2
+ * Use of this file is governed by the BSD 3-clause license that
3
+ * can be found in the LICENSE.txt file in the project root.
4
+ */
5
+
6
+ #include "Token.h"
7
+
8
+ #include "CommonTokenStream.h"
9
+
10
+ using namespace antlr4;
11
+
12
+ CommonTokenStream::CommonTokenStream(TokenSource *tokenSource) : CommonTokenStream(tokenSource, Token::DEFAULT_CHANNEL) {
13
+ }
14
+
15
+ CommonTokenStream::CommonTokenStream(TokenSource *tokenSource, size_t channel_)
16
+ : BufferedTokenStream(tokenSource), channel(channel_) {
17
+ }
18
+
19
+ ssize_t CommonTokenStream::adjustSeekIndex(size_t i) {
20
+ return nextTokenOnChannel(i, channel);
21
+ }
22
+
23
+ Token* CommonTokenStream::LB(size_t k) {
24
+ if (k == 0 || k > _p) {
25
+ return nullptr;
26
+ }
27
+
28
+ ssize_t i = static_cast<ssize_t>(_p);
29
+ size_t n = 1;
30
+ // find k good tokens looking backwards
31
+ while (n <= k) {
32
+ // skip off-channel tokens
33
+ i = previousTokenOnChannel(i - 1, channel);
34
+ n++;
35
+ }
36
+ if (i < 0) {
37
+ return nullptr;
38
+ }
39
+
40
+ return _tokens[i].get();
41
+ }
42
+
43
+ Token* CommonTokenStream::LT(ssize_t k) {
44
+ lazyInit();
45
+ if (k == 0) {
46
+ return nullptr;
47
+ }
48
+ if (k < 0) {
49
+ return LB(static_cast<size_t>(-k));
50
+ }
51
+ size_t i = _p;
52
+ ssize_t n = 1; // we know tokens[p] is a good one
53
+ // find k good tokens
54
+ while (n < k) {
55
+ // skip off-channel tokens, but make sure to not look past EOF
56
+ if (sync(i + 1)) {
57
+ i = nextTokenOnChannel(i + 1, channel);
58
+ }
59
+ n++;
60
+ }
61
+
62
+ return _tokens[i].get();
63
+ }
64
+
65
+ int CommonTokenStream::getNumberOfOnChannelTokens() {
66
+ int n = 0;
67
+ fill();
68
+ for (size_t i = 0; i < _tokens.size(); i++) {
69
+ Token *t = _tokens[i].get();
70
+ if (t->getChannel() == channel) {
71
+ n++;
72
+ }
73
+ if (t->getType() == Token::EOF) {
74
+ break;
75
+ }
76
+ }
77
+ return n;
78
+ }
@@ -0,0 +1,79 @@
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 "BufferedTokenStream.h"
9
+
10
+ namespace antlr4 {
11
+
12
+ /**
13
+ * This class extends {@link BufferedTokenStream} with functionality to filter
14
+ * token streams to tokens on a particular channel (tokens where
15
+ * {@link Token#getChannel} returns a particular value).
16
+ *
17
+ * <p>
18
+ * This token stream provides access to all tokens by index or when calling
19
+ * methods like {@link #getText}. The channel filtering is only used for code
20
+ * accessing tokens via the lookahead methods {@link #LA}, {@link #LT}, and
21
+ * {@link #LB}.</p>
22
+ *
23
+ * <p>
24
+ * By default, tokens are placed on the default channel
25
+ * ({@link Token#DEFAULT_CHANNEL}), but may be reassigned by using the
26
+ * {@code ->channel(HIDDEN)} lexer command, or by using an embedded action to
27
+ * call {@link Lexer#setChannel}.
28
+ * </p>
29
+ *
30
+ * <p>
31
+ * Note: lexer rules which use the {@code ->skip} lexer command or call
32
+ * {@link Lexer#skip} do not produce tokens at all, so input text matched by
33
+ * such a rule will not be available as part of the token stream, regardless of
34
+ * channel.</p>
35
+ */
36
+ class ANTLR4CPP_PUBLIC CommonTokenStream : public BufferedTokenStream {
37
+ public:
38
+ /**
39
+ * Constructs a new {@link CommonTokenStream} using the specified token
40
+ * source and the default token channel ({@link Token#DEFAULT_CHANNEL}).
41
+ *
42
+ * @param tokenSource The token source.
43
+ */
44
+ CommonTokenStream(TokenSource *tokenSource);
45
+
46
+ /**
47
+ * Constructs a new {@link CommonTokenStream} using the specified token
48
+ * source and filtering tokens to the specified channel. Only tokens whose
49
+ * {@link Token#getChannel} matches {@code channel} or have the
50
+ * {@link Token#getType} equal to {@link Token#EOF} will be returned by the
51
+ * token stream lookahead methods.
52
+ *
53
+ * @param tokenSource The token source.
54
+ * @param channel The channel to use for filtering tokens.
55
+ */
56
+ CommonTokenStream(TokenSource *tokenSource, size_t channel);
57
+
58
+ virtual Token* LT(ssize_t k) override;
59
+
60
+ /// Count EOF just once.
61
+ virtual int getNumberOfOnChannelTokens();
62
+
63
+ protected:
64
+ /**
65
+ * Specifies the channel to use for filtering tokens.
66
+ *
67
+ * <p>
68
+ * The default value is {@link Token#DEFAULT_CHANNEL}, which matches the
69
+ * default channel assigned to tokens created by the lexer.</p>
70
+ */
71
+ size_t channel;
72
+
73
+ virtual ssize_t adjustSeekIndex(size_t i) override;
74
+
75
+ virtual Token* LB(size_t k) override;
76
+
77
+ };
78
+
79
+ } // namespace antlr4
@@ -0,0 +1,15 @@
1
+ /* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
2
+ * Use of this file is governed by the BSD 3-clause license that
3
+ * can be found in the LICENSE.txt file in the project root.
4
+ */
5
+
6
+ #include "ConsoleErrorListener.h"
7
+
8
+ using namespace antlr4;
9
+
10
+ ConsoleErrorListener ConsoleErrorListener::INSTANCE;
11
+
12
+ void ConsoleErrorListener::syntaxError(Recognizer * /*recognizer*/, Token * /*offendingSymbol*/,
13
+ size_t line, size_t charPositionInLine, const std::string &msg, std::exception_ptr /*e*/) {
14
+ std::cerr << "line " << line << ":" << charPositionInLine << " " << msg << std::endl;
15
+ }
@@ -0,0 +1,35 @@
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 "BaseErrorListener.h"
9
+
10
+ namespace antlr4 {
11
+
12
+ class ANTLR4CPP_PUBLIC ConsoleErrorListener : public BaseErrorListener {
13
+ public:
14
+ /**
15
+ * Provides a default instance of {@link ConsoleErrorListener}.
16
+ */
17
+ static ConsoleErrorListener INSTANCE;
18
+
19
+ /**
20
+ * {@inheritDoc}
21
+ *
22
+ * <p>
23
+ * This implementation prints messages to {@link System#err} containing the
24
+ * values of {@code line}, {@code charPositionInLine}, and {@code msg} using
25
+ * the following format.</p>
26
+ *
27
+ * <pre>
28
+ * line <em>line</em>:<em>charPositionInLine</em> <em>msg</em>
29
+ * </pre>
30
+ */
31
+ virtual void syntaxError(Recognizer *recognizer, Token * offendingSymbol, size_t line, size_t charPositionInLine,
32
+ const std::string &msg, std::exception_ptr e) override;
33
+ };
34
+
35
+ } // namespace antlr4
@@ -0,0 +1,333 @@
1
+ /* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
2
+ * Use of this file is governed by the BSD 3-clause license that
3
+ * can be found in the LICENSE.txt file in the project root.
4
+ */
5
+
6
+ #include "NoViableAltException.h"
7
+ #include "misc/IntervalSet.h"
8
+ #include "atn/ParserATNSimulator.h"
9
+ #include "InputMismatchException.h"
10
+ #include "FailedPredicateException.h"
11
+ #include "ParserRuleContext.h"
12
+ #include "atn/RuleTransition.h"
13
+ #include "atn/ATN.h"
14
+ #include "atn/ATNState.h"
15
+ #include "Parser.h"
16
+ #include "CommonToken.h"
17
+ #include "Vocabulary.h"
18
+ #include "support/StringUtils.h"
19
+
20
+ #include "DefaultErrorStrategy.h"
21
+
22
+ using namespace antlr4;
23
+ using namespace antlr4::atn;
24
+
25
+ using namespace antlrcpp;
26
+
27
+ DefaultErrorStrategy::DefaultErrorStrategy() {
28
+ InitializeInstanceFields();
29
+ }
30
+
31
+ DefaultErrorStrategy::~DefaultErrorStrategy() {
32
+ }
33
+
34
+ void DefaultErrorStrategy::reset(Parser *recognizer) {
35
+ _errorSymbols.clear();
36
+ endErrorCondition(recognizer);
37
+ }
38
+
39
+ void DefaultErrorStrategy::beginErrorCondition(Parser * /*recognizer*/) {
40
+ errorRecoveryMode = true;
41
+ }
42
+
43
+ bool DefaultErrorStrategy::inErrorRecoveryMode(Parser * /*recognizer*/) {
44
+ return errorRecoveryMode;
45
+ }
46
+
47
+ void DefaultErrorStrategy::endErrorCondition(Parser * /*recognizer*/) {
48
+ errorRecoveryMode = false;
49
+ lastErrorIndex = -1;
50
+ }
51
+
52
+ void DefaultErrorStrategy::reportMatch(Parser *recognizer) {
53
+ endErrorCondition(recognizer);
54
+ }
55
+
56
+ void DefaultErrorStrategy::reportError(Parser *recognizer, const RecognitionException &e) {
57
+ // If we've already reported an error and have not matched a token
58
+ // yet successfully, don't report any errors.
59
+ if (inErrorRecoveryMode(recognizer)) {
60
+ return; // don't report spurious errors
61
+ }
62
+
63
+ beginErrorCondition(recognizer);
64
+ if (is<const NoViableAltException *>(&e)) {
65
+ reportNoViableAlternative(recognizer, static_cast<const NoViableAltException &>(e));
66
+ } else if (is<const InputMismatchException *>(&e)) {
67
+ reportInputMismatch(recognizer, static_cast<const InputMismatchException &>(e));
68
+ } else if (is<const FailedPredicateException *>(&e)) {
69
+ reportFailedPredicate(recognizer, static_cast<const FailedPredicateException &>(e));
70
+ } else if (is<const RecognitionException *>(&e)) {
71
+ recognizer->notifyErrorListeners(e.getOffendingToken(), e.what(), std::current_exception());
72
+ }
73
+ }
74
+
75
+ void DefaultErrorStrategy::recover(Parser *recognizer, std::exception_ptr /*e*/) {
76
+ if (lastErrorIndex == static_cast<int>(recognizer->getInputStream()->index()) &&
77
+ lastErrorStates.contains(recognizer->getState())) {
78
+
79
+ // uh oh, another error at same token index and previously-visited
80
+ // state in ATN; must be a case where LT(1) is in the recovery
81
+ // token set so nothing got consumed. Consume a single token
82
+ // at least to prevent an infinite loop; this is a failsafe.
83
+ recognizer->consume();
84
+ }
85
+ lastErrorIndex = static_cast<int>(recognizer->getInputStream()->index());
86
+ lastErrorStates.add(recognizer->getState());
87
+ misc::IntervalSet followSet = getErrorRecoverySet(recognizer);
88
+ consumeUntil(recognizer, followSet);
89
+ }
90
+
91
+ void DefaultErrorStrategy::sync(Parser *recognizer) {
92
+ atn::ATNState *s = recognizer->getInterpreter<atn::ATNSimulator>()->atn.states[recognizer->getState()];
93
+
94
+ // If already recovering, don't try to sync
95
+ if (inErrorRecoveryMode(recognizer)) {
96
+ return;
97
+ }
98
+
99
+ TokenStream *tokens = recognizer->getTokenStream();
100
+ size_t la = tokens->LA(1);
101
+
102
+ // try cheaper subset first; might get lucky. seems to shave a wee bit off
103
+ auto nextTokens = recognizer->getATN().nextTokens(s);
104
+ if (nextTokens.contains(Token::EPSILON) || nextTokens.contains(la)) {
105
+ return;
106
+ }
107
+
108
+ switch (s->getStateType()) {
109
+ case atn::ATNState::BLOCK_START:
110
+ case atn::ATNState::STAR_BLOCK_START:
111
+ case atn::ATNState::PLUS_BLOCK_START:
112
+ case atn::ATNState::STAR_LOOP_ENTRY:
113
+ // report error and recover if possible
114
+ if (singleTokenDeletion(recognizer) != nullptr) {
115
+ return;
116
+ }
117
+
118
+ throw InputMismatchException(recognizer);
119
+
120
+ case atn::ATNState::PLUS_LOOP_BACK:
121
+ case atn::ATNState::STAR_LOOP_BACK: {
122
+ reportUnwantedToken(recognizer);
123
+ misc::IntervalSet expecting = recognizer->getExpectedTokens();
124
+ misc::IntervalSet whatFollowsLoopIterationOrRule = expecting.Or(getErrorRecoverySet(recognizer));
125
+ consumeUntil(recognizer, whatFollowsLoopIterationOrRule);
126
+ }
127
+ break;
128
+
129
+ default:
130
+ // do nothing if we can't identify the exact kind of ATN state
131
+ break;
132
+ }
133
+ }
134
+
135
+ void DefaultErrorStrategy::reportNoViableAlternative(Parser *recognizer, const NoViableAltException &e) {
136
+ TokenStream *tokens = recognizer->getTokenStream();
137
+ std::string input;
138
+ if (tokens != nullptr) {
139
+ if (e.getStartToken()->getType() == Token::EOF) {
140
+ input = "<EOF>";
141
+ } else {
142
+ input = tokens->getText(e.getStartToken(), e.getOffendingToken());
143
+ }
144
+ } else {
145
+ input = "<unknown input>";
146
+ }
147
+ std::string msg = "no viable alternative at input " + escapeWSAndQuote(input);
148
+ recognizer->notifyErrorListeners(e.getOffendingToken(), msg, std::make_exception_ptr(e));
149
+ }
150
+
151
+ void DefaultErrorStrategy::reportInputMismatch(Parser *recognizer, const InputMismatchException &e) {
152
+ std::string msg = "mismatched input " + getTokenErrorDisplay(e.getOffendingToken()) +
153
+ " expecting " + e.getExpectedTokens().toString(recognizer->getVocabulary());
154
+ recognizer->notifyErrorListeners(e.getOffendingToken(), msg, std::make_exception_ptr(e));
155
+ }
156
+
157
+ void DefaultErrorStrategy::reportFailedPredicate(Parser *recognizer, const FailedPredicateException &e) {
158
+ const std::string& ruleName = recognizer->getRuleNames()[recognizer->getContext()->getRuleIndex()];
159
+ std::string msg = "rule " + ruleName + " " + e.what();
160
+ recognizer->notifyErrorListeners(e.getOffendingToken(), msg, std::make_exception_ptr(e));
161
+ }
162
+
163
+ void DefaultErrorStrategy::reportUnwantedToken(Parser *recognizer) {
164
+ if (inErrorRecoveryMode(recognizer)) {
165
+ return;
166
+ }
167
+
168
+ beginErrorCondition(recognizer);
169
+
170
+ Token *t = recognizer->getCurrentToken();
171
+ std::string tokenName = getTokenErrorDisplay(t);
172
+ misc::IntervalSet expecting = getExpectedTokens(recognizer);
173
+
174
+ std::string msg = "extraneous input " + tokenName + " expecting " + expecting.toString(recognizer->getVocabulary());
175
+ recognizer->notifyErrorListeners(t, msg, nullptr);
176
+ }
177
+
178
+ void DefaultErrorStrategy::reportMissingToken(Parser *recognizer) {
179
+ if (inErrorRecoveryMode(recognizer)) {
180
+ return;
181
+ }
182
+
183
+ beginErrorCondition(recognizer);
184
+
185
+ Token *t = recognizer->getCurrentToken();
186
+ misc::IntervalSet expecting = getExpectedTokens(recognizer);
187
+ std::string expectedText = expecting.toString(recognizer->getVocabulary());
188
+ std::string msg = "missing " + expectedText + " at " + getTokenErrorDisplay(t);
189
+
190
+ recognizer->notifyErrorListeners(t, msg, nullptr);
191
+ }
192
+
193
+ Token* DefaultErrorStrategy::recoverInline(Parser *recognizer) {
194
+ // Single token deletion.
195
+ Token *matchedSymbol = singleTokenDeletion(recognizer);
196
+ if (matchedSymbol) {
197
+ // We have deleted the extra token.
198
+ // Now, move past ttype token as if all were ok.
199
+ recognizer->consume();
200
+ return matchedSymbol;
201
+ }
202
+
203
+ // Single token insertion.
204
+ if (singleTokenInsertion(recognizer)) {
205
+ return getMissingSymbol(recognizer);
206
+ }
207
+
208
+ // Even that didn't work; must throw the exception.
209
+ throw InputMismatchException(recognizer);
210
+ }
211
+
212
+ bool DefaultErrorStrategy::singleTokenInsertion(Parser *recognizer) {
213
+ ssize_t currentSymbolType = recognizer->getInputStream()->LA(1);
214
+
215
+ // if current token is consistent with what could come after current
216
+ // ATN state, then we know we're missing a token; error recovery
217
+ // is free to conjure up and insert the missing token
218
+ atn::ATNState *currentState = recognizer->getInterpreter<atn::ATNSimulator>()->atn.states[recognizer->getState()];
219
+ atn::ATNState *next = currentState->transitions[0]->target;
220
+ const atn::ATN &atn = recognizer->getInterpreter<atn::ATNSimulator>()->atn;
221
+ misc::IntervalSet expectingAtLL2 = atn.nextTokens(next, recognizer->getContext());
222
+ if (expectingAtLL2.contains(currentSymbolType)) {
223
+ reportMissingToken(recognizer);
224
+ return true;
225
+ }
226
+ return false;
227
+ }
228
+
229
+ Token* DefaultErrorStrategy::singleTokenDeletion(Parser *recognizer) {
230
+ size_t nextTokenType = recognizer->getInputStream()->LA(2);
231
+ misc::IntervalSet expecting = getExpectedTokens(recognizer);
232
+ if (expecting.contains(nextTokenType)) {
233
+ reportUnwantedToken(recognizer);
234
+ recognizer->consume(); // simply delete extra token
235
+ // we want to return the token we're actually matching
236
+ Token *matchedSymbol = recognizer->getCurrentToken();
237
+ reportMatch(recognizer); // we know current token is correct
238
+ return matchedSymbol;
239
+ }
240
+ return nullptr;
241
+ }
242
+
243
+ Token* DefaultErrorStrategy::getMissingSymbol(Parser *recognizer) {
244
+ Token *currentSymbol = recognizer->getCurrentToken();
245
+ misc::IntervalSet expecting = getExpectedTokens(recognizer);
246
+ size_t expectedTokenType = expecting.getMinElement(); // get any element
247
+ std::string tokenText;
248
+ if (expectedTokenType == Token::EOF) {
249
+ tokenText = "<missing EOF>";
250
+ } else {
251
+ tokenText = "<missing " + recognizer->getVocabulary().getDisplayName(expectedTokenType) + ">";
252
+ }
253
+ Token *current = currentSymbol;
254
+ Token *lookback = recognizer->getTokenStream()->LT(-1);
255
+ if (current->getType() == Token::EOF && lookback != nullptr) {
256
+ current = lookback;
257
+ }
258
+
259
+ _errorSymbols.push_back(recognizer->getTokenFactory()->create(
260
+ { current->getTokenSource(), current->getTokenSource()->getInputStream() },
261
+ expectedTokenType, tokenText, Token::DEFAULT_CHANNEL, INVALID_INDEX, INVALID_INDEX,
262
+ current->getLine(), current->getCharPositionInLine()));
263
+
264
+ return _errorSymbols.back().get();
265
+ }
266
+
267
+ misc::IntervalSet DefaultErrorStrategy::getExpectedTokens(Parser *recognizer) {
268
+ return recognizer->getExpectedTokens();
269
+ }
270
+
271
+ std::string DefaultErrorStrategy::getTokenErrorDisplay(Token *t) {
272
+ if (t == nullptr) {
273
+ return "<no Token>";
274
+ }
275
+ std::string s = getSymbolText(t);
276
+ if (s == "") {
277
+ if (getSymbolType(t) == Token::EOF) {
278
+ s = "<EOF>";
279
+ } else {
280
+ s = "<" + std::to_string(getSymbolType(t)) + ">";
281
+ }
282
+ }
283
+ return escapeWSAndQuote(s);
284
+ }
285
+
286
+ std::string DefaultErrorStrategy::getSymbolText(Token *symbol) {
287
+ return symbol->getText();
288
+ }
289
+
290
+ size_t DefaultErrorStrategy::getSymbolType(Token *symbol) {
291
+ return symbol->getType();
292
+ }
293
+
294
+ std::string DefaultErrorStrategy::escapeWSAndQuote(const std::string &s) const {
295
+ std::string result = s;
296
+ antlrcpp::replaceAll(result, "\n", "\\n");
297
+ antlrcpp::replaceAll(result, "\r","\\r");
298
+ antlrcpp::replaceAll(result, "\t","\\t");
299
+ return "'" + result + "'";
300
+ }
301
+
302
+ misc::IntervalSet DefaultErrorStrategy::getErrorRecoverySet(Parser *recognizer) {
303
+ const atn::ATN &atn = recognizer->getInterpreter<atn::ATNSimulator>()->atn;
304
+ RuleContext *ctx = recognizer->getContext();
305
+ misc::IntervalSet recoverSet;
306
+ while (ctx->invokingState != ATNState::INVALID_STATE_NUMBER) {
307
+ // compute what follows who invoked us
308
+ atn::ATNState *invokingState = atn.states[ctx->invokingState];
309
+ atn::RuleTransition *rt = dynamic_cast<atn::RuleTransition*>(invokingState->transitions[0]);
310
+ misc::IntervalSet follow = atn.nextTokens(rt->followState);
311
+ recoverSet.addAll(follow);
312
+
313
+ if (ctx->parent == nullptr)
314
+ break;
315
+ ctx = static_cast<RuleContext *>(ctx->parent);
316
+ }
317
+ recoverSet.remove(Token::EPSILON);
318
+
319
+ return recoverSet;
320
+ }
321
+
322
+ void DefaultErrorStrategy::consumeUntil(Parser *recognizer, const misc::IntervalSet &set) {
323
+ size_t ttype = recognizer->getInputStream()->LA(1);
324
+ while (ttype != Token::EOF && !set.contains(ttype)) {
325
+ recognizer->consume();
326
+ ttype = recognizer->getInputStream()->LA(1);
327
+ }
328
+ }
329
+
330
+ void DefaultErrorStrategy::InitializeInstanceFields() {
331
+ errorRecoveryMode = false;
332
+ lastErrorIndex = -1;
333
+ }