expressir 0.2.3 → 0.2.8

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 (400) hide show
  1. checksums.yaml +4 -4
  2. data/.cross_rubies +30 -0
  3. data/.github/workflows/rake.yml +45 -0
  4. data/.github/workflows/release.yml +89 -0
  5. data/.gitignore +3 -2
  6. data/.gitmodules +3 -0
  7. data/Rakefile +5 -0
  8. data/exe/generate-parser +48 -0
  9. data/expressir.gemspec +12 -4
  10. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/CMakeLists.txt +118 -0
  11. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2013.vcxproj +637 -0
  12. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2013.vcxproj.filters +984 -0
  13. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2015.vcxproj +652 -0
  14. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2015.vcxproj.filters +990 -0
  15. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2017.vcxproj +652 -0
  16. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2017.vcxproj.filters +990 -0
  17. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2019.vcxproj +652 -0
  18. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2019.vcxproj.filters +990 -0
  19. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp-ios/Info.plist +26 -0
  20. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp-ios/antlrcpp_ios.h +17 -0
  21. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/project.pbxproj +3024 -0
  22. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  23. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  24. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/xcshareddata/xcschemes/antlr4.xcscheme +76 -0
  25. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/xcshareddata/xcschemes/antlr4_ios.xcscheme +80 -0
  26. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/xcshareddata/xcschemes/antlr4_static.xcscheme +80 -0
  27. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorListener.cpp +10 -0
  28. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorListener.h +167 -0
  29. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorStrategy.cpp +10 -0
  30. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorStrategy.h +121 -0
  31. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRFileStream.cpp +34 -0
  32. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRFileStream.h +27 -0
  33. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRInputStream.cpp +155 -0
  34. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRInputStream.h +69 -0
  35. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BailErrorStrategy.cpp +61 -0
  36. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BailErrorStrategy.h +59 -0
  37. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BaseErrorListener.cpp +25 -0
  38. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BaseErrorListener.h +36 -0
  39. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BufferedTokenStream.cpp +414 -0
  40. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BufferedTokenStream.h +200 -0
  41. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CharStream.cpp +11 -0
  42. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CharStream.h +37 -0
  43. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonToken.cpp +195 -0
  44. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonToken.h +158 -0
  45. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenFactory.cpp +39 -0
  46. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenFactory.h +74 -0
  47. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenStream.cpp +78 -0
  48. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenStream.h +79 -0
  49. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ConsoleErrorListener.cpp +15 -0
  50. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ConsoleErrorListener.h +35 -0
  51. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/DefaultErrorStrategy.cpp +333 -0
  52. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/DefaultErrorStrategy.h +466 -0
  53. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/DiagnosticErrorListener.cpp +84 -0
  54. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/DiagnosticErrorListener.h +80 -0
  55. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Exceptions.cpp +64 -0
  56. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Exceptions.h +99 -0
  57. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/FailedPredicateException.cpp +51 -0
  58. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/FailedPredicateException.h +32 -0
  59. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/InputMismatchException.cpp +18 -0
  60. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/InputMismatchException.h +24 -0
  61. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/IntStream.cpp +12 -0
  62. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/IntStream.h +218 -0
  63. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/InterpreterRuleContext.cpp +19 -0
  64. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/InterpreterRuleContext.h +45 -0
  65. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Lexer.cpp +295 -0
  66. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Lexer.h +196 -0
  67. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerInterpreter.cpp +75 -0
  68. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerInterpreter.h +52 -0
  69. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerNoViableAltException.cpp +36 -0
  70. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerNoViableAltException.h +31 -0
  71. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ListTokenSource.cpp +92 -0
  72. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ListTokenSource.h +88 -0
  73. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/NoViableAltException.cpp +46 -0
  74. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/NoViableAltException.h +42 -0
  75. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Parser.cpp +648 -0
  76. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Parser.h +467 -0
  77. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserInterpreter.cpp +306 -0
  78. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserInterpreter.h +179 -0
  79. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserRuleContext.cpp +141 -0
  80. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserRuleContext.h +147 -0
  81. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ProxyErrorListener.cpp +53 -0
  82. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ProxyErrorListener.h +38 -0
  83. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RecognitionException.cpp +66 -0
  84. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RecognitionException.h +98 -0
  85. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Recognizer.cpp +167 -0
  86. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Recognizer.h +164 -0
  87. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContext.cpp +143 -0
  88. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContext.h +137 -0
  89. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContextWithAltNum.cpp +27 -0
  90. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContextWithAltNum.h +32 -0
  91. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuntimeMetaData.cpp +53 -0
  92. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuntimeMetaData.h +155 -0
  93. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Token.cpp +9 -0
  94. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Token.h +92 -0
  95. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenFactory.h +30 -0
  96. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenSource.cpp +9 -0
  97. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenSource.h +85 -0
  98. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStream.cpp +11 -0
  99. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStream.h +137 -0
  100. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStreamRewriter.cpp +425 -0
  101. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStreamRewriter.h +293 -0
  102. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedCharStream.cpp +211 -0
  103. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedCharStream.h +123 -0
  104. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedTokenStream.cpp +270 -0
  105. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedTokenStream.h +115 -0
  106. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Vocabulary.cpp +104 -0
  107. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Vocabulary.h +193 -0
  108. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/WritableToken.cpp +9 -0
  109. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/WritableToken.h +23 -0
  110. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/antlr4-common.h +137 -0
  111. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/antlr4-runtime.h +167 -0
  112. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATN.cpp +209 -0
  113. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATN.h +112 -0
  114. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfig.cpp +113 -0
  115. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfig.h +148 -0
  116. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfigSet.cpp +228 -0
  117. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfigSet.h +110 -0
  118. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.cpp +64 -0
  119. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.h +50 -0
  120. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializer.cpp +758 -0
  121. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializer.h +85 -0
  122. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSerializer.cpp +621 -0
  123. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSerializer.h +61 -0
  124. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSimulator.cpp +63 -0
  125. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSimulator.h +87 -0
  126. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNState.cpp +72 -0
  127. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNState.h +133 -0
  128. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNType.h +20 -0
  129. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AbstractPredicateTransition.cpp +14 -0
  130. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AbstractPredicateTransition.h +24 -0
  131. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ActionTransition.cpp +33 -0
  132. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ActionTransition.h +33 -0
  133. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AmbiguityInfo.cpp +16 -0
  134. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AmbiguityInfo.h +68 -0
  135. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.cpp +82 -0
  136. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.h +43 -0
  137. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AtomTransition.cpp +31 -0
  138. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AtomTransition.h +30 -0
  139. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicBlockStartState.cpp +12 -0
  140. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicBlockStartState.h +22 -0
  141. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicState.cpp +12 -0
  142. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicState.h +21 -0
  143. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockEndState.cpp +15 -0
  144. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockEndState.h +24 -0
  145. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockStartState.cpp +9 -0
  146. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockStartState.h +21 -0
  147. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ContextSensitivityInfo.cpp +14 -0
  148. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ContextSensitivityInfo.h +47 -0
  149. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionEventInfo.cpp +14 -0
  150. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionEventInfo.h +70 -0
  151. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionInfo.cpp +25 -0
  152. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionInfo.h +227 -0
  153. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionState.cpp +17 -0
  154. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionState.h +30 -0
  155. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EmptyPredictionContext.cpp +35 -0
  156. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EmptyPredictionContext.h +27 -0
  157. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EpsilonTransition.cpp +35 -0
  158. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EpsilonTransition.h +39 -0
  159. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ErrorInfo.cpp +15 -0
  160. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ErrorInfo.h +43 -0
  161. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LL1Analyzer.cpp +158 -0
  162. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LL1Analyzer.h +109 -0
  163. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNConfig.cpp +84 -0
  164. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNConfig.h +44 -0
  165. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNSimulator.cpp +628 -0
  166. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNSimulator.h +210 -0
  167. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerAction.cpp +9 -0
  168. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerAction.h +66 -0
  169. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionExecutor.cpp +107 -0
  170. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionExecutor.h +115 -0
  171. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionType.h +55 -0
  172. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerChannelAction.cpp +55 -0
  173. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerChannelAction.h +63 -0
  174. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerCustomAction.cpp +62 -0
  175. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerCustomAction.h +87 -0
  176. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.cpp +63 -0
  177. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.h +82 -0
  178. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerModeAction.cpp +56 -0
  179. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerModeAction.h +61 -0
  180. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerMoreAction.cpp +47 -0
  181. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerMoreAction.h +57 -0
  182. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPopModeAction.cpp +47 -0
  183. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPopModeAction.h +57 -0
  184. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPushModeAction.cpp +56 -0
  185. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPushModeAction.h +61 -0
  186. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerSkipAction.cpp +47 -0
  187. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerSkipAction.h +55 -0
  188. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerTypeAction.cpp +56 -0
  189. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerTypeAction.h +55 -0
  190. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LookaheadEventInfo.cpp +16 -0
  191. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LookaheadEventInfo.h +42 -0
  192. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LoopEndState.cpp +12 -0
  193. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LoopEndState.h +22 -0
  194. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Makefile +67 -0
  195. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/NotSetTransition.cpp +27 -0
  196. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/NotSetTransition.h +25 -0
  197. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.cpp +12 -0
  198. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.h +20 -0
  199. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParseInfo.cpp +102 -0
  200. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParseInfo.h +102 -0
  201. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulator.cpp +1366 -0
  202. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulator.h +904 -0
  203. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusBlockStartState.cpp +12 -0
  204. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusBlockStartState.h +25 -0
  205. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusLoopbackState.cpp +12 -0
  206. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusLoopbackState.h +22 -0
  207. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.cpp +32 -0
  208. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.h +29 -0
  209. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.cpp +17 -0
  210. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.h +62 -0
  211. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateTransition.cpp +34 -0
  212. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateTransition.h +39 -0
  213. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContext.cpp +662 -0
  214. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContext.h +254 -0
  215. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionMode.cpp +201 -0
  216. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionMode.h +436 -0
  217. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.cpp +179 -0
  218. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.h +60 -0
  219. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RangeTransition.cpp +30 -0
  220. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RangeTransition.h +29 -0
  221. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStartState.cpp +16 -0
  222. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStartState.h +25 -0
  223. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStopState.cpp +12 -0
  224. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStopState.h +25 -0
  225. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleTransition.cpp +37 -0
  226. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleTransition.h +40 -0
  227. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContext.cpp +377 -0
  228. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContext.h +222 -0
  229. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SetTransition.cpp +32 -0
  230. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SetTransition.h +30 -0
  231. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.cpp +81 -0
  232. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.h +36 -0
  233. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarBlockStartState.cpp +12 -0
  234. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarBlockStartState.h +21 -0
  235. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopEntryState.cpp +15 -0
  236. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopEntryState.h +35 -0
  237. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopbackState.cpp +19 -0
  238. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopbackState.h +21 -0
  239. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TokensStartState.cpp +12 -0
  240. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TokensStartState.h +21 -0
  241. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Transition.cpp +44 -0
  242. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Transition.h +76 -0
  243. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/WildcardTransition.cpp +25 -0
  244. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/WildcardTransition.h +25 -0
  245. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFA.cpp +127 -0
  246. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFA.h +91 -0
  247. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFASerializer.cpp +67 -0
  248. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFASerializer.h +32 -0
  249. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFAState.cpp +100 -0
  250. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFAState.h +144 -0
  251. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.cpp +20 -0
  252. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.h +23 -0
  253. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/InterpreterDataReader.cpp +124 -0
  254. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/InterpreterDataReader.h +31 -0
  255. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Interval.cpp +89 -0
  256. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Interval.h +84 -0
  257. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/IntervalSet.cpp +521 -0
  258. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/IntervalSet.h +198 -0
  259. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/MurmurHash.cpp +134 -0
  260. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/MurmurHash.h +76 -0
  261. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Predicate.cpp +4 -0
  262. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Predicate.h +21 -0
  263. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Any.cpp +13 -0
  264. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Any.h +170 -0
  265. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Arrays.cpp +43 -0
  266. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Arrays.h +110 -0
  267. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/BitSet.h +76 -0
  268. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/CPPUtils.cpp +248 -0
  269. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/CPPUtils.h +78 -0
  270. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Declarations.h +163 -0
  271. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/StringUtils.cpp +36 -0
  272. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/StringUtils.h +54 -0
  273. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/guid.cpp +303 -0
  274. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/guid.h +112 -0
  275. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/AbstractParseTreeVisitor.h +128 -0
  276. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNode.cpp +9 -0
  277. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNode.h +19 -0
  278. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.cpp +23 -0
  279. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.h +33 -0
  280. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/IterativeParseTreeWalker.cpp +71 -0
  281. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/IterativeParseTreeWalker.h +53 -0
  282. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTree.cpp +15 -0
  283. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTree.h +102 -0
  284. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeListener.cpp +9 -0
  285. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeListener.h +39 -0
  286. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeProperty.h +50 -0
  287. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeVisitor.cpp +9 -0
  288. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeVisitor.h +57 -0
  289. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeWalker.cpp +49 -0
  290. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeWalker.h +31 -0
  291. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNode.cpp +9 -0
  292. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNode.h +32 -0
  293. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.cpp +57 -0
  294. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.h +33 -0
  295. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/Trees.cpp +241 -0
  296. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/Trees.h +78 -0
  297. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/Chunk.cpp +9 -0
  298. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/Chunk.h +44 -0
  299. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreeMatch.cpp +69 -0
  300. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreeMatch.h +132 -0
  301. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePattern.cpp +64 -0
  302. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePattern.h +105 -0
  303. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePatternMatcher.cpp +371 -0
  304. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePatternMatcher.h +185 -0
  305. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/RuleTagToken.cpp +77 -0
  306. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/RuleTagToken.h +117 -0
  307. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TagChunk.cpp +39 -0
  308. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TagChunk.h +86 -0
  309. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TextChunk.cpp +28 -0
  310. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TextChunk.h +51 -0
  311. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TokenTagToken.cpp +36 -0
  312. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TokenTagToken.h +80 -0
  313. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPath.cpp +154 -0
  314. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPath.h +86 -0
  315. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathElement.cpp +31 -0
  316. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathElement.h +40 -0
  317. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.cpp +173 -0
  318. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.g4 +64 -0
  319. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.h +56 -0
  320. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.tokens +12 -0
  321. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexerErrorListener.cpp +13 -0
  322. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexerErrorListener.h +22 -0
  323. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleAnywhereElement.cpp +20 -0
  324. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleAnywhereElement.h +27 -0
  325. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleElement.cpp +30 -0
  326. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleElement.h +26 -0
  327. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenAnywhereElement.cpp +20 -0
  328. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenAnywhereElement.h +25 -0
  329. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenElement.cpp +33 -0
  330. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenElement.h +26 -0
  331. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardAnywhereElement.cpp +23 -0
  332. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardAnywhereElement.h +23 -0
  333. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardElement.cpp +24 -0
  334. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardElement.h +23 -0
  335. data/ext/express-parser/antlrgen/Express.interp +532 -0
  336. data/ext/express-parser/antlrgen/Express.tokens +190 -0
  337. data/ext/express-parser/antlrgen/ExpressBaseListener.cpp +7 -0
  338. data/ext/express-parser/antlrgen/ExpressBaseListener.h +623 -0
  339. data/ext/express-parser/antlrgen/ExpressBaseVisitor.cpp +7 -0
  340. data/ext/express-parser/antlrgen/ExpressBaseVisitor.h +816 -0
  341. data/ext/express-parser/antlrgen/ExpressLexer.cpp +1169 -0
  342. data/ext/express-parser/antlrgen/ExpressLexer.h +85 -0
  343. data/ext/express-parser/antlrgen/ExpressLexer.interp +534 -0
  344. data/ext/express-parser/antlrgen/ExpressLexer.tokens +190 -0
  345. data/ext/express-parser/antlrgen/ExpressListener.cpp +7 -0
  346. data/ext/express-parser/antlrgen/ExpressListener.h +616 -0
  347. data/ext/express-parser/antlrgen/ExpressParser.cpp +17284 -0
  348. data/ext/express-parser/antlrgen/ExpressParser.h +3696 -0
  349. data/ext/express-parser/antlrgen/ExpressVisitor.cpp +7 -0
  350. data/ext/express-parser/antlrgen/ExpressVisitor.h +422 -0
  351. data/ext/express-parser/express_parser.cpp +17933 -0
  352. data/ext/express-parser/extconf.rb +57 -0
  353. data/lib/expressir/express_exp/formatter.rb +51 -45
  354. data/lib/expressir/express_exp/parser.rb +17 -6
  355. data/lib/expressir/express_exp/visitor.rb +1402 -1078
  356. data/lib/expressir/model.rb +3 -0
  357. data/lib/expressir/model/attribute.rb +4 -5
  358. data/lib/expressir/model/constant.rb +3 -4
  359. data/lib/expressir/model/entity.rb +4 -4
  360. data/lib/expressir/model/enumeration_item.rb +1 -4
  361. data/lib/expressir/model/expressions/query_expression.rb +6 -6
  362. data/lib/expressir/model/function.rb +4 -4
  363. data/lib/expressir/model/identifier.rb +11 -0
  364. data/lib/expressir/model/parameter.rb +4 -5
  365. data/lib/expressir/model/procedure.rb +4 -4
  366. data/lib/expressir/model/repository.rb +2 -0
  367. data/lib/expressir/model/rule.rb +4 -4
  368. data/lib/expressir/model/schema.rb +3 -3
  369. data/lib/expressir/model/scope.rb +32 -0
  370. data/lib/expressir/model/statements/alias.rb +4 -4
  371. data/lib/expressir/model/statements/repeat.rb +4 -4
  372. data/lib/expressir/model/subtype_constraint.rb +9 -4
  373. data/lib/expressir/model/type.rb +4 -4
  374. data/lib/expressir/model/types/aggregate.rb +4 -5
  375. data/lib/expressir/model/types/generic.rb +2 -5
  376. data/lib/expressir/model/types/generic_entity.rb +2 -5
  377. data/lib/expressir/model/unique.rb +3 -4
  378. data/lib/expressir/model/variable.rb +3 -4
  379. data/lib/expressir/model/where.rb +3 -4
  380. data/lib/expressir/version.rb +1 -1
  381. data/original/examples/syntax/remark.exp +1 -0
  382. data/original/examples/syntax/remark_formatted.exp +74 -71
  383. data/original/examples/syntax/syntax.exp +2 -0
  384. data/original/examples/syntax/syntax_formatted.exp +113 -98
  385. data/rakelib/cross-ruby.rake +308 -0
  386. data/spec/expressir/express_exp/ap233_spec.rb +1 -1
  387. data/spec/expressir/express_exp/find_spec.rb +28 -0
  388. data/spec/expressir/express_exp/parse_remark_spec.rb +4 -3
  389. data/spec/expressir/express_exp/parse_syntax_spec.rb +37 -32
  390. data/spec/expressir/express_exp/source_spec.rb +32 -0
  391. data/spec/expressir/model/find_spec.rb +110 -0
  392. metadata +411 -22
  393. data/.github/workflows/macos.yml +0 -38
  394. data/.github/workflows/ubuntu.yml +0 -56
  395. data/.github/workflows/windows.yml +0 -40
  396. data/generate-parser.sh +0 -29
  397. data/lib/expressir/express_exp/generated/ExpressBaseVisitor.rb +0 -779
  398. data/lib/expressir/express_exp/generated/ExpressLexer.rb +0 -844
  399. data/lib/expressir/express_exp/generated/ExpressParser.rb +0 -12162
  400. data/lib/expressir/express_exp/generated/ExpressVisitor.rb +0 -394
@@ -0,0 +1,308 @@
1
+ require "rbconfig"
2
+ require "shellwords"
3
+
4
+ CrossRuby = Struct.new(:version, :host) do
5
+ WINDOWS_PLATFORM_REGEX = /mingw|mswin/
6
+ MINGW32_PLATFORM_REGEX = /mingw32/
7
+ LINUX_PLATFORM_REGEX = /linux/
8
+ DARWIN_PLATFORM_REGEX = /darwin/
9
+
10
+ def windows?
11
+ !!(platform =~ WINDOWS_PLATFORM_REGEX)
12
+ end
13
+
14
+ def linux?
15
+ !!(platform =~ LINUX_PLATFORM_REGEX)
16
+ end
17
+
18
+ def darwin?
19
+ !!(platform =~ DARWIN_PLATFORM_REGEX)
20
+ end
21
+
22
+ def ver
23
+ @ver ||= version[/\A[^-]+/]
24
+ end
25
+
26
+ def minor_ver
27
+ @minor_ver ||= ver[/\A\d\.\d(?=\.)/]
28
+ end
29
+
30
+ def api_ver_suffix
31
+ case minor_ver
32
+ when nil
33
+ raise "CrossRuby.api_ver_suffix: unsupported version: #{ver}"
34
+ else
35
+ minor_ver.delete(".") << "0"
36
+ end
37
+ end
38
+
39
+ def platform
40
+ @platform ||= case host
41
+ when /\Ax86_64.*mingw32/
42
+ "x64-mingw32"
43
+ when /\Ai[3-6]86.*mingw32/
44
+ "x86-mingw32"
45
+ when /\Ax86_64.*linux/
46
+ "x86_64-linux"
47
+ when /\Ai[3-6]86.*linux/
48
+ "x86-linux"
49
+ when /\Ax86_64-darwin/
50
+ "x86_64-darwin"
51
+ when /\Aarm64-darwin/
52
+ "arm64-darwin"
53
+ else
54
+ raise "CrossRuby.platform: unsupported host: #{host}"
55
+ end
56
+ end
57
+
58
+ def tool(name)
59
+ (@binutils_prefix ||= case platform
60
+ when "x64-mingw32"
61
+ "x86_64-w64-mingw32-"
62
+ when "x86-mingw32"
63
+ "i686-w64-mingw32-"
64
+ when "x86_64-linux"
65
+ "x86_64-redhat-linux-"
66
+ when "x86-linux"
67
+ "i686-redhat-linux-"
68
+ when /x86_64.*darwin/
69
+ "x86_64-apple-darwin-"
70
+ when /a.*64.*darwin/
71
+ "aarch64-apple-darwin-"
72
+ else
73
+ raise "CrossRuby.tool: unmatched platform: #{platform}"
74
+ end) + name
75
+ end
76
+
77
+ def target_file_format
78
+ case platform
79
+ when "x64-mingw32"
80
+ "pei-x86-64"
81
+ when "x86-mingw32"
82
+ "pei-i386"
83
+ when "x86_64-linux"
84
+ "elf64-x86-64"
85
+ when "x86-linux"
86
+ "elf32-i386"
87
+ when "x86_64-darwin"
88
+ "Mach-O 64-bit x86-64" # hmm
89
+ when "arm64-darwin"
90
+ "Mach-O arm64"
91
+ else
92
+ raise "CrossRuby.target_file_format: unmatched platform: #{platform}"
93
+ end
94
+ end
95
+
96
+ def dll_ext
97
+ darwin? ? "bundle" : "so"
98
+ end
99
+
100
+ def dll_staging_path
101
+ "tmp/#{platform}/stage/lib/#{GEMSPEC.name}/#{minor_ver}/#{GEMSPEC.name}.#{dll_ext}"
102
+ end
103
+
104
+ def libruby_dll
105
+ case platform
106
+ when "x64-mingw32"
107
+ "x64-msvcrt-ruby#{api_ver_suffix}.dll"
108
+ when "x86-mingw32"
109
+ "msvcrt-ruby#{api_ver_suffix}.dll"
110
+ else
111
+ raise "CrossRuby.libruby_dll: unmatched platform: #{platform}"
112
+ end
113
+ end
114
+
115
+ def allowed_dlls
116
+ case platform
117
+ when MINGW32_PLATFORM_REGEX
118
+ [
119
+ "kernel32.dll",
120
+ "msvcrt.dll",
121
+ "ws2_32.dll",
122
+ "user32.dll",
123
+ "advapi32.dll",
124
+ libruby_dll,
125
+ ]
126
+ when LINUX_PLATFORM_REGEX
127
+ [
128
+ "libm.so.6",
129
+ *(case
130
+ when ver < "2.6.0"
131
+ "libpthread.so.0"
132
+ end),
133
+ "libc.so.6",
134
+ "libdl.so.2", # on old dists only - now in libc
135
+ ]
136
+ when DARWIN_PLATFORM_REGEX
137
+ [
138
+ "/usr/lib/libSystem.B.dylib",
139
+ "/usr/lib/liblzma.5.dylib",
140
+ "/usr/lib/libobjc.A.dylib",
141
+ ]
142
+ else
143
+ raise "CrossRuby.allowed_dlls: unmatched platform: #{platform}"
144
+ end
145
+ end
146
+
147
+ def dll_ref_versions
148
+ case platform
149
+ when LINUX_PLATFORM_REGEX
150
+ { "GLIBC" => "2.17" }
151
+ else
152
+ raise "CrossRuby.dll_ref_versions: unmatched platform: #{platform}"
153
+ end
154
+ end
155
+ end
156
+
157
+ CROSS_RUBIES = File.read(".cross_rubies").split("\n").map do |line|
158
+ case line
159
+ when /\A([^#]+):([^#]+)/
160
+ CrossRuby.new($1, $2)
161
+ end
162
+ end.compact
163
+
164
+ ENV["RUBY_CC_VERSION"] = CROSS_RUBIES.map(&:ver).uniq.join(":")
165
+
166
+ require "rake_compiler_dock"
167
+
168
+ def verify_dll(dll, cross_ruby)
169
+ allowed_imports = cross_ruby.allowed_dlls
170
+ dump = `#{["env", "LANG=C", cross_ruby.tool("objdump"), "-p", dll].shelljoin}`
171
+
172
+ if cross_ruby.windows?
173
+ raise "unexpected file format for generated dll #{dll}" unless /file format #{Regexp.quote(cross_ruby.target_file_format)}\s/ === dump
174
+ raise "export function Init_nokogiri not in dll #{dll}" unless /Table.*\sInit_nokogiri\s/mi === dump
175
+
176
+ # Verify that the DLL dependencies are all allowed.
177
+ actual_imports = dump.scan(/DLL Name: (.*)$/).map(&:first).map(&:downcase).uniq
178
+ if !(actual_imports - allowed_imports).empty?
179
+ raise "unallowed so imports #{actual_imports.inspect} in #{dll} (allowed #{allowed_imports.inspect})"
180
+ end
181
+
182
+ elsif cross_ruby.linux?
183
+ nm = `#{["env", "LANG=C", cross_ruby.tool("nm"), "-D", dll].shelljoin}`
184
+
185
+ raise "unexpected file format for generated dll #{dll}" unless /file format #{Regexp.quote(cross_ruby.target_file_format)}\s/ === dump
186
+ raise "export function Init_nokogiri not in dll #{dll}" unless / T Init_nokogiri/ === nm
187
+
188
+ # Verify that the DLL dependencies are all allowed.
189
+ actual_imports = dump.scan(/NEEDED\s+(.*)/).map(&:first).uniq
190
+ if !(actual_imports - allowed_imports).empty?
191
+ raise "unallowed so imports #{actual_imports.inspect} in #{dll} (allowed #{allowed_imports.inspect})"
192
+ end
193
+
194
+ # Verify that the expected so version requirements match the actual dependencies.
195
+ ref_versions_data = dump.scan(/0x[\da-f]+ 0x[\da-f]+ \d+ (\w+)_([\d\.]+)$/i)
196
+ # Build a hash of library versions like {"LIBUDEV"=>"183", "GLIBC"=>"2.17"}
197
+ actual_ref_versions = ref_versions_data.each.with_object({}) do |(lib, ver), h|
198
+ if !h[lib] || ver.split(".").map(&:to_i).pack("C*") > h[lib].split(".").map(&:to_i).pack("C*")
199
+ h[lib] = ver
200
+ end
201
+ end
202
+ if actual_ref_versions != cross_ruby.dll_ref_versions
203
+ raise "unexpected so version requirements #{actual_ref_versions.inspect} in #{dll}"
204
+ end
205
+
206
+ elsif cross_ruby.darwin?
207
+ nm = `#{["env", "LANG=C", cross_ruby.tool("nm"), "-g", dll].shelljoin}`
208
+
209
+ raise "unexpected file format for generated dll #{dll}" unless /file format #{Regexp.quote(cross_ruby.target_file_format)}\s/ === dump
210
+ raise "export function Init_nokogiri not in dll #{dll}" unless / T _?Init_nokogiri/ === nm
211
+
212
+ # if liblzma is being referenced, let's make sure it's referring
213
+ # to the system-installed file and not the homebrew-installed file.
214
+ ldd = `#{["env", "LANG=C", cross_ruby.tool("otool"), "-L", dll].shelljoin}`
215
+ if liblzma_refs = ldd.scan(/^\t([^ ]+) /).map(&:first).uniq.grep(/liblzma/)
216
+ liblzma_refs.each do |ref|
217
+ new_ref = File.join("/usr/lib", File.basename(ref))
218
+ sh ["env", "LANG=C", cross_ruby.tool("install_name_tool"), "-change", ref, new_ref, dll].shelljoin
219
+ end
220
+
221
+ # reload!
222
+ ldd = `#{["env", "LANG=C", cross_ruby.tool("otool"), "-L", dll].shelljoin}`
223
+ end
224
+
225
+ # Verify that the DLL dependencies are all allowed.
226
+ ldd = `#{["env", "LANG=C", cross_ruby.tool("otool"), "-L", dll].shelljoin}`
227
+ actual_imports = ldd.scan(/^\t([^ ]+) /).map(&:first).uniq
228
+ if !(actual_imports - allowed_imports).empty?
229
+ raise "unallowed so imports #{actual_imports.inspect} in #{dll} (allowed #{allowed_imports.inspect})"
230
+ end
231
+ end
232
+ puts "verify_dll: #{dll}: passed shared library sanity checks"
233
+ end
234
+
235
+ CROSS_RUBIES.each do |cross_ruby|
236
+ task cross_ruby.dll_staging_path do |t|
237
+ verify_dll t.name, cross_ruby
238
+ end
239
+ end
240
+
241
+ def gem_builder(plat)
242
+ # use Task#invoke because the pkg/*gem task is defined at runtime
243
+ Rake::Task["native:#{plat}"].invoke
244
+ Rake::Task["pkg/#{GEMSPEC.full_name}-#{Gem::Platform.new(plat).to_s}.gem"].invoke
245
+ end
246
+
247
+ namespace "gem" do
248
+ CROSS_RUBIES.find_all { |cr| cr.windows? || cr.linux? || cr.darwin? }.map(&:platform).uniq.each do |plat|
249
+ pre_req = case plat
250
+ when /\linux/
251
+ "sudo yum install -y git"
252
+ else
253
+ "sudo apt-get update -y && sudo apt-get install -y automake autoconf libtool build-essential"
254
+ end
255
+ desc "build native gem for #{plat} platform"
256
+ task plat do
257
+ RakeCompilerDock.sh <<~EOT, platform: plat
258
+ #{pre_req} &&
259
+ gem install bundler --no-document &&
260
+ bundle &&
261
+ bundle exec rake gem:#{plat}:builder MAKE='nice make -j`nproc`'
262
+ EOT
263
+ end
264
+
265
+ namespace plat do
266
+ desc "build native gem for #{plat} platform (guest container)"
267
+ task "builder" do
268
+ gem_builder(plat)
269
+ end
270
+ task "guest" => "builder" # TODO: remove me after this code is on master, temporary backwards compat for CI
271
+ end
272
+ end
273
+
274
+ desc "build native gems for windows"
275
+ multitask "windows" => CROSS_RUBIES.find_all(&:windows?).map(&:platform).uniq
276
+
277
+ desc "build native gems for linux"
278
+ multitask "linux" => CROSS_RUBIES.find_all(&:linux?).map(&:platform).uniq
279
+
280
+ desc "build native gems for darwin"
281
+ multitask "darwin" => CROSS_RUBIES.find_all(&:darwin?).map(&:platform).uniq
282
+ end
283
+
284
+ namespace "native" do
285
+ plat = "x86_64-darwin"
286
+ namespace plat do
287
+ desc "build native gem for #{plat} platform on host OS"
288
+ task "builder" do
289
+ gem_builder(plat)
290
+ end
291
+ task "guest" => "builder" # TODO: remove me after this code is on master, temporary backwards compat for CI
292
+ end
293
+ end
294
+
295
+ require "rake/extensiontask"
296
+
297
+ Rake::ExtensionTask.new("express_parser", GEMSPEC) do |ext|
298
+ ext.ext_dir = "ext/express-parser"
299
+ ext.lib_dir = File.join(*['lib', 'expressir', 'express_exp', ENV['FAT_DIR']].compact)
300
+ ext.config_options << ENV['EXTOPTS']
301
+ ext.cross_compile = true
302
+ ext.cross_platform = CROSS_RUBIES.map(&:platform).uniq
303
+ ext.cross_config_options << "--enable-cross-build"
304
+ ext.cross_compiling do |spec|
305
+ spec.files.reject! { |path| File.fnmatch?('ext/*', path) }
306
+ spec.dependencies.reject! { |dep| dep.name == 'rice' }
307
+ end
308
+ end
@@ -1,5 +1,5 @@
1
1
  require "spec_helper"
2
- require_relative "../../../lib/expressir/express_exp/parser"
2
+ require "expressir/express_exp/parser"
3
3
 
4
4
  RSpec.describe Expressir::ExpressExp::Parser do
5
5
  describe ".from_file" do
@@ -0,0 +1,28 @@
1
+ require "spec_helper"
2
+ require "expressir/express_exp/parser"
3
+
4
+ RSpec.describe Expressir::Model::Scope do
5
+ describe ".find" do
6
+ it "finds an item" do
7
+ repo = Expressir::ExpressExp::Parser.from_exp(sample_file)
8
+
9
+ schema = repo.find("syntax_schema")
10
+ expect(schema).to be_instance_of(Expressir::Model::Schema)
11
+
12
+ entity = repo.find("syntax_schema.empty_entity")
13
+ expect(entity).to be_instance_of(Expressir::Model::Entity)
14
+
15
+ attribute = repo.find("syntax_schema.attribute_entity.test")
16
+ expect(attribute).to be_instance_of(Expressir::Model::Attribute)
17
+
18
+ where = repo.find("syntax_schema.where_label_entity.wr:WR1")
19
+ expect(where).to be_instance_of(Expressir::Model::Where)
20
+ end
21
+ end
22
+
23
+ def sample_file
24
+ @sample_file ||= Expressir.root_path.join(
25
+ "original", "examples", "syntax", "syntax.exp"
26
+ )
27
+ end
28
+ end
@@ -11,11 +11,12 @@ RSpec.describe Expressir::ExpressExp::Parser do
11
11
  schema.tap do |x|
12
12
  expect(x).to be_instance_of(Expressir::Model::Schema)
13
13
  expect(x.remarks).to be_instance_of(Array)
14
- expect(x.remarks.count).to eq(4)
14
+ expect(x.remarks.count).to eq(5)
15
15
  expect(x.remarks[0]).to eq("Any character within the EXPRESS character set may occur between the start and end of\nan embedded remark including the newline character; therefore, embedded remarks can span\nseveral physical lines.")
16
16
  expect(x.remarks[1]).to eq("The tail remark is written at the end of a physical line.")
17
- expect(x.remarks[2]).to eq("universal scope - schema before")
18
- expect(x.remarks[3]).to eq("universal scope - schema")
17
+ expect(x.remarks[2]).to eq("UTF8 test: Příliš žluťoučký kůň úpěl ďábelské ódy.")
18
+ expect(x.remarks[3]).to eq("universal scope - schema before")
19
+ expect(x.remarks[4]).to eq("universal scope - schema")
19
20
  end
20
21
 
21
22
  schema.constants.first.tap do |x|
@@ -171,8 +171,8 @@ RSpec.describe Expressir::ExpressExp::Parser do
171
171
  expect(x.attributes).to be_instance_of(Array)
172
172
  expect(x.attributes.count).to eq(1)
173
173
  expect(x.attributes[0]).to be_instance_of(Expressir::Model::Attribute)
174
- expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
175
174
  expect(x.attributes[0].id).to eq("test")
175
+ expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
176
176
  expect(x.attributes[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
177
177
  end
178
178
 
@@ -181,8 +181,8 @@ RSpec.describe Expressir::ExpressExp::Parser do
181
181
  expect(x.attributes).to be_instance_of(Array)
182
182
  expect(x.attributes.count).to eq(1)
183
183
  expect(x.attributes[0]).to be_instance_of(Expressir::Model::Attribute)
184
- expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
185
184
  expect(x.attributes[0].id).to eq("test")
185
+ expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
186
186
  expect(x.attributes[0].optional).to eq(true)
187
187
  expect(x.attributes[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
188
188
  end
@@ -192,12 +192,12 @@ RSpec.describe Expressir::ExpressExp::Parser do
192
192
  expect(x.attributes).to be_instance_of(Array)
193
193
  expect(x.attributes.count).to eq(2)
194
194
  expect(x.attributes[0]).to be_instance_of(Expressir::Model::Attribute)
195
- expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
196
195
  expect(x.attributes[0].id).to eq("test")
196
+ expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
197
197
  expect(x.attributes[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
198
198
  expect(x.attributes[1]).to be_instance_of(Expressir::Model::Attribute)
199
- expect(x.attributes[1].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
200
199
  expect(x.attributes[1].id).to eq("test2")
200
+ expect(x.attributes[1].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
201
201
  expect(x.attributes[1].type).to be_instance_of(Expressir::Model::Types::Boolean)
202
202
  end
203
203
 
@@ -206,12 +206,12 @@ RSpec.describe Expressir::ExpressExp::Parser do
206
206
  expect(x.attributes).to be_instance_of(Array)
207
207
  expect(x.attributes.count).to eq(2)
208
208
  expect(x.attributes[0]).to be_instance_of(Expressir::Model::Attribute)
209
- expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
210
209
  expect(x.attributes[0].id).to eq("test")
210
+ expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
211
211
  expect(x.attributes[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
212
212
  expect(x.attributes[1]).to be_instance_of(Expressir::Model::Attribute)
213
- expect(x.attributes[1].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
214
213
  expect(x.attributes[1].id).to eq("test2")
214
+ expect(x.attributes[1].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
215
215
  expect(x.attributes[1].type).to be_instance_of(Expressir::Model::Types::Boolean)
216
216
  end
217
217
 
@@ -237,6 +237,7 @@ RSpec.describe Expressir::ExpressExp::Parser do
237
237
  expect(x.attributes).to be_instance_of(Array)
238
238
  expect(x.attributes.count).to eq(1)
239
239
  expect(x.attributes[0]).to be_instance_of(Expressir::Model::Attribute)
240
+ expect(x.attributes[0].id).to eq("test2")
240
241
  expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
241
242
  expect(x.attributes[0].supertype_attribute).to be_instance_of(Expressir::Model::Expressions::AttributeReference)
242
243
  expect(x.attributes[0].supertype_attribute.ref).to be_instance_of(Expressir::Model::Expressions::GroupReference)
@@ -246,7 +247,6 @@ RSpec.describe Expressir::ExpressExp::Parser do
246
247
  expect(x.attributes[0].supertype_attribute.ref.entity.id).to eq("attribute_entity")
247
248
  expect(x.attributes[0].supertype_attribute.attribute).to be_instance_of(Expressir::Model::Expressions::SimpleReference)
248
249
  expect(x.attributes[0].supertype_attribute.attribute.id).to eq("test")
249
- expect(x.attributes[0].id).to eq("test2")
250
250
  expect(x.attributes[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
251
251
  end
252
252
 
@@ -255,8 +255,8 @@ RSpec.describe Expressir::ExpressExp::Parser do
255
255
  expect(x.attributes).to be_instance_of(Array)
256
256
  expect(x.attributes.count).to eq(1)
257
257
  expect(x.attributes[0]).to be_instance_of(Expressir::Model::Attribute)
258
- expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::DERIVED)
259
258
  expect(x.attributes[0].id).to eq("test")
259
+ expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::DERIVED)
260
260
  expect(x.attributes[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
261
261
  expect(x.attributes[0].expression).to be_instance_of(Expressir::Model::Literals::Logical)
262
262
  expect(x.attributes[0].expression.value).to eq(Expressir::Model::Literals::Logical::TRUE)
@@ -286,6 +286,7 @@ RSpec.describe Expressir::ExpressExp::Parser do
286
286
  expect(x.attributes).to be_instance_of(Array)
287
287
  expect(x.attributes.count).to eq(1)
288
288
  expect(x.attributes[0]).to be_instance_of(Expressir::Model::Attribute)
289
+ expect(x.attributes[0].id).to eq("test2")
289
290
  expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::DERIVED)
290
291
  expect(x.attributes[0].supertype_attribute).to be_instance_of(Expressir::Model::Expressions::AttributeReference)
291
292
  expect(x.attributes[0].supertype_attribute.ref).to be_instance_of(Expressir::Model::Expressions::GroupReference)
@@ -295,7 +296,6 @@ RSpec.describe Expressir::ExpressExp::Parser do
295
296
  expect(x.attributes[0].supertype_attribute.ref.entity.id).to eq("attribute_entity")
296
297
  expect(x.attributes[0].supertype_attribute.attribute).to be_instance_of(Expressir::Model::Expressions::SimpleReference)
297
298
  expect(x.attributes[0].supertype_attribute.attribute.id).to eq("test")
298
- expect(x.attributes[0].id).to eq("test2")
299
299
  expect(x.attributes[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
300
300
  expect(x.attributes[0].expression).to be_instance_of(Expressir::Model::Literals::Logical)
301
301
  expect(x.attributes[0].expression.value).to eq(Expressir::Model::Literals::Logical::TRUE)
@@ -306,8 +306,8 @@ RSpec.describe Expressir::ExpressExp::Parser do
306
306
  expect(x.attributes).to be_instance_of(Array)
307
307
  expect(x.attributes.count).to eq(1)
308
308
  expect(x.attributes[0]).to be_instance_of(Expressir::Model::Attribute)
309
- expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::INVERSE)
310
309
  expect(x.attributes[0].id).to eq("test")
310
+ expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::INVERSE)
311
311
  expect(x.attributes[0].type).to be_instance_of(Expressir::Model::Expressions::SimpleReference)
312
312
  expect(x.attributes[0].type.id).to eq("attribute_entity")
313
313
  expect(x.attributes[0].expression).to be_instance_of(Expressir::Model::Expressions::SimpleReference)
@@ -319,8 +319,8 @@ RSpec.describe Expressir::ExpressExp::Parser do
319
319
  expect(x.attributes).to be_instance_of(Array)
320
320
  expect(x.attributes.count).to eq(1)
321
321
  expect(x.attributes[0]).to be_instance_of(Expressir::Model::Attribute)
322
- expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::INVERSE)
323
322
  expect(x.attributes[0].id).to eq("test")
323
+ expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::INVERSE)
324
324
  expect(x.attributes[0].type).to be_instance_of(Expressir::Model::Expressions::SimpleReference)
325
325
  expect(x.attributes[0].type.id).to eq("attribute_entity")
326
326
  expect(x.attributes[0].expression).to be_instance_of(Expressir::Model::Expressions::AttributeReference)
@@ -335,8 +335,8 @@ RSpec.describe Expressir::ExpressExp::Parser do
335
335
  expect(x.attributes).to be_instance_of(Array)
336
336
  expect(x.attributes.count).to eq(1)
337
337
  expect(x.attributes[0]).to be_instance_of(Expressir::Model::Attribute)
338
- expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::INVERSE)
339
338
  expect(x.attributes[0].id).to eq("test")
339
+ expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::INVERSE)
340
340
  expect(x.attributes[0].type).to be_instance_of(Expressir::Model::Types::Set)
341
341
  expect(x.attributes[0].type.base_type).to be_instance_of(Expressir::Model::Expressions::SimpleReference)
342
342
  expect(x.attributes[0].type.base_type.id).to eq("attribute_entity")
@@ -349,8 +349,8 @@ RSpec.describe Expressir::ExpressExp::Parser do
349
349
  expect(x.attributes).to be_instance_of(Array)
350
350
  expect(x.attributes.count).to eq(1)
351
351
  expect(x.attributes[0]).to be_instance_of(Expressir::Model::Attribute)
352
- expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::INVERSE)
353
352
  expect(x.attributes[0].id).to eq("test")
353
+ expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::INVERSE)
354
354
  expect(x.attributes[0].type).to be_instance_of(Expressir::Model::Types::Set)
355
355
  expect(x.attributes[0].type.bound1).to be_instance_of(Expressir::Model::Literals::Integer)
356
356
  expect(x.attributes[0].type.bound1.value).to eq("1")
@@ -367,8 +367,8 @@ RSpec.describe Expressir::ExpressExp::Parser do
367
367
  expect(x.attributes).to be_instance_of(Array)
368
368
  expect(x.attributes.count).to eq(1)
369
369
  expect(x.attributes[0]).to be_instance_of(Expressir::Model::Attribute)
370
- expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::INVERSE)
371
370
  expect(x.attributes[0].id).to eq("test")
371
+ expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::INVERSE)
372
372
  expect(x.attributes[0].type).to be_instance_of(Expressir::Model::Types::Bag)
373
373
  expect(x.attributes[0].type.base_type).to be_instance_of(Expressir::Model::Expressions::SimpleReference)
374
374
  expect(x.attributes[0].type.base_type.id).to eq("attribute_entity")
@@ -381,8 +381,8 @@ RSpec.describe Expressir::ExpressExp::Parser do
381
381
  expect(x.attributes).to be_instance_of(Array)
382
382
  expect(x.attributes.count).to eq(1)
383
383
  expect(x.attributes[0]).to be_instance_of(Expressir::Model::Attribute)
384
- expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::INVERSE)
385
384
  expect(x.attributes[0].id).to eq("test")
385
+ expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::INVERSE)
386
386
  expect(x.attributes[0].type).to be_instance_of(Expressir::Model::Types::Bag)
387
387
  expect(x.attributes[0].type.bound1).to be_instance_of(Expressir::Model::Literals::Integer)
388
388
  expect(x.attributes[0].type.bound1.value).to eq("1")
@@ -419,6 +419,7 @@ RSpec.describe Expressir::ExpressExp::Parser do
419
419
  expect(x.attributes).to be_instance_of(Array)
420
420
  expect(x.attributes.count).to eq(1)
421
421
  expect(x.attributes[0]).to be_instance_of(Expressir::Model::Attribute)
422
+ expect(x.attributes[0].id).to eq("test2")
422
423
  expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::INVERSE)
423
424
  expect(x.attributes[0].supertype_attribute).to be_instance_of(Expressir::Model::Expressions::AttributeReference)
424
425
  expect(x.attributes[0].supertype_attribute.ref).to be_instance_of(Expressir::Model::Expressions::GroupReference)
@@ -428,7 +429,6 @@ RSpec.describe Expressir::ExpressExp::Parser do
428
429
  expect(x.attributes[0].supertype_attribute.ref.entity.id).to eq("attribute_entity")
429
430
  expect(x.attributes[0].supertype_attribute.attribute).to be_instance_of(Expressir::Model::Expressions::SimpleReference)
430
431
  expect(x.attributes[0].supertype_attribute.attribute.id).to eq("test")
431
- expect(x.attributes[0].id).to eq("test2")
432
432
  expect(x.attributes[0].type).to be_instance_of(Expressir::Model::Expressions::SimpleReference)
433
433
  expect(x.attributes[0].type.id).to eq("attribute_entity")
434
434
  expect(x.attributes[0].expression).to be_instance_of(Expressir::Model::Expressions::SimpleReference)
@@ -440,8 +440,8 @@ RSpec.describe Expressir::ExpressExp::Parser do
440
440
  expect(x.attributes).to be_instance_of(Array)
441
441
  expect(x.attributes.count).to eq(1)
442
442
  expect(x.attributes[0]).to be_instance_of(Expressir::Model::Attribute)
443
- expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
444
443
  expect(x.attributes[0].id).to eq("test")
444
+ expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
445
445
  expect(x.attributes[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
446
446
  expect(x.unique).to be_instance_of(Array)
447
447
  expect(x.unique.count).to eq(1)
@@ -457,8 +457,8 @@ RSpec.describe Expressir::ExpressExp::Parser do
457
457
  expect(x.attributes).to be_instance_of(Array)
458
458
  expect(x.attributes.count).to eq(1)
459
459
  expect(x.attributes[0]).to be_instance_of(Expressir::Model::Attribute)
460
- expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
461
460
  expect(x.attributes[0].id).to eq("test")
461
+ expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
462
462
  expect(x.attributes[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
463
463
  expect(x.unique).to be_instance_of(Array)
464
464
  expect(x.unique.count).to eq(1)
@@ -1011,8 +1011,8 @@ RSpec.describe Expressir::ExpressExp::Parser do
1011
1011
  expect(x.parameters).to be_instance_of(Array)
1012
1012
  expect(x.parameters.count).to eq(1)
1013
1013
  expect(x.parameters[0]).to be_instance_of(Expressir::Model::Parameter)
1014
- expect(x.parameters[0].var).not_to eq(true)
1015
1014
  expect(x.parameters[0].id).to eq("test")
1015
+ expect(x.parameters[0].var).not_to eq(true)
1016
1016
  expect(x.parameters[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
1017
1017
  end
1018
1018
 
@@ -1021,12 +1021,12 @@ RSpec.describe Expressir::ExpressExp::Parser do
1021
1021
  expect(x.parameters).to be_instance_of(Array)
1022
1022
  expect(x.parameters.count).to eq(2)
1023
1023
  expect(x.parameters[0]).to be_instance_of(Expressir::Model::Parameter)
1024
- expect(x.parameters[0].var).not_to eq(true)
1025
1024
  expect(x.parameters[0].id).to eq("test")
1025
+ expect(x.parameters[0].var).not_to eq(true)
1026
1026
  expect(x.parameters[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
1027
1027
  expect(x.parameters[1]).to be_instance_of(Expressir::Model::Parameter)
1028
- expect(x.parameters[1].var).not_to eq(true)
1029
1028
  expect(x.parameters[1].id).to eq("test2")
1029
+ expect(x.parameters[1].var).not_to eq(true)
1030
1030
  expect(x.parameters[1].type).to be_instance_of(Expressir::Model::Types::Boolean)
1031
1031
  end
1032
1032
 
@@ -1035,12 +1035,12 @@ RSpec.describe Expressir::ExpressExp::Parser do
1035
1035
  expect(x.parameters).to be_instance_of(Array)
1036
1036
  expect(x.parameters.count).to eq(2)
1037
1037
  expect(x.parameters[0]).to be_instance_of(Expressir::Model::Parameter)
1038
- expect(x.parameters[0].var).not_to eq(true)
1039
1038
  expect(x.parameters[0].id).to eq("test")
1039
+ expect(x.parameters[0].var).not_to eq(true)
1040
1040
  expect(x.parameters[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
1041
1041
  expect(x.parameters[1]).to be_instance_of(Expressir::Model::Parameter)
1042
- expect(x.parameters[1].var).not_to eq(true)
1043
1042
  expect(x.parameters[1].id).to eq("test2")
1043
+ expect(x.parameters[1].var).not_to eq(true)
1044
1044
  expect(x.parameters[1].type).to be_instance_of(Expressir::Model::Types::Boolean)
1045
1045
  end
1046
1046
 
@@ -1049,8 +1049,8 @@ RSpec.describe Expressir::ExpressExp::Parser do
1049
1049
  expect(x.parameters).to be_instance_of(Array)
1050
1050
  expect(x.parameters.count).to eq(1)
1051
1051
  expect(x.parameters[0]).to be_instance_of(Expressir::Model::Parameter)
1052
- expect(x.parameters[0].var).to eq(true)
1053
1052
  expect(x.parameters[0].id).to eq("test")
1053
+ expect(x.parameters[0].var).to eq(true)
1054
1054
  expect(x.parameters[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
1055
1055
  end
1056
1056
 
@@ -1059,12 +1059,12 @@ RSpec.describe Expressir::ExpressExp::Parser do
1059
1059
  expect(x.parameters).to be_instance_of(Array)
1060
1060
  expect(x.parameters.count).to eq(2)
1061
1061
  expect(x.parameters[0]).to be_instance_of(Expressir::Model::Parameter)
1062
- expect(x.parameters[0].var).to eq(true)
1063
1062
  expect(x.parameters[0].id).to eq("test")
1063
+ expect(x.parameters[0].var).to eq(true)
1064
1064
  expect(x.parameters[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
1065
1065
  expect(x.parameters[1]).to be_instance_of(Expressir::Model::Parameter)
1066
- expect(x.parameters[1].var).not_to eq(true)
1067
1066
  expect(x.parameters[1].id).to eq("test2")
1067
+ expect(x.parameters[1].var).not_to eq(true)
1068
1068
  expect(x.parameters[1].type).to be_instance_of(Expressir::Model::Types::Boolean)
1069
1069
  end
1070
1070
 
@@ -1073,12 +1073,12 @@ RSpec.describe Expressir::ExpressExp::Parser do
1073
1073
  expect(x.parameters).to be_instance_of(Array)
1074
1074
  expect(x.parameters.count).to eq(2)
1075
1075
  expect(x.parameters[0]).to be_instance_of(Expressir::Model::Parameter)
1076
- expect(x.parameters[0].var).not_to eq(true)
1077
1076
  expect(x.parameters[0].id).to eq("test")
1077
+ expect(x.parameters[0].var).not_to eq(true)
1078
1078
  expect(x.parameters[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
1079
1079
  expect(x.parameters[1]).to be_instance_of(Expressir::Model::Parameter)
1080
- expect(x.parameters[1].var).to eq(true)
1081
1080
  expect(x.parameters[1].id).to eq("test2")
1081
+ expect(x.parameters[1].var).to eq(true)
1082
1082
  expect(x.parameters[1].type).to be_instance_of(Expressir::Model::Types::Boolean)
1083
1083
  end
1084
1084
 
@@ -1087,12 +1087,12 @@ RSpec.describe Expressir::ExpressExp::Parser do
1087
1087
  expect(x.parameters).to be_instance_of(Array)
1088
1088
  expect(x.parameters.count).to eq(2)
1089
1089
  expect(x.parameters[0]).to be_instance_of(Expressir::Model::Parameter)
1090
- expect(x.parameters[0].var).to eq(true)
1091
1090
  expect(x.parameters[0].id).to eq("test")
1091
+ expect(x.parameters[0].var).to eq(true)
1092
1092
  expect(x.parameters[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
1093
1093
  expect(x.parameters[1]).to be_instance_of(Expressir::Model::Parameter)
1094
- expect(x.parameters[1].var).to eq(true)
1095
1094
  expect(x.parameters[1].id).to eq("test2")
1095
+ expect(x.parameters[1].var).to eq(true)
1096
1096
  expect(x.parameters[1].type).to be_instance_of(Expressir::Model::Types::Boolean)
1097
1097
  end
1098
1098
 
@@ -2089,6 +2089,11 @@ RSpec.describe Expressir::ExpressExp::Parser do
2089
2089
  expect(x.value).to eq("xxx")
2090
2090
  end
2091
2091
 
2092
+ functions.find{|x| x.id == "utf8_simple_string_expression"}.statements[0].expression.tap do |x|
2093
+ expect(x).to be_instance_of(Expressir::Model::Literals::String)
2094
+ expect(x.value).to eq("UTF8 test: Příliš žluťoučký kůň úpěl ďábelské ódy.")
2095
+ end
2096
+
2092
2097
  functions.find{|x| x.id == "encoded_string_expression"}.statements[0].expression.tap do |x|
2093
2098
  expect(x).to be_instance_of(Expressir::Model::Literals::String)
2094
2099
  expect(x.value).to eq("000000780000007800000078")
@@ -2982,8 +2987,8 @@ RSpec.describe Expressir::ExpressExp::Parser do
2982
2987
  functions.find{|x| x.id == "query_expression"}.statements[0].expression.tap do |x|
2983
2988
  expect(x).to be_instance_of(Expressir::Model::Expressions::QueryExpression)
2984
2989
  expect(x.id).to eq("test")
2985
- expect(x.source).to be_instance_of(Expressir::Model::Expressions::SimpleReference)
2986
- expect(x.source.id).to eq("test2")
2990
+ expect(x.aggregate_source).to be_instance_of(Expressir::Model::Expressions::SimpleReference)
2991
+ expect(x.aggregate_source.id).to eq("test2")
2987
2992
  expect(x.expression).to be_instance_of(Expressir::Model::Literals::Logical)
2988
2993
  expect(x.expression.value).to eq(Expressir::Model::Literals::Logical::TRUE)
2989
2994
  end