expressir 0.2.5-x64-mingw32 → 0.2.11-x64-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (534) hide show
  1. checksums.yaml +5 -5
  2. data/.cross_rubies +30 -0
  3. data/.github/workflows/rake.yml +45 -46
  4. data/.github/workflows/release.yml +83 -75
  5. data/.gitignore +17 -15
  6. data/.gitmodules +3 -3
  7. data/.rspec +2 -2
  8. data/.rubocop.yml +508 -508
  9. data/Gemfile +4 -6
  10. data/README.adoc +147 -147
  11. data/Rakefile +11 -17
  12. data/bin/console +12 -12
  13. data/bin/rspec +29 -29
  14. data/bin/setup +8 -8
  15. data/demo.rb +18 -18
  16. data/docs/development.md +90 -90
  17. data/exe/expressir +20 -20
  18. data/exe/generate-parser +47 -47
  19. data/expressir.gemspec +43 -40
  20. data/lib/expressir.rb +21 -21
  21. data/lib/expressir/cli.rb +27 -27
  22. data/lib/expressir/cli/ui.rb +36 -36
  23. data/lib/expressir/config.rb +23 -23
  24. data/lib/expressir/express.rb +11 -11
  25. data/lib/expressir/express/aggregate_dimension.rb +38 -38
  26. data/lib/expressir/express/attribute.rb +15 -15
  27. data/lib/expressir/express/comment.rb +7 -7
  28. data/lib/expressir/express/defined_type.rb +36 -36
  29. data/lib/expressir/express/derived.rb +65 -65
  30. data/lib/expressir/express/derived_aggregate.rb +43 -43
  31. data/lib/expressir/express/entity.rb +137 -137
  32. data/lib/expressir/express/explicit.rb +70 -70
  33. data/lib/expressir/express/explicit_aggregate.rb +46 -46
  34. data/lib/expressir/express/explicit_or_derived.rb +16 -16
  35. data/lib/expressir/express/global_rule.rb +44 -44
  36. data/lib/expressir/express/interface_specification.rb +51 -51
  37. data/lib/expressir/express/interfaced_item.rb +38 -38
  38. data/lib/expressir/express/inverse.rb +46 -46
  39. data/lib/expressir/express/inverse_aggregate.rb +37 -37
  40. data/lib/expressir/express/model_element.rb +7 -7
  41. data/lib/expressir/express/named_type.rb +19 -19
  42. data/lib/expressir/express/remark.rb +8 -8
  43. data/lib/expressir/express/repository.rb +306 -306
  44. data/lib/expressir/express/schema_definition.rb +96 -96
  45. data/lib/expressir/express/subtype_constraint.rb +14 -14
  46. data/lib/expressir/express/type.rb +26 -26
  47. data/lib/expressir/express/type_aggregate.rb +42 -42
  48. data/lib/expressir/express/type_enum.rb +29 -29
  49. data/lib/expressir/express/type_parser.rb +45 -45
  50. data/lib/expressir/express/type_select.rb +82 -82
  51. data/lib/expressir/express/unique_rule.rb +35 -35
  52. data/lib/expressir/express/where_rule.rb +32 -32
  53. data/lib/expressir/express_exp/2.4/express_parser.so +0 -0
  54. data/lib/expressir/express_exp/2.5/express_parser.so +0 -0
  55. data/lib/expressir/express_exp/2.6/express_parser.so +0 -0
  56. data/lib/expressir/express_exp/2.7/express_parser.so +0 -0
  57. data/lib/expressir/express_exp/3.0/express_parser.so +0 -0
  58. data/lib/expressir/express_exp/formatter.rb +1500 -1449
  59. data/lib/expressir/express_exp/parser.rb +53 -35
  60. data/lib/expressir/express_exp/visitor.rb +2551 -2450
  61. data/lib/expressir/express_parser.rb +30 -30
  62. data/lib/expressir/model.rb +67 -64
  63. data/lib/expressir/model/attribute.rb +28 -26
  64. data/lib/expressir/model/constant.rb +18 -16
  65. data/lib/expressir/model/entity.rb +38 -45
  66. data/lib/expressir/model/enumeration_item.rb +12 -10
  67. data/lib/expressir/model/expressions/aggregate_initializer.rb +12 -12
  68. data/lib/expressir/model/expressions/aggregate_item.rb +14 -14
  69. data/lib/expressir/model/expressions/attribute_reference.rb +14 -14
  70. data/lib/expressir/model/expressions/binary_expression.rb +39 -39
  71. data/lib/expressir/model/expressions/call.rb +14 -14
  72. data/lib/expressir/model/expressions/entity_constructor.rb +14 -14
  73. data/lib/expressir/model/expressions/group_reference.rb +14 -14
  74. data/lib/expressir/model/expressions/index_reference.rb +16 -16
  75. data/lib/expressir/model/expressions/interval.rb +20 -20
  76. data/lib/expressir/model/expressions/query_expression.rb +27 -25
  77. data/lib/expressir/model/expressions/simple_reference.rb +12 -12
  78. data/lib/expressir/model/expressions/unary_expression.rb +18 -18
  79. data/lib/expressir/model/function.rb +55 -61
  80. data/lib/expressir/model/identifier.rb +9 -8
  81. data/lib/expressir/model/informal_proposition.rb +13 -0
  82. data/lib/expressir/model/interface.rb +17 -17
  83. data/lib/expressir/model/literals/binary.rb +12 -12
  84. data/lib/expressir/model/literals/integer.rb +12 -12
  85. data/lib/expressir/model/literals/logical.rb +16 -16
  86. data/lib/expressir/model/literals/real.rb +12 -12
  87. data/lib/expressir/model/literals/string.rb +14 -14
  88. data/lib/expressir/model/model_element.rb +73 -0
  89. data/lib/expressir/model/parameter.rb +18 -16
  90. data/lib/expressir/model/procedure.rb +53 -59
  91. data/lib/expressir/model/renamed_ref.rb +12 -12
  92. data/lib/expressir/model/repository.rb +18 -18
  93. data/lib/expressir/model/rule.rb +58 -61
  94. data/lib/expressir/model/schema.rb +55 -66
  95. data/lib/expressir/model/scope.rb +70 -16
  96. data/lib/expressir/model/statements/alias.rb +27 -25
  97. data/lib/expressir/model/statements/assignment.rb +14 -14
  98. data/lib/expressir/model/statements/call.rb +14 -14
  99. data/lib/expressir/model/statements/case.rb +16 -16
  100. data/lib/expressir/model/statements/case_action.rb +14 -14
  101. data/lib/expressir/model/statements/compound.rb +12 -12
  102. data/lib/expressir/model/statements/escape.rb +7 -7
  103. data/lib/expressir/model/statements/if.rb +16 -16
  104. data/lib/expressir/model/statements/null.rb +7 -7
  105. data/lib/expressir/model/statements/repeat.rb +35 -33
  106. data/lib/expressir/model/statements/return.rb +12 -12
  107. data/lib/expressir/model/statements/skip.rb +7 -7
  108. data/lib/expressir/model/subtype_constraint.rb +28 -26
  109. data/lib/expressir/model/type.rb +33 -23
  110. data/lib/expressir/model/types/aggregate.rb +18 -16
  111. data/lib/expressir/model/types/array.rb +20 -20
  112. data/lib/expressir/model/types/bag.rb +16 -16
  113. data/lib/expressir/model/types/binary.rb +14 -14
  114. data/lib/expressir/model/types/boolean.rb +7 -7
  115. data/lib/expressir/model/types/enumeration.rb +18 -18
  116. data/lib/expressir/model/types/generic.rb +14 -12
  117. data/lib/expressir/model/types/generic_entity.rb +14 -12
  118. data/lib/expressir/model/types/integer.rb +7 -7
  119. data/lib/expressir/model/types/list.rb +18 -18
  120. data/lib/expressir/model/types/logical.rb +7 -7
  121. data/lib/expressir/model/types/number.rb +7 -7
  122. data/lib/expressir/model/types/real.rb +12 -12
  123. data/lib/expressir/model/types/select.rb +20 -20
  124. data/lib/expressir/model/types/set.rb +16 -16
  125. data/lib/expressir/model/types/string.rb +14 -14
  126. data/lib/expressir/model/unique.rb +16 -14
  127. data/lib/expressir/model/variable.rb +18 -16
  128. data/lib/expressir/model/where.rb +16 -14
  129. data/lib/expressir/parser.rb +6 -6
  130. data/lib/expressir/parser/owl_parser.rb +8 -8
  131. data/lib/expressir/version.rb +3 -3
  132. data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.exp +9589 -9589
  133. data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.owl +36619 -36619
  134. data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.xml +13293 -13293
  135. data/original/examples/employment/eclipse/.project +17 -17
  136. data/original/examples/employment/eclipse/Express/employment_schema.exp +33 -33
  137. data/original/examples/employment/eclipse/Express/employment_schema.xmi +77 -77
  138. data/original/examples/employment/eclipse/Express/employment_schema.xml +92 -92
  139. data/original/examples/employment/eclipse/Models/Employment.uml +4 -4
  140. data/original/examples/employment/eclipse/Models/Employment.umldi +240 -240
  141. data/original/examples/employment/eclipse/readme.txt +6 -6
  142. data/original/examples/employment/employment_schema.exp +33 -33
  143. data/original/examples/employment/employment_schema.rb +232 -232
  144. data/original/examples/employment/employment_schema.xml +92 -92
  145. data/original/examples/employment/employment_schema___module.rb +46 -46
  146. data/original/examples/employment/employment_schema___p28attr.rb +126 -126
  147. data/original/examples/employment/employment_schema___p28inst.rb +26 -26
  148. data/original/examples/employment/example_employment_data.xml +1 -1
  149. data/original/examples/employment/example_employment_data_copy.xml +1 -1
  150. data/original/examples/employment/example_employment_reader.rb +30 -30
  151. data/original/examples/employment/example_employment_writer.rb +51 -51
  152. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.exp +3710 -3710
  153. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.owl +35880 -35880
  154. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.xmi +15357 -15357
  155. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.xml +9467 -9467
  156. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.exp +8404 -8404
  157. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.owl +43147 -43147
  158. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.xmi +18341 -18341
  159. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.xml +11631 -11631
  160. data/original/examples/syntax/remark.exp +189 -145
  161. data/original/examples/syntax/remark_formatted.exp +213 -174
  162. data/original/examples/syntax/simple.exp +3 -0
  163. data/original/examples/syntax/source.exp +16 -0
  164. data/original/examples/syntax/syntax.exp +323 -310
  165. data/original/examples/syntax/syntax_formatted.exp +753 -1186
  166. data/original/exp2ruby.rb +525 -525
  167. data/original/expsm.rb +34 -34
  168. data/original/mapping_owl.rb +1018 -1018
  169. data/original/mapping_sysml.rb +2281 -2281
  170. data/original/mapping_uml2.rb +598 -598
  171. data/original/mapping_uml2_eclipse.rb +433 -433
  172. data/original/reeper.rb +134 -134
  173. data/rakelib/cross-ruby.rake +308 -0
  174. data/spec/acceptance/express_to_owl_spec.rb +18 -18
  175. data/spec/acceptance/version_spec.rb +12 -12
  176. data/spec/expressir/express/repository_spec.rb +25 -25
  177. data/spec/expressir/express_exp/ap233_spec.rb +22 -22
  178. data/spec/expressir/express_exp/format_remark_spec.rb +28 -28
  179. data/spec/expressir/express_exp/format_syntax_spec.rb +28 -28
  180. data/spec/expressir/express_exp/head_source_spec.rb +38 -0
  181. data/spec/expressir/express_exp/parse_multiple_spec.rb +32 -0
  182. data/spec/expressir/express_exp/parse_remark_spec.rb +411 -345
  183. data/spec/expressir/express_exp/parse_syntax_spec.rb +3048 -2998
  184. data/spec/expressir/express_exp/source_spec.rb +29 -0
  185. data/spec/expressir/model/model_element_spec.rb +77 -0
  186. data/spec/expressir/model/{find_spec.rb → scope_spec.rb} +123 -110
  187. data/spec/expressr_spec.rb +5 -5
  188. data/spec/spec_helper.rb +17 -17
  189. data/spec/support/console_helper.rb +29 -29
  190. metadata +41 -371
  191. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/CMakeLists.txt +0 -118
  192. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2013.vcxproj +0 -637
  193. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2013.vcxproj.filters +0 -984
  194. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2015.vcxproj +0 -652
  195. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2015.vcxproj.filters +0 -990
  196. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2017.vcxproj +0 -652
  197. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2017.vcxproj.filters +0 -990
  198. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2019.vcxproj +0 -652
  199. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2019.vcxproj.filters +0 -990
  200. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp-ios/Info.plist +0 -26
  201. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp-ios/antlrcpp_ios.h +0 -17
  202. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/project.pbxproj +0 -3024
  203. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  204. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  205. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/xcshareddata/xcschemes/antlr4.xcscheme +0 -76
  206. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/xcshareddata/xcschemes/antlr4_ios.xcscheme +0 -80
  207. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/xcshareddata/xcschemes/antlr4_static.xcscheme +0 -80
  208. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorListener.cpp +0 -10
  209. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorListener.h +0 -167
  210. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorStrategy.cpp +0 -10
  211. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorStrategy.h +0 -121
  212. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRFileStream.cpp +0 -34
  213. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRFileStream.h +0 -27
  214. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRInputStream.cpp +0 -155
  215. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRInputStream.h +0 -69
  216. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BailErrorStrategy.cpp +0 -61
  217. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BailErrorStrategy.h +0 -59
  218. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BaseErrorListener.cpp +0 -25
  219. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BaseErrorListener.h +0 -36
  220. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BufferedTokenStream.cpp +0 -414
  221. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BufferedTokenStream.h +0 -200
  222. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CharStream.cpp +0 -11
  223. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CharStream.h +0 -37
  224. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonToken.cpp +0 -195
  225. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonToken.h +0 -158
  226. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenFactory.cpp +0 -39
  227. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenFactory.h +0 -74
  228. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenStream.cpp +0 -78
  229. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenStream.h +0 -79
  230. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ConsoleErrorListener.cpp +0 -15
  231. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ConsoleErrorListener.h +0 -35
  232. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/DefaultErrorStrategy.cpp +0 -333
  233. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/DefaultErrorStrategy.h +0 -466
  234. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/DiagnosticErrorListener.cpp +0 -84
  235. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/DiagnosticErrorListener.h +0 -80
  236. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Exceptions.cpp +0 -64
  237. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Exceptions.h +0 -99
  238. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/FailedPredicateException.cpp +0 -51
  239. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/FailedPredicateException.h +0 -32
  240. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/InputMismatchException.cpp +0 -18
  241. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/InputMismatchException.h +0 -24
  242. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/IntStream.cpp +0 -12
  243. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/IntStream.h +0 -218
  244. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/InterpreterRuleContext.cpp +0 -19
  245. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/InterpreterRuleContext.h +0 -45
  246. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Lexer.cpp +0 -295
  247. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Lexer.h +0 -196
  248. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerInterpreter.cpp +0 -75
  249. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerInterpreter.h +0 -52
  250. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerNoViableAltException.cpp +0 -36
  251. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerNoViableAltException.h +0 -31
  252. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ListTokenSource.cpp +0 -92
  253. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ListTokenSource.h +0 -88
  254. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/NoViableAltException.cpp +0 -46
  255. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/NoViableAltException.h +0 -42
  256. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Parser.cpp +0 -648
  257. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Parser.h +0 -467
  258. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserInterpreter.cpp +0 -306
  259. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserInterpreter.h +0 -179
  260. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserRuleContext.cpp +0 -141
  261. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserRuleContext.h +0 -147
  262. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ProxyErrorListener.cpp +0 -53
  263. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ProxyErrorListener.h +0 -38
  264. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RecognitionException.cpp +0 -66
  265. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RecognitionException.h +0 -98
  266. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Recognizer.cpp +0 -167
  267. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Recognizer.h +0 -164
  268. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContext.cpp +0 -143
  269. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContext.h +0 -137
  270. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContextWithAltNum.cpp +0 -27
  271. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContextWithAltNum.h +0 -32
  272. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuntimeMetaData.cpp +0 -53
  273. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuntimeMetaData.h +0 -155
  274. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Token.cpp +0 -9
  275. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Token.h +0 -92
  276. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenFactory.h +0 -30
  277. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenSource.cpp +0 -9
  278. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenSource.h +0 -85
  279. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStream.cpp +0 -11
  280. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStream.h +0 -137
  281. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStreamRewriter.cpp +0 -425
  282. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStreamRewriter.h +0 -293
  283. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedCharStream.cpp +0 -211
  284. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedCharStream.h +0 -123
  285. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedTokenStream.cpp +0 -270
  286. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedTokenStream.h +0 -115
  287. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Vocabulary.cpp +0 -104
  288. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Vocabulary.h +0 -193
  289. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/WritableToken.cpp +0 -9
  290. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/WritableToken.h +0 -23
  291. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/antlr4-common.h +0 -137
  292. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/antlr4-runtime.h +0 -167
  293. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATN.cpp +0 -209
  294. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATN.h +0 -112
  295. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfig.cpp +0 -113
  296. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfig.h +0 -148
  297. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfigSet.cpp +0 -228
  298. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfigSet.h +0 -110
  299. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.cpp +0 -64
  300. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.h +0 -50
  301. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializer.cpp +0 -758
  302. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializer.h +0 -85
  303. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSerializer.cpp +0 -621
  304. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSerializer.h +0 -61
  305. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSimulator.cpp +0 -63
  306. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSimulator.h +0 -87
  307. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNState.cpp +0 -72
  308. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNState.h +0 -133
  309. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNType.h +0 -20
  310. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AbstractPredicateTransition.cpp +0 -14
  311. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AbstractPredicateTransition.h +0 -24
  312. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ActionTransition.cpp +0 -33
  313. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ActionTransition.h +0 -33
  314. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AmbiguityInfo.cpp +0 -16
  315. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AmbiguityInfo.h +0 -68
  316. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.cpp +0 -82
  317. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.h +0 -43
  318. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AtomTransition.cpp +0 -31
  319. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AtomTransition.h +0 -30
  320. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicBlockStartState.cpp +0 -12
  321. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicBlockStartState.h +0 -22
  322. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicState.cpp +0 -12
  323. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicState.h +0 -21
  324. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockEndState.cpp +0 -15
  325. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockEndState.h +0 -24
  326. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockStartState.cpp +0 -9
  327. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockStartState.h +0 -21
  328. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ContextSensitivityInfo.cpp +0 -14
  329. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ContextSensitivityInfo.h +0 -47
  330. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionEventInfo.cpp +0 -14
  331. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionEventInfo.h +0 -70
  332. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionInfo.cpp +0 -25
  333. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionInfo.h +0 -227
  334. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionState.cpp +0 -17
  335. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionState.h +0 -30
  336. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EmptyPredictionContext.cpp +0 -35
  337. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EmptyPredictionContext.h +0 -27
  338. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EpsilonTransition.cpp +0 -35
  339. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EpsilonTransition.h +0 -39
  340. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ErrorInfo.cpp +0 -15
  341. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ErrorInfo.h +0 -43
  342. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LL1Analyzer.cpp +0 -158
  343. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LL1Analyzer.h +0 -109
  344. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNConfig.cpp +0 -84
  345. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNConfig.h +0 -44
  346. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNSimulator.cpp +0 -628
  347. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNSimulator.h +0 -210
  348. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerAction.cpp +0 -9
  349. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerAction.h +0 -66
  350. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionExecutor.cpp +0 -107
  351. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionExecutor.h +0 -115
  352. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionType.h +0 -55
  353. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerChannelAction.cpp +0 -55
  354. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerChannelAction.h +0 -63
  355. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerCustomAction.cpp +0 -62
  356. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerCustomAction.h +0 -87
  357. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.cpp +0 -63
  358. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.h +0 -82
  359. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerModeAction.cpp +0 -56
  360. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerModeAction.h +0 -61
  361. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerMoreAction.cpp +0 -47
  362. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerMoreAction.h +0 -57
  363. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPopModeAction.cpp +0 -47
  364. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPopModeAction.h +0 -57
  365. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPushModeAction.cpp +0 -56
  366. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPushModeAction.h +0 -61
  367. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerSkipAction.cpp +0 -47
  368. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerSkipAction.h +0 -55
  369. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerTypeAction.cpp +0 -56
  370. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerTypeAction.h +0 -55
  371. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LookaheadEventInfo.cpp +0 -16
  372. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LookaheadEventInfo.h +0 -42
  373. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LoopEndState.cpp +0 -12
  374. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LoopEndState.h +0 -22
  375. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Makefile +0 -67
  376. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/NotSetTransition.cpp +0 -27
  377. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/NotSetTransition.h +0 -25
  378. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.cpp +0 -12
  379. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.h +0 -20
  380. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParseInfo.cpp +0 -102
  381. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParseInfo.h +0 -102
  382. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulator.cpp +0 -1366
  383. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulator.h +0 -904
  384. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusBlockStartState.cpp +0 -12
  385. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusBlockStartState.h +0 -25
  386. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusLoopbackState.cpp +0 -12
  387. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusLoopbackState.h +0 -22
  388. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.cpp +0 -32
  389. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.h +0 -29
  390. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.cpp +0 -17
  391. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.h +0 -62
  392. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateTransition.cpp +0 -34
  393. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateTransition.h +0 -39
  394. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContext.cpp +0 -662
  395. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContext.h +0 -254
  396. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionMode.cpp +0 -201
  397. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionMode.h +0 -436
  398. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.cpp +0 -179
  399. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.h +0 -60
  400. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RangeTransition.cpp +0 -30
  401. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RangeTransition.h +0 -29
  402. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStartState.cpp +0 -16
  403. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStartState.h +0 -25
  404. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStopState.cpp +0 -12
  405. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStopState.h +0 -25
  406. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleTransition.cpp +0 -37
  407. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleTransition.h +0 -40
  408. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContext.cpp +0 -377
  409. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContext.h +0 -222
  410. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SetTransition.cpp +0 -32
  411. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SetTransition.h +0 -30
  412. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.cpp +0 -81
  413. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.h +0 -36
  414. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarBlockStartState.cpp +0 -12
  415. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarBlockStartState.h +0 -21
  416. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopEntryState.cpp +0 -15
  417. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopEntryState.h +0 -35
  418. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopbackState.cpp +0 -19
  419. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopbackState.h +0 -21
  420. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TokensStartState.cpp +0 -12
  421. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TokensStartState.h +0 -21
  422. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Transition.cpp +0 -44
  423. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Transition.h +0 -76
  424. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/WildcardTransition.cpp +0 -25
  425. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/WildcardTransition.h +0 -25
  426. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFA.cpp +0 -127
  427. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFA.h +0 -91
  428. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFASerializer.cpp +0 -67
  429. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFASerializer.h +0 -32
  430. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFAState.cpp +0 -100
  431. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFAState.h +0 -144
  432. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.cpp +0 -20
  433. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.h +0 -23
  434. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/InterpreterDataReader.cpp +0 -124
  435. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/InterpreterDataReader.h +0 -31
  436. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Interval.cpp +0 -89
  437. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Interval.h +0 -84
  438. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/IntervalSet.cpp +0 -521
  439. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/IntervalSet.h +0 -198
  440. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/MurmurHash.cpp +0 -134
  441. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/MurmurHash.h +0 -76
  442. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Predicate.cpp +0 -4
  443. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Predicate.h +0 -21
  444. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Any.cpp +0 -13
  445. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Any.h +0 -170
  446. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Arrays.cpp +0 -43
  447. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Arrays.h +0 -110
  448. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/BitSet.h +0 -76
  449. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/CPPUtils.cpp +0 -248
  450. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/CPPUtils.h +0 -78
  451. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Declarations.h +0 -163
  452. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/StringUtils.cpp +0 -36
  453. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/StringUtils.h +0 -54
  454. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/guid.cpp +0 -303
  455. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/guid.h +0 -112
  456. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/AbstractParseTreeVisitor.h +0 -128
  457. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNode.cpp +0 -9
  458. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNode.h +0 -19
  459. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.cpp +0 -23
  460. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.h +0 -33
  461. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/IterativeParseTreeWalker.cpp +0 -71
  462. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/IterativeParseTreeWalker.h +0 -53
  463. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTree.cpp +0 -15
  464. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTree.h +0 -102
  465. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeListener.cpp +0 -9
  466. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeListener.h +0 -39
  467. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeProperty.h +0 -50
  468. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeVisitor.cpp +0 -9
  469. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeVisitor.h +0 -57
  470. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeWalker.cpp +0 -49
  471. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeWalker.h +0 -31
  472. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNode.cpp +0 -9
  473. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNode.h +0 -32
  474. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.cpp +0 -57
  475. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.h +0 -33
  476. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/Trees.cpp +0 -241
  477. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/Trees.h +0 -78
  478. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/Chunk.cpp +0 -9
  479. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/Chunk.h +0 -44
  480. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreeMatch.cpp +0 -69
  481. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreeMatch.h +0 -132
  482. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePattern.cpp +0 -64
  483. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePattern.h +0 -105
  484. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePatternMatcher.cpp +0 -371
  485. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePatternMatcher.h +0 -185
  486. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/RuleTagToken.cpp +0 -77
  487. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/RuleTagToken.h +0 -117
  488. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TagChunk.cpp +0 -39
  489. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TagChunk.h +0 -86
  490. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TextChunk.cpp +0 -28
  491. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TextChunk.h +0 -51
  492. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TokenTagToken.cpp +0 -36
  493. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TokenTagToken.h +0 -80
  494. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPath.cpp +0 -154
  495. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPath.h +0 -86
  496. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathElement.cpp +0 -31
  497. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathElement.h +0 -40
  498. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.cpp +0 -173
  499. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.g4 +0 -64
  500. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.h +0 -56
  501. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.tokens +0 -12
  502. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexerErrorListener.cpp +0 -13
  503. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexerErrorListener.h +0 -22
  504. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleAnywhereElement.cpp +0 -20
  505. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleAnywhereElement.h +0 -27
  506. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleElement.cpp +0 -30
  507. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleElement.h +0 -26
  508. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenAnywhereElement.cpp +0 -20
  509. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenAnywhereElement.h +0 -25
  510. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenElement.cpp +0 -33
  511. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenElement.h +0 -26
  512. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardAnywhereElement.cpp +0 -23
  513. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardAnywhereElement.h +0 -23
  514. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardElement.cpp +0 -24
  515. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardElement.h +0 -23
  516. data/ext/express-parser/antlrgen/Express.interp +0 -532
  517. data/ext/express-parser/antlrgen/Express.tokens +0 -190
  518. data/ext/express-parser/antlrgen/ExpressBaseListener.cpp +0 -7
  519. data/ext/express-parser/antlrgen/ExpressBaseListener.h +0 -623
  520. data/ext/express-parser/antlrgen/ExpressBaseVisitor.cpp +0 -7
  521. data/ext/express-parser/antlrgen/ExpressBaseVisitor.h +0 -816
  522. data/ext/express-parser/antlrgen/ExpressLexer.cpp +0 -1169
  523. data/ext/express-parser/antlrgen/ExpressLexer.h +0 -85
  524. data/ext/express-parser/antlrgen/ExpressLexer.interp +0 -534
  525. data/ext/express-parser/antlrgen/ExpressLexer.tokens +0 -190
  526. data/ext/express-parser/antlrgen/ExpressListener.cpp +0 -7
  527. data/ext/express-parser/antlrgen/ExpressListener.h +0 -616
  528. data/ext/express-parser/antlrgen/ExpressParser.cpp +0 -17284
  529. data/ext/express-parser/antlrgen/ExpressParser.h +0 -3696
  530. data/ext/express-parser/antlrgen/ExpressVisitor.cpp +0 -7
  531. data/ext/express-parser/antlrgen/ExpressVisitor.h +0 -422
  532. data/ext/express-parser/express_parser.cpp +0 -17931
  533. data/ext/express-parser/extconf.rb +0 -34
  534. data/lib/express_parser.so +0 -0
@@ -1,82 +1,82 @@
1
- require "expressir/express/defined_type"
2
-
3
- module Expressir
4
- module Express
5
- class TypeSelect < DefinedType
6
- attr_accessor :selectitems_array, :selectitems, :extends, :extends_item,
7
- :isExtensible, :selectitems_all, :isGenericEntity, :isBuiltin,
8
- :cleaned_select_items
9
-
10
- def initialize(options = {})
11
- @isBuiltin = false
12
- @isExtensible = false
13
- @isGenericEntity = false
14
- @selectitems = nil
15
- @selectitems_array = []
16
- @cleaned_select_items = nil
17
- @wheres = []
18
- @selectedBy = []
19
-
20
- super(options)
21
- end
22
-
23
- ##
24
- # set cleaned_select_items = process select removing unnecessary
25
- # entity types (i.e. if supertype is there)
26
- #
27
- def clean_select_items
28
- @cleaned_select_items = ""
29
-
30
- if selectitems != nil
31
- itemname_list = selectitems.scan(/\w+/)
32
- dupitem_list = []
33
- for itemname in itemname_list
34
- itemptr = schema.find_namedtype_by_name( itemname )
35
-
36
- if itemptr.kind_of? EXPSM::Entity
37
-
38
- for itemname2 in itemname_list
39
- thetype = schema.find_namedtype_by_name( itemname2 )
40
-
41
- if thetype != nil
42
- if itemptr.supertypes_all != nil &&
43
- itemptr.supertypes_all.include?(thetype.name)
44
-
45
- dupitem_list.push itemname
46
- end
47
- end
48
- end
49
- end
50
- end
51
-
52
- itemname_list.each do |itemname|
53
- if !dupitem_list.include? itemname
54
- @cleaned_select_items = @cleaned_select_items + " " + itemname
55
- end
56
- end
57
-
58
- @cleaned_select_items = @cleaned_select_items.lstrip
59
- end
60
- end
61
-
62
- private
63
-
64
- def extract_type_attributes(document)
65
- if document.class == Nokogiri::XML::NodeSet
66
- document = document.first
67
- end
68
-
69
- @selectitems = document.attributes["selectitems"]
70
- @extends = document.attributes["basedon"]
71
- @isExtensible = document.attributes["extensible"] == "YES"
72
- @isGenericEntity = document.attributes["genericentity"] == "YES"
73
-
74
- if isExtensible
75
- @selectitems_all = selectitems
76
- end
77
-
78
- super(document)
79
- end
80
- end
81
- end
82
- end
1
+ require "expressir/express/defined_type"
2
+
3
+ module Expressir
4
+ module Express
5
+ class TypeSelect < DefinedType
6
+ attr_accessor :selectitems_array, :selectitems, :extends, :extends_item,
7
+ :isExtensible, :selectitems_all, :isGenericEntity, :isBuiltin,
8
+ :cleaned_select_items
9
+
10
+ def initialize(options = {})
11
+ @isBuiltin = false
12
+ @isExtensible = false
13
+ @isGenericEntity = false
14
+ @selectitems = nil
15
+ @selectitems_array = []
16
+ @cleaned_select_items = nil
17
+ @wheres = []
18
+ @selectedBy = []
19
+
20
+ super(options)
21
+ end
22
+
23
+ ##
24
+ # set cleaned_select_items = process select removing unnecessary
25
+ # entity types (i.e. if supertype is there)
26
+ #
27
+ def clean_select_items
28
+ @cleaned_select_items = ""
29
+
30
+ if selectitems != nil
31
+ itemname_list = selectitems.scan(/\w+/)
32
+ dupitem_list = []
33
+ for itemname in itemname_list
34
+ itemptr = schema.find_namedtype_by_name( itemname )
35
+
36
+ if itemptr.kind_of? EXPSM::Entity
37
+
38
+ for itemname2 in itemname_list
39
+ thetype = schema.find_namedtype_by_name( itemname2 )
40
+
41
+ if thetype != nil
42
+ if itemptr.supertypes_all != nil &&
43
+ itemptr.supertypes_all.include?(thetype.name)
44
+
45
+ dupitem_list.push itemname
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+
52
+ itemname_list.each do |itemname|
53
+ if !dupitem_list.include? itemname
54
+ @cleaned_select_items = @cleaned_select_items + " " + itemname
55
+ end
56
+ end
57
+
58
+ @cleaned_select_items = @cleaned_select_items.lstrip
59
+ end
60
+ end
61
+
62
+ private
63
+
64
+ def extract_type_attributes(document)
65
+ if document.class == Nokogiri::XML::NodeSet
66
+ document = document.first
67
+ end
68
+
69
+ @selectitems = document.attributes["selectitems"]
70
+ @extends = document.attributes["basedon"]
71
+ @isExtensible = document.attributes["extensible"] == "YES"
72
+ @isGenericEntity = document.attributes["genericentity"] == "YES"
73
+
74
+ if isExtensible
75
+ @selectitems_all = selectitems
76
+ end
77
+
78
+ super(document)
79
+ end
80
+ end
81
+ end
82
+ end
@@ -1,35 +1,35 @@
1
- require "expressir/express/model_element"
2
-
3
- module Expressir
4
- module Express
5
- class UniqueRule < ModelElement
6
- attr_accessor :name, :attributes
7
-
8
- def initialize(options)
9
- @name = nil
10
- @attributes = []
11
- @options = options
12
- end
13
-
14
- def parse
15
- document = @options.fetch(:document, nil)
16
- extract_unique_attributes(document)
17
-
18
- self
19
- end
20
-
21
- def self.parse(document)
22
- new(document: document).parse
23
- end
24
-
25
- private
26
-
27
- def extract_unique_attributes(document)
28
- @name = document.attributes["label"].to_s
29
- @attributes = document.xpath("unique.attribute").map do |attribute|
30
- attribute.attributes["attribute"]
31
- end
32
- end
33
- end
34
- end
35
- end
1
+ require "expressir/express/model_element"
2
+
3
+ module Expressir
4
+ module Express
5
+ class UniqueRule < ModelElement
6
+ attr_accessor :name, :attributes
7
+
8
+ def initialize(options)
9
+ @name = nil
10
+ @attributes = []
11
+ @options = options
12
+ end
13
+
14
+ def parse
15
+ document = @options.fetch(:document, nil)
16
+ extract_unique_attributes(document)
17
+
18
+ self
19
+ end
20
+
21
+ def self.parse(document)
22
+ new(document: document).parse
23
+ end
24
+
25
+ private
26
+
27
+ def extract_unique_attributes(document)
28
+ @name = document.attributes["label"].to_s
29
+ @attributes = document.xpath("unique.attribute").map do |attribute|
30
+ attribute.attributes["attribute"]
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -1,32 +1,32 @@
1
- require "expressir/express/model_element"
2
-
3
- module Expressir
4
- module Express
5
- class WhereRule < ModelElement
6
- attr_accessor :name, :expression
7
-
8
- def initialize(options = {})
9
- @name = nil
10
- @options = options
11
- end
12
-
13
- def parse
14
- document = @options.fetch(:where, nil)
15
- extract_where_attributes(document) if document
16
-
17
- self
18
- end
19
-
20
- def self.parse(document)
21
- new(document: document).parse
22
- end
23
-
24
- private
25
-
26
- def extract_where_attributes(document)
27
- @name = document.attributes["label"].to_s
28
- @expression = document.attributes["expression"]
29
- end
30
- end
31
- end
32
- end
1
+ require "expressir/express/model_element"
2
+
3
+ module Expressir
4
+ module Express
5
+ class WhereRule < ModelElement
6
+ attr_accessor :name, :expression
7
+
8
+ def initialize(options = {})
9
+ @name = nil
10
+ @options = options
11
+ end
12
+
13
+ def parse
14
+ document = @options.fetch(:where, nil)
15
+ extract_where_attributes(document) if document
16
+
17
+ self
18
+ end
19
+
20
+ def self.parse(document)
21
+ new(document: document).parse
22
+ end
23
+
24
+ private
25
+
26
+ def extract_where_attributes(document)
27
+ @name = document.attributes["label"].to_s
28
+ @expression = document.attributes["expression"]
29
+ end
30
+ end
31
+ end
32
+ end
@@ -1,1450 +1,1501 @@
1
- require 'expressir/model'
2
-
3
- module Expressir
4
- module ExpressExp
5
- class Formatter
6
- INDENT_CHAR = ' '
7
- INDENT_WIDTH = 2
8
- INDENT = INDENT_CHAR * INDENT_WIDTH
9
-
10
- OPERATOR_PRECEDENCE = {
11
- Model::Expressions::BinaryExpression::EXPONENTIATION => 1,
12
- Model::Expressions::BinaryExpression::MULTIPLICATION => 2,
13
- Model::Expressions::BinaryExpression::REAL_DIVISION => 2,
14
- Model::Expressions::BinaryExpression::INTEGER_DIVISION => 2,
15
- Model::Expressions::BinaryExpression::MODULO => 2,
16
- Model::Expressions::BinaryExpression::AND => 2,
17
- Model::Expressions::BinaryExpression::COMBINE => 2,
18
- Model::Expressions::BinaryExpression::SUBTRACTION => 3,
19
- Model::Expressions::BinaryExpression::ADDITION => 3,
20
- Model::Expressions::BinaryExpression::OR => 3,
21
- Model::Expressions::BinaryExpression::XOR => 3,
22
- Model::Expressions::BinaryExpression::EQUAL => 4,
23
- Model::Expressions::BinaryExpression::NOT_EQUAL => 4,
24
- Model::Expressions::BinaryExpression::LESS_THAN_OR_EQUAL => 4,
25
- Model::Expressions::BinaryExpression::GREATER_THAN_OR_EQUAL => 4,
26
- Model::Expressions::BinaryExpression::LESS_THAN => 4,
27
- Model::Expressions::BinaryExpression::GREATER_THAN => 4,
28
- Model::Expressions::BinaryExpression::INSTANCE_EQUAL => 4,
29
- Model::Expressions::BinaryExpression::INSTANCE_NOT_EQUAL => 4,
30
- Model::Expressions::BinaryExpression::IN => 4,
31
- Model::Expressions::BinaryExpression::LIKE => 4,
32
- Model::Expressions::BinaryExpression::ANDOR => 4,
33
- }
34
-
35
- def self.format(node)
36
- formatter = self.new
37
- formatter.format(node)
38
- end
39
-
40
- def format(node)
41
- if node.instance_of? Model::Attribute
42
- format_attribute(node)
43
- elsif node.instance_of? Model::Constant
44
- format_constant(node)
45
- elsif node.instance_of? Model::Entity
46
- format_entity(node)
47
- elsif node.instance_of? Model::EnumerationItem
48
- format_enumeration_item(node)
49
- elsif node.instance_of? Model::Function
50
- format_function(node)
51
- elsif node.instance_of? Model::Interface
52
- format_interface(node)
53
- elsif node.instance_of? Model::Parameter
54
- format_parameter(node)
55
- elsif node.instance_of? Model::Procedure
56
- format_procedure(node)
57
- elsif node.instance_of? Model::RenamedRef
58
- format_renamed_ref(node)
59
- elsif node.instance_of? Model::Repository
60
- format_repository(node)
61
- elsif node.instance_of? Model::Rule
62
- format_rule(node)
63
- elsif node.instance_of? Model::Schema
64
- format_schema(node)
65
- elsif node.instance_of? Model::SubtypeConstraint
66
- format_subtype_constraint(node)
67
- elsif node.instance_of? Model::Type
68
- format_type(node)
69
- elsif node.instance_of? Model::Unique
70
- format_unique(node)
71
- elsif node.instance_of? Model::Variable
72
- format_variable(node)
73
- elsif node.instance_of? Model::Where
74
- format_where(node)
75
- elsif node.instance_of? Model::Expressions::AggregateInitializer
76
- format_expressions_aggregate_initializer(node)
77
- elsif node.instance_of? Model::Expressions::AggregateItem
78
- format_expressions_aggregate_item(node)
79
- elsif node.instance_of? Model::Expressions::AttributeReference
80
- format_expressions_attribute_reference(node)
81
- elsif node.instance_of? Model::Expressions::BinaryExpression
82
- format_expressions_binary_expression(node)
83
- elsif node.instance_of? Model::Expressions::Call
84
- format_expressions_call(node)
85
- elsif node.instance_of? Model::Expressions::EntityConstructor
86
- format_expressions_entity_constructor(node)
87
- elsif node.instance_of? Model::Expressions::GroupReference
88
- format_expressions_group_reference(node)
89
- elsif node.instance_of? Model::Expressions::IndexReference
90
- format_expressions_index_reference(node)
91
- elsif node.instance_of? Model::Expressions::Interval
92
- format_expressions_interval(node)
93
- elsif node.instance_of? Model::Expressions::QueryExpression
94
- format_expressions_query_expression(node)
95
- elsif node.instance_of? Model::Expressions::SimpleReference
96
- format_expressions_simple_reference(node)
97
- elsif node.instance_of? Model::Expressions::UnaryExpression
98
- format_expressions_unary_expression(node)
99
- elsif node.instance_of? Model::Literals::Binary
100
- format_literals_binary(node)
101
- elsif node.instance_of? Model::Literals::Integer
102
- format_literals_integer(node)
103
- elsif node.instance_of? Model::Literals::Logical
104
- format_literals_logical(node)
105
- elsif node.instance_of? Model::Literals::Real
106
- format_literals_real(node)
107
- elsif node.instance_of? Model::Literals::String
108
- format_literals_string(node)
109
- elsif node.instance_of? Model::Statements::Alias
110
- format_statements_alias(node)
111
- elsif node.instance_of? Model::Statements::Assignment
112
- format_statements_assignment(node)
113
- elsif node.instance_of? Model::Statements::Call
114
- format_statements_call(node)
115
- elsif node.instance_of? Model::Statements::Case
116
- format_statements_case(node)
117
- elsif node.instance_of? Model::Statements::CaseAction
118
- format_statements_case_action(node)
119
- elsif node.instance_of? Model::Statements::Compound
120
- format_statements_compound(node)
121
- elsif node.instance_of? Model::Statements::Escape
122
- format_statements_escape(node)
123
- elsif node.instance_of? Model::Statements::If
124
- format_statements_if(node)
125
- elsif node.instance_of? Model::Statements::Null
126
- format_statements_null(node)
127
- elsif node.instance_of? Model::Statements::Repeat
128
- format_statements_repeat(node)
129
- elsif node.instance_of? Model::Statements::Return
130
- format_statements_return(node)
131
- elsif node.instance_of? Model::Statements::Skip
132
- format_statements_skip(node)
133
- elsif node.instance_of? Model::Types::Aggregate
134
- format_types_aggregate(node)
135
- elsif node.instance_of? Model::Types::Array
136
- format_types_array(node)
137
- elsif node.instance_of? Model::Types::Bag
138
- format_types_bag(node)
139
- elsif node.instance_of? Model::Types::Binary
140
- format_types_binary(node)
141
- elsif node.instance_of? Model::Types::Boolean
142
- format_types_boolean(node)
143
- elsif node.instance_of? Model::Types::Enumeration
144
- format_types_enumeration(node)
145
- elsif node.instance_of? Model::Types::GenericEntity
146
- format_types_generic_entity(node)
147
- elsif node.instance_of? Model::Types::Generic
148
- format_types_generic(node)
149
- elsif node.instance_of? Model::Types::Integer
150
- format_types_integer(node)
151
- elsif node.instance_of? Model::Types::List
152
- format_types_list(node)
153
- elsif node.instance_of? Model::Types::Logical
154
- format_types_logical(node)
155
- elsif node.instance_of? Model::Types::Number
156
- format_types_number(node)
157
- elsif node.instance_of? Model::Types::Real
158
- format_types_real(node)
159
- elsif node.instance_of? Model::Types::Select
160
- format_types_select(node)
161
- elsif node.instance_of? Model::Types::Set
162
- format_types_set(node)
163
- elsif node.instance_of? Model::Types::String
164
- format_types_string(node)
165
- else
166
- puts node.class
167
- end
168
- end
169
-
170
- private
171
-
172
- def format_attribute(node)
173
- [
174
- *if node.supertype_attribute
175
- [
176
- format(node.supertype_attribute),
177
- ' ',
178
- ].join('')
179
- end,
180
- *if node.supertype_attribute and node.id
181
- [
182
- 'RENAMED',
183
- ' '
184
- ].join('')
185
- end,
186
- *if node.id
187
- [
188
- node.id,
189
- ' '
190
- ].join('')
191
- end,
192
- ':',
193
- *if node.optional
194
- [
195
- ' ',
196
- 'OPTIONAL'
197
- ].join('')
198
- end,
199
- ' ',
200
- format(node.type),
201
- *if node.kind == Model::Attribute::DERIVED
202
- [
203
- ' ',
204
- ':=',
205
- ' ',
206
- format(node.expression)
207
- ].join('')
208
- elsif node.kind == Model::Attribute::INVERSE
209
- [
210
- ' ',
211
- 'FOR',
212
- ' ',
213
- format(node.expression)
214
- ].join('')
215
- end,
216
- ';',
217
- ].join('')
218
- end
219
-
220
- def format_constant(node)
221
- [
222
- node.id,
223
- ' ',
224
- ':',
225
- ' ',
226
- format(node.type),
227
- ' ',
228
- ':=',
229
- ' ',
230
- format(node.expression),
231
- ';'
232
- ].join('')
233
- end
234
-
235
- def format_entity(node)
236
- [
237
- [
238
- 'ENTITY',
239
- ' ',
240
- node.id,
241
- *if node.abstract and !node.supertype_expression
242
- [
243
- "\n",
244
- INDENT,
245
- 'ABSTRACT',
246
- ' ',
247
- 'SUPERTYPE'
248
- ].join('')
249
- end,
250
- *if node.abstract and node.supertype_expression
251
- [
252
- "\n",
253
- INDENT,
254
- 'ABSTRACT',
255
- ' ',
256
- 'SUPERTYPE',
257
- ' ',
258
- 'OF',
259
- ' ',
260
- '(',
261
- format(node.supertype_expression),
262
- ')'
263
- ].join('')
264
- end,
265
- *if !node.abstract and node.supertype_expression
266
- [
267
- "\n",
268
- INDENT,
269
- 'SUPERTYPE',
270
- ' ',
271
- 'OF',
272
- ' ',
273
- '(',
274
- format(node.supertype_expression),
275
- ')'
276
- ].join('')
277
- end,
278
- *if node.subtype_of and node.subtype_of.length > 0
279
- [
280
- "\n",
281
- INDENT,
282
- 'SUBTYPE',
283
- ' ',
284
- 'OF',
285
- ' ',
286
- '(',
287
- node.subtype_of.map{|x| format(x)}.join(', '),
288
- ')'
289
- ].join('')
290
- end,
291
- ';'
292
- ].join(''),
293
- *if node.explicit_attributes and node.explicit_attributes.length > 0
294
- indent(node.explicit_attributes.map{|x| format(x)}.join("\n"))
295
- end,
296
- *if node.derived_attributes and node.derived_attributes.length > 0
297
- indent([
298
- 'DERIVE',
299
- indent(node.derived_attributes.map{|x| format(x)}.join("\n")),
300
- ].join("\n"))
301
- end,
302
- *if node.inverse_attributes and node.inverse_attributes.length > 0
303
- indent([
304
- 'INVERSE',
305
- indent(node.inverse_attributes.map{|x| format(x)}.join("\n")),
306
- ].join("\n"))
307
- end,
308
- *if node.unique and node.unique.length > 0
309
- indent([
310
- 'UNIQUE',
311
- indent(node.unique.map{|x| format(x)}.join("\n"))
312
- ].join("\n"))
313
- end,
314
- *if node.where and node.where.length > 0
315
- indent([
316
- 'WHERE',
317
- indent(node.where.map{|x| format(x)}.join("\n")),
318
- ].join("\n"))
319
- end,
320
- [
321
- 'END_ENTITY',
322
- ';'
323
- ].join('')
324
- ].join("\n")
325
- end
326
-
327
- def format_enumeration_item(node)
328
- node.id
329
- end
330
-
331
- def format_function(node)
332
- [
333
- [
334
- 'FUNCTION',
335
- ' ',
336
- node.id,
337
- *if node.parameters and node.parameters.length > 0
338
- [
339
- '(',
340
- node.parameters.map{|x| format(x)}.join('; '),
341
- ')'
342
- ].join('')
343
- end,
344
- ' ',
345
- ':',
346
- ' ',
347
- format(node.return_type),
348
- ';'
349
- ].join(''),
350
- *if node.declarations and node.declarations.length > 0
351
- indent(node.declarations.map{|x| format(x)}.join("\n"))
352
- end,
353
- *if node.constants and node.constants.length > 0
354
- indent([
355
- 'CONSTANT',
356
- indent(node.constants.map{|x| format(x)}.join("\n")),
357
- [
358
- 'END_CONSTANT',
359
- ';'
360
- ].join('')
361
- ].join("\n"))
362
- end,
363
- *if node.variables and node.variables.length > 0
364
- indent([
365
- 'LOCAL',
366
- indent(node.variables.map{|x| format(x)}.join("\n")),
367
- [
368
- 'END_LOCAL',
369
- ';'
370
- ].join('')
371
- ].join("\n"))
372
- end,
373
- *if node.statements and node.statements.length > 0
374
- indent(node.statements.map{|x| format(x)}.join("\n"))
375
- end,
376
- [
377
- 'END_FUNCTION',
378
- ';'
379
- ].join('')
380
- ].join("\n")
381
- end
382
-
383
- def format_interface(node)
384
- [
385
- case node.kind
386
- when Model::Interface::USE then 'USE'
387
- when Model::Interface::REFERENCE then 'REFERENCE'
388
- end,
389
- ' ',
390
- 'FROM',
391
- ' ',
392
- format(node.schema),
393
- *if node.items and node.items.length > 0
394
- [
395
- "\n",
396
- INDENT,
397
- '(',
398
- node.items.map{|x| format(x)},
399
- ')'
400
- ].join('')
401
- end,
402
- ';',
403
- ].join('')
404
- end
405
-
406
- def format_parameter(node)
407
- [
408
- *if node.var
409
- [
410
- 'VAR',
411
- ' '
412
- ].join('')
413
- end,
414
- node.id,
415
- ' ',
416
- ':',
417
- ' ',
418
- format(node.type)
419
- ].join('')
420
- end
421
-
422
- def format_procedure(node)
423
- [
424
- [
425
- 'PROCEDURE',
426
- ' ',
427
- node.id,
428
- *if node.parameters and node.parameters.length > 0
429
- [
430
- '(',
431
- node.parameters.map{|x| format(x)}.join('; '),
432
- ')'
433
- ].join('')
434
- end,
435
- ';'
436
- ].join(''),
437
- *if node.declarations and node.declarations.length > 0
438
- indent(node.declarations.map{|x| format(x)}.join("\n"))
439
- end,
440
- *if node.constants and node.constants.length > 0
441
- indent([
442
- 'CONSTANT',
443
- indent(node.constants.map{|x| format(x)}.join("\n")),
444
- [
445
- 'END_CONSTANT',
446
- ';'
447
- ].join('')
448
- ].join("\n"))
449
- end,
450
- *if node.variables and node.variables.length > 0
451
- indent([
452
- 'LOCAL',
453
- indent(node.variables.map{|x| format(x)}.join("\n")),
454
- [
455
- 'END_LOCAL',
456
- ';'
457
- ].join('')
458
- ].join("\n"))
459
- end,
460
- *if node.statements and node.statements.length > 0
461
- indent(node.statements.map{|x| format(x)}.join("\n"))
462
- end,
463
- [
464
- 'END_PROCEDURE',
465
- ';'
466
- ].join('')
467
- ].join("\n")
468
- end
469
-
470
- def format_renamed_ref(node)
471
- [
472
- format(node.ref),
473
- ' ',
474
- 'AS',
475
- ' ',
476
- node.id
477
- ].join('')
478
- end
479
-
480
- def format_repository(node)
481
- [
482
- *if node.schemas and node.schemas.length > 0
483
- node.schemas.map{|node| format(node)}
484
- end,
485
- *format_scope_remarks(node)
486
- ].join("\n")
487
- end
488
-
489
- def format_rule(node)
490
- [
491
- [
492
- 'RULE',
493
- ' ',
494
- node.id,
495
- ' ',
496
- 'FOR',
497
- ' ',
498
- '(',
499
- node.applies_to.map{|x| format(x)}.join(', '),
500
- ')',
501
- ';'
502
- ].join(''),
503
- *if node.declarations and node.declarations.length > 0
504
- indent(node.declarations.map{|x| format(x)}.join("\n"))
505
- end,
506
- *if node.constants and node.constants.length > 0
507
- indent([
508
- 'CONSTANT',
509
- indent(node.constants.map{|x| format(x)}.join("\n")),
510
- [
511
- 'END_CONSTANT',
512
- ';'
513
- ].join('')
514
- ].join("\n"))
515
- end,
516
- *if node.variables and node.variables.length > 0
517
- indent([
518
- 'LOCAL',
519
- indent(node.variables.map{|x| format(x)}.join("\n")),
520
- [
521
- 'END_LOCAL',
522
- ';'
523
- ].join('')
524
- ].join("\n"))
525
- end,
526
- *if node.statements and node.statements.length > 0
527
- indent(node.statements.map{|x| format(x)}.join("\n"))
528
- end,
529
- *if node.where and node.where.length > 0
530
- indent([
531
- 'WHERE',
532
- indent(node.where.map{|x| format(x)}.join("\n"))
533
- ].join("\n"))
534
- end,
535
- [
536
- 'END_RULE',
537
- ';'
538
- ].join('')
539
- ].join("\n")
540
- end
541
-
542
- def format_schema(node)
543
- [
544
- [
545
- 'SCHEMA',
546
- ' ',
547
- node.id,
548
- *if node.version
549
- [
550
- ' ',
551
- format(node.version),
552
- ].join('')
553
- end,
554
- ';'
555
- ].join(''),
556
- *if node.interfaces and node.interfaces.length > 0
557
- node.interfaces.map{|x| format(x)}.join("\n")
558
- end,
559
- *if node.constants and node.constants.length > 0
560
- [
561
- 'CONSTANT',
562
- indent(node.constants.map{|x| format(x)}.join("\n")),
563
- [
564
- 'END_CONSTANT',
565
- ';'
566
- ].join('')
567
- ].join("\n")
568
- end,
569
- *if node.declarations and node.declarations.length > 0
570
- node.declarations.map{|x| format(x)}.join("\n\n")
571
- end,
572
- [
573
- 'END_SCHEMA',
574
- ';'
575
- ].join('')
576
- ].join("\n")
577
- end
578
-
579
- def format_subtype_constraint(node)
580
- [
581
- [
582
- 'SUBTYPE_CONSTRAINT',
583
- ' ',
584
- node.id,
585
- ' ',
586
- 'FOR',
587
- ' ',
588
- format(node.applies_to),
589
- ';'
590
- ].join(''),
591
- *if node.abstract
592
- indent([
593
- 'ABSTRACT',
594
- ' ',
595
- 'SUPERTYPE',
596
- ';'
597
- ].join(''))
598
- end,
599
- *if node.total_over and node.total_over.length > 0
600
- indent([
601
- 'TOTAL_OVER',
602
- '(',
603
- node.total_over.map{|x| format(x)}.join(', '),
604
- ')',
605
- ';'
606
- ].join(''))
607
- end,
608
- *if node.supertype_expression
609
- indent([
610
- format(node.supertype_expression),
611
- ';'
612
- ].join(''))
613
- end,
614
- [
615
- 'END_SUBTYPE_CONSTRAINT',
616
- ';'
617
- ].join('')
618
- ].join("\n")
619
- end
620
-
621
- def format_type(node)
622
- [
623
- [
624
- 'TYPE',
625
- ' ',
626
- node.id,
627
- ' ',
628
- '=',
629
- ' ',
630
- format(node.type),
631
- ';',
632
- ].join(''),
633
- *if node.where and node.where.length > 0
634
- indent([
635
- 'WHERE',
636
- indent(node.where.map{|x| format(x)}.join("\n"))
637
- ].join("\n"))
638
- end,
639
- [
640
- 'END_TYPE',
641
- ';'
642
- ].join('')
643
- ].join("\n")
644
- end
645
-
646
- def format_unique(node)
647
- [
648
- *if node.id
649
- [
650
- node.id,
651
- ' ',
652
- ':',
653
- ' '
654
- ].join('')
655
- end,
656
- node.attributes.map{|x| format(x)}.join(', '),
657
- ';'
658
- ].join('')
659
- end
660
-
661
- def format_variable(node)
662
- [
663
- node.id,
664
- ' ',
665
- ':',
666
- ' ',
667
- format(node.type),
668
- *if node.expression
669
- [
670
- ' ',
671
- ':=',
672
- ' ',
673
- format(node.expression),
674
- ].join('')
675
- end,
676
- ';'
677
- ].join('')
678
- end
679
-
680
- def format_where(node)
681
- [
682
- *if node.id
683
- [
684
- node.id,
685
- ' ',
686
- ':',
687
- ' '
688
- ].join('')
689
- end,
690
- format(node.expression),
691
- ';'
692
- ].join('')
693
- end
694
-
695
- def format_expressions_aggregate_initializer(node)
696
- [
697
- '[',
698
- node.items.map{|x| format(x)}.join(', '),
699
- ']'
700
- ].join('')
701
- end
702
-
703
- def format_expressions_aggregate_item(node)
704
- [
705
- format(node.expression),
706
- ':',
707
- format(node.repetition)
708
- ].join('')
709
- end
710
-
711
- def format_expressions_attribute_reference(node)
712
- [
713
- format(node.ref),
714
- '.',
715
- format(node.attribute)
716
- ].join('')
717
- end
718
-
719
- def format_expressions_binary_expression(node)
720
- [
721
- *if node.operand1.instance_of? Model::Expressions::BinaryExpression and OPERATOR_PRECEDENCE[node.operand1.operator] > OPERATOR_PRECEDENCE[node.operator]
722
- '('
723
- end,
724
- format(node.operand1),
725
- *if node.operand1.instance_of? Model::Expressions::BinaryExpression and OPERATOR_PRECEDENCE[node.operand1.operator] > OPERATOR_PRECEDENCE[node.operator]
726
- ')'
727
- end,
728
- ' ',
729
- case node.operator
730
- when Model::Expressions::BinaryExpression::ADDITION then '+'
731
- when Model::Expressions::BinaryExpression::AND then 'AND'
732
- when Model::Expressions::BinaryExpression::ANDOR then 'ANDOR'
733
- when Model::Expressions::BinaryExpression::COMBINE then '||'
734
- when Model::Expressions::BinaryExpression::EQUAL then '='
735
- when Model::Expressions::BinaryExpression::EXPONENTIATION then '**'
736
- when Model::Expressions::BinaryExpression::GREATER_THAN then '>'
737
- when Model::Expressions::BinaryExpression::GREATER_THAN_OR_EQUAL then '>='
738
- when Model::Expressions::BinaryExpression::IN then 'IN'
739
- when Model::Expressions::BinaryExpression::INSTANCE_EQUAL then ':=:'
740
- when Model::Expressions::BinaryExpression::INSTANCE_NOT_EQUAL then ':<>:'
741
- when Model::Expressions::BinaryExpression::INTEGER_DIVISION then 'DIV'
742
- when Model::Expressions::BinaryExpression::LESS_THAN then '<'
743
- when Model::Expressions::BinaryExpression::LESS_THAN_OR_EQUAL then '<='
744
- when Model::Expressions::BinaryExpression::LIKE then 'LIKE'
745
- when Model::Expressions::BinaryExpression::MODULO then 'MOD'
746
- when Model::Expressions::BinaryExpression::MULTIPLICATION then '*'
747
- when Model::Expressions::BinaryExpression::NOT_EQUAL then '<>'
748
- when Model::Expressions::BinaryExpression::OR then 'OR'
749
- when Model::Expressions::BinaryExpression::REAL_DIVISION then '/'
750
- when Model::Expressions::BinaryExpression::SUBTRACTION then '-'
751
- when Model::Expressions::BinaryExpression::XOR then 'XOR'
752
- end,
753
- ' ',
754
- *if node.operand2.instance_of? Model::Expressions::BinaryExpression and OPERATOR_PRECEDENCE[node.operand2.operator] > OPERATOR_PRECEDENCE[node.operator]
755
- '('
756
- end,
757
- format(node.operand2),
758
- *if node.operand2.instance_of? Model::Expressions::BinaryExpression and OPERATOR_PRECEDENCE[node.operand2.operator] > OPERATOR_PRECEDENCE[node.operator]
759
- ')'
760
- end,
761
- ].join('')
762
- end
763
-
764
- def format_expressions_call(node)
765
- [
766
- format(node.ref),
767
- '(',
768
- node.parameters.map{|x| format(x)}.join(', '),
769
- ')'
770
- ].join('')
771
- end
772
-
773
- def format_expressions_entity_constructor(node)
774
- [
775
- format(node.entity),
776
- '(',
777
- node.parameters.map{|x| format(x)}.join(', '),
778
- ')'
779
- ].join('')
780
- end
781
-
782
- def format_expressions_group_reference(node)
783
- [
784
- format(node.ref),
785
- '\\',
786
- format(node.entity)
787
- ].join('')
788
- end
789
-
790
- def format_expressions_index_reference(node)
791
- [
792
- format(node.ref),
793
- '[',
794
- format(node.index1),
795
- *if node.index2
796
- [
797
- ':',
798
- format(node.index2)
799
- ].join('')
800
- end,
801
- ']'
802
- ].join('')
803
- end
804
-
805
- def format_expressions_interval(node)
806
- [
807
- '{',
808
- format(node.low),
809
- ' ',
810
- case node.operator1
811
- when Model::Expressions::BinaryExpression::LESS_THAN then '<'
812
- when Model::Expressions::BinaryExpression::LESS_THAN_OR_EQUAL then '<='
813
- end,
814
- ' ',
815
- format(node.item),
816
- ' ',
817
- case node.operator2
818
- when Model::Expressions::BinaryExpression::LESS_THAN then '<'
819
- when Model::Expressions::BinaryExpression::LESS_THAN_OR_EQUAL then '<='
820
- end,
821
- ' ',
822
- format(node.high),
823
- '}'
824
- ].join('')
825
- end
826
-
827
- def format_expressions_query_expression(node)
828
- [
829
- 'QUERY',
830
- '(',
831
- node.id,
832
- ' ',
833
- '<*',
834
- ' ',
835
- format(node.source),
836
- ' ',
837
- '|',
838
- ' ',
839
- format(node.expression),
840
- *format_remarks(node).instance_eval{|x| x.length > 0 ? ["\n", *x, "\n"] : x},
841
- ')'
842
- ].join('')
843
- end
844
-
845
- def format_expressions_simple_reference(node)
846
- node.id
847
- end
848
-
849
- def format_expressions_unary_expression(node)
850
- [
851
- case node.operator
852
- when Model::Expressions::UnaryExpression::MINUS then '-'
853
- when Model::Expressions::UnaryExpression::NOT then 'NOT'
854
- when Model::Expressions::UnaryExpression::PLUS then '+'
855
- end,
856
- if node.operator == Model::Expressions::UnaryExpression::NOT
857
- ' '
858
- end,
859
- *if node.operand.instance_of? Model::Expressions::BinaryExpression
860
- '('
861
- end,
862
- format(node.operand),
863
- *if node.operand.instance_of? Model::Expressions::BinaryExpression
864
- ')'
865
- end
866
- ].join('')
867
- end
868
-
869
- def format_literals_binary(node)
870
- [
871
- '%',
872
- node.value
873
- ].join('')
874
- end
875
-
876
- def format_literals_integer(node)
877
- node.value
878
- end
879
-
880
- def format_literals_logical(node)
881
- case node.value
882
- when Model::Literals::Logical::TRUE then 'TRUE'
883
- when Model::Literals::Logical::FALSE then 'FALSE'
884
- when Model::Literals::Logical::UNKNOWN then 'UNKNOWN'
885
- end
886
- end
887
-
888
- def format_literals_real(node)
889
- node.value
890
- end
891
-
892
- def format_literals_string(node)
893
- if node.encoded
894
- [
895
- "\"",
896
- node.value,
897
- "\""
898
- ].join('')
899
- else
900
- [
901
- "'",
902
- node.value,
903
- "'"
904
- ].join('')
905
- end
906
- end
907
-
908
- def format_statements_alias(node)
909
- [
910
- [
911
- 'ALIAS',
912
- ' ',
913
- node.id,
914
- ' ',
915
- 'FOR',
916
- ' ',
917
- format(node.expression),
918
- ';'
919
- ].join(''),
920
- *if node.statements and node.statements.length > 0
921
- indent(node.statements.map{|x| format(x)}.join("\n"))
922
- end,
923
- *format_remarks(node),
924
- [
925
- 'END_ALIAS',
926
- ';'
927
- ].join('')
928
- ].join("\n")
929
- end
930
-
931
- def format_statements_assignment(node)
932
- [
933
- format(node.ref),
934
- ' ',
935
- ':=',
936
- ' ',
937
- format(node.expression),
938
- ';'
939
- ].join('')
940
- end
941
-
942
- def format_statements_call(node)
943
- [
944
- format(node.ref),
945
- *if node.parameters and node.parameters.length > 0
946
- [
947
- '(',
948
- node.parameters.map{|x| format(x)}.join(', '),
949
- ')'
950
- ].join('')
951
- end,
952
- ';'
953
- ].join('')
954
- end
955
-
956
- def format_statements_case(node)
957
- [
958
- [
959
- 'CASE',
960
- ' ',
961
- format(node.expression),
962
- ' ',
963
- 'OF'
964
- ].join(''),
965
- *if node.actions and node.actions.length > 0
966
- node.actions.map{|x| format(x)}
967
- end,
968
- *if node.otherwise_statement
969
- [
970
- [
971
- 'OTHERWISE',
972
- ' ',
973
- ':'
974
- ].join(''),
975
- indent(format(node.otherwise_statement))
976
- ]
977
- end,
978
- [
979
- 'END_CASE',
980
- ';'
981
- ].join('')
982
- ].join("\n")
983
- end
984
-
985
- def format_statements_case_action(node)
986
- [
987
- [
988
- node.labels.map{|x| format(x)}.join(', '),
989
- ' ',
990
- ':'
991
- ].join(''),
992
- indent(format(node.statement))
993
- ].join("\n")
994
- end
995
-
996
- def format_statements_compound(node)
997
- [
998
- 'BEGIN',
999
- *if node.statements and node.statements.length > 0
1000
- indent(node.statements.map{|x| format(x)}.join("\n"))
1001
- end,
1002
- [
1003
- 'END',
1004
- ';'
1005
- ].join('')
1006
- ].join("\n")
1007
- end
1008
-
1009
- def format_statements_escape(node)
1010
- [
1011
- 'ESCAPE',
1012
- ';'
1013
- ].join('')
1014
- end
1015
-
1016
- def format_statements_if(node)
1017
- [
1018
- [
1019
- 'IF',
1020
- ' ',
1021
- format(node.expression),
1022
- ' ',
1023
- 'THEN'
1024
- ].join(''),
1025
- *if node.statements and node.statements.length > 0
1026
- indent(node.statements.map{|x| format(x)}.join("\n"))
1027
- end,
1028
- *if node.else_statements and node.else_statements.length > 0
1029
- [
1030
- 'ELSE',
1031
- indent(node.else_statements.map{|x| format(x)}.join("\n")),
1032
- ].join("\n")
1033
- end,
1034
- [
1035
- 'END_IF',
1036
- ';'
1037
- ].join('')
1038
- ].join("\n")
1039
- end
1040
-
1041
- def format_statements_null(node)
1042
- ';'
1043
- end
1044
-
1045
- def format_statements_repeat(node)
1046
- [
1047
- [
1048
- 'REPEAT',
1049
- *if node.id
1050
- [
1051
- ' ',
1052
- node.id,
1053
- ' ',
1054
- ':=',
1055
- ' ',
1056
- format(node.bound1),
1057
- ' ',
1058
- 'TO',
1059
- ' ',
1060
- format(node.bound2),
1061
- *if node.increment
1062
- [
1063
- ' ',
1064
- 'BY',
1065
- ' ',
1066
- format(node.increment)
1067
- ].join('')
1068
- end
1069
- ].join('')
1070
- end,
1071
- *if node.while_expression
1072
- [
1073
- ' ',
1074
- 'WHILE',
1075
- ' ',
1076
- format(node.while_expression)
1077
- ].join('')
1078
- end,
1079
- *if node.until_expression
1080
- [
1081
- ' ',
1082
- 'UNTIL',
1083
- ' ',
1084
- format(node.until_expression)
1085
- ].join('')
1086
- end,
1087
- ';'
1088
- ].join(''),
1089
- *if node.statements and node.statements.length > 0
1090
- indent(node.statements.map{|x| format(x)}.join("\n"))
1091
- end,
1092
- *format_remarks(node),
1093
- [
1094
- 'END_REPEAT',
1095
- ';'
1096
- ].join('')
1097
- ].join("\n")
1098
- end
1099
-
1100
- def format_statements_return(node)
1101
- [
1102
- 'RETURN',
1103
- *if node.expression
1104
- [
1105
- ' ',
1106
- '(',
1107
- format(node.expression),
1108
- ')'
1109
- ].join('')
1110
- end,
1111
- ';'
1112
- ].join('')
1113
- end
1114
-
1115
- def format_statements_skip(node)
1116
- [
1117
- 'SKIP',
1118
- ';'
1119
- ].join('')
1120
- end
1121
-
1122
- def format_types_aggregate(node)
1123
- 'AGGREGATE'
1124
- end
1125
-
1126
- def format_types_array(node)
1127
- [
1128
- 'ARRAY',
1129
- *if node.bound1 and node.bound2
1130
- [
1131
- ' ',
1132
- '[',
1133
- format(node.bound1),
1134
- ':',
1135
- format(node.bound2),
1136
- ']',
1137
- ].join('')
1138
- end,
1139
- ' ',
1140
- 'OF',
1141
- *if node.optional
1142
- [
1143
- ' ',
1144
- 'OPTIONAL'
1145
- ].join('')
1146
- end,
1147
- *if node.unique
1148
- [
1149
- ' ',
1150
- 'UNIQUE'
1151
- ].join('')
1152
- end,
1153
- ' ',
1154
- format(node.base_type)
1155
- ].join('')
1156
- end
1157
-
1158
- def format_types_bag(node)
1159
- [
1160
- 'BAG',
1161
- *if node.bound1 and node.bound2
1162
- [
1163
- ' ',
1164
- '[',
1165
- format(node.bound1),
1166
- ':',
1167
- format(node.bound2),
1168
- ']',
1169
- ].join('')
1170
- end,
1171
- ' ',
1172
- 'OF',
1173
- ' ',
1174
- format(node.base_type)
1175
- ].join('')
1176
- end
1177
-
1178
- def format_types_binary(node)
1179
- [
1180
- 'BINARY',
1181
- *if node.width
1182
- [
1183
- ' ',
1184
- '(',
1185
- format(node.width),
1186
- ')'
1187
- ].join('')
1188
- end,
1189
- *if node.fixed
1190
- [
1191
- ' ',
1192
- 'FIXED'
1193
- ].join('')
1194
- end
1195
- ].join('')
1196
- end
1197
-
1198
- def format_types_boolean(node)
1199
- 'BOOLEAN'
1200
- end
1201
-
1202
- def format_types_enumeration(node)
1203
- [
1204
- *if node.extensible
1205
- [
1206
- 'EXTENSIBLE',
1207
- ' '
1208
- ].join('')
1209
- end,
1210
- 'ENUMERATION',
1211
- *if node.items and node.items.length > 0
1212
- [
1213
- ' ',
1214
- 'OF',
1215
- ' ',
1216
- '(',
1217
- node.items.map{|x| format(x)}.join(', '),
1218
- ')'
1219
- ].join('')
1220
- end,
1221
- *if node.extension_type
1222
- [
1223
- ' ',
1224
- 'BASED_ON',
1225
- ' ',
1226
- format(node.extension_type)
1227
- ].join('')
1228
- end,
1229
- *if node.extension_items
1230
- [
1231
- ' ',
1232
- 'WITH',
1233
- ' ',
1234
- '(',
1235
- node.extension_items.map{|x| format(x)}.join(', '),
1236
- ')'
1237
- ].join('')
1238
- end
1239
- ].join('')
1240
- end
1241
-
1242
- def format_types_generic_entity(node)
1243
- 'GENERIC_ENTITY'
1244
- end
1245
-
1246
- def format_types_generic(node)
1247
- 'GENERIC'
1248
- end
1249
-
1250
- def format_types_integer(node)
1251
- 'INTEGER'
1252
- end
1253
-
1254
- def format_types_list(node)
1255
- [
1256
- 'LIST',
1257
- *if node.bound1 and node.bound2
1258
- [
1259
- ' ',
1260
- '[',
1261
- format(node.bound1),
1262
- ':',
1263
- format(node.bound2),
1264
- ']',
1265
- ].join('')
1266
- end,
1267
- ' ',
1268
- 'OF',
1269
- *if node.unique
1270
- [
1271
- ' ',
1272
- 'UNIQUE'
1273
- ].join('')
1274
- end,
1275
- ' ',
1276
- format(node.base_type)
1277
- ].join('')
1278
- end
1279
-
1280
- def format_types_logical(node)
1281
- 'LOGICAL'
1282
- end
1283
-
1284
- def format_types_number(node)
1285
- 'NUMBER'
1286
- end
1287
-
1288
- def format_types_real(node)
1289
- [
1290
- 'REAL',
1291
- *if node.precision
1292
- [
1293
- ' ',
1294
- '(',
1295
- format(node.precision),
1296
- ')'
1297
- ].join('')
1298
- end
1299
- ].join('')
1300
- end
1301
-
1302
- def format_types_select(node)
1303
- [
1304
- *if node.extensible
1305
- [
1306
- 'EXTENSIBLE',
1307
- ' '
1308
- ].join('')
1309
- end,
1310
- *if node.generic_entity
1311
- [
1312
- 'GENERIC_ENTITY',
1313
- ' '
1314
- ].join('')
1315
- end,
1316
- 'SELECT',
1317
- *if node.items and node.items.length > 0
1318
- [
1319
- ' ',
1320
- '(',
1321
- node.items.map{|x| format(x)}.join(', '),
1322
- ')'
1323
- ].join('')
1324
- end,
1325
- *if node.extension_type
1326
- [
1327
- ' ',
1328
- 'BASED_ON',
1329
- ' ',
1330
- format(node.extension_type)
1331
- ].join('')
1332
- end,
1333
- *if node.extension_items
1334
- [
1335
- ' ',
1336
- 'WITH',
1337
- ' ',
1338
- '(',
1339
- node.extension_items.map{|x| format(x)}.join(', '),
1340
- ')'
1341
- ].join('')
1342
- end
1343
- ].join('')
1344
- end
1345
-
1346
- def format_types_set(node)
1347
- [
1348
- 'SET',
1349
- *if node.bound1 and node.bound2
1350
- [
1351
- ' ',
1352
- '[',
1353
- format(node.bound1),
1354
- ':',
1355
- format(node.bound2),
1356
- ']',
1357
- ].join('')
1358
- end,
1359
- ' ',
1360
- 'OF',
1361
- ' ',
1362
- format(node.base_type)
1363
- ].join('')
1364
- end
1365
-
1366
- def format_types_string(node)
1367
- [
1368
- 'STRING',
1369
- *if node.width
1370
- [
1371
- ' ',
1372
- '(',
1373
- format(node.width),
1374
- ')'
1375
- ].join('')
1376
- end,
1377
- *if node.fixed
1378
- [
1379
- ' ',
1380
- 'FIXED'
1381
- ].join('')
1382
- end
1383
- ].join('')
1384
- end
1385
-
1386
- def indent(str)
1387
- str.split("\n").map{|x| "#{INDENT}#{x}"}.join("\n")
1388
- end
1389
-
1390
- def format_remark_ref(node)
1391
- [
1392
- *if node.class.method_defined? :parent and node.parent.class.method_defined? :id and node.parent != node
1393
- [
1394
- format_remark_ref(node.parent),
1395
- '.'
1396
- ].join('')
1397
- end,
1398
- node.id,
1399
- ].join('')
1400
- end
1401
-
1402
- def format_remark(node, remark)
1403
- if remark.include?("\n")
1404
- [
1405
- [
1406
- '(*',
1407
- '"',
1408
- format_remark_ref(node),
1409
- '"',
1410
- ].join(''),
1411
- remark,
1412
- '*)'
1413
- ].join("\n")
1414
- else
1415
- [
1416
- '--',
1417
- '"',
1418
- format_remark_ref(node),
1419
- '"',
1420
- ' ',
1421
- remark
1422
- ].join('')
1423
- end
1424
- end
1425
-
1426
- def format_remarks(node)
1427
- if node.class.method_defined? :remarks and node.remarks and node.remarks.length > 0
1428
- node.remarks.map do |remark|
1429
- format_remark(node, remark)
1430
- end
1431
- else
1432
- []
1433
- end
1434
- end
1435
-
1436
- def format_scope_remarks(node)
1437
- [
1438
- *format_remarks(node),
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
1445
- end
1446
- ]
1447
- end
1448
- end
1449
- end
1
+ require 'expressir/model'
2
+
3
+ module Expressir
4
+ module ExpressExp
5
+ class Formatter
6
+ INDENT_CHAR = ' '
7
+ INDENT_WIDTH = 2
8
+ INDENT = INDENT_CHAR * INDENT_WIDTH
9
+
10
+ OPERATOR_PRECEDENCE = {
11
+ Model::Expressions::BinaryExpression::EXPONENTIATION => 1,
12
+ Model::Expressions::BinaryExpression::MULTIPLICATION => 2,
13
+ Model::Expressions::BinaryExpression::REAL_DIVISION => 2,
14
+ Model::Expressions::BinaryExpression::INTEGER_DIVISION => 2,
15
+ Model::Expressions::BinaryExpression::MODULO => 2,
16
+ Model::Expressions::BinaryExpression::AND => 2,
17
+ Model::Expressions::BinaryExpression::COMBINE => 2,
18
+ Model::Expressions::BinaryExpression::SUBTRACTION => 3,
19
+ Model::Expressions::BinaryExpression::ADDITION => 3,
20
+ Model::Expressions::BinaryExpression::OR => 3,
21
+ Model::Expressions::BinaryExpression::XOR => 3,
22
+ Model::Expressions::BinaryExpression::EQUAL => 4,
23
+ Model::Expressions::BinaryExpression::NOT_EQUAL => 4,
24
+ Model::Expressions::BinaryExpression::LESS_THAN_OR_EQUAL => 4,
25
+ Model::Expressions::BinaryExpression::GREATER_THAN_OR_EQUAL => 4,
26
+ Model::Expressions::BinaryExpression::LESS_THAN => 4,
27
+ Model::Expressions::BinaryExpression::GREATER_THAN => 4,
28
+ Model::Expressions::BinaryExpression::INSTANCE_EQUAL => 4,
29
+ Model::Expressions::BinaryExpression::INSTANCE_NOT_EQUAL => 4,
30
+ Model::Expressions::BinaryExpression::IN => 4,
31
+ Model::Expressions::BinaryExpression::LIKE => 4,
32
+ Model::Expressions::BinaryExpression::ANDOR => 4,
33
+ }
34
+
35
+ def self.format(node)
36
+ formatter = self.new
37
+ formatter.format(node)
38
+ end
39
+
40
+ def format(node)
41
+ if node.instance_of? Model::Attribute
42
+ format_attribute(node)
43
+ elsif node.instance_of? Model::Constant
44
+ format_constant(node)
45
+ elsif node.instance_of? Model::Entity
46
+ format_entity(node)
47
+ elsif node.instance_of? Model::EnumerationItem
48
+ format_enumeration_item(node)
49
+ elsif node.instance_of? Model::Function
50
+ format_function(node)
51
+ elsif node.instance_of? Model::Interface
52
+ format_interface(node)
53
+ elsif node.instance_of? Model::Parameter
54
+ format_parameter(node)
55
+ elsif node.instance_of? Model::Procedure
56
+ format_procedure(node)
57
+ elsif node.instance_of? Model::RenamedRef
58
+ format_renamed_ref(node)
59
+ elsif node.instance_of? Model::Repository
60
+ format_repository(node)
61
+ elsif node.instance_of? Model::Rule
62
+ format_rule(node)
63
+ elsif node.instance_of? Model::Schema
64
+ format_schema(node)
65
+ elsif node.instance_of? Model::SubtypeConstraint
66
+ format_subtype_constraint(node)
67
+ elsif node.instance_of? Model::Type
68
+ format_type(node)
69
+ elsif node.instance_of? Model::Unique
70
+ format_unique(node)
71
+ elsif node.instance_of? Model::Variable
72
+ format_variable(node)
73
+ elsif node.instance_of? Model::Where
74
+ format_where(node)
75
+ elsif node.instance_of? Model::Expressions::AggregateInitializer
76
+ format_expressions_aggregate_initializer(node)
77
+ elsif node.instance_of? Model::Expressions::AggregateItem
78
+ format_expressions_aggregate_item(node)
79
+ elsif node.instance_of? Model::Expressions::AttributeReference
80
+ format_expressions_attribute_reference(node)
81
+ elsif node.instance_of? Model::Expressions::BinaryExpression
82
+ format_expressions_binary_expression(node)
83
+ elsif node.instance_of? Model::Expressions::Call
84
+ format_expressions_call(node)
85
+ elsif node.instance_of? Model::Expressions::EntityConstructor
86
+ format_expressions_entity_constructor(node)
87
+ elsif node.instance_of? Model::Expressions::GroupReference
88
+ format_expressions_group_reference(node)
89
+ elsif node.instance_of? Model::Expressions::IndexReference
90
+ format_expressions_index_reference(node)
91
+ elsif node.instance_of? Model::Expressions::Interval
92
+ format_expressions_interval(node)
93
+ elsif node.instance_of? Model::Expressions::QueryExpression
94
+ format_expressions_query_expression(node)
95
+ elsif node.instance_of? Model::Expressions::SimpleReference
96
+ format_expressions_simple_reference(node)
97
+ elsif node.instance_of? Model::Expressions::UnaryExpression
98
+ format_expressions_unary_expression(node)
99
+ elsif node.instance_of? Model::Literals::Binary
100
+ format_literals_binary(node)
101
+ elsif node.instance_of? Model::Literals::Integer
102
+ format_literals_integer(node)
103
+ elsif node.instance_of? Model::Literals::Logical
104
+ format_literals_logical(node)
105
+ elsif node.instance_of? Model::Literals::Real
106
+ format_literals_real(node)
107
+ elsif node.instance_of? Model::Literals::String
108
+ format_literals_string(node)
109
+ elsif node.instance_of? Model::Statements::Alias
110
+ format_statements_alias(node)
111
+ elsif node.instance_of? Model::Statements::Assignment
112
+ format_statements_assignment(node)
113
+ elsif node.instance_of? Model::Statements::Call
114
+ format_statements_call(node)
115
+ elsif node.instance_of? Model::Statements::Case
116
+ format_statements_case(node)
117
+ elsif node.instance_of? Model::Statements::CaseAction
118
+ format_statements_case_action(node)
119
+ elsif node.instance_of? Model::Statements::Compound
120
+ format_statements_compound(node)
121
+ elsif node.instance_of? Model::Statements::Escape
122
+ format_statements_escape(node)
123
+ elsif node.instance_of? Model::Statements::If
124
+ format_statements_if(node)
125
+ elsif node.instance_of? Model::Statements::Null
126
+ format_statements_null(node)
127
+ elsif node.instance_of? Model::Statements::Repeat
128
+ format_statements_repeat(node)
129
+ elsif node.instance_of? Model::Statements::Return
130
+ format_statements_return(node)
131
+ elsif node.instance_of? Model::Statements::Skip
132
+ format_statements_skip(node)
133
+ elsif node.instance_of? Model::Types::Aggregate
134
+ format_types_aggregate(node)
135
+ elsif node.instance_of? Model::Types::Array
136
+ format_types_array(node)
137
+ elsif node.instance_of? Model::Types::Bag
138
+ format_types_bag(node)
139
+ elsif node.instance_of? Model::Types::Binary
140
+ format_types_binary(node)
141
+ elsif node.instance_of? Model::Types::Boolean
142
+ format_types_boolean(node)
143
+ elsif node.instance_of? Model::Types::Enumeration
144
+ format_types_enumeration(node)
145
+ elsif node.instance_of? Model::Types::GenericEntity
146
+ format_types_generic_entity(node)
147
+ elsif node.instance_of? Model::Types::Generic
148
+ format_types_generic(node)
149
+ elsif node.instance_of? Model::Types::Integer
150
+ format_types_integer(node)
151
+ elsif node.instance_of? Model::Types::List
152
+ format_types_list(node)
153
+ elsif node.instance_of? Model::Types::Logical
154
+ format_types_logical(node)
155
+ elsif node.instance_of? Model::Types::Number
156
+ format_types_number(node)
157
+ elsif node.instance_of? Model::Types::Real
158
+ format_types_real(node)
159
+ elsif node.instance_of? Model::Types::Select
160
+ format_types_select(node)
161
+ elsif node.instance_of? Model::Types::Set
162
+ format_types_set(node)
163
+ elsif node.instance_of? Model::Types::String
164
+ format_types_string(node)
165
+ else
166
+ puts node.class
167
+ end
168
+ end
169
+
170
+ private
171
+
172
+ def format_attribute(node)
173
+ [
174
+ *if node.supertype_attribute
175
+ [
176
+ format(node.supertype_attribute),
177
+ ' ',
178
+ ].join('')
179
+ end,
180
+ *if node.supertype_attribute and node.id
181
+ [
182
+ 'RENAMED',
183
+ ' '
184
+ ].join('')
185
+ end,
186
+ *if node.id
187
+ [
188
+ node.id,
189
+ ' '
190
+ ].join('')
191
+ end,
192
+ ':',
193
+ *if node.optional
194
+ [
195
+ ' ',
196
+ 'OPTIONAL'
197
+ ].join('')
198
+ end,
199
+ ' ',
200
+ format(node.type),
201
+ *if node.kind == Model::Attribute::DERIVED
202
+ [
203
+ ' ',
204
+ ':=',
205
+ ' ',
206
+ format(node.expression)
207
+ ].join('')
208
+ elsif node.kind == Model::Attribute::INVERSE
209
+ [
210
+ ' ',
211
+ 'FOR',
212
+ ' ',
213
+ format(node.expression)
214
+ ].join('')
215
+ end,
216
+ ';',
217
+ ].join('')
218
+ end
219
+
220
+ def format_constant(node)
221
+ [
222
+ node.id,
223
+ ' ',
224
+ ':',
225
+ ' ',
226
+ format(node.type),
227
+ ' ',
228
+ ':=',
229
+ ' ',
230
+ format(node.expression),
231
+ ';'
232
+ ].join('')
233
+ end
234
+
235
+ def format_entity(node)
236
+ explicit_attributes = node.attributes.select{|x| x.kind == Model::Attribute::EXPLICIT}
237
+ derived_attributes = node.attributes.select{|x| x.kind == Model::Attribute::DERIVED}
238
+ inverse_attributes = node.attributes.select{|x| x.kind == Model::Attribute::INVERSE}
239
+
240
+ [
241
+ [
242
+ 'ENTITY',
243
+ ' ',
244
+ node.id,
245
+ *if node.abstract and !node.supertype_expression
246
+ [
247
+ "\n",
248
+ INDENT,
249
+ 'ABSTRACT',
250
+ ' ',
251
+ 'SUPERTYPE'
252
+ ].join('')
253
+ end,
254
+ *if node.abstract and node.supertype_expression
255
+ [
256
+ "\n",
257
+ INDENT,
258
+ 'ABSTRACT',
259
+ ' ',
260
+ 'SUPERTYPE',
261
+ ' ',
262
+ 'OF',
263
+ ' ',
264
+ '(',
265
+ format(node.supertype_expression),
266
+ ')'
267
+ ].join('')
268
+ end,
269
+ *if !node.abstract and node.supertype_expression
270
+ [
271
+ "\n",
272
+ INDENT,
273
+ 'SUPERTYPE',
274
+ ' ',
275
+ 'OF',
276
+ ' ',
277
+ '(',
278
+ format(node.supertype_expression),
279
+ ')'
280
+ ].join('')
281
+ end,
282
+ *if node.subtype_of and node.subtype_of.length > 0
283
+ [
284
+ "\n",
285
+ INDENT,
286
+ 'SUBTYPE',
287
+ ' ',
288
+ 'OF',
289
+ ' ',
290
+ '(',
291
+ node.subtype_of.map{|x| format(x)}.join(', '),
292
+ ')'
293
+ ].join('')
294
+ end,
295
+ ';'
296
+ ].join(''),
297
+ *if explicit_attributes and explicit_attributes.length > 0
298
+ indent(explicit_attributes.map{|x| format(x)}.join("\n"))
299
+ end,
300
+ *if derived_attributes and derived_attributes.length > 0
301
+ indent([
302
+ 'DERIVE',
303
+ indent(derived_attributes.map{|x| format(x)}.join("\n")),
304
+ ].join("\n"))
305
+ end,
306
+ *if inverse_attributes and inverse_attributes.length > 0
307
+ indent([
308
+ 'INVERSE',
309
+ indent(inverse_attributes.map{|x| format(x)}.join("\n")),
310
+ ].join("\n"))
311
+ end,
312
+ *if node.unique and node.unique.length > 0
313
+ indent([
314
+ 'UNIQUE',
315
+ indent(node.unique.map{|x| format(x)}.join("\n"))
316
+ ].join("\n"))
317
+ end,
318
+ *if node.where and node.where.length > 0
319
+ indent([
320
+ 'WHERE',
321
+ indent(node.where.map{|x| format(x)}.join("\n")),
322
+ ].join("\n"))
323
+ end,
324
+ [
325
+ 'END_ENTITY',
326
+ ';'
327
+ ].join('')
328
+ ].join("\n")
329
+ end
330
+
331
+ def format_enumeration_item(node)
332
+ node.id
333
+ end
334
+
335
+ def format_function(node)
336
+ [
337
+ [
338
+ 'FUNCTION',
339
+ ' ',
340
+ node.id,
341
+ *if node.parameters and node.parameters.length > 0
342
+ [
343
+ '(',
344
+ node.parameters.map{|x| format(x)}.join('; '),
345
+ ')'
346
+ ].join('')
347
+ end,
348
+ ' ',
349
+ ':',
350
+ ' ',
351
+ format(node.return_type),
352
+ ';'
353
+ ].join(''),
354
+ *if node.types and node.types.length > 0
355
+ indent(node.types.map{|x| format(x)}.join("\n"))
356
+ end,
357
+ *if node.entities and node.entities.length > 0
358
+ indent(node.entities.map{|x| format(x)}.join("\n"))
359
+ end,
360
+ *if node.subtype_constraints and node.subtype_constraints.length > 0
361
+ indent(node.subtype_constraints.map{|x| format(x)}.join("\n"))
362
+ end,
363
+ *if node.functions and node.functions.length > 0
364
+ indent(node.functions.map{|x| format(x)}.join("\n"))
365
+ end,
366
+ *if node.procedures and node.procedures.length > 0
367
+ indent(node.procedures.map{|x| format(x)}.join("\n"))
368
+ end,
369
+ *if node.constants and node.constants.length > 0
370
+ indent([
371
+ 'CONSTANT',
372
+ indent(node.constants.map{|x| format(x)}.join("\n")),
373
+ [
374
+ 'END_CONSTANT',
375
+ ';'
376
+ ].join('')
377
+ ].join("\n"))
378
+ end,
379
+ *if node.variables and node.variables.length > 0
380
+ indent([
381
+ 'LOCAL',
382
+ indent(node.variables.map{|x| format(x)}.join("\n")),
383
+ [
384
+ 'END_LOCAL',
385
+ ';'
386
+ ].join('')
387
+ ].join("\n"))
388
+ end,
389
+ *if node.statements and node.statements.length > 0
390
+ indent(node.statements.map{|x| format(x)}.join("\n"))
391
+ end,
392
+ [
393
+ 'END_FUNCTION',
394
+ ';'
395
+ ].join('')
396
+ ].join("\n")
397
+ end
398
+
399
+ def format_interface(node)
400
+ [
401
+ case node.kind
402
+ when Model::Interface::USE then 'USE'
403
+ when Model::Interface::REFERENCE then 'REFERENCE'
404
+ end,
405
+ ' ',
406
+ 'FROM',
407
+ ' ',
408
+ format(node.schema),
409
+ *if node.items and node.items.length > 0
410
+ [
411
+ "\n",
412
+ INDENT,
413
+ '(',
414
+ node.items.map{|x| format(x)}.join(', '),
415
+ ')'
416
+ ].join('')
417
+ end,
418
+ ';',
419
+ ].join('')
420
+ end
421
+
422
+ def format_parameter(node)
423
+ [
424
+ *if node.var
425
+ [
426
+ 'VAR',
427
+ ' '
428
+ ].join('')
429
+ end,
430
+ node.id,
431
+ ' ',
432
+ ':',
433
+ ' ',
434
+ format(node.type)
435
+ ].join('')
436
+ end
437
+
438
+ def format_procedure(node)
439
+ [
440
+ [
441
+ 'PROCEDURE',
442
+ ' ',
443
+ node.id,
444
+ *if node.parameters and node.parameters.length > 0
445
+ [
446
+ '(',
447
+ node.parameters.map{|x| format(x)}.join('; '),
448
+ ')'
449
+ ].join('')
450
+ end,
451
+ ';'
452
+ ].join(''),
453
+ *if node.types and node.types.length > 0
454
+ indent(node.types.map{|x| format(x)}.join("\n"))
455
+ end,
456
+ *if node.entities and node.entities.length > 0
457
+ indent(node.entities.map{|x| format(x)}.join("\n"))
458
+ end,
459
+ *if node.subtype_constraints and node.subtype_constraints.length > 0
460
+ indent(node.subtype_constraints.map{|x| format(x)}.join("\n"))
461
+ end,
462
+ *if node.functions and node.functions.length > 0
463
+ indent(node.functions.map{|x| format(x)}.join("\n"))
464
+ end,
465
+ *if node.procedures and node.procedures.length > 0
466
+ indent(node.procedures.map{|x| format(x)}.join("\n"))
467
+ end,
468
+ *if node.constants and node.constants.length > 0
469
+ indent([
470
+ 'CONSTANT',
471
+ indent(node.constants.map{|x| format(x)}.join("\n")),
472
+ [
473
+ 'END_CONSTANT',
474
+ ';'
475
+ ].join('')
476
+ ].join("\n"))
477
+ end,
478
+ *if node.variables and node.variables.length > 0
479
+ indent([
480
+ 'LOCAL',
481
+ indent(node.variables.map{|x| format(x)}.join("\n")),
482
+ [
483
+ 'END_LOCAL',
484
+ ';'
485
+ ].join('')
486
+ ].join("\n"))
487
+ end,
488
+ *if node.statements and node.statements.length > 0
489
+ indent(node.statements.map{|x| format(x)}.join("\n"))
490
+ end,
491
+ [
492
+ 'END_PROCEDURE',
493
+ ';'
494
+ ].join('')
495
+ ].join("\n")
496
+ end
497
+
498
+ def format_renamed_ref(node)
499
+ [
500
+ format(node.ref),
501
+ ' ',
502
+ 'AS',
503
+ ' ',
504
+ node.id
505
+ ].join('')
506
+ end
507
+
508
+ def format_repository(node)
509
+ [
510
+ *if node.schemas and node.schemas.length > 0
511
+ node.schemas.map{|node| format(node)}
512
+ end,
513
+ *format_scope_remarks(node)
514
+ ].join("\n")
515
+ end
516
+
517
+ def format_rule(node)
518
+ [
519
+ [
520
+ 'RULE',
521
+ ' ',
522
+ node.id,
523
+ ' ',
524
+ 'FOR',
525
+ ' ',
526
+ '(',
527
+ node.applies_to.map{|x| format(x)}.join(', '),
528
+ ')',
529
+ ';'
530
+ ].join(''),
531
+ *if node.types and node.types.length > 0
532
+ indent(node.types.map{|x| format(x)}.join("\n"))
533
+ end,
534
+ *if node.entities and node.entities.length > 0
535
+ indent(node.entities.map{|x| format(x)}.join("\n"))
536
+ end,
537
+ *if node.subtype_constraints and node.subtype_constraints.length > 0
538
+ indent(node.subtype_constraints.map{|x| format(x)}.join("\n"))
539
+ end,
540
+ *if node.functions and node.functions.length > 0
541
+ indent(node.functions.map{|x| format(x)}.join("\n"))
542
+ end,
543
+ *if node.procedures and node.procedures.length > 0
544
+ indent(node.procedures.map{|x| format(x)}.join("\n"))
545
+ end,
546
+ *if node.constants and node.constants.length > 0
547
+ indent([
548
+ 'CONSTANT',
549
+ indent(node.constants.map{|x| format(x)}.join("\n")),
550
+ [
551
+ 'END_CONSTANT',
552
+ ';'
553
+ ].join('')
554
+ ].join("\n"))
555
+ end,
556
+ *if node.variables and node.variables.length > 0
557
+ indent([
558
+ 'LOCAL',
559
+ indent(node.variables.map{|x| format(x)}.join("\n")),
560
+ [
561
+ 'END_LOCAL',
562
+ ';'
563
+ ].join('')
564
+ ].join("\n"))
565
+ end,
566
+ *if node.statements and node.statements.length > 0
567
+ indent(node.statements.map{|x| format(x)}.join("\n"))
568
+ end,
569
+ *if node.where and node.where.length > 0
570
+ indent([
571
+ 'WHERE',
572
+ indent(node.where.map{|x| format(x)}.join("\n"))
573
+ ].join("\n"))
574
+ end,
575
+ [
576
+ 'END_RULE',
577
+ ';'
578
+ ].join('')
579
+ ].join("\n")
580
+ end
581
+
582
+ def format_schema(node)
583
+ [
584
+ [
585
+ 'SCHEMA',
586
+ ' ',
587
+ node.id,
588
+ *if node.version
589
+ [
590
+ ' ',
591
+ format(node.version),
592
+ ].join('')
593
+ end,
594
+ ';'
595
+ ].join(''),
596
+ *if node.interfaces and node.interfaces.length > 0
597
+ node.interfaces.map{|x| format(x)}.join("\n")
598
+ end,
599
+ *if node.constants and node.constants.length > 0
600
+ [
601
+ 'CONSTANT',
602
+ indent(node.constants.map{|x| format(x)}.join("\n")),
603
+ [
604
+ 'END_CONSTANT',
605
+ ';'
606
+ ].join('')
607
+ ].join("\n")
608
+ end,
609
+ *if node.types and node.types.length > 0
610
+ node.types.map{|x| format(x)}.join("\n")
611
+ end,
612
+ *if node.entities and node.entities.length > 0
613
+ node.entities.map{|x| format(x)}.join("\n")
614
+ end,
615
+ *if node.subtype_constraints and node.subtype_constraints.length > 0
616
+ node.subtype_constraints.map{|x| format(x)}.join("\n")
617
+ end,
618
+ *if node.functions and node.functions.length > 0
619
+ node.functions.map{|x| format(x)}.join("\n")
620
+ end,
621
+ *if node.procedures and node.procedures.length > 0
622
+ node.procedures.map{|x| format(x)}.join("\n")
623
+ end,
624
+ *if node.rules and node.rules.length > 0
625
+ node.rules.map{|x| format(x)}.join("\n")
626
+ end,
627
+ [
628
+ 'END_SCHEMA',
629
+ ';'
630
+ ].join('')
631
+ ].join("\n")
632
+ end
633
+
634
+ def format_subtype_constraint(node)
635
+ [
636
+ [
637
+ 'SUBTYPE_CONSTRAINT',
638
+ ' ',
639
+ node.id,
640
+ ' ',
641
+ 'FOR',
642
+ ' ',
643
+ format(node.applies_to),
644
+ ';'
645
+ ].join(''),
646
+ *if node.abstract
647
+ indent([
648
+ 'ABSTRACT',
649
+ ' ',
650
+ 'SUPERTYPE',
651
+ ';'
652
+ ].join(''))
653
+ end,
654
+ *if node.total_over and node.total_over.length > 0
655
+ indent([
656
+ 'TOTAL_OVER',
657
+ '(',
658
+ node.total_over.map{|x| format(x)}.join(', '),
659
+ ')',
660
+ ';'
661
+ ].join(''))
662
+ end,
663
+ *if node.supertype_expression
664
+ indent([
665
+ format(node.supertype_expression),
666
+ ';'
667
+ ].join(''))
668
+ end,
669
+ [
670
+ 'END_SUBTYPE_CONSTRAINT',
671
+ ';'
672
+ ].join('')
673
+ ].join("\n")
674
+ end
675
+
676
+ def format_type(node)
677
+ [
678
+ [
679
+ 'TYPE',
680
+ ' ',
681
+ node.id,
682
+ ' ',
683
+ '=',
684
+ ' ',
685
+ format(node.type),
686
+ ';',
687
+ ].join(''),
688
+ *if node.where and node.where.length > 0
689
+ indent([
690
+ 'WHERE',
691
+ indent(node.where.map{|x| format(x)}.join("\n"))
692
+ ].join("\n"))
693
+ end,
694
+ [
695
+ 'END_TYPE',
696
+ ';'
697
+ ].join('')
698
+ ].join("\n")
699
+ end
700
+
701
+ def format_unique(node)
702
+ [
703
+ *if node.id
704
+ [
705
+ node.id,
706
+ ' ',
707
+ ':',
708
+ ' '
709
+ ].join('')
710
+ end,
711
+ node.attributes.map{|x| format(x)}.join(', '),
712
+ ';'
713
+ ].join('')
714
+ end
715
+
716
+ def format_variable(node)
717
+ [
718
+ node.id,
719
+ ' ',
720
+ ':',
721
+ ' ',
722
+ format(node.type),
723
+ *if node.expression
724
+ [
725
+ ' ',
726
+ ':=',
727
+ ' ',
728
+ format(node.expression),
729
+ ].join('')
730
+ end,
731
+ ';'
732
+ ].join('')
733
+ end
734
+
735
+ def format_where(node)
736
+ [
737
+ *if node.id
738
+ [
739
+ node.id,
740
+ ' ',
741
+ ':',
742
+ ' '
743
+ ].join('')
744
+ end,
745
+ format(node.expression),
746
+ ';'
747
+ ].join('')
748
+ end
749
+
750
+ def format_expressions_aggregate_initializer(node)
751
+ [
752
+ '[',
753
+ node.items.map{|x| format(x)}.join(', '),
754
+ ']'
755
+ ].join('')
756
+ end
757
+
758
+ def format_expressions_aggregate_item(node)
759
+ [
760
+ format(node.expression),
761
+ ':',
762
+ format(node.repetition)
763
+ ].join('')
764
+ end
765
+
766
+ def format_expressions_attribute_reference(node)
767
+ [
768
+ format(node.ref),
769
+ '.',
770
+ format(node.attribute)
771
+ ].join('')
772
+ end
773
+
774
+ def format_expressions_binary_expression(node)
775
+ [
776
+ *if node.operand1.instance_of? Model::Expressions::BinaryExpression and OPERATOR_PRECEDENCE[node.operand1.operator] > OPERATOR_PRECEDENCE[node.operator]
777
+ '('
778
+ end,
779
+ format(node.operand1),
780
+ *if node.operand1.instance_of? Model::Expressions::BinaryExpression and OPERATOR_PRECEDENCE[node.operand1.operator] > OPERATOR_PRECEDENCE[node.operator]
781
+ ')'
782
+ end,
783
+ ' ',
784
+ case node.operator
785
+ when Model::Expressions::BinaryExpression::ADDITION then '+'
786
+ when Model::Expressions::BinaryExpression::AND then 'AND'
787
+ when Model::Expressions::BinaryExpression::ANDOR then 'ANDOR'
788
+ when Model::Expressions::BinaryExpression::COMBINE then '||'
789
+ when Model::Expressions::BinaryExpression::EQUAL then '='
790
+ when Model::Expressions::BinaryExpression::EXPONENTIATION then '**'
791
+ when Model::Expressions::BinaryExpression::GREATER_THAN then '>'
792
+ when Model::Expressions::BinaryExpression::GREATER_THAN_OR_EQUAL then '>='
793
+ when Model::Expressions::BinaryExpression::IN then 'IN'
794
+ when Model::Expressions::BinaryExpression::INSTANCE_EQUAL then ':=:'
795
+ when Model::Expressions::BinaryExpression::INSTANCE_NOT_EQUAL then ':<>:'
796
+ when Model::Expressions::BinaryExpression::INTEGER_DIVISION then 'DIV'
797
+ when Model::Expressions::BinaryExpression::LESS_THAN then '<'
798
+ when Model::Expressions::BinaryExpression::LESS_THAN_OR_EQUAL then '<='
799
+ when Model::Expressions::BinaryExpression::LIKE then 'LIKE'
800
+ when Model::Expressions::BinaryExpression::MODULO then 'MOD'
801
+ when Model::Expressions::BinaryExpression::MULTIPLICATION then '*'
802
+ when Model::Expressions::BinaryExpression::NOT_EQUAL then '<>'
803
+ when Model::Expressions::BinaryExpression::OR then 'OR'
804
+ when Model::Expressions::BinaryExpression::REAL_DIVISION then '/'
805
+ when Model::Expressions::BinaryExpression::SUBTRACTION then '-'
806
+ when Model::Expressions::BinaryExpression::XOR then 'XOR'
807
+ end,
808
+ ' ',
809
+ *if node.operand2.instance_of? Model::Expressions::BinaryExpression and OPERATOR_PRECEDENCE[node.operand2.operator] > OPERATOR_PRECEDENCE[node.operator]
810
+ '('
811
+ end,
812
+ format(node.operand2),
813
+ *if node.operand2.instance_of? Model::Expressions::BinaryExpression and OPERATOR_PRECEDENCE[node.operand2.operator] > OPERATOR_PRECEDENCE[node.operator]
814
+ ')'
815
+ end,
816
+ ].join('')
817
+ end
818
+
819
+ def format_expressions_call(node)
820
+ [
821
+ format(node.ref),
822
+ '(',
823
+ node.parameters.map{|x| format(x)}.join(', '),
824
+ ')'
825
+ ].join('')
826
+ end
827
+
828
+ def format_expressions_entity_constructor(node)
829
+ [
830
+ format(node.entity),
831
+ '(',
832
+ node.parameters.map{|x| format(x)}.join(', '),
833
+ ')'
834
+ ].join('')
835
+ end
836
+
837
+ def format_expressions_group_reference(node)
838
+ [
839
+ format(node.ref),
840
+ '\\',
841
+ format(node.entity)
842
+ ].join('')
843
+ end
844
+
845
+ def format_expressions_index_reference(node)
846
+ [
847
+ format(node.ref),
848
+ '[',
849
+ format(node.index1),
850
+ *if node.index2
851
+ [
852
+ ':',
853
+ format(node.index2)
854
+ ].join('')
855
+ end,
856
+ ']'
857
+ ].join('')
858
+ end
859
+
860
+ def format_expressions_interval(node)
861
+ [
862
+ '{',
863
+ format(node.low),
864
+ ' ',
865
+ case node.operator1
866
+ when Model::Expressions::BinaryExpression::LESS_THAN then '<'
867
+ when Model::Expressions::BinaryExpression::LESS_THAN_OR_EQUAL then '<='
868
+ end,
869
+ ' ',
870
+ format(node.item),
871
+ ' ',
872
+ case node.operator2
873
+ when Model::Expressions::BinaryExpression::LESS_THAN then '<'
874
+ when Model::Expressions::BinaryExpression::LESS_THAN_OR_EQUAL then '<='
875
+ end,
876
+ ' ',
877
+ format(node.high),
878
+ '}'
879
+ ].join('')
880
+ end
881
+
882
+ def format_expressions_query_expression(node)
883
+ [
884
+ 'QUERY',
885
+ '(',
886
+ node.id,
887
+ ' ',
888
+ '<*',
889
+ ' ',
890
+ format(node.aggregate_source),
891
+ ' ',
892
+ '|',
893
+ ' ',
894
+ format(node.expression),
895
+ *format_remarks(node).instance_eval{|x| x.length > 0 ? ["\n", *x, "\n"] : x},
896
+ ')'
897
+ ].join('')
898
+ end
899
+
900
+ def format_expressions_simple_reference(node)
901
+ node.id
902
+ end
903
+
904
+ def format_expressions_unary_expression(node)
905
+ [
906
+ case node.operator
907
+ when Model::Expressions::UnaryExpression::MINUS then '-'
908
+ when Model::Expressions::UnaryExpression::NOT then 'NOT'
909
+ when Model::Expressions::UnaryExpression::PLUS then '+'
910
+ end,
911
+ if node.operator == Model::Expressions::UnaryExpression::NOT
912
+ ' '
913
+ end,
914
+ *if node.operand.instance_of? Model::Expressions::BinaryExpression
915
+ '('
916
+ end,
917
+ format(node.operand),
918
+ *if node.operand.instance_of? Model::Expressions::BinaryExpression
919
+ ')'
920
+ end
921
+ ].join('')
922
+ end
923
+
924
+ def format_literals_binary(node)
925
+ [
926
+ '%',
927
+ node.value
928
+ ].join('')
929
+ end
930
+
931
+ def format_literals_integer(node)
932
+ node.value
933
+ end
934
+
935
+ def format_literals_logical(node)
936
+ case node.value
937
+ when Model::Literals::Logical::TRUE then 'TRUE'
938
+ when Model::Literals::Logical::FALSE then 'FALSE'
939
+ when Model::Literals::Logical::UNKNOWN then 'UNKNOWN'
940
+ end
941
+ end
942
+
943
+ def format_literals_real(node)
944
+ node.value
945
+ end
946
+
947
+ def format_literals_string(node)
948
+ if node.encoded
949
+ [
950
+ "\"",
951
+ node.value,
952
+ "\""
953
+ ].join('')
954
+ else
955
+ [
956
+ "'",
957
+ node.value,
958
+ "'"
959
+ ].join('')
960
+ end
961
+ end
962
+
963
+ def format_statements_alias(node)
964
+ [
965
+ [
966
+ 'ALIAS',
967
+ ' ',
968
+ node.id,
969
+ ' ',
970
+ 'FOR',
971
+ ' ',
972
+ format(node.expression),
973
+ ';'
974
+ ].join(''),
975
+ *if node.statements and node.statements.length > 0
976
+ indent(node.statements.map{|x| format(x)}.join("\n"))
977
+ end,
978
+ *format_remarks(node),
979
+ [
980
+ 'END_ALIAS',
981
+ ';'
982
+ ].join('')
983
+ ].join("\n")
984
+ end
985
+
986
+ def format_statements_assignment(node)
987
+ [
988
+ format(node.ref),
989
+ ' ',
990
+ ':=',
991
+ ' ',
992
+ format(node.expression),
993
+ ';'
994
+ ].join('')
995
+ end
996
+
997
+ def format_statements_call(node)
998
+ [
999
+ format(node.ref),
1000
+ *if node.parameters and node.parameters.length > 0
1001
+ [
1002
+ '(',
1003
+ node.parameters.map{|x| format(x)}.join(', '),
1004
+ ')'
1005
+ ].join('')
1006
+ end,
1007
+ ';'
1008
+ ].join('')
1009
+ end
1010
+
1011
+ def format_statements_case(node)
1012
+ [
1013
+ [
1014
+ 'CASE',
1015
+ ' ',
1016
+ format(node.expression),
1017
+ ' ',
1018
+ 'OF'
1019
+ ].join(''),
1020
+ *if node.actions and node.actions.length > 0
1021
+ node.actions.map{|x| format(x)}
1022
+ end,
1023
+ *if node.otherwise_statement
1024
+ [
1025
+ [
1026
+ 'OTHERWISE',
1027
+ ' ',
1028
+ ':'
1029
+ ].join(''),
1030
+ indent(format(node.otherwise_statement))
1031
+ ]
1032
+ end,
1033
+ [
1034
+ 'END_CASE',
1035
+ ';'
1036
+ ].join('')
1037
+ ].join("\n")
1038
+ end
1039
+
1040
+ def format_statements_case_action(node)
1041
+ [
1042
+ [
1043
+ node.labels.map{|x| format(x)}.join(', '),
1044
+ ' ',
1045
+ ':'
1046
+ ].join(''),
1047
+ indent(format(node.statement))
1048
+ ].join("\n")
1049
+ end
1050
+
1051
+ def format_statements_compound(node)
1052
+ [
1053
+ 'BEGIN',
1054
+ *if node.statements and node.statements.length > 0
1055
+ indent(node.statements.map{|x| format(x)}.join("\n"))
1056
+ end,
1057
+ [
1058
+ 'END',
1059
+ ';'
1060
+ ].join('')
1061
+ ].join("\n")
1062
+ end
1063
+
1064
+ def format_statements_escape(node)
1065
+ [
1066
+ 'ESCAPE',
1067
+ ';'
1068
+ ].join('')
1069
+ end
1070
+
1071
+ def format_statements_if(node)
1072
+ [
1073
+ [
1074
+ 'IF',
1075
+ ' ',
1076
+ format(node.expression),
1077
+ ' ',
1078
+ 'THEN'
1079
+ ].join(''),
1080
+ *if node.statements and node.statements.length > 0
1081
+ indent(node.statements.map{|x| format(x)}.join("\n"))
1082
+ end,
1083
+ *if node.else_statements and node.else_statements.length > 0
1084
+ [
1085
+ 'ELSE',
1086
+ indent(node.else_statements.map{|x| format(x)}.join("\n")),
1087
+ ].join("\n")
1088
+ end,
1089
+ [
1090
+ 'END_IF',
1091
+ ';'
1092
+ ].join('')
1093
+ ].join("\n")
1094
+ end
1095
+
1096
+ def format_statements_null(node)
1097
+ ';'
1098
+ end
1099
+
1100
+ def format_statements_repeat(node)
1101
+ [
1102
+ [
1103
+ 'REPEAT',
1104
+ *if node.id
1105
+ [
1106
+ ' ',
1107
+ node.id,
1108
+ ' ',
1109
+ ':=',
1110
+ ' ',
1111
+ format(node.bound1),
1112
+ ' ',
1113
+ 'TO',
1114
+ ' ',
1115
+ format(node.bound2),
1116
+ *if node.increment
1117
+ [
1118
+ ' ',
1119
+ 'BY',
1120
+ ' ',
1121
+ format(node.increment)
1122
+ ].join('')
1123
+ end
1124
+ ].join('')
1125
+ end,
1126
+ *if node.while_expression
1127
+ [
1128
+ ' ',
1129
+ 'WHILE',
1130
+ ' ',
1131
+ format(node.while_expression)
1132
+ ].join('')
1133
+ end,
1134
+ *if node.until_expression
1135
+ [
1136
+ ' ',
1137
+ 'UNTIL',
1138
+ ' ',
1139
+ format(node.until_expression)
1140
+ ].join('')
1141
+ end,
1142
+ ';'
1143
+ ].join(''),
1144
+ *if node.statements and node.statements.length > 0
1145
+ indent(node.statements.map{|x| format(x)}.join("\n"))
1146
+ end,
1147
+ *format_remarks(node),
1148
+ [
1149
+ 'END_REPEAT',
1150
+ ';'
1151
+ ].join('')
1152
+ ].join("\n")
1153
+ end
1154
+
1155
+ def format_statements_return(node)
1156
+ [
1157
+ 'RETURN',
1158
+ *if node.expression
1159
+ [
1160
+ ' ',
1161
+ '(',
1162
+ format(node.expression),
1163
+ ')'
1164
+ ].join('')
1165
+ end,
1166
+ ';'
1167
+ ].join('')
1168
+ end
1169
+
1170
+ def format_statements_skip(node)
1171
+ [
1172
+ 'SKIP',
1173
+ ';'
1174
+ ].join('')
1175
+ end
1176
+
1177
+ def format_types_aggregate(node)
1178
+ 'AGGREGATE'
1179
+ end
1180
+
1181
+ def format_types_array(node)
1182
+ [
1183
+ 'ARRAY',
1184
+ *if node.bound1 and node.bound2
1185
+ [
1186
+ ' ',
1187
+ '[',
1188
+ format(node.bound1),
1189
+ ':',
1190
+ format(node.bound2),
1191
+ ']',
1192
+ ].join('')
1193
+ end,
1194
+ ' ',
1195
+ 'OF',
1196
+ *if node.optional
1197
+ [
1198
+ ' ',
1199
+ 'OPTIONAL'
1200
+ ].join('')
1201
+ end,
1202
+ *if node.unique
1203
+ [
1204
+ ' ',
1205
+ 'UNIQUE'
1206
+ ].join('')
1207
+ end,
1208
+ ' ',
1209
+ format(node.base_type)
1210
+ ].join('')
1211
+ end
1212
+
1213
+ def format_types_bag(node)
1214
+ [
1215
+ 'BAG',
1216
+ *if node.bound1 and node.bound2
1217
+ [
1218
+ ' ',
1219
+ '[',
1220
+ format(node.bound1),
1221
+ ':',
1222
+ format(node.bound2),
1223
+ ']',
1224
+ ].join('')
1225
+ end,
1226
+ ' ',
1227
+ 'OF',
1228
+ ' ',
1229
+ format(node.base_type)
1230
+ ].join('')
1231
+ end
1232
+
1233
+ def format_types_binary(node)
1234
+ [
1235
+ 'BINARY',
1236
+ *if node.width
1237
+ [
1238
+ ' ',
1239
+ '(',
1240
+ format(node.width),
1241
+ ')'
1242
+ ].join('')
1243
+ end,
1244
+ *if node.fixed
1245
+ [
1246
+ ' ',
1247
+ 'FIXED'
1248
+ ].join('')
1249
+ end
1250
+ ].join('')
1251
+ end
1252
+
1253
+ def format_types_boolean(node)
1254
+ 'BOOLEAN'
1255
+ end
1256
+
1257
+ def format_types_enumeration(node)
1258
+ [
1259
+ *if node.extensible
1260
+ [
1261
+ 'EXTENSIBLE',
1262
+ ' '
1263
+ ].join('')
1264
+ end,
1265
+ 'ENUMERATION',
1266
+ *if node.items and node.items.length > 0
1267
+ [
1268
+ ' ',
1269
+ 'OF',
1270
+ ' ',
1271
+ '(',
1272
+ node.items.map{|x| format(x)}.join(', '),
1273
+ ')'
1274
+ ].join('')
1275
+ end,
1276
+ *if node.extension_type
1277
+ [
1278
+ ' ',
1279
+ 'BASED_ON',
1280
+ ' ',
1281
+ format(node.extension_type)
1282
+ ].join('')
1283
+ end,
1284
+ *if node.extension_items and node.extension_items.length > 0
1285
+ [
1286
+ ' ',
1287
+ 'WITH',
1288
+ ' ',
1289
+ '(',
1290
+ node.extension_items.map{|x| format(x)}.join(', '),
1291
+ ')'
1292
+ ].join('')
1293
+ end
1294
+ ].join('')
1295
+ end
1296
+
1297
+ def format_types_generic_entity(node)
1298
+ 'GENERIC_ENTITY'
1299
+ end
1300
+
1301
+ def format_types_generic(node)
1302
+ 'GENERIC'
1303
+ end
1304
+
1305
+ def format_types_integer(node)
1306
+ 'INTEGER'
1307
+ end
1308
+
1309
+ def format_types_list(node)
1310
+ [
1311
+ 'LIST',
1312
+ *if node.bound1 and node.bound2
1313
+ [
1314
+ ' ',
1315
+ '[',
1316
+ format(node.bound1),
1317
+ ':',
1318
+ format(node.bound2),
1319
+ ']',
1320
+ ].join('')
1321
+ end,
1322
+ ' ',
1323
+ 'OF',
1324
+ *if node.unique
1325
+ [
1326
+ ' ',
1327
+ 'UNIQUE'
1328
+ ].join('')
1329
+ end,
1330
+ ' ',
1331
+ format(node.base_type)
1332
+ ].join('')
1333
+ end
1334
+
1335
+ def format_types_logical(node)
1336
+ 'LOGICAL'
1337
+ end
1338
+
1339
+ def format_types_number(node)
1340
+ 'NUMBER'
1341
+ end
1342
+
1343
+ def format_types_real(node)
1344
+ [
1345
+ 'REAL',
1346
+ *if node.precision
1347
+ [
1348
+ ' ',
1349
+ '(',
1350
+ format(node.precision),
1351
+ ')'
1352
+ ].join('')
1353
+ end
1354
+ ].join('')
1355
+ end
1356
+
1357
+ def format_types_select(node)
1358
+ [
1359
+ *if node.extensible
1360
+ [
1361
+ 'EXTENSIBLE',
1362
+ ' '
1363
+ ].join('')
1364
+ end,
1365
+ *if node.generic_entity
1366
+ [
1367
+ 'GENERIC_ENTITY',
1368
+ ' '
1369
+ ].join('')
1370
+ end,
1371
+ 'SELECT',
1372
+ *if node.items and node.items.length > 0
1373
+ [
1374
+ ' ',
1375
+ '(',
1376
+ node.items.map{|x| format(x)}.join(', '),
1377
+ ')'
1378
+ ].join('')
1379
+ end,
1380
+ *if node.extension_type
1381
+ [
1382
+ ' ',
1383
+ 'BASED_ON',
1384
+ ' ',
1385
+ format(node.extension_type)
1386
+ ].join('')
1387
+ end,
1388
+ *if node.extension_items and node.extension_items.length > 0
1389
+ [
1390
+ ' ',
1391
+ 'WITH',
1392
+ ' ',
1393
+ '(',
1394
+ node.extension_items.map{|x| format(x)}.join(', '),
1395
+ ')'
1396
+ ].join('')
1397
+ end
1398
+ ].join('')
1399
+ end
1400
+
1401
+ def format_types_set(node)
1402
+ [
1403
+ 'SET',
1404
+ *if node.bound1 and node.bound2
1405
+ [
1406
+ ' ',
1407
+ '[',
1408
+ format(node.bound1),
1409
+ ':',
1410
+ format(node.bound2),
1411
+ ']',
1412
+ ].join('')
1413
+ end,
1414
+ ' ',
1415
+ 'OF',
1416
+ ' ',
1417
+ format(node.base_type)
1418
+ ].join('')
1419
+ end
1420
+
1421
+ def format_types_string(node)
1422
+ [
1423
+ 'STRING',
1424
+ *if node.width
1425
+ [
1426
+ ' ',
1427
+ '(',
1428
+ format(node.width),
1429
+ ')'
1430
+ ].join('')
1431
+ end,
1432
+ *if node.fixed
1433
+ [
1434
+ ' ',
1435
+ 'FIXED'
1436
+ ].join('')
1437
+ end
1438
+ ].join('')
1439
+ end
1440
+
1441
+ def indent(str)
1442
+ str.split("\n").map{|x| "#{INDENT}#{x}"}.join("\n")
1443
+ end
1444
+
1445
+ def format_remark_ref(node)
1446
+ [
1447
+ *if node.class.method_defined? :parent and node.parent.class.method_defined? :id and node.parent != node
1448
+ [
1449
+ format_remark_ref(node.parent),
1450
+ '.'
1451
+ ].join('')
1452
+ end,
1453
+ node.id,
1454
+ ].join('')
1455
+ end
1456
+
1457
+ def format_remark(node, remark)
1458
+ if remark.include?("\n")
1459
+ [
1460
+ [
1461
+ '(*',
1462
+ '"',
1463
+ format_remark_ref(node),
1464
+ '"',
1465
+ ].join(''),
1466
+ remark,
1467
+ '*)'
1468
+ ].join("\n")
1469
+ else
1470
+ [
1471
+ '--',
1472
+ '"',
1473
+ format_remark_ref(node),
1474
+ '"',
1475
+ ' ',
1476
+ remark
1477
+ ].join('')
1478
+ end
1479
+ end
1480
+
1481
+ def format_remarks(node)
1482
+ if node.class.method_defined? :remarks and node.remarks and node.remarks.length > 0
1483
+ node.remarks.map do |remark|
1484
+ format_remark(node, remark)
1485
+ end
1486
+ else
1487
+ []
1488
+ end
1489
+ end
1490
+
1491
+ def format_scope_remarks(node)
1492
+ [
1493
+ *format_remarks(node),
1494
+ *if node.class.method_defined? :children
1495
+ node.children.select{|x| x.parent == node}.flat_map{|x| format_scope_remarks(x)}
1496
+ end
1497
+ ]
1498
+ end
1499
+ end
1500
+ end
1450
1501
  end