expressir 0.2.4 → 0.2.9

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 (361) hide show
  1. checksums.yaml +4 -4
  2. data/.cross_rubies +30 -0
  3. data/.github/workflows/rake.yml +14 -15
  4. data/.github/workflows/release.yml +26 -17
  5. data/.gitignore +3 -1
  6. data/Gemfile +0 -2
  7. data/Rakefile +2 -17
  8. data/expressir.gemspec +10 -5
  9. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/CMakeLists.txt +118 -0
  10. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2013.vcxproj +637 -0
  11. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2013.vcxproj.filters +984 -0
  12. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2015.vcxproj +652 -0
  13. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2015.vcxproj.filters +990 -0
  14. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2017.vcxproj +652 -0
  15. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2017.vcxproj.filters +990 -0
  16. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2019.vcxproj +652 -0
  17. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2019.vcxproj.filters +990 -0
  18. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp-ios/Info.plist +26 -0
  19. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp-ios/antlrcpp_ios.h +17 -0
  20. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/project.pbxproj +3024 -0
  21. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  22. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  23. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/xcshareddata/xcschemes/antlr4.xcscheme +76 -0
  24. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/xcshareddata/xcschemes/antlr4_ios.xcscheme +80 -0
  25. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/xcshareddata/xcschemes/antlr4_static.xcscheme +80 -0
  26. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorListener.cpp +10 -0
  27. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorListener.h +167 -0
  28. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorStrategy.cpp +10 -0
  29. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorStrategy.h +121 -0
  30. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRFileStream.cpp +34 -0
  31. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRFileStream.h +27 -0
  32. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRInputStream.cpp +155 -0
  33. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRInputStream.h +69 -0
  34. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BailErrorStrategy.cpp +61 -0
  35. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BailErrorStrategy.h +59 -0
  36. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BaseErrorListener.cpp +25 -0
  37. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BaseErrorListener.h +36 -0
  38. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BufferedTokenStream.cpp +414 -0
  39. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BufferedTokenStream.h +200 -0
  40. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CharStream.cpp +11 -0
  41. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CharStream.h +37 -0
  42. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonToken.cpp +195 -0
  43. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonToken.h +158 -0
  44. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenFactory.cpp +39 -0
  45. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenFactory.h +74 -0
  46. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenStream.cpp +78 -0
  47. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenStream.h +79 -0
  48. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ConsoleErrorListener.cpp +15 -0
  49. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ConsoleErrorListener.h +35 -0
  50. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/DefaultErrorStrategy.cpp +333 -0
  51. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/DefaultErrorStrategy.h +466 -0
  52. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/DiagnosticErrorListener.cpp +84 -0
  53. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/DiagnosticErrorListener.h +80 -0
  54. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Exceptions.cpp +64 -0
  55. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Exceptions.h +99 -0
  56. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/FailedPredicateException.cpp +51 -0
  57. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/FailedPredicateException.h +32 -0
  58. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/InputMismatchException.cpp +18 -0
  59. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/InputMismatchException.h +24 -0
  60. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/IntStream.cpp +12 -0
  61. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/IntStream.h +218 -0
  62. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/InterpreterRuleContext.cpp +19 -0
  63. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/InterpreterRuleContext.h +45 -0
  64. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Lexer.cpp +295 -0
  65. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Lexer.h +196 -0
  66. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerInterpreter.cpp +75 -0
  67. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerInterpreter.h +52 -0
  68. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerNoViableAltException.cpp +36 -0
  69. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerNoViableAltException.h +31 -0
  70. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ListTokenSource.cpp +92 -0
  71. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ListTokenSource.h +88 -0
  72. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/NoViableAltException.cpp +46 -0
  73. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/NoViableAltException.h +42 -0
  74. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Parser.cpp +648 -0
  75. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Parser.h +467 -0
  76. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserInterpreter.cpp +306 -0
  77. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserInterpreter.h +179 -0
  78. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserRuleContext.cpp +141 -0
  79. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserRuleContext.h +147 -0
  80. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ProxyErrorListener.cpp +53 -0
  81. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ProxyErrorListener.h +38 -0
  82. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RecognitionException.cpp +66 -0
  83. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RecognitionException.h +98 -0
  84. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Recognizer.cpp +167 -0
  85. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Recognizer.h +164 -0
  86. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContext.cpp +143 -0
  87. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContext.h +137 -0
  88. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContextWithAltNum.cpp +27 -0
  89. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContextWithAltNum.h +32 -0
  90. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuntimeMetaData.cpp +53 -0
  91. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuntimeMetaData.h +155 -0
  92. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Token.cpp +9 -0
  93. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Token.h +92 -0
  94. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenFactory.h +30 -0
  95. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenSource.cpp +9 -0
  96. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenSource.h +85 -0
  97. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStream.cpp +11 -0
  98. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStream.h +137 -0
  99. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStreamRewriter.cpp +425 -0
  100. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStreamRewriter.h +293 -0
  101. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedCharStream.cpp +211 -0
  102. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedCharStream.h +123 -0
  103. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedTokenStream.cpp +270 -0
  104. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedTokenStream.h +115 -0
  105. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Vocabulary.cpp +104 -0
  106. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Vocabulary.h +193 -0
  107. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/WritableToken.cpp +9 -0
  108. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/WritableToken.h +23 -0
  109. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/antlr4-common.h +137 -0
  110. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/antlr4-runtime.h +167 -0
  111. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATN.cpp +209 -0
  112. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATN.h +112 -0
  113. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfig.cpp +113 -0
  114. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfig.h +148 -0
  115. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfigSet.cpp +228 -0
  116. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfigSet.h +110 -0
  117. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.cpp +64 -0
  118. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.h +50 -0
  119. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializer.cpp +758 -0
  120. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializer.h +85 -0
  121. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSerializer.cpp +621 -0
  122. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSerializer.h +61 -0
  123. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSimulator.cpp +63 -0
  124. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSimulator.h +87 -0
  125. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNState.cpp +72 -0
  126. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNState.h +133 -0
  127. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNType.h +20 -0
  128. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AbstractPredicateTransition.cpp +14 -0
  129. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AbstractPredicateTransition.h +24 -0
  130. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ActionTransition.cpp +33 -0
  131. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ActionTransition.h +33 -0
  132. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AmbiguityInfo.cpp +16 -0
  133. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AmbiguityInfo.h +68 -0
  134. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.cpp +82 -0
  135. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.h +43 -0
  136. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AtomTransition.cpp +31 -0
  137. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AtomTransition.h +30 -0
  138. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicBlockStartState.cpp +12 -0
  139. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicBlockStartState.h +22 -0
  140. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicState.cpp +12 -0
  141. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicState.h +21 -0
  142. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockEndState.cpp +15 -0
  143. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockEndState.h +24 -0
  144. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockStartState.cpp +9 -0
  145. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockStartState.h +21 -0
  146. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ContextSensitivityInfo.cpp +14 -0
  147. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ContextSensitivityInfo.h +47 -0
  148. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionEventInfo.cpp +14 -0
  149. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionEventInfo.h +70 -0
  150. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionInfo.cpp +25 -0
  151. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionInfo.h +227 -0
  152. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionState.cpp +17 -0
  153. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionState.h +30 -0
  154. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EmptyPredictionContext.cpp +35 -0
  155. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EmptyPredictionContext.h +27 -0
  156. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EpsilonTransition.cpp +35 -0
  157. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EpsilonTransition.h +39 -0
  158. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ErrorInfo.cpp +15 -0
  159. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ErrorInfo.h +43 -0
  160. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LL1Analyzer.cpp +158 -0
  161. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LL1Analyzer.h +109 -0
  162. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNConfig.cpp +84 -0
  163. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNConfig.h +44 -0
  164. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNSimulator.cpp +628 -0
  165. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNSimulator.h +210 -0
  166. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerAction.cpp +9 -0
  167. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerAction.h +66 -0
  168. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionExecutor.cpp +107 -0
  169. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionExecutor.h +115 -0
  170. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionType.h +55 -0
  171. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerChannelAction.cpp +55 -0
  172. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerChannelAction.h +63 -0
  173. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerCustomAction.cpp +62 -0
  174. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerCustomAction.h +87 -0
  175. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.cpp +63 -0
  176. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.h +82 -0
  177. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerModeAction.cpp +56 -0
  178. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerModeAction.h +61 -0
  179. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerMoreAction.cpp +47 -0
  180. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerMoreAction.h +57 -0
  181. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPopModeAction.cpp +47 -0
  182. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPopModeAction.h +57 -0
  183. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPushModeAction.cpp +56 -0
  184. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPushModeAction.h +61 -0
  185. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerSkipAction.cpp +47 -0
  186. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerSkipAction.h +55 -0
  187. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerTypeAction.cpp +56 -0
  188. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerTypeAction.h +55 -0
  189. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LookaheadEventInfo.cpp +16 -0
  190. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LookaheadEventInfo.h +42 -0
  191. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LoopEndState.cpp +12 -0
  192. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LoopEndState.h +22 -0
  193. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Makefile +67 -0
  194. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/NotSetTransition.cpp +27 -0
  195. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/NotSetTransition.h +25 -0
  196. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.cpp +12 -0
  197. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.h +20 -0
  198. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParseInfo.cpp +102 -0
  199. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParseInfo.h +102 -0
  200. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulator.cpp +1366 -0
  201. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulator.h +904 -0
  202. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusBlockStartState.cpp +12 -0
  203. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusBlockStartState.h +25 -0
  204. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusLoopbackState.cpp +12 -0
  205. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusLoopbackState.h +22 -0
  206. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.cpp +32 -0
  207. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.h +29 -0
  208. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.cpp +17 -0
  209. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.h +62 -0
  210. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateTransition.cpp +34 -0
  211. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateTransition.h +39 -0
  212. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContext.cpp +662 -0
  213. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContext.h +254 -0
  214. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionMode.cpp +201 -0
  215. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionMode.h +436 -0
  216. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.cpp +179 -0
  217. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.h +60 -0
  218. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RangeTransition.cpp +30 -0
  219. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RangeTransition.h +29 -0
  220. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStartState.cpp +16 -0
  221. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStartState.h +25 -0
  222. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStopState.cpp +12 -0
  223. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStopState.h +25 -0
  224. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleTransition.cpp +37 -0
  225. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleTransition.h +40 -0
  226. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContext.cpp +377 -0
  227. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContext.h +222 -0
  228. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SetTransition.cpp +32 -0
  229. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SetTransition.h +30 -0
  230. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.cpp +81 -0
  231. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.h +36 -0
  232. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarBlockStartState.cpp +12 -0
  233. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarBlockStartState.h +21 -0
  234. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopEntryState.cpp +15 -0
  235. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopEntryState.h +35 -0
  236. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopbackState.cpp +19 -0
  237. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopbackState.h +21 -0
  238. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TokensStartState.cpp +12 -0
  239. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TokensStartState.h +21 -0
  240. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Transition.cpp +44 -0
  241. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Transition.h +76 -0
  242. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/WildcardTransition.cpp +25 -0
  243. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/WildcardTransition.h +25 -0
  244. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFA.cpp +127 -0
  245. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFA.h +91 -0
  246. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFASerializer.cpp +67 -0
  247. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFASerializer.h +32 -0
  248. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFAState.cpp +100 -0
  249. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFAState.h +144 -0
  250. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.cpp +20 -0
  251. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.h +23 -0
  252. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/InterpreterDataReader.cpp +124 -0
  253. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/InterpreterDataReader.h +31 -0
  254. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Interval.cpp +89 -0
  255. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Interval.h +84 -0
  256. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/IntervalSet.cpp +521 -0
  257. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/IntervalSet.h +198 -0
  258. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/MurmurHash.cpp +134 -0
  259. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/MurmurHash.h +76 -0
  260. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Predicate.cpp +4 -0
  261. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Predicate.h +21 -0
  262. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Any.cpp +13 -0
  263. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Any.h +170 -0
  264. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Arrays.cpp +43 -0
  265. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Arrays.h +110 -0
  266. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/BitSet.h +76 -0
  267. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/CPPUtils.cpp +248 -0
  268. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/CPPUtils.h +78 -0
  269. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Declarations.h +163 -0
  270. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/StringUtils.cpp +36 -0
  271. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/StringUtils.h +54 -0
  272. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/guid.cpp +303 -0
  273. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/guid.h +112 -0
  274. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/AbstractParseTreeVisitor.h +128 -0
  275. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNode.cpp +9 -0
  276. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNode.h +19 -0
  277. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.cpp +23 -0
  278. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.h +33 -0
  279. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/IterativeParseTreeWalker.cpp +71 -0
  280. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/IterativeParseTreeWalker.h +53 -0
  281. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTree.cpp +15 -0
  282. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTree.h +102 -0
  283. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeListener.cpp +9 -0
  284. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeListener.h +39 -0
  285. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeProperty.h +50 -0
  286. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeVisitor.cpp +9 -0
  287. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeVisitor.h +57 -0
  288. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeWalker.cpp +49 -0
  289. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeWalker.h +31 -0
  290. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNode.cpp +9 -0
  291. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNode.h +32 -0
  292. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.cpp +57 -0
  293. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.h +33 -0
  294. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/Trees.cpp +241 -0
  295. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/Trees.h +78 -0
  296. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/Chunk.cpp +9 -0
  297. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/Chunk.h +44 -0
  298. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreeMatch.cpp +69 -0
  299. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreeMatch.h +132 -0
  300. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePattern.cpp +64 -0
  301. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePattern.h +105 -0
  302. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePatternMatcher.cpp +371 -0
  303. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePatternMatcher.h +185 -0
  304. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/RuleTagToken.cpp +77 -0
  305. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/RuleTagToken.h +117 -0
  306. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TagChunk.cpp +39 -0
  307. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TagChunk.h +86 -0
  308. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TextChunk.cpp +28 -0
  309. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TextChunk.h +51 -0
  310. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TokenTagToken.cpp +36 -0
  311. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TokenTagToken.h +80 -0
  312. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPath.cpp +154 -0
  313. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPath.h +86 -0
  314. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathElement.cpp +31 -0
  315. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathElement.h +40 -0
  316. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.cpp +173 -0
  317. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.g4 +64 -0
  318. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.h +56 -0
  319. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.tokens +12 -0
  320. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexerErrorListener.cpp +13 -0
  321. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexerErrorListener.h +22 -0
  322. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleAnywhereElement.cpp +20 -0
  323. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleAnywhereElement.h +27 -0
  324. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleElement.cpp +30 -0
  325. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleElement.h +26 -0
  326. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenAnywhereElement.cpp +20 -0
  327. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenAnywhereElement.h +25 -0
  328. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenElement.cpp +33 -0
  329. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenElement.h +26 -0
  330. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardAnywhereElement.cpp +23 -0
  331. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardAnywhereElement.h +23 -0
  332. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardElement.cpp +24 -0
  333. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardElement.h +23 -0
  334. data/ext/express-parser/express_parser.cpp +12 -10
  335. data/ext/express-parser/extconf.rb +48 -25
  336. data/lib/expressir/express_exp/formatter.rb +3 -7
  337. data/lib/expressir/express_exp/parser.rb +20 -2
  338. data/lib/expressir/express_exp/visitor.rb +106 -55
  339. data/lib/expressir/model.rb +1 -0
  340. data/lib/expressir/model/entity.rb +3 -0
  341. data/lib/expressir/model/expressions/query_expression.rb +2 -2
  342. data/lib/expressir/model/identifier.rb +2 -0
  343. data/lib/expressir/model/informal_proposition.rb +11 -0
  344. data/lib/expressir/model/rule.rb +3 -0
  345. data/lib/expressir/model/schema.rb +2 -0
  346. data/lib/expressir/model/scope.rb +52 -3
  347. data/lib/expressir/model/type.rb +8 -0
  348. data/lib/expressir/version.rb +1 -1
  349. data/original/examples/syntax/remark.exp +64 -20
  350. data/original/examples/syntax/remark_formatted.exp +63 -19
  351. data/original/examples/syntax/source.exp +16 -0
  352. data/original/examples/syntax/syntax.exp +6 -1
  353. data/original/examples/syntax/syntax_formatted.exp +13 -0
  354. data/rakelib/cross-ruby.rake +308 -0
  355. data/spec/expressir/express_exp/head_source_spec.rb +41 -0
  356. data/spec/expressir/express_exp/parse_multiple_spec.rb +32 -0
  357. data/spec/expressir/express_exp/parse_remark_spec.rb +119 -53
  358. data/spec/expressir/express_exp/parse_syntax_spec.rb +47 -2
  359. data/spec/expressir/express_exp/source_spec.rb +32 -0
  360. data/spec/expressir/model/find_spec.rb +19 -6
  361. metadata +369 -23
@@ -0,0 +1,26 @@
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 "XPathElement.h"
9
+
10
+ namespace antlr4 {
11
+ namespace tree {
12
+ namespace xpath {
13
+
14
+ class ANTLR4CPP_PUBLIC XPathRuleElement : public XPathElement {
15
+ public:
16
+ XPathRuleElement(const std::string &ruleName, size_t ruleIndex);
17
+
18
+ virtual std::vector<ParseTree *> evaluate(ParseTree *t) override;
19
+
20
+ protected:
21
+ size_t _ruleIndex = 0;
22
+ };
23
+
24
+ } // namespace xpath
25
+ } // namespace tree
26
+ } // namespace antlr4
@@ -0,0 +1,20 @@
1
+ /* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
2
+ * Use of this file is governed by the BSD 3-clause license that
3
+ * can be found in the LICENSE.txt file in the project root.
4
+ */
5
+
6
+ #include "tree/ParseTree.h"
7
+ #include "tree/Trees.h"
8
+
9
+ #include "XPathTokenAnywhereElement.h"
10
+
11
+ using namespace antlr4::tree;
12
+ using namespace antlr4::tree::xpath;
13
+
14
+ XPathTokenAnywhereElement::XPathTokenAnywhereElement(const std::string &tokenName, int tokenType) : XPathElement(tokenName) {
15
+ this->tokenType = tokenType;
16
+ }
17
+
18
+ std::vector<ParseTree *> XPathTokenAnywhereElement::evaluate(ParseTree *t) {
19
+ return Trees::findAllTokenNodes(t, tokenType);
20
+ }
@@ -0,0 +1,25 @@
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 "XPathElement.h"
9
+
10
+ namespace antlr4 {
11
+ namespace tree {
12
+ namespace xpath {
13
+
14
+ class ANTLR4CPP_PUBLIC XPathTokenAnywhereElement : public XPathElement {
15
+ protected:
16
+ int tokenType = 0;
17
+ public:
18
+ XPathTokenAnywhereElement(const std::string &tokenName, int tokenType);
19
+
20
+ virtual std::vector<ParseTree *> evaluate(ParseTree *t) override;
21
+ };
22
+
23
+ } // namespace xpath
24
+ } // namespace tree
25
+ } // namespace antlr4
@@ -0,0 +1,33 @@
1
+ /* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
2
+ * Use of this file is governed by the BSD 3-clause license that
3
+ * can be found in the LICENSE.txt file in the project root.
4
+ */
5
+
6
+ #include "tree/ParseTree.h"
7
+ #include "tree/Trees.h"
8
+ #include "support/CPPUtils.h"
9
+ #include "Token.h"
10
+
11
+ #include "XPathTokenElement.h"
12
+
13
+ using namespace antlr4;
14
+ using namespace antlr4::tree;
15
+ using namespace antlr4::tree::xpath;
16
+
17
+ XPathTokenElement::XPathTokenElement(const std::string &tokenName, size_t tokenType) : XPathElement(tokenName) {
18
+ _tokenType = tokenType;
19
+ }
20
+
21
+ std::vector<ParseTree *> XPathTokenElement::evaluate(ParseTree *t) {
22
+ // return all children of t that match nodeName
23
+ std::vector<ParseTree *> nodes;
24
+ for (auto c : t->children) {
25
+ if (antlrcpp::is<TerminalNode *>(c)) {
26
+ TerminalNode *tnode = dynamic_cast<TerminalNode *>(c);
27
+ if ((tnode->getSymbol()->getType() == _tokenType && !_invert) || (tnode->getSymbol()->getType() != _tokenType && _invert)) {
28
+ nodes.push_back(tnode);
29
+ }
30
+ }
31
+ }
32
+ return nodes;
33
+ }
@@ -0,0 +1,26 @@
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 "XPathElement.h"
9
+
10
+ namespace antlr4 {
11
+ namespace tree {
12
+ namespace xpath {
13
+
14
+ class ANTLR4CPP_PUBLIC XPathTokenElement : public XPathElement {
15
+ public:
16
+ XPathTokenElement(const std::string &tokenName, size_t tokenType);
17
+
18
+ virtual std::vector<ParseTree *> evaluate(ParseTree *t) override;
19
+
20
+ protected:
21
+ size_t _tokenType = 0;
22
+ };
23
+
24
+ } // namespace xpath
25
+ } // namespace tree
26
+ } // namespace antlr4
@@ -0,0 +1,23 @@
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 "XPath.h"
7
+ #include "tree/ParseTree.h"
8
+ #include "tree/Trees.h"
9
+
10
+ #include "XPathWildcardAnywhereElement.h"
11
+
12
+ using namespace antlr4::tree;
13
+ using namespace antlr4::tree::xpath;
14
+
15
+ XPathWildcardAnywhereElement::XPathWildcardAnywhereElement() : XPathElement(XPath::WILDCARD) {
16
+ }
17
+
18
+ std::vector<ParseTree *> XPathWildcardAnywhereElement::evaluate(ParseTree *t) {
19
+ if (_invert) {
20
+ return {}; // !* is weird but valid (empty)
21
+ }
22
+ return Trees::getDescendants(t);
23
+ }
@@ -0,0 +1,23 @@
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 "XPathElement.h"
9
+
10
+ namespace antlr4 {
11
+ namespace tree {
12
+ namespace xpath {
13
+
14
+ class ANTLR4CPP_PUBLIC XPathWildcardAnywhereElement : public XPathElement {
15
+ public:
16
+ XPathWildcardAnywhereElement();
17
+
18
+ virtual std::vector<ParseTree *> evaluate(ParseTree *t) override;
19
+ };
20
+
21
+ } // namespace xpath
22
+ } // namespace tree
23
+ } // namespace antlr4
@@ -0,0 +1,24 @@
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 "XPath.h"
7
+ #include "tree/ParseTree.h"
8
+ #include "tree/Trees.h"
9
+
10
+ #include "XPathWildcardElement.h"
11
+
12
+ using namespace antlr4::tree;
13
+ using namespace antlr4::tree::xpath;
14
+
15
+ XPathWildcardElement::XPathWildcardElement() : XPathElement(XPath::WILDCARD) {
16
+ }
17
+
18
+ std::vector<ParseTree *> XPathWildcardElement::evaluate(ParseTree *t) {
19
+ if (_invert) {
20
+ return {}; // !* is weird but valid (empty)
21
+ }
22
+
23
+ return t->children;
24
+ }
@@ -0,0 +1,23 @@
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 "XPathElement.h"
9
+
10
+ namespace antlr4 {
11
+ namespace tree {
12
+ namespace xpath {
13
+
14
+ class ANTLR4CPP_PUBLIC XPathWildcardElement : public XPathElement {
15
+ public:
16
+ XPathWildcardElement();
17
+
18
+ virtual std::vector<ParseTree *> evaluate(ParseTree *t) override;
19
+ };
20
+
21
+ } // namespace xpath
22
+ } // namespace tree
23
+ } // namespace antlr4
@@ -1,24 +1,26 @@
1
1
  #include <iostream>
2
2
 
3
- #include "antlr4-runtime.h"
3
+ #include <antlr4-runtime.h>
4
4
 
5
- #include "ExpressParser.h"
6
- #include "ExpressBaseVisitor.h"
7
- #include "ExpressLexer.h"
5
+ #include "antlrgen/ExpressParser.h"
6
+ #include "antlrgen/ExpressBaseVisitor.h"
7
+ #include "antlrgen/ExpressLexer.h"
8
8
 
9
- #include "rice/Array.hpp"
10
- #include "rice/Class.hpp"
11
- #include "rice/Constructor.hpp"
12
- #include "rice/Director.hpp"
9
+ #include <rice/Array.hpp>
10
+ #include <rice/Class.hpp>
11
+ #include <rice/Constructor.hpp>
12
+ #include <rice/Director.hpp>
13
13
 
14
14
  #ifdef _WIN32
15
- #undef FALSE
16
- #undef TRUE
17
15
  #undef OPTIONAL
18
16
  #undef IN
19
17
  #undef OUT
20
18
  #endif
21
19
 
20
+ // ruby-3.0
21
+ #undef FALSE
22
+ #undef TRUE
23
+
22
24
  using namespace std;
23
25
  using namespace Rice;
24
26
  using namespace antlr4;
@@ -1,34 +1,57 @@
1
- require 'mkmf-rice'
1
+ require 'rubygems'
2
+ require 'mkmf'
2
3
 
3
4
  extension_name = 'express_parser'
4
- dir_config(extension_name)
5
-
6
- have_library('stdc++')
7
-
8
- $CFLAGS << ' -std=c++14 -DANTLR4CPP_STATIC'
9
-
10
- include_paths = [
11
- '.',
12
- 'antlrgen',
13
- 'antlr4-upstream/runtime/Cpp/runtime/src',
14
- 'antlr4-upstream/runtime/Cpp/runtime/src/atn',
15
- 'antlr4-upstream/runtime/Cpp/runtime/src/dfa',
16
- 'antlr4-upstream/runtime/Cpp/runtime/src/misc',
17
- 'antlr4-upstream/runtime/Cpp/runtime/src/support',
18
- 'antlr4-upstream/runtime/Cpp/runtime/src/tree',
19
- 'antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern',
20
- 'antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath'
5
+ cross_build = enable_config("cross-build")
6
+
7
+ antlr4_src = 'antlr4-upstream/runtime/Cpp/runtime/src'
8
+ src_paths = [
9
+ ".",
10
+ "antlrgen",
11
+ "#{antlr4_src}",
12
+ "#{antlr4_src}/atn",
13
+ "#{antlr4_src}/dfa",
14
+ "#{antlr4_src}/misc",
15
+ "#{antlr4_src}/support",
16
+ "#{antlr4_src}/tree",
17
+ "#{antlr4_src}/tree/pattern",
18
+ "#{antlr4_src}/tree/xpath",
21
19
  ]
22
20
 
23
- $srcs = []
21
+ if cross_build
22
+ rice_subdir = "rice-embed"
23
+ rice_root = Gem.loaded_specs["rice"].full_gem_path
24
+ rice_src = File.join(rice_root, "rice")
25
+ rice_embed = File.join(__dir__, rice_subdir)
26
+ unless File.exists?(rice_embed)
27
+ FileUtils.mkdir_p(rice_embed)
28
+ FileUtils.cp_r(Dir.glob(rice_src), rice_embed)
29
+ File.delete(*Dir.glob("#{rice_embed}/**/*.o"))
30
+ File.delete(*Dir.glob("#{rice_embed}/**/Makefile"))
31
+ end
24
32
 
25
- include_paths.each do |include_path|
26
- $INCFLAGS << " -I#{__dir__}/#{include_path}"
27
- $VPATH << "#{__dir__}/#{include_path}"
33
+ src_paths.push("#{rice_subdir}/rice", "#{rice_subdir}/rice/detail")
28
34
 
29
- Dir.glob("#{__dir__}/#{include_path}/*.cpp").each do |path|
30
- $srcs << path
35
+ $INCFLAGS << " -I#{__dir__}/#{rice_subdir}"
36
+
37
+ if RbConfig::CONFIG['target_os'] =~ /mingw32|mswin/
38
+ # workaround for 'w64-mingw32-as: express_parser.o: too many sections'
39
+ $CXXFLAGS << " -O3 -Wa,-mbig-obj"
31
40
  end
41
+ else
42
+ require 'mkmf-rice'
43
+
44
+ dir_config(extension_name)
45
+ end
46
+
47
+ $CPPFLAGS << " -std=c++14 -DANTLR4CPP_STATIC -DHAVE_CXX11"
48
+ $INCFLAGS << " -I#{__dir__}/#{antlr4_src}"
49
+ $srcs = []
50
+
51
+ src_paths.each do |src_path|
52
+ abs_src_path = File.join(__dir__, src_path)
53
+ $VPATH << abs_src_path
54
+ $srcs.push(*Dir["#{abs_src_path}/*.cpp"])
32
55
  end
33
56
 
34
- create_makefile(extension_name)
57
+ create_makefile "expressir/express_exp/#{extension_name}"
@@ -395,7 +395,7 @@ module Expressir
395
395
  "\n",
396
396
  INDENT,
397
397
  '(',
398
- node.items.map{|x| format(x)},
398
+ node.items.map{|x| format(x)}.join(', '),
399
399
  ')'
400
400
  ].join('')
401
401
  end,
@@ -832,7 +832,7 @@ module Expressir
832
832
  ' ',
833
833
  '<*',
834
834
  ' ',
835
- format(node.source),
835
+ format(node.aggregate_source),
836
836
  ' ',
837
837
  '|',
838
838
  ' ',
@@ -1437,11 +1437,7 @@ module Expressir
1437
1437
  [
1438
1438
  *format_remarks(node),
1439
1439
  *if node.class.method_defined? :children
1440
- node.children.flat_map do |x|
1441
- if x != node
1442
- format_scope_remarks(x)
1443
- end
1444
- end
1440
+ node.children.select{|x| x.parent == node}.flat_map{|x| format_scope_remarks(x)}
1445
1441
  end
1446
1442
  ]
1447
1443
  end
@@ -1,10 +1,15 @@
1
- require 'express_parser'
1
+ begin
2
+ RUBY_VERSION =~ /(\d+\.\d+)/
3
+ require_relative "#{$1}/express_parser"
4
+ rescue LoadError
5
+ require_relative "express_parser"
6
+ end
2
7
  require 'expressir/express_exp/visitor'
3
8
 
4
9
  module Expressir
5
10
  module ExpressExp
6
11
  class Parser
7
- def self.from_exp(file)
12
+ def self.from_file(file)
8
13
  input = File.read(file)
9
14
 
10
15
  =begin
@@ -31,6 +36,19 @@ module Expressir
31
36
 
32
37
  repo
33
38
  end
39
+
40
+ def self.from_files(files)
41
+ schemas = files.map{|file| self.from_file(file).schemas}.flatten
42
+
43
+ Model::Repository.new({
44
+ schemas: schemas
45
+ })
46
+ end
47
+
48
+ # deprecated
49
+ def self.from_exp(file)
50
+ self.from_file(file)
51
+ end
34
52
  end
35
53
  end
36
54
  end
@@ -1,9 +1,12 @@
1
- require 'express_parser'
2
- require 'expressir/model'
1
+ begin
2
+ RUBY_VERSION =~ /(\d+\.\d+)/
3
+ require_relative "#{$1}/express_parser"
4
+ rescue LoadError
5
+ require_relative "express_parser"
6
+ end
7
+ require "expressir/model"
8
+ require "set"
3
9
 
4
- # static shorthands are unwrapped
5
- # - entity attributes, function/procedure parameters, local variables
6
- #
7
10
  # reference type is not recognized
8
11
  # see note in A.1.5 Interpreted identifiers
9
12
  # > It is expected that identifiers matching these syntax rules are known to an implementation.
@@ -20,6 +23,9 @@ require 'expressir/model'
20
23
  # > A syntactic construct such as ARRAY[1:3] OF REAL satisfies two syntactic productions —
21
24
  # > aggregation_type and general_aggregation_type. It is considered to be instantiable no matter which
22
25
  # > production it is required to satisfy in the syntax.
26
+ #
27
+ # static shorthands are unwrapped
28
+ # - entity attributes, function/procedure parameters, local variables
23
29
 
24
30
  module Expressir
25
31
  module ExpressExp
@@ -28,13 +34,14 @@ module Expressir
28
34
 
29
35
  def initialize(tokens)
30
36
  @tokens = tokens
31
- @attached_remarks = Set.new
37
+ @attached_remark_tokens = ::Set.new
32
38
 
33
39
  super()
34
40
  end
35
41
 
36
42
  def visit(ctx)
37
43
  result = super(ctx)
44
+ attach_source(ctx, result)
38
45
  attach_parent(ctx, result)
39
46
  attach_remarks(ctx, result)
40
47
  result
@@ -52,67 +59,111 @@ module Expressir
52
59
  ctx.map{|ctx2| visit(ctx2)}.flatten if ctx
53
60
  end
54
61
 
62
+ def get_tokens_source(tokens)
63
+ if tokens.last.text == '<EOF>'
64
+ tokens.pop
65
+ end
66
+
67
+ tokens.map{|x| x.text}.join('').force_encoding('UTF-8')
68
+ end
69
+
70
+ def get_tokens(ctx)
71
+ start_index, stop_index = if ctx.instance_of? ::ExpressParser::SyntaxContext
72
+ [0, @tokens.size - 1]
73
+ else
74
+ [ctx.start.token_index, ctx.stop.token_index]
75
+ end
76
+
77
+ @tokens[start_index..stop_index]
78
+ end
79
+
80
+ def get_head_tokens(ctx)
81
+ start_index, stop_index = if ctx.instance_of? ::ExpressParser::SchemaDeclContext
82
+ start_index = ctx.start.token_index
83
+ stop_index = if ctx.schema_body.interface_specification.length > 0
84
+ ctx.schema_body.interface_specification.last.stop.token_index
85
+ elsif ctx.schema_version_id
86
+ ctx.schema_version_id.stop.token_index + 1
87
+ else
88
+ ctx.schema_id.stop.token_index + 1
89
+ end
90
+
91
+ [start_index, stop_index]
92
+ end
93
+
94
+ if start_index and stop_index
95
+ @tokens[start_index..stop_index]
96
+ end
97
+ end
98
+
99
+ def attach_source(ctx, node)
100
+ if node.class.method_defined? :source
101
+ tokens = get_tokens(ctx)
102
+ node.source = get_tokens_source(tokens)
103
+ end
104
+
105
+ if node.class.method_defined? :head_source
106
+ tokens = get_head_tokens(ctx)
107
+ node.head_source = get_tokens_source(tokens)
108
+ end
109
+ end
110
+
55
111
  def attach_parent(ctx, node)
56
112
  if node.class.method_defined? :children
57
113
  node.children.each do |child_node|
58
- if child_node.class.method_defined? :parent
114
+ if child_node.class.method_defined? :parent and !child_node.parent
59
115
  child_node.parent = node
60
116
  end
61
117
  end
62
118
  end
63
119
  end
64
120
 
65
- def attach_remarks(ctx, node)
66
- # get remark tokens
67
- start_index, stop_index = if ctx.instance_of? ::ExpressParser::SyntaxContext
68
- [0, @tokens.size - 1]
69
- else
70
- [ctx.start.token_index, ctx.stop.token_index]
121
+ def find_remark_target(node, path)
122
+ current_node = node
123
+ target_node = nil
124
+
125
+ if current_node.class.method_defined? :find_or_create
126
+ target_node = current_node.find_or_create(path)
127
+ end
128
+ while !target_node and current_node.class.method_defined? :parent and current_node.parent.class.method_defined? :find_or_create
129
+ current_node = current_node.parent
130
+ target_node = current_node.find_or_create(path)
71
131
  end
72
- # puts [start_index, stop_index, ctx.class].inspect
73
-
74
- remark_tokens = @tokens[start_index..stop_index].select{|x| x.channel == REMARK_CHANNEL}
75
- if remark_tokens
76
- remark_tokens.each do |remark_token|
77
- remark_text = remark_token.text
78
-
79
- # check if it is tagged remark
80
- match = if remark_text.start_with?('--')
81
- remark_text[2..-1].match(/^"([^"]*)"(.*)$/)
82
- elsif remark_text.start_with?('(*') and remark_text.end_with?('*)')
83
- remark_text[2..-3].match(/^"([^"]*)"(.*)$/m)
84
- end
85
- if !match
86
- next
87
- end
88
132
 
89
- # don't attach already attached tagged remark
90
- if @attached_remarks.include? remark_token
91
- next
92
- end
133
+ target_node
134
+ end
93
135
 
94
- # attach tagged remark
95
- remark_tag = match[1]
96
- remark_content = match[2].strip
136
+ def attach_remarks(ctx, node)
137
+ remark_tokens = get_tokens(ctx).select{|x| x.channel == REMARK_CHANNEL}
97
138
 
98
- target_node = nil
99
- current_node = node
100
- if current_node.class.method_defined? :find
101
- target_node = current_node.find(remark_tag)
102
- end
103
- while !target_node and current_node.class.method_defined? :parent and current_node.parent.class.method_defined? :find
104
- current_node = current_node.parent
105
- target_node = current_node.find(remark_tag)
106
- end
139
+ # skip already attached remarks
140
+ remark_tokens = remark_tokens.select{|x| !@attached_remark_tokens.include?(x)}
107
141
 
108
- if target_node
109
- target_node.remarks ||= []
110
- target_node.remarks << remark_content
142
+ # parse remarks, find remark targets
143
+ tagged_remark_tokens = remark_tokens.map do |remark_token|
144
+ _, remark_tag, remark_text = if remark_token.text.start_with?('--')
145
+ remark_token.text.match(/^--"([^"]*)"(.*)$/).to_a
146
+ else
147
+ remark_token.text.match(/^\(\*"([^"]*)"(.*)\*\)$/m).to_a
148
+ end
111
149
 
112
- # mark remark as attached, so that it is not attached again at higher nesting level
113
- @attached_remarks << remark_token
114
- end
150
+ if remark_tag
151
+ remark_target = find_remark_target(node, remark_tag)
152
+ end
153
+ if remark_text
154
+ remark_text = remark_text.strip.force_encoding('UTF-8')
115
155
  end
156
+
157
+ [remark_token, remark_target, remark_text]
158
+ end.select{|x| x[1]}
159
+
160
+ tagged_remark_tokens.each do |remark_token, remark_target, remark_text|
161
+ # attach remark
162
+ remark_target.remarks ||= []
163
+ remark_target.remarks << remark_text
164
+
165
+ # mark remark as attached, so that it is not attached again at higher nesting level
166
+ @attached_remark_tokens << remark_token
116
167
  end
117
168
  end
118
169
 
@@ -1609,12 +1660,12 @@ module Expressir
1609
1660
  ctx__logical_expression = ctx.logical_expression
1610
1661
 
1611
1662
  id = visit_if(ctx__variable_id)
1612
- source = visit_if(ctx__aggregate_source)
1663
+ aggregate_source = visit_if(ctx__aggregate_source)
1613
1664
  expression = visit_if(ctx__logical_expression)
1614
1665
 
1615
1666
  Model::Expressions::QueryExpression.new({
1616
1667
  id: id,
1617
- source: source,
1668
+ aggregate_source: aggregate_source,
1618
1669
  expression: expression
1619
1670
  })
1620
1671
  end
@@ -2429,7 +2480,7 @@ module Expressir
2429
2480
  def handle_simple_string_literal(ctx)
2430
2481
  ctx__text = ctx.text
2431
2482
 
2432
- value = ctx__text[1..(ctx__text.length - 2)]
2483
+ value = ctx__text[1..(ctx__text.length - 2)].force_encoding('UTF-8')
2433
2484
 
2434
2485
  Model::Literals::String.new({
2435
2486
  value: value
@@ -2439,7 +2490,7 @@ module Expressir
2439
2490
  def handle_encoded_string_literal(ctx)
2440
2491
  ctx__text = ctx.text
2441
2492
 
2442
- value = ctx__text[1..(ctx__text.length - 2)]
2493
+ value = ctx__text[1..(ctx__text.length - 2)].force_encoding('UTF-8')
2443
2494
 
2444
2495
  Model::Literals::String.new({
2445
2496
  value: value,