expressir 0.2.5-x64-mingw32 → 0.2.7-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 (526) 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 +84 -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/cli/ui.rb +36 -36
  21. data/lib/expressir/cli.rb +27 -27
  22. data/lib/expressir/config.rb +23 -23
  23. data/lib/expressir/express/aggregate_dimension.rb +38 -38
  24. data/lib/expressir/express/attribute.rb +15 -15
  25. data/lib/expressir/express/comment.rb +7 -7
  26. data/lib/expressir/express/defined_type.rb +36 -36
  27. data/lib/expressir/express/derived.rb +65 -65
  28. data/lib/expressir/express/derived_aggregate.rb +43 -43
  29. data/lib/expressir/express/entity.rb +137 -137
  30. data/lib/expressir/express/explicit.rb +70 -70
  31. data/lib/expressir/express/explicit_aggregate.rb +46 -46
  32. data/lib/expressir/express/explicit_or_derived.rb +16 -16
  33. data/lib/expressir/express/global_rule.rb +44 -44
  34. data/lib/expressir/express/interface_specification.rb +51 -51
  35. data/lib/expressir/express/interfaced_item.rb +38 -38
  36. data/lib/expressir/express/inverse.rb +46 -46
  37. data/lib/expressir/express/inverse_aggregate.rb +37 -37
  38. data/lib/expressir/express/model_element.rb +7 -7
  39. data/lib/expressir/express/named_type.rb +19 -19
  40. data/lib/expressir/express/remark.rb +8 -8
  41. data/lib/expressir/express/repository.rb +306 -306
  42. data/lib/expressir/express/schema_definition.rb +96 -96
  43. data/lib/expressir/express/subtype_constraint.rb +14 -14
  44. data/lib/expressir/express/type.rb +26 -26
  45. data/lib/expressir/express/type_aggregate.rb +42 -42
  46. data/lib/expressir/express/type_enum.rb +29 -29
  47. data/lib/expressir/express/type_parser.rb +45 -45
  48. data/lib/expressir/express/type_select.rb +82 -82
  49. data/lib/expressir/express/unique_rule.rb +35 -35
  50. data/lib/expressir/express/where_rule.rb +32 -32
  51. data/lib/expressir/express.rb +11 -11
  52. data/lib/expressir/express_exp/2.4/express_parser.so +0 -0
  53. data/lib/expressir/express_exp/2.5/express_parser.so +0 -0
  54. data/lib/expressir/express_exp/2.6/express_parser.so +0 -0
  55. data/lib/expressir/express_exp/2.7/express_parser.so +0 -0
  56. data/lib/expressir/express_exp/3.0/express_parser.so +0 -0
  57. data/lib/expressir/express_exp/formatter.rb +1449 -1449
  58. data/lib/expressir/express_exp/parser.rb +40 -35
  59. data/lib/expressir/express_exp/visitor.rb +2463 -2450
  60. data/lib/expressir/express_parser.rb +30 -30
  61. data/lib/expressir/model/attribute.rb +26 -26
  62. data/lib/expressir/model/constant.rb +16 -16
  63. data/lib/expressir/model/entity.rb +45 -45
  64. data/lib/expressir/model/enumeration_item.rb +10 -10
  65. data/lib/expressir/model/expressions/aggregate_initializer.rb +12 -12
  66. data/lib/expressir/model/expressions/aggregate_item.rb +14 -14
  67. data/lib/expressir/model/expressions/attribute_reference.rb +14 -14
  68. data/lib/expressir/model/expressions/binary_expression.rb +39 -39
  69. data/lib/expressir/model/expressions/call.rb +14 -14
  70. data/lib/expressir/model/expressions/entity_constructor.rb +14 -14
  71. data/lib/expressir/model/expressions/group_reference.rb +14 -14
  72. data/lib/expressir/model/expressions/index_reference.rb +16 -16
  73. data/lib/expressir/model/expressions/interval.rb +20 -20
  74. data/lib/expressir/model/expressions/query_expression.rb +25 -25
  75. data/lib/expressir/model/expressions/simple_reference.rb +12 -12
  76. data/lib/expressir/model/expressions/unary_expression.rb +18 -18
  77. data/lib/expressir/model/function.rb +61 -61
  78. data/lib/expressir/model/identifier.rb +9 -8
  79. data/lib/expressir/model/interface.rb +17 -17
  80. data/lib/expressir/model/literals/binary.rb +12 -12
  81. data/lib/expressir/model/literals/integer.rb +12 -12
  82. data/lib/expressir/model/literals/logical.rb +16 -16
  83. data/lib/expressir/model/literals/real.rb +12 -12
  84. data/lib/expressir/model/literals/string.rb +14 -14
  85. data/lib/expressir/model/parameter.rb +16 -16
  86. data/lib/expressir/model/procedure.rb +59 -59
  87. data/lib/expressir/model/renamed_ref.rb +12 -12
  88. data/lib/expressir/model/repository.rb +18 -18
  89. data/lib/expressir/model/rule.rb +61 -61
  90. data/lib/expressir/model/schema.rb +66 -66
  91. data/lib/expressir/model/scope.rb +16 -16
  92. data/lib/expressir/model/statements/alias.rb +25 -25
  93. data/lib/expressir/model/statements/assignment.rb +14 -14
  94. data/lib/expressir/model/statements/call.rb +14 -14
  95. data/lib/expressir/model/statements/case.rb +16 -16
  96. data/lib/expressir/model/statements/case_action.rb +14 -14
  97. data/lib/expressir/model/statements/compound.rb +12 -12
  98. data/lib/expressir/model/statements/escape.rb +7 -7
  99. data/lib/expressir/model/statements/if.rb +16 -16
  100. data/lib/expressir/model/statements/null.rb +7 -7
  101. data/lib/expressir/model/statements/repeat.rb +33 -33
  102. data/lib/expressir/model/statements/return.rb +12 -12
  103. data/lib/expressir/model/statements/skip.rb +7 -7
  104. data/lib/expressir/model/subtype_constraint.rb +26 -26
  105. data/lib/expressir/model/type.rb +23 -23
  106. data/lib/expressir/model/types/aggregate.rb +16 -16
  107. data/lib/expressir/model/types/array.rb +20 -20
  108. data/lib/expressir/model/types/bag.rb +16 -16
  109. data/lib/expressir/model/types/binary.rb +14 -14
  110. data/lib/expressir/model/types/boolean.rb +7 -7
  111. data/lib/expressir/model/types/enumeration.rb +18 -18
  112. data/lib/expressir/model/types/generic.rb +12 -12
  113. data/lib/expressir/model/types/generic_entity.rb +12 -12
  114. data/lib/expressir/model/types/integer.rb +7 -7
  115. data/lib/expressir/model/types/list.rb +18 -18
  116. data/lib/expressir/model/types/logical.rb +7 -7
  117. data/lib/expressir/model/types/number.rb +7 -7
  118. data/lib/expressir/model/types/real.rb +12 -12
  119. data/lib/expressir/model/types/select.rb +20 -20
  120. data/lib/expressir/model/types/set.rb +16 -16
  121. data/lib/expressir/model/types/string.rb +14 -14
  122. data/lib/expressir/model/unique.rb +14 -14
  123. data/lib/expressir/model/variable.rb +16 -16
  124. data/lib/expressir/model/where.rb +14 -14
  125. data/lib/expressir/model.rb +64 -64
  126. data/lib/expressir/parser/owl_parser.rb +8 -8
  127. data/lib/expressir/parser.rb +6 -6
  128. data/lib/expressir/version.rb +3 -3
  129. data/lib/expressir.rb +21 -21
  130. data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.exp +9589 -9589
  131. data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.owl +36619 -36619
  132. data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.xml +13293 -13293
  133. data/original/examples/employment/eclipse/.project +17 -17
  134. data/original/examples/employment/eclipse/Express/employment_schema.exp +33 -33
  135. data/original/examples/employment/eclipse/Express/employment_schema.xmi +77 -77
  136. data/original/examples/employment/eclipse/Express/employment_schema.xml +92 -92
  137. data/original/examples/employment/eclipse/Models/Employment.uml +4 -4
  138. data/original/examples/employment/eclipse/Models/Employment.umldi +240 -240
  139. data/original/examples/employment/eclipse/readme.txt +6 -6
  140. data/original/examples/employment/employment_schema.exp +33 -33
  141. data/original/examples/employment/employment_schema.rb +232 -232
  142. data/original/examples/employment/employment_schema.xml +92 -92
  143. data/original/examples/employment/employment_schema___module.rb +46 -46
  144. data/original/examples/employment/employment_schema___p28attr.rb +126 -126
  145. data/original/examples/employment/employment_schema___p28inst.rb +26 -26
  146. data/original/examples/employment/example_employment_data.xml +1 -1
  147. data/original/examples/employment/example_employment_data_copy.xml +1 -1
  148. data/original/examples/employment/example_employment_reader.rb +30 -30
  149. data/original/examples/employment/example_employment_writer.rb +51 -51
  150. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.exp +3710 -3710
  151. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.owl +35880 -35880
  152. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.xmi +15357 -15357
  153. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.xml +9467 -9467
  154. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.exp +8404 -8404
  155. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.owl +43147 -43147
  156. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.xmi +18341 -18341
  157. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.xml +11631 -11631
  158. data/original/examples/syntax/remark.exp +146 -145
  159. data/original/examples/syntax/remark_formatted.exp +174 -173
  160. data/original/examples/syntax/syntax.exp +311 -310
  161. data/original/examples/syntax/syntax_formatted.exp +1190 -1186
  162. data/original/exp2ruby.rb +525 -525
  163. data/original/expsm.rb +34 -34
  164. data/original/mapping_owl.rb +1018 -1018
  165. data/original/mapping_sysml.rb +2281 -2281
  166. data/original/mapping_uml2.rb +598 -598
  167. data/original/mapping_uml2_eclipse.rb +433 -433
  168. data/original/reeper.rb +134 -134
  169. data/rakelib/cross-ruby.rake +308 -0
  170. data/spec/acceptance/express_to_owl_spec.rb +18 -18
  171. data/spec/acceptance/version_spec.rb +12 -12
  172. data/spec/expressir/express/repository_spec.rb +25 -25
  173. data/spec/expressir/express_exp/ap233_spec.rb +22 -22
  174. data/spec/expressir/express_exp/format_remark_spec.rb +28 -28
  175. data/spec/expressir/express_exp/format_syntax_spec.rb +28 -28
  176. data/spec/expressir/express_exp/parse_remark_spec.rb +346 -345
  177. data/spec/expressir/express_exp/parse_syntax_spec.rb +3003 -2998
  178. data/spec/expressir/model/find_spec.rb +110 -110
  179. data/spec/expressr_spec.rb +5 -5
  180. data/spec/spec_helper.rb +17 -17
  181. data/spec/support/console_helper.rb +29 -29
  182. metadata +32 -370
  183. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/CMakeLists.txt +0 -118
  184. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2013.vcxproj +0 -637
  185. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2013.vcxproj.filters +0 -984
  186. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2015.vcxproj +0 -652
  187. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2015.vcxproj.filters +0 -990
  188. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2017.vcxproj +0 -652
  189. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2017.vcxproj.filters +0 -990
  190. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2019.vcxproj +0 -652
  191. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlr4cpp-vs2019.vcxproj.filters +0 -990
  192. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp-ios/Info.plist +0 -26
  193. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp-ios/antlrcpp_ios.h +0 -17
  194. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/project.pbxproj +0 -3024
  195. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  196. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  197. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/xcshareddata/xcschemes/antlr4.xcscheme +0 -76
  198. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/xcshareddata/xcschemes/antlr4_ios.xcscheme +0 -80
  199. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/antlrcpp.xcodeproj/xcshareddata/xcschemes/antlr4_static.xcscheme +0 -80
  200. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorListener.cpp +0 -10
  201. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorListener.h +0 -167
  202. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorStrategy.cpp +0 -10
  203. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRErrorStrategy.h +0 -121
  204. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRFileStream.cpp +0 -34
  205. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRFileStream.h +0 -27
  206. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRInputStream.cpp +0 -155
  207. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ANTLRInputStream.h +0 -69
  208. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BailErrorStrategy.cpp +0 -61
  209. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BailErrorStrategy.h +0 -59
  210. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BaseErrorListener.cpp +0 -25
  211. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BaseErrorListener.h +0 -36
  212. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BufferedTokenStream.cpp +0 -414
  213. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/BufferedTokenStream.h +0 -200
  214. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CharStream.cpp +0 -11
  215. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CharStream.h +0 -37
  216. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonToken.cpp +0 -195
  217. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonToken.h +0 -158
  218. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenFactory.cpp +0 -39
  219. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenFactory.h +0 -74
  220. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenStream.cpp +0 -78
  221. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/CommonTokenStream.h +0 -79
  222. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ConsoleErrorListener.cpp +0 -15
  223. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ConsoleErrorListener.h +0 -35
  224. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/DefaultErrorStrategy.cpp +0 -333
  225. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/DefaultErrorStrategy.h +0 -466
  226. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/DiagnosticErrorListener.cpp +0 -84
  227. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/DiagnosticErrorListener.h +0 -80
  228. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Exceptions.cpp +0 -64
  229. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Exceptions.h +0 -99
  230. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/FailedPredicateException.cpp +0 -51
  231. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/FailedPredicateException.h +0 -32
  232. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/InputMismatchException.cpp +0 -18
  233. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/InputMismatchException.h +0 -24
  234. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/IntStream.cpp +0 -12
  235. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/IntStream.h +0 -218
  236. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/InterpreterRuleContext.cpp +0 -19
  237. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/InterpreterRuleContext.h +0 -45
  238. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Lexer.cpp +0 -295
  239. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Lexer.h +0 -196
  240. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerInterpreter.cpp +0 -75
  241. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerInterpreter.h +0 -52
  242. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerNoViableAltException.cpp +0 -36
  243. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/LexerNoViableAltException.h +0 -31
  244. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ListTokenSource.cpp +0 -92
  245. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ListTokenSource.h +0 -88
  246. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/NoViableAltException.cpp +0 -46
  247. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/NoViableAltException.h +0 -42
  248. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Parser.cpp +0 -648
  249. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Parser.h +0 -467
  250. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserInterpreter.cpp +0 -306
  251. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserInterpreter.h +0 -179
  252. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserRuleContext.cpp +0 -141
  253. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ParserRuleContext.h +0 -147
  254. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ProxyErrorListener.cpp +0 -53
  255. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/ProxyErrorListener.h +0 -38
  256. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RecognitionException.cpp +0 -66
  257. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RecognitionException.h +0 -98
  258. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Recognizer.cpp +0 -167
  259. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Recognizer.h +0 -164
  260. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContext.cpp +0 -143
  261. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContext.h +0 -137
  262. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContextWithAltNum.cpp +0 -27
  263. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuleContextWithAltNum.h +0 -32
  264. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuntimeMetaData.cpp +0 -53
  265. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/RuntimeMetaData.h +0 -155
  266. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Token.cpp +0 -9
  267. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Token.h +0 -92
  268. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenFactory.h +0 -30
  269. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenSource.cpp +0 -9
  270. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenSource.h +0 -85
  271. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStream.cpp +0 -11
  272. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStream.h +0 -137
  273. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStreamRewriter.cpp +0 -425
  274. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/TokenStreamRewriter.h +0 -293
  275. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedCharStream.cpp +0 -211
  276. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedCharStream.h +0 -123
  277. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedTokenStream.cpp +0 -270
  278. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/UnbufferedTokenStream.h +0 -115
  279. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Vocabulary.cpp +0 -104
  280. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/Vocabulary.h +0 -193
  281. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/WritableToken.cpp +0 -9
  282. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/WritableToken.h +0 -23
  283. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/antlr4-common.h +0 -137
  284. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/antlr4-runtime.h +0 -167
  285. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATN.cpp +0 -209
  286. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATN.h +0 -112
  287. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfig.cpp +0 -113
  288. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfig.h +0 -148
  289. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfigSet.cpp +0 -228
  290. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNConfigSet.h +0 -110
  291. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.cpp +0 -64
  292. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializationOptions.h +0 -50
  293. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializer.cpp +0 -758
  294. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNDeserializer.h +0 -85
  295. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSerializer.cpp +0 -621
  296. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSerializer.h +0 -61
  297. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSimulator.cpp +0 -63
  298. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNSimulator.h +0 -87
  299. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNState.cpp +0 -72
  300. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNState.h +0 -133
  301. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ATNType.h +0 -20
  302. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AbstractPredicateTransition.cpp +0 -14
  303. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AbstractPredicateTransition.h +0 -24
  304. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ActionTransition.cpp +0 -33
  305. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ActionTransition.h +0 -33
  306. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AmbiguityInfo.cpp +0 -16
  307. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AmbiguityInfo.h +0 -68
  308. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.cpp +0 -82
  309. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ArrayPredictionContext.h +0 -43
  310. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AtomTransition.cpp +0 -31
  311. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/AtomTransition.h +0 -30
  312. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicBlockStartState.cpp +0 -12
  313. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicBlockStartState.h +0 -22
  314. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicState.cpp +0 -12
  315. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BasicState.h +0 -21
  316. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockEndState.cpp +0 -15
  317. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockEndState.h +0 -24
  318. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockStartState.cpp +0 -9
  319. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/BlockStartState.h +0 -21
  320. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ContextSensitivityInfo.cpp +0 -14
  321. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ContextSensitivityInfo.h +0 -47
  322. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionEventInfo.cpp +0 -14
  323. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionEventInfo.h +0 -70
  324. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionInfo.cpp +0 -25
  325. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionInfo.h +0 -227
  326. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionState.cpp +0 -17
  327. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/DecisionState.h +0 -30
  328. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EmptyPredictionContext.cpp +0 -35
  329. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EmptyPredictionContext.h +0 -27
  330. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EpsilonTransition.cpp +0 -35
  331. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/EpsilonTransition.h +0 -39
  332. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ErrorInfo.cpp +0 -15
  333. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ErrorInfo.h +0 -43
  334. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LL1Analyzer.cpp +0 -158
  335. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LL1Analyzer.h +0 -109
  336. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNConfig.cpp +0 -84
  337. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNConfig.h +0 -44
  338. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNSimulator.cpp +0 -628
  339. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerATNSimulator.h +0 -210
  340. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerAction.cpp +0 -9
  341. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerAction.h +0 -66
  342. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionExecutor.cpp +0 -107
  343. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionExecutor.h +0 -115
  344. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerActionType.h +0 -55
  345. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerChannelAction.cpp +0 -55
  346. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerChannelAction.h +0 -63
  347. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerCustomAction.cpp +0 -62
  348. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerCustomAction.h +0 -87
  349. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.cpp +0 -63
  350. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerIndexedCustomAction.h +0 -82
  351. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerModeAction.cpp +0 -56
  352. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerModeAction.h +0 -61
  353. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerMoreAction.cpp +0 -47
  354. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerMoreAction.h +0 -57
  355. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPopModeAction.cpp +0 -47
  356. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPopModeAction.h +0 -57
  357. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPushModeAction.cpp +0 -56
  358. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerPushModeAction.h +0 -61
  359. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerSkipAction.cpp +0 -47
  360. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerSkipAction.h +0 -55
  361. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerTypeAction.cpp +0 -56
  362. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LexerTypeAction.h +0 -55
  363. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LookaheadEventInfo.cpp +0 -16
  364. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LookaheadEventInfo.h +0 -42
  365. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LoopEndState.cpp +0 -12
  366. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/LoopEndState.h +0 -22
  367. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Makefile +0 -67
  368. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/NotSetTransition.cpp +0 -27
  369. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/NotSetTransition.h +0 -25
  370. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.cpp +0 -12
  371. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/OrderedATNConfigSet.h +0 -20
  372. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParseInfo.cpp +0 -102
  373. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParseInfo.h +0 -102
  374. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulator.cpp +0 -1366
  375. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ParserATNSimulator.h +0 -904
  376. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusBlockStartState.cpp +0 -12
  377. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusBlockStartState.h +0 -25
  378. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusLoopbackState.cpp +0 -12
  379. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PlusLoopbackState.h +0 -22
  380. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.cpp +0 -32
  381. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PrecedencePredicateTransition.h +0 -29
  382. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.cpp +0 -17
  383. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateEvalInfo.h +0 -62
  384. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateTransition.cpp +0 -34
  385. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredicateTransition.h +0 -39
  386. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContext.cpp +0 -662
  387. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionContext.h +0 -254
  388. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionMode.cpp +0 -201
  389. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/PredictionMode.h +0 -436
  390. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.cpp +0 -179
  391. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.h +0 -60
  392. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RangeTransition.cpp +0 -30
  393. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RangeTransition.h +0 -29
  394. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStartState.cpp +0 -16
  395. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStartState.h +0 -25
  396. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStopState.cpp +0 -12
  397. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleStopState.h +0 -25
  398. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleTransition.cpp +0 -37
  399. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/RuleTransition.h +0 -40
  400. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContext.cpp +0 -377
  401. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SemanticContext.h +0 -222
  402. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SetTransition.cpp +0 -32
  403. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SetTransition.h +0 -30
  404. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.cpp +0 -81
  405. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/SingletonPredictionContext.h +0 -36
  406. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarBlockStartState.cpp +0 -12
  407. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarBlockStartState.h +0 -21
  408. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopEntryState.cpp +0 -15
  409. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopEntryState.h +0 -35
  410. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopbackState.cpp +0 -19
  411. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/StarLoopbackState.h +0 -21
  412. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TokensStartState.cpp +0 -12
  413. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/TokensStartState.h +0 -21
  414. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Transition.cpp +0 -44
  415. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/Transition.h +0 -76
  416. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/WildcardTransition.cpp +0 -25
  417. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/atn/WildcardTransition.h +0 -25
  418. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFA.cpp +0 -127
  419. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFA.h +0 -91
  420. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFASerializer.cpp +0 -67
  421. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFASerializer.h +0 -32
  422. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFAState.cpp +0 -100
  423. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/DFAState.h +0 -144
  424. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.cpp +0 -20
  425. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/dfa/LexerDFASerializer.h +0 -23
  426. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/InterpreterDataReader.cpp +0 -124
  427. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/InterpreterDataReader.h +0 -31
  428. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Interval.cpp +0 -89
  429. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Interval.h +0 -84
  430. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/IntervalSet.cpp +0 -521
  431. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/IntervalSet.h +0 -198
  432. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/MurmurHash.cpp +0 -134
  433. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/MurmurHash.h +0 -76
  434. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Predicate.cpp +0 -4
  435. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/misc/Predicate.h +0 -21
  436. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Any.cpp +0 -13
  437. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Any.h +0 -170
  438. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Arrays.cpp +0 -43
  439. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Arrays.h +0 -110
  440. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/BitSet.h +0 -76
  441. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/CPPUtils.cpp +0 -248
  442. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/CPPUtils.h +0 -78
  443. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/Declarations.h +0 -163
  444. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/StringUtils.cpp +0 -36
  445. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/StringUtils.h +0 -54
  446. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/guid.cpp +0 -303
  447. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/support/guid.h +0 -112
  448. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/AbstractParseTreeVisitor.h +0 -128
  449. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNode.cpp +0 -9
  450. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNode.h +0 -19
  451. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.cpp +0 -23
  452. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ErrorNodeImpl.h +0 -33
  453. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/IterativeParseTreeWalker.cpp +0 -71
  454. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/IterativeParseTreeWalker.h +0 -53
  455. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTree.cpp +0 -15
  456. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTree.h +0 -102
  457. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeListener.cpp +0 -9
  458. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeListener.h +0 -39
  459. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeProperty.h +0 -50
  460. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeVisitor.cpp +0 -9
  461. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeVisitor.h +0 -57
  462. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeWalker.cpp +0 -49
  463. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/ParseTreeWalker.h +0 -31
  464. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNode.cpp +0 -9
  465. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNode.h +0 -32
  466. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.cpp +0 -57
  467. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/TerminalNodeImpl.h +0 -33
  468. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/Trees.cpp +0 -241
  469. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/Trees.h +0 -78
  470. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/Chunk.cpp +0 -9
  471. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/Chunk.h +0 -44
  472. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreeMatch.cpp +0 -69
  473. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreeMatch.h +0 -132
  474. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePattern.cpp +0 -64
  475. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePattern.h +0 -105
  476. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePatternMatcher.cpp +0 -371
  477. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/ParseTreePatternMatcher.h +0 -185
  478. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/RuleTagToken.cpp +0 -77
  479. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/RuleTagToken.h +0 -117
  480. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TagChunk.cpp +0 -39
  481. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TagChunk.h +0 -86
  482. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TextChunk.cpp +0 -28
  483. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TextChunk.h +0 -51
  484. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TokenTagToken.cpp +0 -36
  485. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/pattern/TokenTagToken.h +0 -80
  486. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPath.cpp +0 -154
  487. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPath.h +0 -86
  488. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathElement.cpp +0 -31
  489. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathElement.h +0 -40
  490. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.cpp +0 -173
  491. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.g4 +0 -64
  492. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.h +0 -56
  493. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexer.tokens +0 -12
  494. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexerErrorListener.cpp +0 -13
  495. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathLexerErrorListener.h +0 -22
  496. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleAnywhereElement.cpp +0 -20
  497. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleAnywhereElement.h +0 -27
  498. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleElement.cpp +0 -30
  499. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathRuleElement.h +0 -26
  500. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenAnywhereElement.cpp +0 -20
  501. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenAnywhereElement.h +0 -25
  502. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenElement.cpp +0 -33
  503. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathTokenElement.h +0 -26
  504. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardAnywhereElement.cpp +0 -23
  505. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardAnywhereElement.h +0 -23
  506. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardElement.cpp +0 -24
  507. data/ext/express-parser/antlr4-upstream/runtime/Cpp/runtime/src/tree/xpath/XPathWildcardElement.h +0 -23
  508. data/ext/express-parser/antlrgen/Express.interp +0 -532
  509. data/ext/express-parser/antlrgen/Express.tokens +0 -190
  510. data/ext/express-parser/antlrgen/ExpressBaseListener.cpp +0 -7
  511. data/ext/express-parser/antlrgen/ExpressBaseListener.h +0 -623
  512. data/ext/express-parser/antlrgen/ExpressBaseVisitor.cpp +0 -7
  513. data/ext/express-parser/antlrgen/ExpressBaseVisitor.h +0 -816
  514. data/ext/express-parser/antlrgen/ExpressLexer.cpp +0 -1169
  515. data/ext/express-parser/antlrgen/ExpressLexer.h +0 -85
  516. data/ext/express-parser/antlrgen/ExpressLexer.interp +0 -534
  517. data/ext/express-parser/antlrgen/ExpressLexer.tokens +0 -190
  518. data/ext/express-parser/antlrgen/ExpressListener.cpp +0 -7
  519. data/ext/express-parser/antlrgen/ExpressListener.h +0 -616
  520. data/ext/express-parser/antlrgen/ExpressParser.cpp +0 -17284
  521. data/ext/express-parser/antlrgen/ExpressParser.h +0 -3696
  522. data/ext/express-parser/antlrgen/ExpressVisitor.cpp +0 -7
  523. data/ext/express-parser/antlrgen/ExpressVisitor.h +0 -422
  524. data/ext/express-parser/express_parser.cpp +0 -17931
  525. data/ext/express-parser/extconf.rb +0 -34
  526. data/lib/express_parser.so +0 -0
@@ -1,599 +1,599 @@
1
- require 'erb'
2
- # EXPRESS to UML 2 Mapping
3
- # Version 0.1
4
- #
5
- # This function navigates the EXPRESS STEPMod Model Ruby Classes
6
- # and performs a structural EXPRESS-to-UML2 (2.1.2) mapping using Ruby ERB templates.
7
- # 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.
8
- #
9
- # Integer, Boolean, String -> UML equivalent builtin type
10
- # Real, Number, Binary, Logical -> New 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 -> Association end adjustment
22
- # Inverse Attribute Redeclaration (Renamed) -> Property with (new) name that redefines inherited Property
23
- # USE or REFERENCE (even with named items) -> UML PackageImport between Packages
24
- #
25
- #######################################################################################
26
-
27
- def map_from_express( mapinput )
28
-
29
- # Enter file name here to override defaults (<schema>.xmi if one schema, and Model.xmi if more than one)
30
- output_xmi_filename = nil
31
-
32
- # datatypes for builtin types that map directly to UML
33
- datatype_hash = Hash.new
34
- datatype_hash["INTEGER"] = 'http://schema.omg.org/spec/UML/2.1.2/uml.xml#Integer'
35
- datatype_hash["BOOLEAN"] = 'http://schema.omg.org/spec/UML/2.1.2/uml.xml#Boolean'
36
- datatype_hash["STRING"] = 'http://schema.omg.org/spec/UML/2.1.2/uml.xml#String'
37
-
38
- # XMI File Start Template (includes datatypes for builtin with no direct UML equivalent)
39
- overall_start_template = %{<?xml version="1.0" encoding="UTF-8"?>
40
- <uml:Model xmi:version = "2.1" xmlns:xmi = "http://schema.omg.org/spec/XMI/2.1" xmlns:uml = "http://schema.omg.org/spec/UML/2.1.2" name = "UMLfromEXPRESS" xmi:id = "_0">
41
- <packagedElement xmi:type="uml:PrimitiveType" xmi:id="REAL" name="Real" />
42
- <packagedElement xmi:type="uml:PrimitiveType" xmi:id="NUMBER" name="Number" />
43
- <packagedElement xmi:type="uml:PrimitiveType" xmi:id="BINARY" name="Binary" />
44
- <packagedElement xmi:type="uml:PrimitiveType" xmi:id="LOGICAL" name="Logical" />}
45
-
46
- # XMI File End Template
47
- overall_end_template = %{</uml:Model>}
48
-
49
- # SCHEMA Start Template
50
- schema_start_template = %{<packagedElement xmi:type = "uml:Package" xmi:id = "_1_<%= schema.name %>" name = "<%= schema.name %>" visibility = "public">}
51
-
52
- # SCHEMA INTERFACE Template
53
- 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 %>'/>}
54
-
55
- # SCHEMA End Template
56
- schema_end_template = %{</packagedElement>}
57
-
58
- # ENTITY Start Template
59
- entity_start_template = %{<packagedElement xmi:type = "uml:Class" xmi:id = "<%= xmiid %>" name = "<%= entity.name %>" isAbstract = "<% if entity.isAbs %>TRUE<% else %>FALSE<% end %>" visibility = "public">}
60
-
61
- # SUBTYPE OF Template
62
- supertype_template = %{<generalization xmi:type="uml:Generalization" xmi:id="<%= xmiid %>" general="<%= xmiid_general %>"/>}
63
-
64
- # ENTITY End Template
65
- entity_end_template = %{</packagedElement>}
66
-
67
- # ENUMERATION Start Template
68
- enum_start_template = %{<packagedElement xmi:type = "uml:Enumeration" xmi:id = "<%= type_xmiid %>" name = "<%= enum.name %>">}
69
-
70
- # ENUMERATION ITEM Template
71
- enum_item_template = %{<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="<%= enumitem_xmiid %>" name="<%= enumitem %>" classifier="<%= type_xmiid %>" enumeration="<%= type_xmiid %>">
72
- <specification xmi:type="uml:LiteralInteger" xmi:id="<%= enumitem_xmiid + '_specification' %> "/>
73
- </ownedLiteral>}
74
-
75
- # ENUMERATION End Template
76
- enum_end_template = %{</packagedElement>}
77
-
78
- # SELECT Start Template
79
- select_start_template = %{<packagedElement xmi:type = "uml:Interface" xmi:id = "<%= xmiid %>" name = "<%= select.name %>" isAbstract = "TRUE" visibility = "public">}
80
-
81
- # SELECT ITEM is ENTITY Template
82
- selectitem_entity_template = %{ <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="<%= xmiid %>" supplier="<%= xmiid_general %>" client="<%= xmiid_entity %>" contract="<%= xmiid_general %>" implementingClassifier="<%= xmiid_entity %>"/>}
83
-
84
- # SELECT ITEM is TYPE Template
85
- selectitem_type_template = %{ <packagedElement xmi:type="uml:Realization" xmi:id="<%= xmiid %>" supplier="<%= xmiid_general %>" client="<%= xmiid_type %>"/>}
86
-
87
- # SELECT End Template
88
- select_end_template = %{</packagedElement>}
89
-
90
- # Template covering abstract entity types
91
- abstract_entity_template = %{}
92
-
93
- # Template covering the output file contents for each attribute that is an aggregate
94
- attribute_aggregate_template = %{}
95
-
96
- # Template covering the output file contents for each attribute that is an aggregate of select of entity
97
- attribute_aggregate_entity_select_template = %{}
98
-
99
- # Template covering the output file contents for each attribute that is a select of entity
100
- attribute_entity_select_template = %{}
101
-
102
- # Template covering the output file contents for each attribute that is an entity
103
- attribute_entity_template = %{<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 %>>}
104
-
105
- # INVERSE ATTRIBUTE Template
106
- inverse_attribute_template = %{<ownedAttribute xmi:type="uml:Property" xmi:id="<%= xmiid %>" name="<%= inverse.name %>" visibility="public" isOrdered='<%= islist %>' isUnique='<%= isset %>' isLeaf='false' isStatic='false' isReadOnly='true' isDerived='false' isDerivedUnion='false' type="<%= domain_xmiid %>" aggregation="none" association="<%= assoc_xmiid %>" <% if inverse.redeclare_entity %>redefinedProperty="<%= redefined_xmiid %>"<% end %>>}
107
-
108
- #Template covering attribute wrapup
109
- attribute_end = %{<% if lower == '0' %><lowerValue xmi:type="uml:LiteralInteger" xmi:id="<%= xmiid %>-lowerValue"/><% end %>
110
- <% if lower != '0' and lower != '1' %><lowerValue xmi:type="uml:LiteralInteger" xmi:id="<%= xmiid %>-lowerValue" value="<%= lower %>"/><% end %>
111
- <% if upper != '1' %><upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="<%= xmiid %>-upperValue" value="<%= upper %>"/><% end %>
112
- </ownedAttribute>}
113
-
114
-
115
- # EXPLICIT ATTRIBUTE ENTITY Create Association Template
116
- attribute_entity_association_template = %{<packagedElement xmi:type="uml:Association" xmi:id="<%= xmiid %>" name="" visibility='public' isLeaf='false' isAbstract='false' isDerived='false'>
117
- <memberEnd xmi:idref="<%= attr_xmiid %>"/>
118
- <% if !inverse_exists %><memberEnd xmi:idref="<%= xmiid + '-end' %>"/>
119
- <ownedEnd xmi:type="uml:Property" xmi:id="<%= xmiid + '-end' %>" type="<%= owner_xmiid %>" owningAssociation="<%= xmiid %>" association="<%= xmiid %>" visibility='public'>
120
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="<%= xmiid %>-lowerValue"/>
121
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="<%= xmiid %>-upperValue" value="*"/>
122
- </ownedEnd><% else %><memberEnd xmi:idref="<%= iattr_xmiid %>"/>
123
- <% end %>
124
- <% if general_exists %><generalization xmi:type="uml:Generalization" xmi:id="<%= general_xmiid %>" general="<%= redefined_xmiid %>"/><% end %>
125
- </packagedElement>}
126
-
127
-
128
- # INVERSE ATTRIBUTE ENTITY Create Association Template
129
- inverse_entity_association_template = %{<packagedElement xmi:type="uml:Association" xmi:id="<%= xmiid %>" name="" visibility='public' isLeaf='false' isAbstract='false' isDerived='false'>
130
- <memberEnd xmi:idref="<%= iattr_xmiid %>"/>
131
- <memberEnd xmi:idref="<%= xmiid + '-end' %>"/>
132
- <ownedEnd xmi:type="uml:Property" xmi:id="<%= xmiid + '-end' %>" type="<%= owner_xmiid %>" owningAssociation="<%= xmiid %>" association="<%= xmiid %>" visibility='public'/>
133
- <generalization xmi:type="uml:Generalization" xmi:id="<%= general_xmiid %>" general="<%= redefined_xmiid %>"/>
134
- </packagedElement>}
135
-
136
-
137
- # Template covering the output file contents for each attribute
138
- attribute_template = %{}
139
-
140
- # EXPLICIT ATTRIBUTE SIMPLE TYPE Template
141
- attribute_builtin_template = %{<ownedAttribute xmi:type="uml:Property" xmi:id="<%= xmiid %>" name="<%= attr.name %>" visibility="public" <% if datatype_hash[attr.domain] != nil %>isOrdered='<%= islist %>' isUnique='<%= isset %>'<% if attr.redeclare_entity %> redefinedProperty="<%= redefined_xmiid %>"<% end %>>
142
- <type xmi:type="uml:PrimitiveType" href="<%= datatype_hash[attr.domain] %>" /><% end %>
143
- <% if datatype_hash[attr.domain] == nil %>type="<%= attr.domain %>"<% if attr.redeclare_entity %> redefinedProperty="<%= redefined_xmiid %>"<% end %>><% end %>}
144
-
145
-
146
- # EXPLICIT ATTRIBUTE ENUM and TYPE Template
147
- attribute_enum_type_template = %{<ownedAttribute xmi:type="uml:Property" xmi:id="<%= xmiid %>" name="<%= attr.name %>" visibility="public" type="<%= type_xmiid %>" isOrdered='<%= islist %>' isUnique='<%= isset %>' >}
148
-
149
- # UNIQUE rule template
150
- unique_template = %{<ownedRule xmi:type="uml:Constraint" xmi:id="<%= xmiid %>" name="<%= unique.name %>" visibility="public">
151
- <constrainedElement xmi:idref="<%= xmiid_entity %>"/>
152
- <specification xmi:type="uml:OpaqueExpression" xmi:id="<%= xmiid + '-spec' %>" visibility="public">
153
- <body><%= entity.name %>::allInstance()-&gt;isUnique(<%= unique_text %>)</body>
154
- <language>OCL2.0</language>
155
- </specification>
156
- </ownedRule>}
157
-
158
- # TYPE Template
159
- type_template = %{<packagedElement xmi:type="uml:PrimitiveType" xmi:id="_<%= schema.name %>-<%= type.name %>" name="<%= type.name %>" >
160
- <% if datatype_hash[type.domain] != nil %>
161
- <generalization xmi:type="uml:Generalization" xmi:id="_supertype_<%= schema.name %>-<%= type.name %>">
162
- <general xmi:type='uml:PrimitiveType' href="<%= datatype_hash[type.domain] %>" />
163
- </generalization>
164
- <% end %>
165
- <% if datatype_hash[type.domain] == nil %>
166
- <generalization xmi:type="uml:Generalization" xmi:id="_supertype_<%= schema.name %>-<%= type.name %>" general="<%= type.domain %>"/>
167
- <% end %>
168
- </packagedElement>}
169
-
170
-
171
- #############################################################################################
172
- # Set up list of schemas to process, input may be a repository containing schemas or a single schema
173
- #############################################################################################
174
-
175
- if mapinput.kind_of? EXPSM::Repository
176
- schema_list = mapinput.schemas
177
- elsif mapinput.kind_of? EXPSM::SchemaDefinition
178
- schema_list = [mapinput]
179
- else
180
- puts "ERROR : map_from_express input no Repository instance or Schema instance"
181
- exit
182
- end
183
-
184
- # Set up XMI output file
185
-
186
- if schema_list.size == 1 and output_xmi_filename == nil
187
- schema = schema_list[0]
188
- output_xmi_filename = schema.name.to_s + ".xmi"
189
- elsif output_xmi_filename == nil
190
- output_xmi_filename = 'Model.xmi'
191
- end
192
-
193
- file = File.new(output_xmi_filename, "w")
194
- puts 'reeper : Writing output to file ' + output_xmi_filename
195
-
196
- # Evaluate and write file start template
197
- res = ERB.new(overall_start_template)
198
- t = res.result(binding)
199
- file.puts t
200
-
201
- # Set up list of all EXPRESS Inverses in all schemas
202
- all_inverse_list = []
203
-
204
- for schema in schema_list
205
- entity_list = schema.contents.find_all{ |e| e.kind_of? EXPSM::Entity }
206
- for entity in entity_list
207
- entity_inverse_list = entity.attributes.find_all{ |e| e.kind_of? EXPSM::Inverse }
208
- for inverse in entity_inverse_list
209
- all_inverse_list.push inverse
210
- end
211
- end
212
-
213
-
214
- # Evaluate and write schema start template
215
- res = ERB.new(schema_start_template)
216
- t = res.result(binding)
217
- file.puts t
218
-
219
- interfaced_schema_list = schema.contents.find_all{ |e| e.instance_of? EXPSM::InterfaceSpecification}
220
-
221
- for interfaced_schema in interfaced_schema_list
222
- # Evaluate and write schema interface template
223
- res = ERB.new(schema_interface_template)
224
- t = res.result(binding)
225
- file.puts t
226
- end
227
-
228
- # set up select_list - used in a number of places
229
- select_list = schema.contents.find_all{ |e| e.instance_of? EXPSM::TypeSelect }
230
-
231
- # Map EXPRESS TYPE of Builtin
232
- type_list = schema.contents.find_all{ |e| e.instance_of? EXPSM::Type and e.isBuiltin}
233
- for type in type_list
234
- xmiid = '_' + schema.name + '-' + type.name
235
- res = ERB.new(type_template)
236
- t = res.result(binding)
237
- file.puts t
238
-
239
- # Map TYPE Select has Type as item
240
- for select in select_list
241
- if select.selectitems_array.include?(type)
242
- xmiid = '_2_selectitem_' + schema.name + '-' + type.name + '-' + select.name
243
- xmiid_general = '_' + schema.name + '-' + select.name
244
- res = ERB.new(selectitem_type_template)
245
- t = res.result(binding)
246
- file.puts t
247
- end
248
- end
249
- end
250
-
251
- # Map EXPRESS TYPE of TYPE Select
252
- type_list = schema.contents.find_all{ |e| e.instance_of? EXPSM::Type and !e.isBuiltin}
253
- for select in type_list
254
- superselect = NamedType.find_by_name( select.domain )
255
- if superselect.kind_of? EXPSM::TypeSelect
256
- # Evaluate and write TYPE Select start template
257
- xmiid = '_' + schema.name + '-' + select.name
258
- xmiid_type = xmiid
259
- res = ERB.new(select_start_template)
260
- t = res.result(binding)
261
- file.puts t
262
-
263
- # Write Select Item template for parent (maps to UML same as EXPRESS supertype)
264
- xmiid = '_2_superselect_' + schema.name + '-' + select.name + '-' + superselect.name
265
- xmiid_general = '_' + schema.name + '-' + superselect.name
266
- res = ERB.new(supertype_template)
267
- t = res.result(binding)
268
- file.puts t
269
-
270
- # Evaluate and write TYPE Select end template
271
- res = ERB.new(select_end_template)
272
- t = res.result(binding)
273
- file.puts t
274
- end
275
- end
276
-
277
- # Map EXPRESS Enumeration Types
278
- enum_list = schema.contents.find_all{ |e| e.instance_of? EXPSM::TypeEnum }
279
- for enum in enum_list
280
-
281
- # Evaluate and write TYPE Enum start template
282
- type_xmiid = '_' + schema.name + '-' + enum.name
283
- res = ERB.new(enum_start_template)
284
- t = res.result(binding)
285
- file.puts t
286
-
287
- superenum = enum.extends_item
288
- if superenum != nil
289
- if superselect.kind_of? EXPSM::TypeEnum
290
- # Write Enum Item template for parent (maps to UML same as EXPRESS supertype)
291
- xmiid = '_2_superenum_' + schema.name + '-' + enum.name + '-' + superenum.name
292
- xmiid_general = '_' + superenum.schema.name + '-' + superenum.name
293
- res = ERB.new(supertype_template)
294
- t = res.result(binding)
295
- file.puts t
296
- end
297
- end
298
-
299
- # Evaluate and write Enum Item template for each item
300
- enumitem_name_list = enum.items.scan(/\w+/)
301
- for enumitem in enumitem_name_list
302
- enumitem_xmiid = '_1_enumitem_' + schema.name + '-' + enum.name + '-' + enumitem
303
- res = ERB.new(enum_item_template)
304
- t = res.result(binding)
305
- file.puts t
306
- end
307
-
308
- # Evaluate and write TYPE Enum end template
309
- res = ERB.new(enum_end_template)
310
- t = res.result(binding)
311
- file.puts t
312
- end
313
-
314
- # Map EXPRESS TYPE Selects
315
- for select in select_list
316
-
317
- # Evaluate and write TYPE Select start template
318
- xmiid = '_' + schema.name + '-' + select.name
319
- res = ERB.new(select_start_template)
320
- t = res.result(binding)
321
- file.puts t
322
-
323
- superselect = select.extends_item
324
- if superselect != nil
325
- if superselect.kind_of? EXPSM::TypeSelect
326
- # Write Select Item template for parent (maps to UML same as EXPRESS supertype)
327
- xmiid = '_2_superselect_' + schema.name + '-' + select.name + '-' + superselect.name
328
- xmiid_general = '_' + superselect.schema.name + '-' + superselect.name
329
- res = ERB.new(supertype_template)
330
- t = res.result(binding)
331
- file.puts t
332
- end
333
- end
334
-
335
- # Evaluate and write Select Item template for each item (maps to UML same as EXPRESS supertype)
336
- for superselect in select_list
337
- if superselect.selectitems_array.include?(select)
338
- xmiid = '_2_superselect_' + schema.name + '-' + select.name + '-' + superselect.name
339
- xmiid_general = '_' + schema.name + '-' + superselect.name
340
- res = ERB.new(supertype_template)
341
- t = res.result(binding)
342
- file.puts t
343
- end
344
- end
345
-
346
- # Evaluate and write TYPE Select end template
347
- res = ERB.new(select_end_template)
348
- t = res.result(binding)
349
- file.puts t
350
- end
351
-
352
- entity_list = schema.contents.find_all{ |e| e.kind_of? EXPSM::Entity }
353
-
354
- # Map EXPRESS Explicit Attribute resulting UML Association (the Association is referenced from Class resulting from Entity)
355
- for entity in entity_list
356
- attr_list = entity.attributes.find_all{ |e| e.kind_of? EXPSM::Explicit }
357
- for attr in attr_list
358
-
359
- if NamedType.find_by_name( attr.domain ).kind_of? EXPSM::Entity or NamedType.find_by_name( attr.domain ).kind_of? EXPSM::TypeSelect
360
- xmiid = '_1_association_' + schema.name + '-' + entity.name + '-' + attr.name
361
- attr_xmiid = '_2_attr_' + schema.name + '-' + entity.name + '-' + attr.name
362
- owner_xmiid = '_' + schema.name + '-' + entity.name
363
- domain_xmiid = '_' + schema.name + '-' + NamedType.find_by_name( attr.domain ).name
364
-
365
- general_exists = false
366
- if attr.redeclare_entity
367
- general_exists = true
368
- redeclare_entity = NamedType.find_by_name( attr.redeclare_entity )
369
- general_xmiid = '_2_general_' + schema.name + '-' + entity.name + '-' + attr.name
370
- if attr.redeclare_oldname
371
- redefined_xmiid = '_1_association_' + redeclare_entity.schema.name + '-' + attr.redeclare_entity + '-' + attr.redeclare_oldname
372
- else
373
- redefined_xmiid = '_1_association_' + redeclare_entity.schema.name + '-' + attr.redeclare_entity + '-' + attr.name
374
- end
375
- end
376
-
377
- # check if inverse refers to this attribute, affects how association is written
378
- inverse_exists = false
379
- for inverse in all_inverse_list
380
- if inverse.reverseAttr == attr
381
- if attr.domain == inverse.entity.name
382
- iattr_xmiid = '_2_attr_' + inverse.entity.schema.name + '-' + inverse.entity.name + '-' + inverse.name
383
- all_inverse_list.delete inverse
384
- inverse_exists = true
385
- end
386
- end
387
- end
388
-
389
- res = ERB.new(attribute_entity_association_template)
390
- t = res.result(binding)
391
- file.puts t
392
- end
393
- end
394
- end
395
-
396
- # Map EXPRESS Inverse Attribute resulting UML Association (the Association is referenced from Class resulting from Entity)
397
- for inverse in all_inverse_list
398
- xmiid = '_1_association_' + inverse.reverseEntity.schema.name + '-' + inverse.entity.name + '-' + inverse.reverseAttr_id
399
- owner_xmiid = '_' + inverse.entity.schema.name + '-' + inverse.entity.name
400
- iattr_xmiid = '_2_attr_' + inverse.entity.schema.name + '-' + inverse.entity.name + '-' + inverse.name
401
-
402
- general_xmiid = '_2_general_' + inverse.reverseEntity.schema.name + '-' + inverse.entity.name + '-' + inverse.reverseAttr_id
403
- redefined_xmiid = '_1_association_' + inverse.entity.schema.name + '-' + inverse.reverseEntity.name + '-' + inverse.reverseAttr_id
404
-
405
- res = ERB.new(inverse_entity_association_template)
406
- t = res.result(binding)
407
- file.puts t
408
- end
409
-
410
- # Map EXPRESS Entity Types
411
- for entity in entity_list
412
-
413
- # Evaluate and write ENTITY start template
414
- xmiid = '_' + schema.name + '-' + entity.name
415
- xmiid_entity = xmiid
416
- res = ERB.new(entity_start_template)
417
- t = res.result(binding)
418
- file.puts t
419
-
420
- # Map Entity is SUBTYPE OF (i.e. list of supertypes)
421
- for supertype in entity.supertypes_array
422
- xmiid = '_2_supertype_' + schema.name + '-' + entity.name + '-' + supertype.name
423
- xmiid_general = '_' + supertype.schema.name + '-' + supertype.name
424
- res = ERB.new(supertype_template)
425
- t = res.result(binding)
426
- file.puts t
427
- end
428
-
429
- # Map TYPE Select has Entity as item
430
- for select in select_list
431
- if select.selectitems_array.include?(entity)
432
- xmiid = '_2_selectitem_' + schema.name + '-' + entity.name + '-' + select.name
433
- xmiid_general = '_' + schema.name + '-' + select.name
434
- res = ERB.new(selectitem_entity_template)
435
- t = res.result(binding)
436
- file.puts t
437
- end
438
- end
439
-
440
- # Map EXPRESS Explicit Attributes
441
- attr_list = entity.attributes.find_all{ |e| e.kind_of? EXPSM::Explicit }
442
- for attr in attr_list
443
- xmiid = '_2_attr_' + schema.name + '-' + entity.name + '-' + attr.name
444
-
445
- # set up references resulting from attribute being a redeclaration
446
- if attr.redeclare_entity
447
- redeclare_entity = NamedType.find_by_name( attr.redeclare_entity )
448
- if attr.redeclare_oldname
449
- redefined_xmiid = '_2_attr_' + redeclare_entity.schema.name + '-' + attr.redeclare_entity + '-' + attr.redeclare_oldname
450
- else
451
- redefined_xmiid = '_2_attr_' + redeclare_entity.schema.name + '-' + attr.redeclare_entity + '-' + attr.name
452
- end
453
- end
454
-
455
- # initialize default cardinailty constraints
456
- lower = '1'
457
- upper = '1'
458
- isset = 'true'
459
- islist = 'false'
460
-
461
- # set up cardinailty constraints from attribute being a 1-D aggregate
462
- if attr.instance_of? EXPSM::ExplicitAggregate and attr.rank == 1
463
- upper = attr.dimensions[0].upper
464
- if upper == '?'
465
- upper = '*'
466
- end
467
- lower = attr.dimensions[0].lower
468
- if attr.dimensions[0].aggrtype == 'LIST'
469
- islist = 'true'
470
- end
471
- if attr.dimensions[0].aggrtype == 'BAG'
472
- isset = 'false'
473
- end
474
- if attr.dimensions[0].aggrtype == 'LIST' and !attr.dimensions[0].isUnique
475
- isset = 'false'
476
- end
477
- end
478
- if attr.isOptional == TRUE
479
- lower = '0'
480
- end
481
-
482
- attrset = false
483
-
484
- # Map EXPRESS Explicit Attributes of Builtin
485
- if attr.isBuiltin
486
- attrset= true
487
- res = ERB.new(attribute_builtin_template,0,"<>")
488
- t = res.result(binding)
489
- file.puts t
490
- end
491
-
492
- attr_domain = NamedType.find_by_name( attr.domain )
493
-
494
- # Map EXPRESS Explicit Attributes of TYPE and TYPE Enum
495
- if attr_domain.kind_of? EXPSM::Type or attr_domain.kind_of? EXPSM::TypeEnum
496
- attrset= true
497
- type_xmiid = '_' + attr_domain.schema.name + '-' + attr_domain.name
498
- res = ERB.new(attribute_enum_type_template,0,"<>")
499
- t = res.result(binding)
500
- file.puts t
501
- end
502
-
503
- # Map EXPRESS Explicit Attributes of Entity and Select
504
- if attr_domain.kind_of? EXPSM::Entity or attr_domain.kind_of? EXPSM::TypeSelect
505
- attrset= true
506
- domain_xmiid = '_' + attr_domain.schema.name + '-' + attr_domain.name
507
- assoc_xmiid = '_1_association_' + schema.name + '-' + entity.name + '-' + attr.name
508
- res = ERB.new(attribute_entity_template,0,"<>")
509
- t = res.result(binding)
510
- file.puts t
511
- end
512
-
513
- if !attrset
514
- puts 'Oops ' + entity.name + '.' + attr.name
515
- puts attr.domain
516
- end
517
-
518
- res = ERB.new(attribute_end,0,"<>")
519
- t = res.result(binding)
520
- file.puts t
521
- end
522
-
523
- #Map EXPRESS Inverse Attributes
524
- inverse_attr_list = entity.attributes.find_all{ |e| e.kind_of? EXPSM::Inverse }
525
- for inverse in inverse_attr_list
526
- xmiid = '_2_attr_' + schema.name + '-' + entity.name + '-' + inverse.name
527
- # set up references resulting from attribute being a redeclaration
528
- if inverse.redeclare_entity
529
- puts 'FOUND REDECLARED INVERSE ' + inverse.name
530
- if inverse.redeclare_oldname
531
- redefined_xmiid = '_2_attr_' + schema.name + '-' + inverse.redeclare_entity + '-' + inverse.redeclare_oldname
532
- else
533
- redefined_xmiid = '_2_attr_' + schema.name + '-' + inverse.redeclare_entity + '-' + inverse.name
534
- end
535
- end
536
-
537
- lower = '1'
538
- upper = '1'
539
- isset = 'true'
540
- if inverse.instance_of? EXPSM::InverseAggregate
541
- lower = '0'
542
- upper = '*'
543
- if inverse.upper != '?'
544
- upper = inverse.upper
545
- end
546
- if inverse.lower != '0'
547
- lower = inverse.lower
548
- end
549
- if inverse.aggrtype == 'BAG'
550
- isset = 'false'
551
- end
552
- end
553
- domain_xmiid = '_' + schema.name + '-' + inverse.reverseEntity.name
554
- if inverse.reverseAttr.domain == entity.name
555
- assoc_xmiid = '_1_association_' + inverse.reverseEntity.schema.name + '-' + inverse.reverseEntity.name + '-' + inverse.reverseAttr_id
556
- else
557
- assoc_xmiid = '_1_association_' + inverse.reverseEntity.schema.name + '-' + entity.name + '-' + inverse.reverseAttr_id
558
- end
559
- res = ERB.new(inverse_attribute_template)
560
- t = res.result(binding)
561
- file.puts t
562
-
563
- res = ERB.new(attribute_end,0,"<>")
564
- t = res.result(binding)
565
- file.puts t
566
- end
567
-
568
- #Map EXPRESS Unique crules
569
- if entity.uniques.size > 0
570
- for unique in entity.uniques
571
- xmiid = '_3_uniq_' + schema.name + '-' + entity.name + '-' + unique.name
572
- if unique.attributes.size == 1
573
- unique_text = unique.attributes[0]
574
- else
575
- unique_text = 'Sequence{'+ unique.attributes.join(', ') +'}'
576
- end
577
- res = ERB.new(unique_template)
578
- t = res.result(binding)
579
- file.puts t
580
- end
581
- end
582
-
583
- # Evaluate and write ENTITY end template
584
- res = ERB.new(entity_end_template)
585
- t = res.result(binding)
586
- file.puts t
587
- end
588
-
589
- # Evaluate and write SCHEMA end template
590
- res = ERB.new(schema_end_template)
591
- t = res.result(binding)
592
- file.puts t
593
- end
594
-
595
- # Evaluate and write file end template
596
- res = ERB.new(overall_end_template)
597
- t = res.result(binding)
598
- file.puts t
1
+ require 'erb'
2
+ # EXPRESS to UML 2 Mapping
3
+ # Version 0.1
4
+ #
5
+ # This function navigates the EXPRESS STEPMod Model Ruby Classes
6
+ # and performs a structural EXPRESS-to-UML2 (2.1.2) mapping using Ruby ERB templates.
7
+ # 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.
8
+ #
9
+ # Integer, Boolean, String -> UML equivalent builtin type
10
+ # Real, Number, Binary, Logical -> New 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 -> Association end adjustment
22
+ # Inverse Attribute Redeclaration (Renamed) -> Property with (new) name that redefines inherited Property
23
+ # USE or REFERENCE (even with named items) -> UML PackageImport between Packages
24
+ #
25
+ #######################################################################################
26
+
27
+ def map_from_express( mapinput )
28
+
29
+ # Enter file name here to override defaults (<schema>.xmi if one schema, and Model.xmi if more than one)
30
+ output_xmi_filename = nil
31
+
32
+ # datatypes for builtin types that map directly to UML
33
+ datatype_hash = Hash.new
34
+ datatype_hash["INTEGER"] = 'http://schema.omg.org/spec/UML/2.1.2/uml.xml#Integer'
35
+ datatype_hash["BOOLEAN"] = 'http://schema.omg.org/spec/UML/2.1.2/uml.xml#Boolean'
36
+ datatype_hash["STRING"] = 'http://schema.omg.org/spec/UML/2.1.2/uml.xml#String'
37
+
38
+ # XMI File Start Template (includes datatypes for builtin with no direct UML equivalent)
39
+ overall_start_template = %{<?xml version="1.0" encoding="UTF-8"?>
40
+ <uml:Model xmi:version = "2.1" xmlns:xmi = "http://schema.omg.org/spec/XMI/2.1" xmlns:uml = "http://schema.omg.org/spec/UML/2.1.2" name = "UMLfromEXPRESS" xmi:id = "_0">
41
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="REAL" name="Real" />
42
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="NUMBER" name="Number" />
43
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="BINARY" name="Binary" />
44
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="LOGICAL" name="Logical" />}
45
+
46
+ # XMI File End Template
47
+ overall_end_template = %{</uml:Model>}
48
+
49
+ # SCHEMA Start Template
50
+ schema_start_template = %{<packagedElement xmi:type = "uml:Package" xmi:id = "_1_<%= schema.name %>" name = "<%= schema.name %>" visibility = "public">}
51
+
52
+ # SCHEMA INTERFACE Template
53
+ 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 %>'/>}
54
+
55
+ # SCHEMA End Template
56
+ schema_end_template = %{</packagedElement>}
57
+
58
+ # ENTITY Start Template
59
+ entity_start_template = %{<packagedElement xmi:type = "uml:Class" xmi:id = "<%= xmiid %>" name = "<%= entity.name %>" isAbstract = "<% if entity.isAbs %>TRUE<% else %>FALSE<% end %>" visibility = "public">}
60
+
61
+ # SUBTYPE OF Template
62
+ supertype_template = %{<generalization xmi:type="uml:Generalization" xmi:id="<%= xmiid %>" general="<%= xmiid_general %>"/>}
63
+
64
+ # ENTITY End Template
65
+ entity_end_template = %{</packagedElement>}
66
+
67
+ # ENUMERATION Start Template
68
+ enum_start_template = %{<packagedElement xmi:type = "uml:Enumeration" xmi:id = "<%= type_xmiid %>" name = "<%= enum.name %>">}
69
+
70
+ # ENUMERATION ITEM Template
71
+ enum_item_template = %{<ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="<%= enumitem_xmiid %>" name="<%= enumitem %>" classifier="<%= type_xmiid %>" enumeration="<%= type_xmiid %>">
72
+ <specification xmi:type="uml:LiteralInteger" xmi:id="<%= enumitem_xmiid + '_specification' %> "/>
73
+ </ownedLiteral>}
74
+
75
+ # ENUMERATION End Template
76
+ enum_end_template = %{</packagedElement>}
77
+
78
+ # SELECT Start Template
79
+ select_start_template = %{<packagedElement xmi:type = "uml:Interface" xmi:id = "<%= xmiid %>" name = "<%= select.name %>" isAbstract = "TRUE" visibility = "public">}
80
+
81
+ # SELECT ITEM is ENTITY Template
82
+ selectitem_entity_template = %{ <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="<%= xmiid %>" supplier="<%= xmiid_general %>" client="<%= xmiid_entity %>" contract="<%= xmiid_general %>" implementingClassifier="<%= xmiid_entity %>"/>}
83
+
84
+ # SELECT ITEM is TYPE Template
85
+ selectitem_type_template = %{ <packagedElement xmi:type="uml:Realization" xmi:id="<%= xmiid %>" supplier="<%= xmiid_general %>" client="<%= xmiid_type %>"/>}
86
+
87
+ # SELECT End Template
88
+ select_end_template = %{</packagedElement>}
89
+
90
+ # Template covering abstract entity types
91
+ abstract_entity_template = %{}
92
+
93
+ # Template covering the output file contents for each attribute that is an aggregate
94
+ attribute_aggregate_template = %{}
95
+
96
+ # Template covering the output file contents for each attribute that is an aggregate of select of entity
97
+ attribute_aggregate_entity_select_template = %{}
98
+
99
+ # Template covering the output file contents for each attribute that is a select of entity
100
+ attribute_entity_select_template = %{}
101
+
102
+ # Template covering the output file contents for each attribute that is an entity
103
+ attribute_entity_template = %{<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 %>>}
104
+
105
+ # INVERSE ATTRIBUTE Template
106
+ inverse_attribute_template = %{<ownedAttribute xmi:type="uml:Property" xmi:id="<%= xmiid %>" name="<%= inverse.name %>" visibility="public" isOrdered='<%= islist %>' isUnique='<%= isset %>' isLeaf='false' isStatic='false' isReadOnly='true' isDerived='false' isDerivedUnion='false' type="<%= domain_xmiid %>" aggregation="none" association="<%= assoc_xmiid %>" <% if inverse.redeclare_entity %>redefinedProperty="<%= redefined_xmiid %>"<% end %>>}
107
+
108
+ #Template covering attribute wrapup
109
+ attribute_end = %{<% if lower == '0' %><lowerValue xmi:type="uml:LiteralInteger" xmi:id="<%= xmiid %>-lowerValue"/><% end %>
110
+ <% if lower != '0' and lower != '1' %><lowerValue xmi:type="uml:LiteralInteger" xmi:id="<%= xmiid %>-lowerValue" value="<%= lower %>"/><% end %>
111
+ <% if upper != '1' %><upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="<%= xmiid %>-upperValue" value="<%= upper %>"/><% end %>
112
+ </ownedAttribute>}
113
+
114
+
115
+ # EXPLICIT ATTRIBUTE ENTITY Create Association Template
116
+ attribute_entity_association_template = %{<packagedElement xmi:type="uml:Association" xmi:id="<%= xmiid %>" name="" visibility='public' isLeaf='false' isAbstract='false' isDerived='false'>
117
+ <memberEnd xmi:idref="<%= attr_xmiid %>"/>
118
+ <% if !inverse_exists %><memberEnd xmi:idref="<%= xmiid + '-end' %>"/>
119
+ <ownedEnd xmi:type="uml:Property" xmi:id="<%= xmiid + '-end' %>" type="<%= owner_xmiid %>" owningAssociation="<%= xmiid %>" association="<%= xmiid %>" visibility='public'>
120
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="<%= xmiid %>-lowerValue"/>
121
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="<%= xmiid %>-upperValue" value="*"/>
122
+ </ownedEnd><% else %><memberEnd xmi:idref="<%= iattr_xmiid %>"/>
123
+ <% end %>
124
+ <% if general_exists %><generalization xmi:type="uml:Generalization" xmi:id="<%= general_xmiid %>" general="<%= redefined_xmiid %>"/><% end %>
125
+ </packagedElement>}
126
+
127
+
128
+ # INVERSE ATTRIBUTE ENTITY Create Association Template
129
+ inverse_entity_association_template = %{<packagedElement xmi:type="uml:Association" xmi:id="<%= xmiid %>" name="" visibility='public' isLeaf='false' isAbstract='false' isDerived='false'>
130
+ <memberEnd xmi:idref="<%= iattr_xmiid %>"/>
131
+ <memberEnd xmi:idref="<%= xmiid + '-end' %>"/>
132
+ <ownedEnd xmi:type="uml:Property" xmi:id="<%= xmiid + '-end' %>" type="<%= owner_xmiid %>" owningAssociation="<%= xmiid %>" association="<%= xmiid %>" visibility='public'/>
133
+ <generalization xmi:type="uml:Generalization" xmi:id="<%= general_xmiid %>" general="<%= redefined_xmiid %>"/>
134
+ </packagedElement>}
135
+
136
+
137
+ # Template covering the output file contents for each attribute
138
+ attribute_template = %{}
139
+
140
+ # EXPLICIT ATTRIBUTE SIMPLE TYPE Template
141
+ attribute_builtin_template = %{<ownedAttribute xmi:type="uml:Property" xmi:id="<%= xmiid %>" name="<%= attr.name %>" visibility="public" <% if datatype_hash[attr.domain] != nil %>isOrdered='<%= islist %>' isUnique='<%= isset %>'<% if attr.redeclare_entity %> redefinedProperty="<%= redefined_xmiid %>"<% end %>>
142
+ <type xmi:type="uml:PrimitiveType" href="<%= datatype_hash[attr.domain] %>" /><% end %>
143
+ <% if datatype_hash[attr.domain] == nil %>type="<%= attr.domain %>"<% if attr.redeclare_entity %> redefinedProperty="<%= redefined_xmiid %>"<% end %>><% end %>}
144
+
145
+
146
+ # EXPLICIT ATTRIBUTE ENUM and TYPE Template
147
+ attribute_enum_type_template = %{<ownedAttribute xmi:type="uml:Property" xmi:id="<%= xmiid %>" name="<%= attr.name %>" visibility="public" type="<%= type_xmiid %>" isOrdered='<%= islist %>' isUnique='<%= isset %>' >}
148
+
149
+ # UNIQUE rule template
150
+ unique_template = %{<ownedRule xmi:type="uml:Constraint" xmi:id="<%= xmiid %>" name="<%= unique.name %>" visibility="public">
151
+ <constrainedElement xmi:idref="<%= xmiid_entity %>"/>
152
+ <specification xmi:type="uml:OpaqueExpression" xmi:id="<%= xmiid + '-spec' %>" visibility="public">
153
+ <body><%= entity.name %>::allInstance()-&gt;isUnique(<%= unique_text %>)</body>
154
+ <language>OCL2.0</language>
155
+ </specification>
156
+ </ownedRule>}
157
+
158
+ # TYPE Template
159
+ type_template = %{<packagedElement xmi:type="uml:PrimitiveType" xmi:id="_<%= schema.name %>-<%= type.name %>" name="<%= type.name %>" >
160
+ <% if datatype_hash[type.domain] != nil %>
161
+ <generalization xmi:type="uml:Generalization" xmi:id="_supertype_<%= schema.name %>-<%= type.name %>">
162
+ <general xmi:type='uml:PrimitiveType' href="<%= datatype_hash[type.domain] %>" />
163
+ </generalization>
164
+ <% end %>
165
+ <% if datatype_hash[type.domain] == nil %>
166
+ <generalization xmi:type="uml:Generalization" xmi:id="_supertype_<%= schema.name %>-<%= type.name %>" general="<%= type.domain %>"/>
167
+ <% end %>
168
+ </packagedElement>}
169
+
170
+
171
+ #############################################################################################
172
+ # Set up list of schemas to process, input may be a repository containing schemas or a single schema
173
+ #############################################################################################
174
+
175
+ if mapinput.kind_of? EXPSM::Repository
176
+ schema_list = mapinput.schemas
177
+ elsif mapinput.kind_of? EXPSM::SchemaDefinition
178
+ schema_list = [mapinput]
179
+ else
180
+ puts "ERROR : map_from_express input no Repository instance or Schema instance"
181
+ exit
182
+ end
183
+
184
+ # Set up XMI output file
185
+
186
+ if schema_list.size == 1 and output_xmi_filename == nil
187
+ schema = schema_list[0]
188
+ output_xmi_filename = schema.name.to_s + ".xmi"
189
+ elsif output_xmi_filename == nil
190
+ output_xmi_filename = 'Model.xmi'
191
+ end
192
+
193
+ file = File.new(output_xmi_filename, "w")
194
+ puts 'reeper : Writing output to file ' + output_xmi_filename
195
+
196
+ # Evaluate and write file start template
197
+ res = ERB.new(overall_start_template)
198
+ t = res.result(binding)
199
+ file.puts t
200
+
201
+ # Set up list of all EXPRESS Inverses in all schemas
202
+ all_inverse_list = []
203
+
204
+ for schema in schema_list
205
+ entity_list = schema.contents.find_all{ |e| e.kind_of? EXPSM::Entity }
206
+ for entity in entity_list
207
+ entity_inverse_list = entity.attributes.find_all{ |e| e.kind_of? EXPSM::Inverse }
208
+ for inverse in entity_inverse_list
209
+ all_inverse_list.push inverse
210
+ end
211
+ end
212
+
213
+
214
+ # Evaluate and write schema start template
215
+ res = ERB.new(schema_start_template)
216
+ t = res.result(binding)
217
+ file.puts t
218
+
219
+ interfaced_schema_list = schema.contents.find_all{ |e| e.instance_of? EXPSM::InterfaceSpecification}
220
+
221
+ for interfaced_schema in interfaced_schema_list
222
+ # Evaluate and write schema interface template
223
+ res = ERB.new(schema_interface_template)
224
+ t = res.result(binding)
225
+ file.puts t
226
+ end
227
+
228
+ # set up select_list - used in a number of places
229
+ select_list = schema.contents.find_all{ |e| e.instance_of? EXPSM::TypeSelect }
230
+
231
+ # Map EXPRESS TYPE of Builtin
232
+ type_list = schema.contents.find_all{ |e| e.instance_of? EXPSM::Type and e.isBuiltin}
233
+ for type in type_list
234
+ xmiid = '_' + schema.name + '-' + type.name
235
+ res = ERB.new(type_template)
236
+ t = res.result(binding)
237
+ file.puts t
238
+
239
+ # Map TYPE Select has Type as item
240
+ for select in select_list
241
+ if select.selectitems_array.include?(type)
242
+ xmiid = '_2_selectitem_' + schema.name + '-' + type.name + '-' + select.name
243
+ xmiid_general = '_' + schema.name + '-' + select.name
244
+ res = ERB.new(selectitem_type_template)
245
+ t = res.result(binding)
246
+ file.puts t
247
+ end
248
+ end
249
+ end
250
+
251
+ # Map EXPRESS TYPE of TYPE Select
252
+ type_list = schema.contents.find_all{ |e| e.instance_of? EXPSM::Type and !e.isBuiltin}
253
+ for select in type_list
254
+ superselect = NamedType.find_by_name( select.domain )
255
+ if superselect.kind_of? EXPSM::TypeSelect
256
+ # Evaluate and write TYPE Select start template
257
+ xmiid = '_' + schema.name + '-' + select.name
258
+ xmiid_type = xmiid
259
+ res = ERB.new(select_start_template)
260
+ t = res.result(binding)
261
+ file.puts t
262
+
263
+ # Write Select Item template for parent (maps to UML same as EXPRESS supertype)
264
+ xmiid = '_2_superselect_' + schema.name + '-' + select.name + '-' + superselect.name
265
+ xmiid_general = '_' + schema.name + '-' + superselect.name
266
+ res = ERB.new(supertype_template)
267
+ t = res.result(binding)
268
+ file.puts t
269
+
270
+ # Evaluate and write TYPE Select end template
271
+ res = ERB.new(select_end_template)
272
+ t = res.result(binding)
273
+ file.puts t
274
+ end
275
+ end
276
+
277
+ # Map EXPRESS Enumeration Types
278
+ enum_list = schema.contents.find_all{ |e| e.instance_of? EXPSM::TypeEnum }
279
+ for enum in enum_list
280
+
281
+ # Evaluate and write TYPE Enum start template
282
+ type_xmiid = '_' + schema.name + '-' + enum.name
283
+ res = ERB.new(enum_start_template)
284
+ t = res.result(binding)
285
+ file.puts t
286
+
287
+ superenum = enum.extends_item
288
+ if superenum != nil
289
+ if superselect.kind_of? EXPSM::TypeEnum
290
+ # Write Enum Item template for parent (maps to UML same as EXPRESS supertype)
291
+ xmiid = '_2_superenum_' + schema.name + '-' + enum.name + '-' + superenum.name
292
+ xmiid_general = '_' + superenum.schema.name + '-' + superenum.name
293
+ res = ERB.new(supertype_template)
294
+ t = res.result(binding)
295
+ file.puts t
296
+ end
297
+ end
298
+
299
+ # Evaluate and write Enum Item template for each item
300
+ enumitem_name_list = enum.items.scan(/\w+/)
301
+ for enumitem in enumitem_name_list
302
+ enumitem_xmiid = '_1_enumitem_' + schema.name + '-' + enum.name + '-' + enumitem
303
+ res = ERB.new(enum_item_template)
304
+ t = res.result(binding)
305
+ file.puts t
306
+ end
307
+
308
+ # Evaluate and write TYPE Enum end template
309
+ res = ERB.new(enum_end_template)
310
+ t = res.result(binding)
311
+ file.puts t
312
+ end
313
+
314
+ # Map EXPRESS TYPE Selects
315
+ for select in select_list
316
+
317
+ # Evaluate and write TYPE Select start template
318
+ xmiid = '_' + schema.name + '-' + select.name
319
+ res = ERB.new(select_start_template)
320
+ t = res.result(binding)
321
+ file.puts t
322
+
323
+ superselect = select.extends_item
324
+ if superselect != nil
325
+ if superselect.kind_of? EXPSM::TypeSelect
326
+ # Write Select Item template for parent (maps to UML same as EXPRESS supertype)
327
+ xmiid = '_2_superselect_' + schema.name + '-' + select.name + '-' + superselect.name
328
+ xmiid_general = '_' + superselect.schema.name + '-' + superselect.name
329
+ res = ERB.new(supertype_template)
330
+ t = res.result(binding)
331
+ file.puts t
332
+ end
333
+ end
334
+
335
+ # Evaluate and write Select Item template for each item (maps to UML same as EXPRESS supertype)
336
+ for superselect in select_list
337
+ if superselect.selectitems_array.include?(select)
338
+ xmiid = '_2_superselect_' + schema.name + '-' + select.name + '-' + superselect.name
339
+ xmiid_general = '_' + schema.name + '-' + superselect.name
340
+ res = ERB.new(supertype_template)
341
+ t = res.result(binding)
342
+ file.puts t
343
+ end
344
+ end
345
+
346
+ # Evaluate and write TYPE Select end template
347
+ res = ERB.new(select_end_template)
348
+ t = res.result(binding)
349
+ file.puts t
350
+ end
351
+
352
+ entity_list = schema.contents.find_all{ |e| e.kind_of? EXPSM::Entity }
353
+
354
+ # Map EXPRESS Explicit Attribute resulting UML Association (the Association is referenced from Class resulting from Entity)
355
+ for entity in entity_list
356
+ attr_list = entity.attributes.find_all{ |e| e.kind_of? EXPSM::Explicit }
357
+ for attr in attr_list
358
+
359
+ if NamedType.find_by_name( attr.domain ).kind_of? EXPSM::Entity or NamedType.find_by_name( attr.domain ).kind_of? EXPSM::TypeSelect
360
+ xmiid = '_1_association_' + schema.name + '-' + entity.name + '-' + attr.name
361
+ attr_xmiid = '_2_attr_' + schema.name + '-' + entity.name + '-' + attr.name
362
+ owner_xmiid = '_' + schema.name + '-' + entity.name
363
+ domain_xmiid = '_' + schema.name + '-' + NamedType.find_by_name( attr.domain ).name
364
+
365
+ general_exists = false
366
+ if attr.redeclare_entity
367
+ general_exists = true
368
+ redeclare_entity = NamedType.find_by_name( attr.redeclare_entity )
369
+ general_xmiid = '_2_general_' + schema.name + '-' + entity.name + '-' + attr.name
370
+ if attr.redeclare_oldname
371
+ redefined_xmiid = '_1_association_' + redeclare_entity.schema.name + '-' + attr.redeclare_entity + '-' + attr.redeclare_oldname
372
+ else
373
+ redefined_xmiid = '_1_association_' + redeclare_entity.schema.name + '-' + attr.redeclare_entity + '-' + attr.name
374
+ end
375
+ end
376
+
377
+ # check if inverse refers to this attribute, affects how association is written
378
+ inverse_exists = false
379
+ for inverse in all_inverse_list
380
+ if inverse.reverseAttr == attr
381
+ if attr.domain == inverse.entity.name
382
+ iattr_xmiid = '_2_attr_' + inverse.entity.schema.name + '-' + inverse.entity.name + '-' + inverse.name
383
+ all_inverse_list.delete inverse
384
+ inverse_exists = true
385
+ end
386
+ end
387
+ end
388
+
389
+ res = ERB.new(attribute_entity_association_template)
390
+ t = res.result(binding)
391
+ file.puts t
392
+ end
393
+ end
394
+ end
395
+
396
+ # Map EXPRESS Inverse Attribute resulting UML Association (the Association is referenced from Class resulting from Entity)
397
+ for inverse in all_inverse_list
398
+ xmiid = '_1_association_' + inverse.reverseEntity.schema.name + '-' + inverse.entity.name + '-' + inverse.reverseAttr_id
399
+ owner_xmiid = '_' + inverse.entity.schema.name + '-' + inverse.entity.name
400
+ iattr_xmiid = '_2_attr_' + inverse.entity.schema.name + '-' + inverse.entity.name + '-' + inverse.name
401
+
402
+ general_xmiid = '_2_general_' + inverse.reverseEntity.schema.name + '-' + inverse.entity.name + '-' + inverse.reverseAttr_id
403
+ redefined_xmiid = '_1_association_' + inverse.entity.schema.name + '-' + inverse.reverseEntity.name + '-' + inverse.reverseAttr_id
404
+
405
+ res = ERB.new(inverse_entity_association_template)
406
+ t = res.result(binding)
407
+ file.puts t
408
+ end
409
+
410
+ # Map EXPRESS Entity Types
411
+ for entity in entity_list
412
+
413
+ # Evaluate and write ENTITY start template
414
+ xmiid = '_' + schema.name + '-' + entity.name
415
+ xmiid_entity = xmiid
416
+ res = ERB.new(entity_start_template)
417
+ t = res.result(binding)
418
+ file.puts t
419
+
420
+ # Map Entity is SUBTYPE OF (i.e. list of supertypes)
421
+ for supertype in entity.supertypes_array
422
+ xmiid = '_2_supertype_' + schema.name + '-' + entity.name + '-' + supertype.name
423
+ xmiid_general = '_' + supertype.schema.name + '-' + supertype.name
424
+ res = ERB.new(supertype_template)
425
+ t = res.result(binding)
426
+ file.puts t
427
+ end
428
+
429
+ # Map TYPE Select has Entity as item
430
+ for select in select_list
431
+ if select.selectitems_array.include?(entity)
432
+ xmiid = '_2_selectitem_' + schema.name + '-' + entity.name + '-' + select.name
433
+ xmiid_general = '_' + schema.name + '-' + select.name
434
+ res = ERB.new(selectitem_entity_template)
435
+ t = res.result(binding)
436
+ file.puts t
437
+ end
438
+ end
439
+
440
+ # Map EXPRESS Explicit Attributes
441
+ attr_list = entity.attributes.find_all{ |e| e.kind_of? EXPSM::Explicit }
442
+ for attr in attr_list
443
+ xmiid = '_2_attr_' + schema.name + '-' + entity.name + '-' + attr.name
444
+
445
+ # set up references resulting from attribute being a redeclaration
446
+ if attr.redeclare_entity
447
+ redeclare_entity = NamedType.find_by_name( attr.redeclare_entity )
448
+ if attr.redeclare_oldname
449
+ redefined_xmiid = '_2_attr_' + redeclare_entity.schema.name + '-' + attr.redeclare_entity + '-' + attr.redeclare_oldname
450
+ else
451
+ redefined_xmiid = '_2_attr_' + redeclare_entity.schema.name + '-' + attr.redeclare_entity + '-' + attr.name
452
+ end
453
+ end
454
+
455
+ # initialize default cardinailty constraints
456
+ lower = '1'
457
+ upper = '1'
458
+ isset = 'true'
459
+ islist = 'false'
460
+
461
+ # set up cardinailty constraints from attribute being a 1-D aggregate
462
+ if attr.instance_of? EXPSM::ExplicitAggregate and attr.rank == 1
463
+ upper = attr.dimensions[0].upper
464
+ if upper == '?'
465
+ upper = '*'
466
+ end
467
+ lower = attr.dimensions[0].lower
468
+ if attr.dimensions[0].aggrtype == 'LIST'
469
+ islist = 'true'
470
+ end
471
+ if attr.dimensions[0].aggrtype == 'BAG'
472
+ isset = 'false'
473
+ end
474
+ if attr.dimensions[0].aggrtype == 'LIST' and !attr.dimensions[0].isUnique
475
+ isset = 'false'
476
+ end
477
+ end
478
+ if attr.isOptional == TRUE
479
+ lower = '0'
480
+ end
481
+
482
+ attrset = false
483
+
484
+ # Map EXPRESS Explicit Attributes of Builtin
485
+ if attr.isBuiltin
486
+ attrset= true
487
+ res = ERB.new(attribute_builtin_template,0,"<>")
488
+ t = res.result(binding)
489
+ file.puts t
490
+ end
491
+
492
+ attr_domain = NamedType.find_by_name( attr.domain )
493
+
494
+ # Map EXPRESS Explicit Attributes of TYPE and TYPE Enum
495
+ if attr_domain.kind_of? EXPSM::Type or attr_domain.kind_of? EXPSM::TypeEnum
496
+ attrset= true
497
+ type_xmiid = '_' + attr_domain.schema.name + '-' + attr_domain.name
498
+ res = ERB.new(attribute_enum_type_template,0,"<>")
499
+ t = res.result(binding)
500
+ file.puts t
501
+ end
502
+
503
+ # Map EXPRESS Explicit Attributes of Entity and Select
504
+ if attr_domain.kind_of? EXPSM::Entity or attr_domain.kind_of? EXPSM::TypeSelect
505
+ attrset= true
506
+ domain_xmiid = '_' + attr_domain.schema.name + '-' + attr_domain.name
507
+ assoc_xmiid = '_1_association_' + schema.name + '-' + entity.name + '-' + attr.name
508
+ res = ERB.new(attribute_entity_template,0,"<>")
509
+ t = res.result(binding)
510
+ file.puts t
511
+ end
512
+
513
+ if !attrset
514
+ puts 'Oops ' + entity.name + '.' + attr.name
515
+ puts attr.domain
516
+ end
517
+
518
+ res = ERB.new(attribute_end,0,"<>")
519
+ t = res.result(binding)
520
+ file.puts t
521
+ end
522
+
523
+ #Map EXPRESS Inverse Attributes
524
+ inverse_attr_list = entity.attributes.find_all{ |e| e.kind_of? EXPSM::Inverse }
525
+ for inverse in inverse_attr_list
526
+ xmiid = '_2_attr_' + schema.name + '-' + entity.name + '-' + inverse.name
527
+ # set up references resulting from attribute being a redeclaration
528
+ if inverse.redeclare_entity
529
+ puts 'FOUND REDECLARED INVERSE ' + inverse.name
530
+ if inverse.redeclare_oldname
531
+ redefined_xmiid = '_2_attr_' + schema.name + '-' + inverse.redeclare_entity + '-' + inverse.redeclare_oldname
532
+ else
533
+ redefined_xmiid = '_2_attr_' + schema.name + '-' + inverse.redeclare_entity + '-' + inverse.name
534
+ end
535
+ end
536
+
537
+ lower = '1'
538
+ upper = '1'
539
+ isset = 'true'
540
+ if inverse.instance_of? EXPSM::InverseAggregate
541
+ lower = '0'
542
+ upper = '*'
543
+ if inverse.upper != '?'
544
+ upper = inverse.upper
545
+ end
546
+ if inverse.lower != '0'
547
+ lower = inverse.lower
548
+ end
549
+ if inverse.aggrtype == 'BAG'
550
+ isset = 'false'
551
+ end
552
+ end
553
+ domain_xmiid = '_' + schema.name + '-' + inverse.reverseEntity.name
554
+ if inverse.reverseAttr.domain == entity.name
555
+ assoc_xmiid = '_1_association_' + inverse.reverseEntity.schema.name + '-' + inverse.reverseEntity.name + '-' + inverse.reverseAttr_id
556
+ else
557
+ assoc_xmiid = '_1_association_' + inverse.reverseEntity.schema.name + '-' + entity.name + '-' + inverse.reverseAttr_id
558
+ end
559
+ res = ERB.new(inverse_attribute_template)
560
+ t = res.result(binding)
561
+ file.puts t
562
+
563
+ res = ERB.new(attribute_end,0,"<>")
564
+ t = res.result(binding)
565
+ file.puts t
566
+ end
567
+
568
+ #Map EXPRESS Unique crules
569
+ if entity.uniques.size > 0
570
+ for unique in entity.uniques
571
+ xmiid = '_3_uniq_' + schema.name + '-' + entity.name + '-' + unique.name
572
+ if unique.attributes.size == 1
573
+ unique_text = unique.attributes[0]
574
+ else
575
+ unique_text = 'Sequence{'+ unique.attributes.join(', ') +'}'
576
+ end
577
+ res = ERB.new(unique_template)
578
+ t = res.result(binding)
579
+ file.puts t
580
+ end
581
+ end
582
+
583
+ # Evaluate and write ENTITY end template
584
+ res = ERB.new(entity_end_template)
585
+ t = res.result(binding)
586
+ file.puts t
587
+ end
588
+
589
+ # Evaluate and write SCHEMA end template
590
+ res = ERB.new(schema_end_template)
591
+ t = res.result(binding)
592
+ file.puts t
593
+ end
594
+
595
+ # Evaluate and write file end template
596
+ res = ERB.new(overall_end_template)
597
+ t = res.result(binding)
598
+ file.puts t
599
599
  end