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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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,433 +1,433 @@
1
- require 'erb'
2
- # EXPRESS to UML 2 Mapping - Topcased and Eclipse UML version
3
- # Version 0.2, contribution by Engisis
4
- #
5
- # This function navigates the EXPRESS STEPMod Model and performs a structural EXPRESS-to-UML2 (2.1.2) mapping using Ruby ERB templates.
6
- # The output is in XMI 2.1 syntax in a file named <schema>.xmi if one schema input and 'Model.xmi' if more than one schema input.
7
- # This XMI file is then compatible with the open source Eclipse UML implementation (www.eclipse.org/uml2/) and the open source UML2 tools based
8
- # on top of it (TopCased, Papyrus, etc.)
9
- #
10
- # Integer, Boolean, String, Real, Number, Binary, Logical -> PrimitiveType
11
- # Schema -> Package
12
- # Entity (subtype of) -> Class (Generalization)
13
- # Select Type -> Interface and InterfaceRealization
14
- # Enum Type -> Enumeration and EnumerationLiteral
15
- # Explicit Attribute (Optional) Primitive or Enum -> Property owned by Class (with lower)
16
- # Explicit Attribute (Optional) Entity -> Property owned by Class (with lower) plus Association owning other end property
17
- # Explicit Attribute 1-D SET, BAG, LIST of Select or Entity -> Property owned by Class (with lower)
18
- # plus Association owning other end property and multiplicity, unique and ordered set
19
- # Explicit Attribute 1-D SET, BAG, LIST of Primitive or Enum -> Property owned by Class and multiplicity, unique and ordered set
20
- # Explicit Attribute of Entity/Select/Builtin Redeclaration (Renamed) -> Property with (new) name that redefines inherited Property
21
- # Inverse Attribute Partial Support (REMOVED for now)
22
- # USE or REFERENCE (even with named items) -> UML PackageImport between Packages
23
- #
24
- #######################################################################################
25
-
26
- def map_from_express( mapinput )
27
-
28
- # Enter file name here to override defaults (<schema>.xmi if one schema, and Model.xmi if more than one)
29
- output_xmi_filename = nil
30
-
31
- # XMI File Start Template (includes datatypes for builtin with no direct UML equivalent)
32
- prim_types = ['STRING', 'NUMBER', 'BINARY', 'REAL', 'LOGICAL', 'INTEGER', 'BOOLEAN']
33
- overall_start_template = %{<?xml version="1.0" encoding="UTF-8"?>
34
- <uml:Model xmi:version = "2.1" xmlns:xmi = "http://schema.omg.org/spec/XMI/2.1" xmlns:uml = "http://www.eclipse.org/uml2/3.0.0/UML" name = "UMLfromEXPRESS" xmi:id = "_0">
35
- <packagedElement xmi:type="uml:PrimitiveType" xmi:id="REAL" name="Real" />
36
- <packagedElement xmi:type="uml:PrimitiveType" xmi:id="NUMBER" name="Number" />
37
- <packagedElement xmi:type="uml:PrimitiveType" xmi:id="BINARY" name="Binary" />
38
- <packagedElement xmi:type="uml:PrimitiveType" xmi:id="LOGICAL" name="Logical" />
39
- <packagedElement xmi:type="uml:PrimitiveType" xmi:id="STRING" name="String" />
40
- <packagedElement xmi:type="uml:PrimitiveType" xmi:id="INTEGER" name="Integer" />
41
- <packagedElement xmi:type="uml:PrimitiveType" xmi:id="BOOLEAN" name="Boolean" />}
42
-
43
- # XMI File End Template
44
- overall_end_template = %{ </uml:Model>}
45
-
46
- # SCHEMA Start Template
47
- schema_start_template = %{<packagedElement xmi:type = "uml:Package" xmi:id = "_1_<%= schema.name %>" name = "<%= schema.name %>" visibility = "public">}
48
-
49
- # SCHEMA INTERFACE Template
50
- schema_interface_template = %{<packageImport xmi:type='uml:PackageImport' xmi:id='_2_<%= schema.name %>-<%= interfaced_schema.foreign_schema_id %>' visibility='public' importedPackage='_1_<%= interfaced_schema.foreign_schema_id %>'/>}
51
-
52
- # SCHEMA End Template
53
- schema_end_template = %{</packagedElement>}
54
-
55
- # ENTITY Start Template
56
- entity_start_template = %{<packagedElement xmi:type = "uml:Class" xmi:id = "<%= xmiid %>" name = "<%= entity.name %>" isAbstract = "FALSE" visibility = "public">}
57
-
58
- # SUBTYPE OF Template
59
- supertype_template = %{<generalization xmi:type="uml:Generalization" xmi:id="<%= xmiid %>" general="<%= xmiid_supertype %>"/>}
60
-
61
- # ENTITY End Template
62
- entity_end_template = %{</packagedElement>}
63
-
64
- # ENUMERATION Start Template
65
- enum_start_template = %{<packagedElement xmi:type = "uml:Enumeration" xmi:id = "<%= type_xmiid %>" name = "<%= enum.name %>">}
66
-
67
- # ENUMERATION ITEM Template
68
- enum_item_template = %{<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="<%= enumitem_xmiid %>" name="<%= enumitem %>" classifier="<%= type_xmiid %>" enumeration="<%= enumitem_xmiid %>">
69
- <specification xmi:type="uml:LiteralInteger" xmi:id="<%= enumitem_xmiid + '_specification' %> "/>
70
- </ownedLiteral>}
71
-
72
- # ENUMERATION End Template
73
- enum_end_template = %{</packagedElement>}
74
-
75
- # SELECT Start Template
76
- select_start_template = %{<packagedElement xmi:type = "uml:Interface" xmi:id = "<%= xmiid %>" name = "<%= select.name %>" isAbstract = "TRUE" visibility = "public">}
77
-
78
- # SELECT ITEM IS ENTITY Template
79
- selectitem_entity_template = %{ <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="<%= xmiid %>" supplier="<%= xmiid_supplier %>" client="<%= xmiid_client %>" contract="<%= xmiid_supplier %>" implementingClassifier="<%= xmiid_client %>"/>}
80
-
81
- # SELECT ITEM IS SELECT Template
82
- selectitem_select_template = %{ <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="<%= xmiid %>" supplier="<%= xmiid_supplier %>" client="<%= xmiid_client %>" contract="<%= xmiid_supplier %>" implementingClassifier="<%= xmiid_client %>"/>}
83
-
84
- # SELECT End Template
85
- select_end_template = %{</packagedElement>}
86
-
87
- # Template covering abstract entity types
88
- abstract_entity_template = %{}
89
-
90
- # Template covering the output file contents for each attribute that is an aggregate
91
- attribute_aggregate_template = %{}
92
-
93
- # Template covering the output file contents for each attribute that is an aggregate of select of entity
94
- attribute_aggregate_entity_select_template = %{}
95
-
96
- # Template covering the output file contents for each attribute that is a select of entity
97
- attribute_entity_select_template = %{}
98
-
99
- # Template covering the output file contents for each attribute that is an entity
100
- # the complex entities are not specified as a property but as an ownedEnd - Eclipse UML needs them in the association
101
- attribute_entity_template = %{
102
- <% if prim_types.include? domain_xmiid %> <ownedAttribute xmi:type="uml:Property" xmi:id="<%= xmiid %>" name="<%= attr.name %>" visibility="public" isOrdered='<%= islist %>' isUnique='<%= isset %>' isLeaf='false' isStatic='false' isReadOnly='false' isDerived='false' isDerivedUnion='false' type="<%= domain_xmiid %>" aggregation="none" association="<%= assoc_xmiid %>" <% if attr.redeclare_entity %>redefinedProperty="<%= redefined_xmiid %>"<% end %>>
103
- <% if lower == '0' %><lowerValue xmi:type="uml:LiteralInteger" xmi:id="<%= xmiid %>-lowerValue"/><% end %>
104
- <% if lower != '0' and lower != '1' %><lowerValue xmi:type="uml:LiteralInteger" xmi:id="<%= xmiid %>-lowerValue" value="<%= lower %>"/><% end %>
105
- <% if upper != '1' %><upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="<%= xmiid %>-upperValue" value="<%= upper %>"/><% end %>
106
- </ownedAttribute>
107
- <% end %>
108
- }
109
-
110
-
111
- # add Association attributes here
112
- # EXPLICIT ATTRIBUTE ENTITY Create Association Template
113
- # add a ownerEnd containing the complex entity
114
- attribute_entity_association_template = %{<packagedElement xmi:type="uml:Association" xmi:id="<%= xmiid %>" name="" visibility='public' isLeaf='false' isAbstract='false' isDerived='false' memberEnd="<%= domain_prop_xmiid %> <%= attr_prop_xmiid %>" navigableOwnedEnd="<%= domain_prop_xmiid %>">
115
- <ownedEnd xmi:type="uml:Property" xmi:id="<%= domain_prop_xmiid %>" type="<%= domain_xmiid %>" name="<%= domain_attr_name %>" association="<%= xmiid %>" visibility='public'>
116
- <% if lower == '0' %><lowerValue xmi:type="uml:LiteralInteger" xmi:id="<%= domain_prop_xmiid %>-lowerValue"/>
117
- <% elsif lower != '0' and lower != '1' %><lowerValue xmi:type="uml:LiteralInteger" xmi:id="<%= domain_prop_xmiid %>-lowerValue" value="<%= lower %>"/>
118
- <% else %><lowerValue xmi:type="uml:LiteralInteger" xmi:id="<%= domain_prop_xmiid %>-lowerValue" value="1"/>
119
- <% end %>
120
- <% if upper != '1' %><upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="<%= domain_prop_xmiid %>-upperValue" value="<%= upper %>"/>
121
- <% else %><upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="<%= domain_prop_xmiid %>-upperValue" value="1"/>
122
- <% end %>
123
- </ownedEnd>
124
- <ownedEnd xmi:type="uml:Property" xmi:id="<%= attr_prop_xmiid %>" type="<%= attr_type %>" name="" association="<%= xmiid %>" visibility='public'>
125
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="<%= attr_prop_xmiid %>-lowerValue" value="1"/>
126
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="<%= attr_prop_xmiid %>-upperValue" value="1"/>
127
- </ownedEnd>
128
- </packagedElement>}
129
-
130
-
131
- # Template covering the output file contents for each attribute
132
- attribute_template = %{}
133
-
134
- # EXPLICIT ATTRIBUTE SIMPLE TYPE Template
135
- attribute_builtin_template = %{ <ownedAttribute xmi:type="uml:Property" xmi:id="<%= xmiid %>" name="<%= attr.name %>" visibility="public" type="<%= attr.domain %>" <% if attr.redeclare_entity %>redefinedProperty="<%= redefined_xmiid %>"<% end %>>
136
- <% if lower == '0' or attr.isOptional == TRUE %><lowerValue xmi:type="uml:LiteralInteger" xmi:id="<%= xmiid %>-lowerValue"/><% end %>
137
- <% if lower != '0' and lower != '1' %><lowerValue xmi:type="uml:LiteralInteger" xmi:id="<%= xmiid %>-lowerValue" value="<%= lower %>"/><% end %>
138
- <% if upper != '1' %><upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="<%= xmiid %>-upperValue" value="<%= upper %>"/><% end %>
139
- </ownedAttribute>}
140
-
141
- # EXPLICIT ATTRIBUTE ENUM and TYPE Template
142
- attribute_enum_type_template = %{ <ownedAttribute xmi:type="uml:Property" xmi:id="_<%= xmiid %>" name="<%= attr.name %>" visibility="public" type="<%= type_xmiid %>" isOrdered='<%= islist %>' isUnique='<%= isset %>' >
143
- <% if lower == '0' or attr.isOptional == TRUE %><lowerValue xmi:type="uml:LiteralInteger" xmi:id="<%= xmiid %>-lowerValue"/><% end %>
144
- <% if lower != '0' and lower != '1' %><lowerValue xmi:type="uml:LiteralInteger" xmi:id="<%= xmiid %>-lowerValue" value="<%= lower %>"/><% end %>
145
- <% if upper != '1' %><upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="<%= xmiid %>-upperValue" value="<%= upper %>"/><% end %>
146
- </ownedAttribute>}
147
-
148
- # TYPE Template
149
- type_template = %{<packagedElement xmi:type="uml:PrimitiveType" xmi:id="_<%= schema.name %>-<%= type.name %>" name="<%= type.name %>" >
150
- <generalization xmi:type="uml:Generalization" xmi:id="_supertype_<%= schema.name %>-<%= type.name %>" general="<%= type.domain %>"/>
151
- </packagedElement>}
152
-
153
-
154
- #############################################################################################
155
- # Set up list of schemas to process, input may be a repository containing schemas or a single schema
156
- #############################################################################################
157
-
158
- if mapinput.kind_of? EXPSM::Repository
159
- schema_list = mapinput.schemas
160
- elsif mapinput.kind_of? EXPSM::SchemaDefinition
161
- schema_list = [mapinput]
162
- else
163
- puts "ERROR : map_from_express input no Repository instance or Schema instance"
164
- exit
165
- end
166
-
167
- # Set up XMI output file
168
-
169
- if schema_list.size == 1 and output_xmi_filename == nil
170
- schema = schema_list[0]
171
- output_xmi_filename = schema.name.to_s + ".xmi"
172
- elsif output_xmi_filename == nil
173
- output_xmi_filename = 'Model.xmi'
174
- end
175
-
176
- file = File.new(output_xmi_filename, "w")
177
- puts 'reeper : Writing output to file ' + output_xmi_filename
178
-
179
- # Evaluate and write file start template
180
- res = ERB.new(overall_start_template)
181
- t = res.result(binding)
182
- file.puts t
183
-
184
- for schema in schema_list
185
-
186
- # Evaluate and write schema start template
187
- res = ERB.new(schema_start_template)
188
- t = res.result(binding)
189
- file.puts t
190
-
191
- interfaced_schema_list = schema.contents.find_all{ |e| e.instance_of? EXPSM::InterfaceSpecification}
192
-
193
- for interfaced_schema in interfaced_schema_list
194
-
195
- # Evaluate and write schema interface template
196
- res = ERB.new(schema_interface_template)
197
- t = res.result(binding)
198
- file.puts t
199
-
200
- end
201
-
202
- # Map EXPRESS TYPE of Builtin
203
- type_list = schema.contents.find_all{ |e| e.instance_of? EXPSM::Type and e.isBuiltin}
204
- for type in type_list
205
- xmiid = '_' + schema.name + '-' + type.name
206
- res = ERB.new(type_template)
207
- t = res.result(binding)
208
- file.puts t
209
- end
210
-
211
- # Map EXPRESS Enumeration Types
212
- enum_list = schema.contents.find_all{ |e| e.instance_of? EXPSM::TypeEnum }
213
- for enum in enum_list
214
-
215
- # Evaluate and write TYPE Enum start template
216
- type_xmiid = '_' + schema.name + '-' + enum.name
217
- res = ERB.new(enum_start_template)
218
- t = res.result(binding)
219
- file.puts t
220
-
221
- # Evaluate and write Enum Item template for each item
222
- enumitem_name_list = enum.items.scan(/\w+/)
223
- for enumitem in enumitem_name_list
224
- enumitem_xmiid = '_1_enumitem_' + schema.name + '-' + enum.name + '-' + enumitem
225
- res = ERB.new(enum_item_template)
226
- t = res.result(binding)
227
- file.puts t
228
- end
229
-
230
- # Evaluate and write TYPE Enum end template
231
- res = ERB.new(enum_end_template)
232
- t = res.result(binding)
233
- file.puts t
234
- end
235
-
236
- # Map EXPRESS TYPE Selects
237
- select_list = schema.contents.find_all{ |e| e.instance_of? EXPSM::TypeSelect }
238
- for select in select_list
239
-
240
- # Evaluate and write TYPE Select start template
241
- xmiid = '_' + schema.name + '-' + select.name
242
- res = ERB.new(select_start_template)
243
- t = res.result(binding)
244
- file.puts t
245
-
246
- # Evaluate and write Select Item template for each item (maps to UML same as EXPRESS supertype)
247
- for superselect in select_list
248
- if superselect.selectitems_array.include?(select)
249
- xmiid = '_2_superselect_' + schema.name + '-' + select.name + '-' + superselect.name
250
- xmiid_supertype = '_' + schema.name + '-' + superselect.name
251
- res = ERB.new(supertype_template)
252
- t = res.result(binding)
253
- file.puts t
254
- end
255
- end
256
-
257
- # Evaluate and write TYPE Select end template
258
- res = ERB.new(select_end_template)
259
- t = res.result(binding)
260
- file.puts t
261
- end
262
-
263
- entity_list = schema.contents.find_all{ |e| e.kind_of? EXPSM::Entity }
264
-
265
- # Map EXPRESS Explicit Attribute resulting UML Association (the Association is referenced from Class resulting from Entity)
266
- for entity in entity_list
267
- attr_list = entity.attributes.find_all{ |e| e.kind_of? EXPSM::Explicit }
268
- for attr in attr_list
269
-
270
- if NamedType.find_by_name( attr.domain ).kind_of? EXPSM::Entity or NamedType.find_by_name( attr.domain ).kind_of? EXPSM::TypeSelect
271
- xmiid = '_1_association_' + schema.name + '-' + entity.name + '-' + attr.name
272
- attr_xmiid = '_2_attr_' + schema.name + '-' + entity.name + '-' + attr.name
273
- attr_prop_xmiid = '_2_attr_' + schema.name + '-' + entity.name + '-' + attr.name + "-end"
274
-
275
- # type of the entity
276
- attr_type = '_' + schema.name + '-' + entity.name
277
-
278
- # type of the domain
279
- domain_xmiid = '_' + schema.name + '-' + NamedType.find_by_name( attr.domain ).name
280
- domain_prop_xmiid = '_' + schema.name + '-' + NamedType.find_by_name( attr.domain ).name + '-' + attr.name + "-end"
281
- # name of the attr
282
- domain_attr_name = attr.name
283
-
284
- owner_xmiid = '_' + schema.name + '-' + entity.name
285
-
286
- # association lower/upper
287
- lower = '1'
288
- upper = '1'
289
- isset = 'true'
290
- islist = 'false'
291
- if attr.instance_of? EXPSM::ExplicitAggregate and attr.rank == 1
292
- upper = attr.dimensions[0].upper
293
- if upper == '?'
294
- upper = '*'
295
- end
296
- lower = attr.dimensions[0].lower
297
- if attr.dimensions[0].aggrtype == 'LIST'
298
- islist = 'true'
299
- end
300
- if attr.dimensions[0].aggrtype == 'BAG'
301
- isset = 'false'
302
- end
303
- if attr.dimensions[0].aggrtype == 'LIST' and !attr.dimensions[0].isUnique
304
- isset = 'false'
305
- end
306
- end
307
- if attr.isOptional == TRUE
308
- lower = '0'
309
- end
310
-
311
- res = ERB.new(attribute_entity_association_template)
312
- t = res.result(binding)
313
- file.puts t
314
- end
315
- end
316
- end
317
-
318
- # Map EXPRESS Entity Types
319
- for entity in entity_list
320
-
321
- # Evaluate and write ENTITY start template
322
- xmiid = '_' + schema.name + '-' + entity.name
323
- res = ERB.new(entity_start_template)
324
- t = res.result(binding)
325
- file.puts t
326
-
327
- # Map Entity is SUBTYPE OF (i.e. list of supertypes)
328
- for supertype in entity.supertypes_array
329
- xmiid = '_2_supertype_' + schema.name + '-' + entity.name + '-' + supertype.name
330
- xmiid_supertype = '_' + schema.name + '-' + supertype.name
331
- res = ERB.new(supertype_template)
332
- t = res.result(binding)
333
- file.puts t
334
- end
335
-
336
- # Map TYPE Select has Entity as item
337
- for select in select_list
338
- if select.selectitems_array.include?(entity)
339
- xmiid = '_2_selectitem_' + schema.name + '-' + entity.name + '-' + select.name
340
- xmiid_supplier = '_' + schema.name + '-' + select.name
341
- xmiid_client = '_' + schema.name + '-' + entity.name
342
- res = ERB.new(selectitem_entity_template)
343
- t = res.result(binding)
344
- file.puts t
345
- end
346
- end
347
-
348
- # Map EXPRESS Explicit Attributes
349
- attr_list = entity.attributes.find_all{ |e| e.kind_of? EXPSM::Explicit }
350
- for attr in attr_list
351
- xmiid = '_2_attr_' + schema.name + '-' + entity.name + '-' + attr.name
352
-
353
- # set up references resulting from attribute being a redeclaration
354
- if attr.redeclare_entity
355
- if attr.redeclare_oldname
356
- redefined_xmiid = '_2_attr_' + schema.name + '-' + attr.redeclare_entity + '-' + attr.redeclare_oldname
357
- else
358
- redefined_xmiid = '_2_attr_' + schema.name + '-' + attr.redeclare_entity + '-' + attr.name
359
- end
360
- end
361
-
362
- # initialize default cardinailty constraints
363
- lower = '1'
364
- upper = '1'
365
- isset = 'true'
366
- islist = 'false'
367
-
368
- # set up cardinailty constraints from attribute being a 1-D aggregate
369
- if attr.instance_of? EXPSM::ExplicitAggregate and attr.rank == 1
370
- upper = attr.dimensions[0].upper
371
- if upper == '?'
372
- upper = '*'
373
- end
374
- lower = attr.dimensions[0].lower
375
- if attr.dimensions[0].aggrtype == 'LIST'
376
- islist = 'true'
377
- end
378
- if attr.dimensions[0].aggrtype == 'BAG'
379
- isset = 'false'
380
- end
381
- if attr.dimensions[0].aggrtype == 'LIST' and !attr.dimensions[0].isUnique
382
- isset = 'false'
383
- end
384
- end
385
- if attr.isOptional == TRUE
386
- lower = '0'
387
- end
388
-
389
- # Map EXPRESS Explicit Attributes of Builtin
390
- if attr.isBuiltin
391
- res = ERB.new(attribute_builtin_template)
392
- t = res.result(binding)
393
- file.puts t
394
- end
395
-
396
- # Map EXPRESS Explicit Attributes of TYPE and TYPE Enum
397
- if NamedType.find_by_name( attr.domain ).kind_of? EXPSM::Type or NamedType.find_by_name( attr.domain ).kind_of? EXPSM::TypeEnum
398
- type_xmiid = '_' + schema.name + '-' + NamedType.find_by_name( attr.domain ).name
399
- res = ERB.new(attribute_enum_type_template)
400
- t = res.result(binding)
401
- file.puts t
402
- end
403
-
404
- # Map EXPRESS Explicit Attributes of Entity and Select
405
- if NamedType.find_by_name( attr.domain ).kind_of? EXPSM::Entity or NamedType.find_by_name( attr.domain ).kind_of? EXPSM::TypeSelect
406
- domain_xmiid = '_' + schema.name + '-' + NamedType.find_by_name( attr.domain ).name
407
- assoc_xmiid = '_1_association_' + schema.name + '-' + entity.name + '-' + attr.name
408
- res = ERB.new(attribute_entity_template)
409
- t = res.result(binding)
410
- file.puts t
411
- end
412
-
413
- end
414
-
415
-
416
- # Evaluate and write ENTITY end template
417
- res = ERB.new(entity_end_template)
418
- t = res.result(binding)
419
- file.puts t
420
- end
421
-
422
- # Evaluate and write SCHEMA end template
423
- res = ERB.new(schema_end_template)
424
- t = res.result(binding)
425
- file.puts t
426
-
427
- end
428
-
429
- # Evaluate and write file end template
430
- res = ERB.new(overall_end_template)
431
- t = res.result(binding)
432
- file.puts t
433
- end
1
+ require 'erb'
2
+ # EXPRESS to UML 2 Mapping - Topcased and Eclipse UML version
3
+ # Version 0.2, contribution by Engisis
4
+ #
5
+ # This function navigates the EXPRESS STEPMod Model and performs a structural EXPRESS-to-UML2 (2.1.2) mapping using Ruby ERB templates.
6
+ # The output is in XMI 2.1 syntax in a file named <schema>.xmi if one schema input and 'Model.xmi' if more than one schema input.
7
+ # This XMI file is then compatible with the open source Eclipse UML implementation (www.eclipse.org/uml2/) and the open source UML2 tools based
8
+ # on top of it (TopCased, Papyrus, etc.)
9
+ #
10
+ # Integer, Boolean, String, Real, Number, Binary, Logical -> PrimitiveType
11
+ # Schema -> Package
12
+ # Entity (subtype of) -> Class (Generalization)
13
+ # Select Type -> Interface and InterfaceRealization
14
+ # Enum Type -> Enumeration and EnumerationLiteral
15
+ # Explicit Attribute (Optional) Primitive or Enum -> Property owned by Class (with lower)
16
+ # Explicit Attribute (Optional) Entity -> Property owned by Class (with lower) plus Association owning other end property
17
+ # Explicit Attribute 1-D SET, BAG, LIST of Select or Entity -> Property owned by Class (with lower)
18
+ # plus Association owning other end property and multiplicity, unique and ordered set
19
+ # Explicit Attribute 1-D SET, BAG, LIST of Primitive or Enum -> Property owned by Class and multiplicity, unique and ordered set
20
+ # Explicit Attribute of Entity/Select/Builtin Redeclaration (Renamed) -> Property with (new) name that redefines inherited Property
21
+ # Inverse Attribute Partial Support (REMOVED for now)
22
+ # USE or REFERENCE (even with named items) -> UML PackageImport between Packages
23
+ #
24
+ #######################################################################################
25
+
26
+ def map_from_express( mapinput )
27
+
28
+ # Enter file name here to override defaults (<schema>.xmi if one schema, and Model.xmi if more than one)
29
+ output_xmi_filename = nil
30
+
31
+ # XMI File Start Template (includes datatypes for builtin with no direct UML equivalent)
32
+ prim_types = ['STRING', 'NUMBER', 'BINARY', 'REAL', 'LOGICAL', 'INTEGER', 'BOOLEAN']
33
+ overall_start_template = %{<?xml version="1.0" encoding="UTF-8"?>
34
+ <uml:Model xmi:version = "2.1" xmlns:xmi = "http://schema.omg.org/spec/XMI/2.1" xmlns:uml = "http://www.eclipse.org/uml2/3.0.0/UML" name = "UMLfromEXPRESS" xmi:id = "_0">
35
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="REAL" name="Real" />
36
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="NUMBER" name="Number" />
37
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="BINARY" name="Binary" />
38
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="LOGICAL" name="Logical" />
39
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="STRING" name="String" />
40
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="INTEGER" name="Integer" />
41
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="BOOLEAN" name="Boolean" />}
42
+
43
+ # XMI File End Template
44
+ overall_end_template = %{ </uml:Model>}
45
+
46
+ # SCHEMA Start Template
47
+ schema_start_template = %{<packagedElement xmi:type = "uml:Package" xmi:id = "_1_<%= schema.name %>" name = "<%= schema.name %>" visibility = "public">}
48
+
49
+ # SCHEMA INTERFACE Template
50
+ schema_interface_template = %{<packageImport xmi:type='uml:PackageImport' xmi:id='_2_<%= schema.name %>-<%= interfaced_schema.foreign_schema_id %>' visibility='public' importedPackage='_1_<%= interfaced_schema.foreign_schema_id %>'/>}
51
+
52
+ # SCHEMA End Template
53
+ schema_end_template = %{</packagedElement>}
54
+
55
+ # ENTITY Start Template
56
+ entity_start_template = %{<packagedElement xmi:type = "uml:Class" xmi:id = "<%= xmiid %>" name = "<%= entity.name %>" isAbstract = "FALSE" visibility = "public">}
57
+
58
+ # SUBTYPE OF Template
59
+ supertype_template = %{<generalization xmi:type="uml:Generalization" xmi:id="<%= xmiid %>" general="<%= xmiid_supertype %>"/>}
60
+
61
+ # ENTITY End Template
62
+ entity_end_template = %{</packagedElement>}
63
+
64
+ # ENUMERATION Start Template
65
+ enum_start_template = %{<packagedElement xmi:type = "uml:Enumeration" xmi:id = "<%= type_xmiid %>" name = "<%= enum.name %>">}
66
+
67
+ # ENUMERATION ITEM Template
68
+ enum_item_template = %{<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="<%= enumitem_xmiid %>" name="<%= enumitem %>" classifier="<%= type_xmiid %>" enumeration="<%= enumitem_xmiid %>">
69
+ <specification xmi:type="uml:LiteralInteger" xmi:id="<%= enumitem_xmiid + '_specification' %> "/>
70
+ </ownedLiteral>}
71
+
72
+ # ENUMERATION End Template
73
+ enum_end_template = %{</packagedElement>}
74
+
75
+ # SELECT Start Template
76
+ select_start_template = %{<packagedElement xmi:type = "uml:Interface" xmi:id = "<%= xmiid %>" name = "<%= select.name %>" isAbstract = "TRUE" visibility = "public">}
77
+
78
+ # SELECT ITEM IS ENTITY Template
79
+ selectitem_entity_template = %{ <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="<%= xmiid %>" supplier="<%= xmiid_supplier %>" client="<%= xmiid_client %>" contract="<%= xmiid_supplier %>" implementingClassifier="<%= xmiid_client %>"/>}
80
+
81
+ # SELECT ITEM IS SELECT Template
82
+ selectitem_select_template = %{ <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="<%= xmiid %>" supplier="<%= xmiid_supplier %>" client="<%= xmiid_client %>" contract="<%= xmiid_supplier %>" implementingClassifier="<%= xmiid_client %>"/>}
83
+
84
+ # SELECT End Template
85
+ select_end_template = %{</packagedElement>}
86
+
87
+ # Template covering abstract entity types
88
+ abstract_entity_template = %{}
89
+
90
+ # Template covering the output file contents for each attribute that is an aggregate
91
+ attribute_aggregate_template = %{}
92
+
93
+ # Template covering the output file contents for each attribute that is an aggregate of select of entity
94
+ attribute_aggregate_entity_select_template = %{}
95
+
96
+ # Template covering the output file contents for each attribute that is a select of entity
97
+ attribute_entity_select_template = %{}
98
+
99
+ # Template covering the output file contents for each attribute that is an entity
100
+ # the complex entities are not specified as a property but as an ownedEnd - Eclipse UML needs them in the association
101
+ attribute_entity_template = %{
102
+ <% if prim_types.include? domain_xmiid %> <ownedAttribute xmi:type="uml:Property" xmi:id="<%= xmiid %>" name="<%= attr.name %>" visibility="public" isOrdered='<%= islist %>' isUnique='<%= isset %>' isLeaf='false' isStatic='false' isReadOnly='false' isDerived='false' isDerivedUnion='false' type="<%= domain_xmiid %>" aggregation="none" association="<%= assoc_xmiid %>" <% if attr.redeclare_entity %>redefinedProperty="<%= redefined_xmiid %>"<% end %>>
103
+ <% if lower == '0' %><lowerValue xmi:type="uml:LiteralInteger" xmi:id="<%= xmiid %>-lowerValue"/><% end %>
104
+ <% if lower != '0' and lower != '1' %><lowerValue xmi:type="uml:LiteralInteger" xmi:id="<%= xmiid %>-lowerValue" value="<%= lower %>"/><% end %>
105
+ <% if upper != '1' %><upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="<%= xmiid %>-upperValue" value="<%= upper %>"/><% end %>
106
+ </ownedAttribute>
107
+ <% end %>
108
+ }
109
+
110
+
111
+ # add Association attributes here
112
+ # EXPLICIT ATTRIBUTE ENTITY Create Association Template
113
+ # add a ownerEnd containing the complex entity
114
+ attribute_entity_association_template = %{<packagedElement xmi:type="uml:Association" xmi:id="<%= xmiid %>" name="" visibility='public' isLeaf='false' isAbstract='false' isDerived='false' memberEnd="<%= domain_prop_xmiid %> <%= attr_prop_xmiid %>" navigableOwnedEnd="<%= domain_prop_xmiid %>">
115
+ <ownedEnd xmi:type="uml:Property" xmi:id="<%= domain_prop_xmiid %>" type="<%= domain_xmiid %>" name="<%= domain_attr_name %>" association="<%= xmiid %>" visibility='public'>
116
+ <% if lower == '0' %><lowerValue xmi:type="uml:LiteralInteger" xmi:id="<%= domain_prop_xmiid %>-lowerValue"/>
117
+ <% elsif lower != '0' and lower != '1' %><lowerValue xmi:type="uml:LiteralInteger" xmi:id="<%= domain_prop_xmiid %>-lowerValue" value="<%= lower %>"/>
118
+ <% else %><lowerValue xmi:type="uml:LiteralInteger" xmi:id="<%= domain_prop_xmiid %>-lowerValue" value="1"/>
119
+ <% end %>
120
+ <% if upper != '1' %><upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="<%= domain_prop_xmiid %>-upperValue" value="<%= upper %>"/>
121
+ <% else %><upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="<%= domain_prop_xmiid %>-upperValue" value="1"/>
122
+ <% end %>
123
+ </ownedEnd>
124
+ <ownedEnd xmi:type="uml:Property" xmi:id="<%= attr_prop_xmiid %>" type="<%= attr_type %>" name="" association="<%= xmiid %>" visibility='public'>
125
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="<%= attr_prop_xmiid %>-lowerValue" value="1"/>
126
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="<%= attr_prop_xmiid %>-upperValue" value="1"/>
127
+ </ownedEnd>
128
+ </packagedElement>}
129
+
130
+
131
+ # Template covering the output file contents for each attribute
132
+ attribute_template = %{}
133
+
134
+ # EXPLICIT ATTRIBUTE SIMPLE TYPE Template
135
+ attribute_builtin_template = %{ <ownedAttribute xmi:type="uml:Property" xmi:id="<%= xmiid %>" name="<%= attr.name %>" visibility="public" type="<%= attr.domain %>" <% if attr.redeclare_entity %>redefinedProperty="<%= redefined_xmiid %>"<% end %>>
136
+ <% if lower == '0' or attr.isOptional == TRUE %><lowerValue xmi:type="uml:LiteralInteger" xmi:id="<%= xmiid %>-lowerValue"/><% end %>
137
+ <% if lower != '0' and lower != '1' %><lowerValue xmi:type="uml:LiteralInteger" xmi:id="<%= xmiid %>-lowerValue" value="<%= lower %>"/><% end %>
138
+ <% if upper != '1' %><upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="<%= xmiid %>-upperValue" value="<%= upper %>"/><% end %>
139
+ </ownedAttribute>}
140
+
141
+ # EXPLICIT ATTRIBUTE ENUM and TYPE Template
142
+ attribute_enum_type_template = %{ <ownedAttribute xmi:type="uml:Property" xmi:id="_<%= xmiid %>" name="<%= attr.name %>" visibility="public" type="<%= type_xmiid %>" isOrdered='<%= islist %>' isUnique='<%= isset %>' >
143
+ <% if lower == '0' or attr.isOptional == TRUE %><lowerValue xmi:type="uml:LiteralInteger" xmi:id="<%= xmiid %>-lowerValue"/><% end %>
144
+ <% if lower != '0' and lower != '1' %><lowerValue xmi:type="uml:LiteralInteger" xmi:id="<%= xmiid %>-lowerValue" value="<%= lower %>"/><% end %>
145
+ <% if upper != '1' %><upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="<%= xmiid %>-upperValue" value="<%= upper %>"/><% end %>
146
+ </ownedAttribute>}
147
+
148
+ # TYPE Template
149
+ type_template = %{<packagedElement xmi:type="uml:PrimitiveType" xmi:id="_<%= schema.name %>-<%= type.name %>" name="<%= type.name %>" >
150
+ <generalization xmi:type="uml:Generalization" xmi:id="_supertype_<%= schema.name %>-<%= type.name %>" general="<%= type.domain %>"/>
151
+ </packagedElement>}
152
+
153
+
154
+ #############################################################################################
155
+ # Set up list of schemas to process, input may be a repository containing schemas or a single schema
156
+ #############################################################################################
157
+
158
+ if mapinput.kind_of? EXPSM::Repository
159
+ schema_list = mapinput.schemas
160
+ elsif mapinput.kind_of? EXPSM::SchemaDefinition
161
+ schema_list = [mapinput]
162
+ else
163
+ puts "ERROR : map_from_express input no Repository instance or Schema instance"
164
+ exit
165
+ end
166
+
167
+ # Set up XMI output file
168
+
169
+ if schema_list.size == 1 and output_xmi_filename == nil
170
+ schema = schema_list[0]
171
+ output_xmi_filename = schema.name.to_s + ".xmi"
172
+ elsif output_xmi_filename == nil
173
+ output_xmi_filename = 'Model.xmi'
174
+ end
175
+
176
+ file = File.new(output_xmi_filename, "w")
177
+ puts 'reeper : Writing output to file ' + output_xmi_filename
178
+
179
+ # Evaluate and write file start template
180
+ res = ERB.new(overall_start_template)
181
+ t = res.result(binding)
182
+ file.puts t
183
+
184
+ for schema in schema_list
185
+
186
+ # Evaluate and write schema start template
187
+ res = ERB.new(schema_start_template)
188
+ t = res.result(binding)
189
+ file.puts t
190
+
191
+ interfaced_schema_list = schema.contents.find_all{ |e| e.instance_of? EXPSM::InterfaceSpecification}
192
+
193
+ for interfaced_schema in interfaced_schema_list
194
+
195
+ # Evaluate and write schema interface template
196
+ res = ERB.new(schema_interface_template)
197
+ t = res.result(binding)
198
+ file.puts t
199
+
200
+ end
201
+
202
+ # Map EXPRESS TYPE of Builtin
203
+ type_list = schema.contents.find_all{ |e| e.instance_of? EXPSM::Type and e.isBuiltin}
204
+ for type in type_list
205
+ xmiid = '_' + schema.name + '-' + type.name
206
+ res = ERB.new(type_template)
207
+ t = res.result(binding)
208
+ file.puts t
209
+ end
210
+
211
+ # Map EXPRESS Enumeration Types
212
+ enum_list = schema.contents.find_all{ |e| e.instance_of? EXPSM::TypeEnum }
213
+ for enum in enum_list
214
+
215
+ # Evaluate and write TYPE Enum start template
216
+ type_xmiid = '_' + schema.name + '-' + enum.name
217
+ res = ERB.new(enum_start_template)
218
+ t = res.result(binding)
219
+ file.puts t
220
+
221
+ # Evaluate and write Enum Item template for each item
222
+ enumitem_name_list = enum.items.scan(/\w+/)
223
+ for enumitem in enumitem_name_list
224
+ enumitem_xmiid = '_1_enumitem_' + schema.name + '-' + enum.name + '-' + enumitem
225
+ res = ERB.new(enum_item_template)
226
+ t = res.result(binding)
227
+ file.puts t
228
+ end
229
+
230
+ # Evaluate and write TYPE Enum end template
231
+ res = ERB.new(enum_end_template)
232
+ t = res.result(binding)
233
+ file.puts t
234
+ end
235
+
236
+ # Map EXPRESS TYPE Selects
237
+ select_list = schema.contents.find_all{ |e| e.instance_of? EXPSM::TypeSelect }
238
+ for select in select_list
239
+
240
+ # Evaluate and write TYPE Select start template
241
+ xmiid = '_' + schema.name + '-' + select.name
242
+ res = ERB.new(select_start_template)
243
+ t = res.result(binding)
244
+ file.puts t
245
+
246
+ # Evaluate and write Select Item template for each item (maps to UML same as EXPRESS supertype)
247
+ for superselect in select_list
248
+ if superselect.selectitems_array.include?(select)
249
+ xmiid = '_2_superselect_' + schema.name + '-' + select.name + '-' + superselect.name
250
+ xmiid_supertype = '_' + schema.name + '-' + superselect.name
251
+ res = ERB.new(supertype_template)
252
+ t = res.result(binding)
253
+ file.puts t
254
+ end
255
+ end
256
+
257
+ # Evaluate and write TYPE Select end template
258
+ res = ERB.new(select_end_template)
259
+ t = res.result(binding)
260
+ file.puts t
261
+ end
262
+
263
+ entity_list = schema.contents.find_all{ |e| e.kind_of? EXPSM::Entity }
264
+
265
+ # Map EXPRESS Explicit Attribute resulting UML Association (the Association is referenced from Class resulting from Entity)
266
+ for entity in entity_list
267
+ attr_list = entity.attributes.find_all{ |e| e.kind_of? EXPSM::Explicit }
268
+ for attr in attr_list
269
+
270
+ if NamedType.find_by_name( attr.domain ).kind_of? EXPSM::Entity or NamedType.find_by_name( attr.domain ).kind_of? EXPSM::TypeSelect
271
+ xmiid = '_1_association_' + schema.name + '-' + entity.name + '-' + attr.name
272
+ attr_xmiid = '_2_attr_' + schema.name + '-' + entity.name + '-' + attr.name
273
+ attr_prop_xmiid = '_2_attr_' + schema.name + '-' + entity.name + '-' + attr.name + "-end"
274
+
275
+ # type of the entity
276
+ attr_type = '_' + schema.name + '-' + entity.name
277
+
278
+ # type of the domain
279
+ domain_xmiid = '_' + schema.name + '-' + NamedType.find_by_name( attr.domain ).name
280
+ domain_prop_xmiid = '_' + schema.name + '-' + NamedType.find_by_name( attr.domain ).name + '-' + attr.name + "-end"
281
+ # name of the attr
282
+ domain_attr_name = attr.name
283
+
284
+ owner_xmiid = '_' + schema.name + '-' + entity.name
285
+
286
+ # association lower/upper
287
+ lower = '1'
288
+ upper = '1'
289
+ isset = 'true'
290
+ islist = 'false'
291
+ if attr.instance_of? EXPSM::ExplicitAggregate and attr.rank == 1
292
+ upper = attr.dimensions[0].upper
293
+ if upper == '?'
294
+ upper = '*'
295
+ end
296
+ lower = attr.dimensions[0].lower
297
+ if attr.dimensions[0].aggrtype == 'LIST'
298
+ islist = 'true'
299
+ end
300
+ if attr.dimensions[0].aggrtype == 'BAG'
301
+ isset = 'false'
302
+ end
303
+ if attr.dimensions[0].aggrtype == 'LIST' and !attr.dimensions[0].isUnique
304
+ isset = 'false'
305
+ end
306
+ end
307
+ if attr.isOptional == TRUE
308
+ lower = '0'
309
+ end
310
+
311
+ res = ERB.new(attribute_entity_association_template)
312
+ t = res.result(binding)
313
+ file.puts t
314
+ end
315
+ end
316
+ end
317
+
318
+ # Map EXPRESS Entity Types
319
+ for entity in entity_list
320
+
321
+ # Evaluate and write ENTITY start template
322
+ xmiid = '_' + schema.name + '-' + entity.name
323
+ res = ERB.new(entity_start_template)
324
+ t = res.result(binding)
325
+ file.puts t
326
+
327
+ # Map Entity is SUBTYPE OF (i.e. list of supertypes)
328
+ for supertype in entity.supertypes_array
329
+ xmiid = '_2_supertype_' + schema.name + '-' + entity.name + '-' + supertype.name
330
+ xmiid_supertype = '_' + schema.name + '-' + supertype.name
331
+ res = ERB.new(supertype_template)
332
+ t = res.result(binding)
333
+ file.puts t
334
+ end
335
+
336
+ # Map TYPE Select has Entity as item
337
+ for select in select_list
338
+ if select.selectitems_array.include?(entity)
339
+ xmiid = '_2_selectitem_' + schema.name + '-' + entity.name + '-' + select.name
340
+ xmiid_supplier = '_' + schema.name + '-' + select.name
341
+ xmiid_client = '_' + schema.name + '-' + entity.name
342
+ res = ERB.new(selectitem_entity_template)
343
+ t = res.result(binding)
344
+ file.puts t
345
+ end
346
+ end
347
+
348
+ # Map EXPRESS Explicit Attributes
349
+ attr_list = entity.attributes.find_all{ |e| e.kind_of? EXPSM::Explicit }
350
+ for attr in attr_list
351
+ xmiid = '_2_attr_' + schema.name + '-' + entity.name + '-' + attr.name
352
+
353
+ # set up references resulting from attribute being a redeclaration
354
+ if attr.redeclare_entity
355
+ if attr.redeclare_oldname
356
+ redefined_xmiid = '_2_attr_' + schema.name + '-' + attr.redeclare_entity + '-' + attr.redeclare_oldname
357
+ else
358
+ redefined_xmiid = '_2_attr_' + schema.name + '-' + attr.redeclare_entity + '-' + attr.name
359
+ end
360
+ end
361
+
362
+ # initialize default cardinailty constraints
363
+ lower = '1'
364
+ upper = '1'
365
+ isset = 'true'
366
+ islist = 'false'
367
+
368
+ # set up cardinailty constraints from attribute being a 1-D aggregate
369
+ if attr.instance_of? EXPSM::ExplicitAggregate and attr.rank == 1
370
+ upper = attr.dimensions[0].upper
371
+ if upper == '?'
372
+ upper = '*'
373
+ end
374
+ lower = attr.dimensions[0].lower
375
+ if attr.dimensions[0].aggrtype == 'LIST'
376
+ islist = 'true'
377
+ end
378
+ if attr.dimensions[0].aggrtype == 'BAG'
379
+ isset = 'false'
380
+ end
381
+ if attr.dimensions[0].aggrtype == 'LIST' and !attr.dimensions[0].isUnique
382
+ isset = 'false'
383
+ end
384
+ end
385
+ if attr.isOptional == TRUE
386
+ lower = '0'
387
+ end
388
+
389
+ # Map EXPRESS Explicit Attributes of Builtin
390
+ if attr.isBuiltin
391
+ res = ERB.new(attribute_builtin_template)
392
+ t = res.result(binding)
393
+ file.puts t
394
+ end
395
+
396
+ # Map EXPRESS Explicit Attributes of TYPE and TYPE Enum
397
+ if NamedType.find_by_name( attr.domain ).kind_of? EXPSM::Type or NamedType.find_by_name( attr.domain ).kind_of? EXPSM::TypeEnum
398
+ type_xmiid = '_' + schema.name + '-' + NamedType.find_by_name( attr.domain ).name
399
+ res = ERB.new(attribute_enum_type_template)
400
+ t = res.result(binding)
401
+ file.puts t
402
+ end
403
+
404
+ # Map EXPRESS Explicit Attributes of Entity and Select
405
+ if NamedType.find_by_name( attr.domain ).kind_of? EXPSM::Entity or NamedType.find_by_name( attr.domain ).kind_of? EXPSM::TypeSelect
406
+ domain_xmiid = '_' + schema.name + '-' + NamedType.find_by_name( attr.domain ).name
407
+ assoc_xmiid = '_1_association_' + schema.name + '-' + entity.name + '-' + attr.name
408
+ res = ERB.new(attribute_entity_template)
409
+ t = res.result(binding)
410
+ file.puts t
411
+ end
412
+
413
+ end
414
+
415
+
416
+ # Evaluate and write ENTITY end template
417
+ res = ERB.new(entity_end_template)
418
+ t = res.result(binding)
419
+ file.puts t
420
+ end
421
+
422
+ # Evaluate and write SCHEMA end template
423
+ res = ERB.new(schema_end_template)
424
+ t = res.result(binding)
425
+ file.puts t
426
+
427
+ end
428
+
429
+ # Evaluate and write file end template
430
+ res = ERB.new(overall_end_template)
431
+ t = res.result(binding)
432
+ file.puts t
433
+ end