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
data/original/exp2ruby.rb CHANGED
@@ -1,525 +1,525 @@
1
- require 'rexml/document'
2
- include REXML
3
- ##
4
- ## Set global variable for XML namespace prefix to use (including the colon)
5
- $xnspre = ""
6
- ##
7
- ## Set global variable that is the name of the Ruby module containing the resulting EXPRESS-based classes (make uppercase)
8
- $modname = ""
9
- ##
10
- ## Set up Part 28 writer functions for attributes of simple, aggregates of simple, instance reference and aggregate of instance reference
11
- ##
12
- def write_attribute_text_p28writer(rubyfile, attribute_name)
13
- rubyfile.puts " a___" + attribute_name + ".text = " + attribute_name
14
- end
15
- def write_member_text_p28writer(rubyfile, attribute_name, attr_type,attr_aggr_dim)
16
- rubyfile.puts " for " + attribute_name + "___member in " + attribute_name
17
- rubyfile.puts " amember___" + attribute_name + " = a___" + attribute_name + ".add_element(" + "'ex:" + attr_type.downcase + "-wrapper'" + ")"
18
- rubyfile.puts " amember___" + attribute_name + ".text = " + attribute_name + "___member"
19
- rubyfile.puts " end"
20
- end
21
- def write_attribute_id_p28writer(rubyfile, attribute_name)
22
- rubyfile.puts " a___" + attribute_name + " = a___" + attribute_name + ".add_element(" + attribute_name + ".getP28entity)"
23
- rubyfile.puts " a___" + attribute_name + ".attributes['ref'] = " + attribute_name + ".getP28id"
24
- rubyfile.puts " a___" + attribute_name + ".attributes['xsi:nil'] = 'true'"
25
- end
26
- def write_member_id_p28writer(rubyfile, attribute_name,attr_aggr_dim)
27
- rubyfile.puts " for " + attribute_name + "___member in " + attribute_name
28
- rubyfile.puts " amember___" + attribute_name + " = a___" + attribute_name + ".add_element(" + attribute_name + "___member.getP28entity)"
29
- rubyfile.puts " amember___" + attribute_name + ".attributes['ref'] = " + attribute_name + "___member" + ".getP28id"
30
- rubyfile.puts " amember___" + attribute_name + ".attributes['xsi:nil'] = 'true'"
31
- rubyfile.puts " end"
32
- end
33
- ##
34
- ## this function handles the output related to EXPRESS explicit attributes
35
- def handle_explicit(rubyfile, exp, attribute)
36
- attr_redecl = attribute.elements["redeclaration"]
37
- if attr_redecl == nil
38
- rubyfile.puts " if " + attribute.attributes["name"].downcase + " != nil"
39
- rubyfile.puts " a___" + attribute.attributes["name"].downcase + " = e___added.add_element('" + attribute.attributes["name"].capitalize + "'" + ")"
40
- attr_builtintype = attribute.elements["builtintype"]
41
- attr_type = attribute.elements["typename"]
42
- attr_aggr = attribute.elements["aggregate"]
43
- attr_aggr_dim = attribute.elements.size - 1
44
- if attr_builtintype != nil
45
- if attr_aggr == nil
46
- write_attribute_text_p28writer(rubyfile, attribute.attributes["name"].downcase)
47
- else
48
- attr_datatype = attr_builtintype.attributes["type"]
49
- write_member_text_p28writer(rubyfile, attribute.attributes["name"].downcase, attr_datatype,attr_aggr_dim)
50
- end
51
- end
52
- if attr_type != nil
53
- attr_type_name = attr_type.attributes["name"]
54
- xp = "//schema/entity[@name = " + "'" + attr_type_name + "'" + "]"
55
- attr_type_entity = exp.root.elements[xp]
56
- if attr_type_entity != nil
57
- if attr_aggr != nil
58
- write_member_id_p28writer(rubyfile, attribute.attributes["name"].downcase,attr_aggr_dim)
59
- else
60
- write_attribute_id_p28writer(rubyfile, attribute.attributes["name"].downcase)
61
- end
62
- end
63
- xp = "//schema/type[@name = " + "'" + attr_type_name + "'" + "]"
64
- attr_type_type = exp.root.elements[xp]
65
- if attr_type_type != nil
66
- attr_type_type_builtin = attr_type_type.elements["builtintype"]
67
- if attr_type_type_builtin != nil
68
- write_attribute_text_p28writer(rubyfile, attribute.attributes["name"].downcase)
69
- end
70
- attr_type_type_enum = attr_type_type.elements["enumeration"]
71
- if attr_type_type_enum != nil
72
- if attr_aggr != nil
73
- write_member_text_p28writer(rubyfile, attribute.attributes["name"].downcase, attr_datatype,attr_aggr_dim)
74
- else
75
- write_attribute_text_p28writer(rubyfile, attribute.attributes["name"].downcase)
76
- end
77
- end
78
-
79
- attr_type_type_select = attr_type_type.elements["select"]
80
- if attr_type_type_select != nil
81
- if attr_aggr != nil
82
- write_member_id_p28writer(rubyfile, attribute.attributes["name"].downcase,attr_aggr_dim)
83
- else
84
- write_attribute_id_p28writer(rubyfile, attribute.attributes["name"].downcase)
85
- end
86
- end
87
- end
88
- end
89
- rubyfile.puts " end"
90
- end
91
- end
92
- ##
93
- ## this function handles the p28 reader related to EXPRESS explicit attributes
94
- def handle_attr_p28read(rubyp28attr, exp, attribute)
95
- attr_redecl = attribute.elements["redeclaration"]
96
- if attr_redecl == nil
97
- attr_builtintype = attribute.elements["builtintype"]
98
- attr_type = attribute.elements["typename"]
99
- attr_aggr = attribute.elements["aggregate"]
100
- if attr_builtintype != nil
101
- if attr_aggr == nil
102
- write_attribute_text_p28reader(rubyp28attr, attribute.attributes["name"].downcase)
103
- else
104
- attr_datatype = attr_builtintype.attributes["type"]
105
- write_member_text_p28reader(rubyp28attr, attribute.attributes["name"].downcase)
106
- end
107
- end
108
- if attr_type != nil
109
- attr_type_name = attr_type.attributes["name"]
110
- xp = "//schema/entity[@name = " + "'" + attr_type_name + "'" + "]"
111
- attr_type_entity = exp.root.elements[xp]
112
- if attr_type_entity != nil
113
- if attr_aggr != nil
114
- write_member_id_p28reader(rubyp28attr, attribute.attributes["name"].downcase)
115
- else
116
- write_attribute_id_p28reader(rubyp28attr, attribute.attributes["name"].downcase)
117
- end
118
- end
119
- xp = "//schema/type[@name = " + "'" + attr_type_name + "'" + "]"
120
- attr_type_type = exp.root.elements[xp]
121
- if attr_type_type != nil
122
- attr_type_type_builtin = attr_type_type.elements["builtintype"]
123
- if attr_type_type_builtin != nil
124
- write_attribute_text_p28reader(rubyp28attr, attribute.attributes["name"].downcase)
125
- end
126
-
127
- attr_type_type_enum = attr_type_type.elements["enumeration"]
128
- if attr_type_type_enum != nil
129
- write_attribute_text_p28reader(rubyp28attr, attribute.attributes["name"].downcase)
130
- end
131
-
132
- attr_type_type_select = attr_type_type.elements["select"]
133
- if attr_type_type_select != nil
134
- if attr_aggr != nil
135
- write_member_id_p28reader(rubyp28attr, attribute.attributes["name"].downcase)
136
- else
137
- write_attribute_id_p28reader(rubyp28attr, attribute.attributes["name"].downcase)
138
- end
139
- end
140
- end
141
- end
142
- end
143
- end
144
- def get_all_supertypes(exp)
145
- if $todo_array.size == 0
146
- return
147
- end
148
- temp_array = $todo_array
149
- new_name_array = []
150
- temp_array.reverse_each do |super_name|
151
- $name_array.push super_name
152
- new_name_array.push super_name
153
- $todo_array.pop
154
- end
155
- new_name_array.reverse_each do |super_name|
156
- xp = "//schema/entity[@name = " + "'" + super_name + "'" + "]"
157
- entity = exp.root.elements[xp]
158
- supertypes = entity.attributes["supertypes"]
159
- if supertypes != nil
160
- supertype_names = supertypes.split
161
- supertype_names.each do |super_name|
162
- $todo_array.push super_name
163
- end
164
- end
165
- end
166
- get_all_supertypes(exp)
167
- end
168
- def write_read_P28_entity_instance_read(rubyp28inst, name)
169
- rubyp28inst.puts " if entity.name == " + "'" + name + "'"
170
- rubyp28inst.puts " r = " + $modname + "::" + name + ".new"
171
- rubyp28inst.puts " m.model_elements.push r"
172
- rubyp28inst.puts " r.putP28id(id.to_s)"
173
- rubyp28inst.puts " end"
174
- end
175
- def write_read_P28_attribute_value_read(rubyp28attr, ename, exp)
176
- rubyp28attr.puts " if entity.name == " + "'" + ename + "'"
177
- rubyp28attr.puts " for child in entity.elements"
178
- xp = "//schema/entity[@name = " + "'" + ename + "'" + "]"
179
- current_entity = exp.root.elements[xp]
180
- supertypes = current_entity.attributes["supertypes"]
181
- $name_array = []
182
- $todo_array = []
183
- if supertypes != nil
184
- supertype_names = supertypes.split
185
- supertype_names.each do |super_name|
186
- $todo_array.push super_name
187
- end
188
- end
189
- get_all_supertypes(exp)
190
- $name_array.reverse_each do |super_name|
191
- xp = "//schema/entity[@name = " + "'" + super_name + "'" + "]"
192
- super_entity = exp.root.elements[xp]
193
- for super_attribute in super_entity.elements.to_a("./explicit")
194
- ## aname = super_attribute.attributes["name"]
195
- handle_attr_p28read(rubyp28attr, exp, super_attribute)
196
- ## write_attribute_text_p28reader(rubyp28attr,aname)
197
- end
198
- end
199
- for current_attribute in current_entity.elements.to_a("./explicit")
200
- ## aname = current_attribute.attributes["name"]
201
- ## write_attribute_text_p28reader(rubyp28attr,aname)
202
- handle_attr_p28read(rubyp28attr, exp, current_attribute)
203
- end
204
- rubyp28attr.puts " end"
205
- rubyp28attr.puts " end"
206
- end
207
- def write_attribute_text_p28reader(rubyp28attr, attribute_name)
208
- rubyp28attr.puts " if child.name == '" + attribute_name.capitalize + "'"
209
- rubyp28attr.puts " r." + attribute_name.downcase + "= child.text()"
210
- rubyp28attr.puts " end"
211
- end
212
- def write_member_text_p28reader(rubyp28attr, attribute_name)
213
- rubyp28attr.puts " if child.name == '" + attribute_name.capitalize + "'"
214
- rubyp28attr.puts " memlist = []"
215
- rubyp28attr.puts " for member in child.elements"
216
- rubyp28attr.puts " memlist.push member.text()"
217
- rubyp28attr.puts " end"
218
- rubyp28attr.puts " r." + attribute_name.downcase + "= memlist"
219
- rubyp28attr.puts " end"
220
- end
221
- def write_member_id_p28reader(rubyp28attr, attribute_name)
222
- rubyp28attr.puts " if child.name == '" + attribute_name.capitalize + "'"
223
- rubyp28attr.puts " memlist = []"
224
- rubyp28attr.puts " for member in child.elements"
225
- rubyp28attr.puts " ref = member.attribute('ref')"
226
- rubyp28attr.puts " i = 0"
227
- rubyp28attr.puts " while i != -1"
228
- rubyp28attr.puts " tempid = m.model_elements[i].getP28id.to_s"
229
- rubyp28attr.puts " if tempid == ref.to_s"
230
- rubyp28attr.puts " p = m.model_elements[i]"
231
- rubyp28attr.puts " i = -2"
232
- rubyp28attr.puts " end"
233
- rubyp28attr.puts " i = i + 1"
234
- rubyp28attr.puts " end"
235
- rubyp28attr.puts " memlist.push p"
236
- rubyp28attr.puts " end"
237
- rubyp28attr.puts " r." + attribute_name.downcase + "= memlist"
238
- rubyp28attr.puts " end"
239
- end
240
- def write_attribute_id_p28reader(rubyp28attr, attribute_name)
241
- rubyp28attr.puts " if child.name == '" + attribute_name.capitalize + "'"
242
- rubyp28attr.puts " ref = child.elements[1].attribute('ref')"
243
- rubyp28attr.puts " i = 0"
244
- rubyp28attr.puts " while i != -1"
245
- rubyp28attr.puts " tempid = m.model_elements[i].getP28id.to_s"
246
- rubyp28attr.puts " if tempid == ref.to_s"
247
- rubyp28attr.puts " p = m.model_elements[i]"
248
- rubyp28attr.puts " i = -2"
249
- rubyp28attr.puts " end"
250
- rubyp28attr.puts " i = i + 1"
251
- rubyp28attr.puts " end"
252
- rubyp28attr.puts " r." + attribute_name.downcase + "= p"
253
- rubyp28attr.puts " end"
254
- end
255
- ## exp2ruby
256
- ## Version 0.1
257
- ## 2006-09-07
258
- ##
259
- ## Parse input options : exp=<filename> prefix=<shortname> are required
260
- ##
261
- exp_input = " "
262
- prefix_input = " "
263
- for arg in ARGV
264
- argarray = arg.split('=')
265
- if argarray[0] == "exp"
266
- exp_input = argarray[1]
267
- end
268
- if argarray[0] == "prefix"
269
- prefix_input = argarray[1]
270
- end
271
- if argarray[0] == "help" or argarray[0] == "-help" or argarray[0] == "--help"
272
- puts "exp2ruby Version 0.1"
273
- puts " "
274
- puts "Usage : exp2ruby exp=<schema.xml> prefix=<shortname>"
275
- puts " "
276
- puts " <schema.xml> required input EXPRESS as XML file"
277
- puts " <shortname> required XML Namespace prefix shortname (case sensitive) and Ruby module name (automatic upcase)"
278
- puts "Example: exp2ruby exp=Model.XML prefix=ap233 results in ap233 for XML prefix and AP233 for Ruby module name for EXPRESS in Model.XML file"
279
- exit
280
- end
281
- end
282
- if exp_input == " "
283
- puts "ERROR : No Schema XML input file (exp=<schema.xml>)"
284
- exit
285
- end
286
- if prefix_input == " "
287
- puts "ERROR : No XML Prefix and Ruby module name specified (prefix=<shortname>)"
288
- exit
289
- end
290
- if FileTest.exist?(exp_input) != true
291
- puts "ERROR : Schema XML input file not found : " + exp_input
292
- exit
293
- end
294
- $modname = prefix_input.upcase
295
- $xnspre = prefix_input + ':'
296
- puts "exp2ruby : XML prefix = " + prefix_input
297
- puts "exp2ruby : Ruby module name = " + $modname
298
- ##
299
- ## Set up EXPRESS XML File and new Ruby files
300
- ##
301
- expxmlfile = File.new(exp_input, "r")
302
- exp = Document.new(expxmlfile)
303
- schema_element = exp.elements["//schema[1]"]
304
- schema_name = schema_element.attributes["name"]
305
- puts "exp2ruby : EXPRESS SCHEMA = " + schema_name.to_s
306
- rubyfile = File.new(schema_name + ".rb", "w")
307
- rubyfile.puts "require " + '"' + schema_name + "___module" + '"'
308
- rubyfile.puts "require " + '"' + schema_name + "___p28inst" + '"'
309
- rubyfile.puts "require " + '"' + schema_name + "___p28attr" + '"'
310
- rubyfile.puts "module " + $modname
311
- rubymodule = File.new(schema_name + "___module.rb", "w")
312
- ##
313
- ## Set up P28 E2 instance reader code
314
- rubyp28inst = File.new(schema_name + "___p28inst.rb", "w")
315
- rubyp28inst.puts "def read_P28_entity_instances(p28doc,m)"
316
- rubyp28inst.puts " uos = p28doc.root"
317
- rubyp28inst.puts " for entity in uos.elements.to_a()"
318
- rubyp28inst.puts " id = entity.attribute('id')"
319
- ##
320
- ## Set up P28 E2 attribute reader code
321
- rubyp28attr = File.new(schema_name + "___p28attr.rb", "w")
322
- rubyp28attr.puts "def read_P28_attribute_values(p28doc,m)"
323
- rubyp28attr.puts " uos = p28doc.root"
324
- rubyp28attr.puts " for entity in uos.elements.to_a()"
325
- rubyp28attr.puts " id = entity.attribute('id')"
326
- rubyp28attr.puts " i = 0"
327
- rubyp28attr.puts " if entity.name != 'header'"
328
- rubyp28attr.puts " while i != -1"
329
- rubyp28attr.puts " tempid = m.model_elements[i].getP28id"
330
- rubyp28attr.puts " if tempid == id.to_s"
331
- rubyp28attr.puts " r = m.model_elements[i]"
332
- rubyp28attr.puts " i = -2"
333
- rubyp28attr.puts " end"
334
- rubyp28attr.puts " i = i + 1"
335
- rubyp28attr.puts " end"
336
- rubyp28attr.puts " end"
337
- ##
338
- ## Global arrays used to deal with supertypes
339
- $name_array = []
340
- $todo_array = []
341
- ##
342
- ## WRITE a Ruby module for each entity type and include each locally-defined attribute
343
- ##
344
- stime = Time.now
345
- ne = 0
346
- entity_list = exp.elements.to_a("//schema/entity")
347
- ce = entity_list.size
348
- for entity in entity_list
349
- ne = ne + 1
350
- puts "Entity " + ne.to_s + " of " + ce.to_s + " = " + entity.attributes["name"].to_s + " (after " + ((Time.now - stime)/60).to_s + " minutes"
351
- rubymodule.puts "module " + entity.attributes["name"].capitalize + "___module"
352
- ##
353
- ## write accessor (reader and writer) for each locally defined explicit attribute
354
- ##
355
- mandatory_attribute_name_list = []
356
- for attribute in entity.elements.to_a("./explicit")
357
- attr_redecl = attribute.elements["redeclaration"]
358
- if attr_redecl == nil
359
- rubymodule.puts " attr_accessor :" + attribute.attributes["name"].downcase
360
- if attribute.attributes["optional"] == nil or attribute.attributes["optional"].to_s == 'NO'
361
- mandatory_attribute_name_list.push attribute.attributes["name"].downcase
362
- end
363
- end
364
- end
365
- if mandatory_attribute_name_list.size != 0
366
- rubymodule.puts ' def isValid' + entity.attributes["name"].capitalize + "___module"
367
- rubymodule.puts ' return case'
368
- for mp in mandatory_attribute_name_list
369
- rubymodule.puts ' when ' + mp + ' == nil : false'
370
- end
371
- rubymodule.puts ' else true'
372
- rubymodule.puts ' end'
373
- rubymodule.puts ' end'
374
- else
375
- rubymodule.puts ' def isValid' + entity.attributes["name"].capitalize + "___module"
376
- rubymodule.puts ' return true'
377
- rubymodule.puts ' end'
378
- end
379
- rubymodule.puts "end"
380
- ##
381
- ## WRITE P28 READER for each entity instance and attribute value
382
- write_read_P28_entity_instance_read(rubyp28inst, entity.attributes["name"])
383
- write_read_P28_attribute_value_read(rubyp28attr, entity.attributes["name"], exp)
384
- ##
385
- ## WRITE a Ruby class for each entity type, include module for it and each supertype
386
- ##
387
- rubyfile.puts "class " + entity.attributes["name"].capitalize
388
- supertypes = entity.attributes["supertypes"]
389
- $name_array = []
390
- $todo_array = []
391
- if supertypes != nil
392
- supertype_names = supertypes.split
393
- supertype_names.each do |super_name|
394
- $todo_array.push super_name
395
- end
396
- end
397
- get_all_supertypes(exp)
398
- $name_array.reverse_each do |super_name|
399
- rubyfile.puts " include " + super_name.capitalize + "___module"
400
- end
401
- rubyfile.puts " include " + entity.attributes["name"].capitalize + "___module"
402
- ##
403
- ## write class variables containing the entity type and attribute names from the schema
404
- ##
405
- rubyfile.puts " @@entity = " + "'" + entity.attributes["name"].capitalize + "'"
406
- for attribute in entity.elements.to_a("./explicit")
407
- attr_redecl = attribute.elements["redeclaration"]
408
- if attr_redecl == nil
409
- rubyfile.puts " @@attr___" + attribute.attributes["name"].downcase + " = " + "'" + attribute.attributes["name"].capitalize + "'"
410
- end
411
- end
412
-
413
- ##
414
- ## initialize the count of the number of instances of the class for the entity type
415
- ## increment the count each time a new instance is created and use it to define a Part 28 E2 XML ID for the instance
416
- ##
417
- rubyfile.puts " @@" + entity.attributes["name"].capitalize + "___count = 0"
418
- rubyfile.puts " def initialize"
419
- rubyfile.puts " @@" + entity.attributes["name"].capitalize + "___count += 1"
420
- rubyfile.puts " @p28id = " + "'" + "id-" + entity.attributes["name"].upcase + "-" + "' + " + "@@" + entity.attributes["name"].capitalize+ "___count.to_s"
421
- rubyfile.puts " end"
422
- ##
423
- ## add the method to check validity of instance
424
- ##
425
- rubyfile.puts ' def isValid'
426
- rubyfile.puts ' return case'
427
- rubyfile.puts ' when !isValid' + entity.attributes["name"].capitalize + '___module : false'
428
- $name_array.reverse_each do |super_name|
429
- rubyfile.puts ' when !isValid' + super_name.capitalize + '___module : false'
430
- end
431
- rubyfile.puts ' else true'
432
- rubyfile.puts ' end'
433
- rubyfile.puts ' end'
434
- ##
435
- ## add the method to write the Part 28 Edition 2 file content for the entity instance
436
- ##
437
- rubyfile.puts " def writeP28 p28file"
438
- rubyfile.puts " e___added = p28file.root.add_element(" + "\'" + $xnspre + entity.attributes["name"].capitalize + "\', " + "{\'id\' => @p28id})"
439
- ##
440
- $name_array = []
441
- $todo_array = []
442
- if supertypes != nil
443
- supertype_names = supertypes.split
444
- supertype_names.each do |super_name|
445
- $todo_array.push super_name
446
- end
447
- end
448
- get_all_supertypes(exp)
449
- $name_array.reverse_each do |super_name|
450
- xp = "//entity[@name = " + "'" + super_name + "'" + "]"
451
- super_entity = exp.root.elements[xp]
452
- for super_attribute in super_entity.elements.to_a("./explicit")
453
- handle_explicit(rubyfile, exp, super_attribute)
454
- end
455
- end
456
-
457
- for attribute in entity.elements.to_a("./explicit")
458
- handle_explicit(rubyfile, exp, attribute)
459
- end
460
-
461
- rubyfile.puts " end"
462
- rubyfile.puts " def getP28id"
463
- rubyfile.puts " @p28id"
464
- rubyfile.puts " end"
465
- rubyfile.puts " def putP28id(the_id)"
466
- rubyfile.puts " @p28id = the_id"
467
- rubyfile.puts " end"
468
- rubyfile.puts " def getP28entity"
469
- rubyfile.puts " return(" + "'" + $xnspre + "'" + " + @@entity)"
470
- rubyfile.puts " end"
471
- rubyfile.puts "end"
472
- end
473
- rubyfile.puts "class Model___data"
474
- rubyfile.puts " attr_reader :model_elements, :model_name, :namespace, :originating_system, :preprocessor_version"
475
- rubyfile.puts " attr_writer :model_elements, :model_name, :namespace, :originating_system, :preprocessor_version"
476
- rubyfile.puts " def initialize"
477
- rubyfile.puts " @model_elements = []"
478
- rubyfile.puts " @namespace = '" + $xnspre.chop + "'"
479
- rubyfile.puts " end"
480
- rubyfile.puts " def readP28e2 p28doc"
481
- rubyfile.puts " puts 'Reading P28E2 XML'"
482
- rubyfile.puts " read_P28_entity_instances(p28doc,self)"
483
- rubyfile.puts " read_P28_attribute_values(p28doc,self)"
484
- rubyfile.puts " end"
485
- rubyfile.puts " require 'time'"
486
- rubyfile.puts " def writeP28e2 p28file"
487
- rubyfile.puts " puts 'Writing P28E2 with XML namespace = ' + namespace"
488
- rubyfile.puts " @p28file = p28file"
489
- rubyfile.puts " p28file << XMLDecl.new"
490
- rubyfile.puts " the_ns = 'xmlns:' + namespace"
491
- rubyfile.puts " the_uos = namespace + ':uos'"
492
- rubyfile.puts " uos = p28file.add_element(the_uos, {the_ns => 'urn:iso10303-28:schema/" + schema_name.capitalize + "'})"
493
- rubyfile.puts " uos.add_namespace('xsi','http://www.w3.org/2001/XMLSchema-instance')"
494
- rubyfile.puts " uos.add_namespace('ex','urn:iso:std:iso:10303:28:ed-2:2005:schema:common')"
495
- rubyfile.puts " uos.add_namespace('exp','urn:iso:std:iso:10303:28:ed-2:2005:schema:common')"
496
- rubyfile.puts " uos.add_attribute('xsi:schemaLocation','urn:iso10303-28:schema/" + schema_name.capitalize + " " + schema_name.capitalize + ".xsd')"
497
- rubyfile.puts " header = p28file.root.add_element('exp:header')"
498
- rubyfile.puts " t = header.add_element('time_stamp')"
499
- rubyfile.puts " t.text = Time.now.xmlschema()"
500
- rubyfile.puts " if self.originating_system != nil"
501
- rubyfile.puts " t = header.add_element('preprocessor_version')"
502
- rubyfile.puts " t.text = self.preprocessor_version"
503
- rubyfile.puts " end"
504
- rubyfile.puts " if self.originating_system != nil"
505
- rubyfile.puts " t = header.add_element('originating_system')"
506
- rubyfile.puts " t.text = self.originating_system"
507
- rubyfile.puts " end"
508
- rubyfile.puts " i = 1"
509
- rubyfile.puts " for e in model_elements"
510
- rubyfile.puts " puts i"
511
- rubyfile.puts " e.writeP28(p28file)"
512
- rubyfile.puts " i = i + 1"
513
- rubyfile.puts " end"
514
- rubyfile.puts " end"
515
- rubyfile.puts "end"
516
- rubyfile.puts "end"
517
- rubyp28inst.puts " end"
518
- rubyp28inst.puts "end"
519
- rubyp28attr.puts " end"
520
- rubyp28attr.puts "end"
521
- expxmlfile.close
522
- rubyfile.close
523
- rubymodule.close
524
- rubyp28inst.close
525
- rubyp28attr.close
1
+ require 'rexml/document'
2
+ include REXML
3
+ ##
4
+ ## Set global variable for XML namespace prefix to use (including the colon)
5
+ $xnspre = ""
6
+ ##
7
+ ## Set global variable that is the name of the Ruby module containing the resulting EXPRESS-based classes (make uppercase)
8
+ $modname = ""
9
+ ##
10
+ ## Set up Part 28 writer functions for attributes of simple, aggregates of simple, instance reference and aggregate of instance reference
11
+ ##
12
+ def write_attribute_text_p28writer(rubyfile, attribute_name)
13
+ rubyfile.puts " a___" + attribute_name + ".text = " + attribute_name
14
+ end
15
+ def write_member_text_p28writer(rubyfile, attribute_name, attr_type,attr_aggr_dim)
16
+ rubyfile.puts " for " + attribute_name + "___member in " + attribute_name
17
+ rubyfile.puts " amember___" + attribute_name + " = a___" + attribute_name + ".add_element(" + "'ex:" + attr_type.downcase + "-wrapper'" + ")"
18
+ rubyfile.puts " amember___" + attribute_name + ".text = " + attribute_name + "___member"
19
+ rubyfile.puts " end"
20
+ end
21
+ def write_attribute_id_p28writer(rubyfile, attribute_name)
22
+ rubyfile.puts " a___" + attribute_name + " = a___" + attribute_name + ".add_element(" + attribute_name + ".getP28entity)"
23
+ rubyfile.puts " a___" + attribute_name + ".attributes['ref'] = " + attribute_name + ".getP28id"
24
+ rubyfile.puts " a___" + attribute_name + ".attributes['xsi:nil'] = 'true'"
25
+ end
26
+ def write_member_id_p28writer(rubyfile, attribute_name,attr_aggr_dim)
27
+ rubyfile.puts " for " + attribute_name + "___member in " + attribute_name
28
+ rubyfile.puts " amember___" + attribute_name + " = a___" + attribute_name + ".add_element(" + attribute_name + "___member.getP28entity)"
29
+ rubyfile.puts " amember___" + attribute_name + ".attributes['ref'] = " + attribute_name + "___member" + ".getP28id"
30
+ rubyfile.puts " amember___" + attribute_name + ".attributes['xsi:nil'] = 'true'"
31
+ rubyfile.puts " end"
32
+ end
33
+ ##
34
+ ## this function handles the output related to EXPRESS explicit attributes
35
+ def handle_explicit(rubyfile, exp, attribute)
36
+ attr_redecl = attribute.elements["redeclaration"]
37
+ if attr_redecl == nil
38
+ rubyfile.puts " if " + attribute.attributes["name"].downcase + " != nil"
39
+ rubyfile.puts " a___" + attribute.attributes["name"].downcase + " = e___added.add_element('" + attribute.attributes["name"].capitalize + "'" + ")"
40
+ attr_builtintype = attribute.elements["builtintype"]
41
+ attr_type = attribute.elements["typename"]
42
+ attr_aggr = attribute.elements["aggregate"]
43
+ attr_aggr_dim = attribute.elements.size - 1
44
+ if attr_builtintype != nil
45
+ if attr_aggr == nil
46
+ write_attribute_text_p28writer(rubyfile, attribute.attributes["name"].downcase)
47
+ else
48
+ attr_datatype = attr_builtintype.attributes["type"]
49
+ write_member_text_p28writer(rubyfile, attribute.attributes["name"].downcase, attr_datatype,attr_aggr_dim)
50
+ end
51
+ end
52
+ if attr_type != nil
53
+ attr_type_name = attr_type.attributes["name"]
54
+ xp = "//schema/entity[@name = " + "'" + attr_type_name + "'" + "]"
55
+ attr_type_entity = exp.root.elements[xp]
56
+ if attr_type_entity != nil
57
+ if attr_aggr != nil
58
+ write_member_id_p28writer(rubyfile, attribute.attributes["name"].downcase,attr_aggr_dim)
59
+ else
60
+ write_attribute_id_p28writer(rubyfile, attribute.attributes["name"].downcase)
61
+ end
62
+ end
63
+ xp = "//schema/type[@name = " + "'" + attr_type_name + "'" + "]"
64
+ attr_type_type = exp.root.elements[xp]
65
+ if attr_type_type != nil
66
+ attr_type_type_builtin = attr_type_type.elements["builtintype"]
67
+ if attr_type_type_builtin != nil
68
+ write_attribute_text_p28writer(rubyfile, attribute.attributes["name"].downcase)
69
+ end
70
+ attr_type_type_enum = attr_type_type.elements["enumeration"]
71
+ if attr_type_type_enum != nil
72
+ if attr_aggr != nil
73
+ write_member_text_p28writer(rubyfile, attribute.attributes["name"].downcase, attr_datatype,attr_aggr_dim)
74
+ else
75
+ write_attribute_text_p28writer(rubyfile, attribute.attributes["name"].downcase)
76
+ end
77
+ end
78
+
79
+ attr_type_type_select = attr_type_type.elements["select"]
80
+ if attr_type_type_select != nil
81
+ if attr_aggr != nil
82
+ write_member_id_p28writer(rubyfile, attribute.attributes["name"].downcase,attr_aggr_dim)
83
+ else
84
+ write_attribute_id_p28writer(rubyfile, attribute.attributes["name"].downcase)
85
+ end
86
+ end
87
+ end
88
+ end
89
+ rubyfile.puts " end"
90
+ end
91
+ end
92
+ ##
93
+ ## this function handles the p28 reader related to EXPRESS explicit attributes
94
+ def handle_attr_p28read(rubyp28attr, exp, attribute)
95
+ attr_redecl = attribute.elements["redeclaration"]
96
+ if attr_redecl == nil
97
+ attr_builtintype = attribute.elements["builtintype"]
98
+ attr_type = attribute.elements["typename"]
99
+ attr_aggr = attribute.elements["aggregate"]
100
+ if attr_builtintype != nil
101
+ if attr_aggr == nil
102
+ write_attribute_text_p28reader(rubyp28attr, attribute.attributes["name"].downcase)
103
+ else
104
+ attr_datatype = attr_builtintype.attributes["type"]
105
+ write_member_text_p28reader(rubyp28attr, attribute.attributes["name"].downcase)
106
+ end
107
+ end
108
+ if attr_type != nil
109
+ attr_type_name = attr_type.attributes["name"]
110
+ xp = "//schema/entity[@name = " + "'" + attr_type_name + "'" + "]"
111
+ attr_type_entity = exp.root.elements[xp]
112
+ if attr_type_entity != nil
113
+ if attr_aggr != nil
114
+ write_member_id_p28reader(rubyp28attr, attribute.attributes["name"].downcase)
115
+ else
116
+ write_attribute_id_p28reader(rubyp28attr, attribute.attributes["name"].downcase)
117
+ end
118
+ end
119
+ xp = "//schema/type[@name = " + "'" + attr_type_name + "'" + "]"
120
+ attr_type_type = exp.root.elements[xp]
121
+ if attr_type_type != nil
122
+ attr_type_type_builtin = attr_type_type.elements["builtintype"]
123
+ if attr_type_type_builtin != nil
124
+ write_attribute_text_p28reader(rubyp28attr, attribute.attributes["name"].downcase)
125
+ end
126
+
127
+ attr_type_type_enum = attr_type_type.elements["enumeration"]
128
+ if attr_type_type_enum != nil
129
+ write_attribute_text_p28reader(rubyp28attr, attribute.attributes["name"].downcase)
130
+ end
131
+
132
+ attr_type_type_select = attr_type_type.elements["select"]
133
+ if attr_type_type_select != nil
134
+ if attr_aggr != nil
135
+ write_member_id_p28reader(rubyp28attr, attribute.attributes["name"].downcase)
136
+ else
137
+ write_attribute_id_p28reader(rubyp28attr, attribute.attributes["name"].downcase)
138
+ end
139
+ end
140
+ end
141
+ end
142
+ end
143
+ end
144
+ def get_all_supertypes(exp)
145
+ if $todo_array.size == 0
146
+ return
147
+ end
148
+ temp_array = $todo_array
149
+ new_name_array = []
150
+ temp_array.reverse_each do |super_name|
151
+ $name_array.push super_name
152
+ new_name_array.push super_name
153
+ $todo_array.pop
154
+ end
155
+ new_name_array.reverse_each do |super_name|
156
+ xp = "//schema/entity[@name = " + "'" + super_name + "'" + "]"
157
+ entity = exp.root.elements[xp]
158
+ supertypes = entity.attributes["supertypes"]
159
+ if supertypes != nil
160
+ supertype_names = supertypes.split
161
+ supertype_names.each do |super_name|
162
+ $todo_array.push super_name
163
+ end
164
+ end
165
+ end
166
+ get_all_supertypes(exp)
167
+ end
168
+ def write_read_P28_entity_instance_read(rubyp28inst, name)
169
+ rubyp28inst.puts " if entity.name == " + "'" + name + "'"
170
+ rubyp28inst.puts " r = " + $modname + "::" + name + ".new"
171
+ rubyp28inst.puts " m.model_elements.push r"
172
+ rubyp28inst.puts " r.putP28id(id.to_s)"
173
+ rubyp28inst.puts " end"
174
+ end
175
+ def write_read_P28_attribute_value_read(rubyp28attr, ename, exp)
176
+ rubyp28attr.puts " if entity.name == " + "'" + ename + "'"
177
+ rubyp28attr.puts " for child in entity.elements"
178
+ xp = "//schema/entity[@name = " + "'" + ename + "'" + "]"
179
+ current_entity = exp.root.elements[xp]
180
+ supertypes = current_entity.attributes["supertypes"]
181
+ $name_array = []
182
+ $todo_array = []
183
+ if supertypes != nil
184
+ supertype_names = supertypes.split
185
+ supertype_names.each do |super_name|
186
+ $todo_array.push super_name
187
+ end
188
+ end
189
+ get_all_supertypes(exp)
190
+ $name_array.reverse_each do |super_name|
191
+ xp = "//schema/entity[@name = " + "'" + super_name + "'" + "]"
192
+ super_entity = exp.root.elements[xp]
193
+ for super_attribute in super_entity.elements.to_a("./explicit")
194
+ ## aname = super_attribute.attributes["name"]
195
+ handle_attr_p28read(rubyp28attr, exp, super_attribute)
196
+ ## write_attribute_text_p28reader(rubyp28attr,aname)
197
+ end
198
+ end
199
+ for current_attribute in current_entity.elements.to_a("./explicit")
200
+ ## aname = current_attribute.attributes["name"]
201
+ ## write_attribute_text_p28reader(rubyp28attr,aname)
202
+ handle_attr_p28read(rubyp28attr, exp, current_attribute)
203
+ end
204
+ rubyp28attr.puts " end"
205
+ rubyp28attr.puts " end"
206
+ end
207
+ def write_attribute_text_p28reader(rubyp28attr, attribute_name)
208
+ rubyp28attr.puts " if child.name == '" + attribute_name.capitalize + "'"
209
+ rubyp28attr.puts " r." + attribute_name.downcase + "= child.text()"
210
+ rubyp28attr.puts " end"
211
+ end
212
+ def write_member_text_p28reader(rubyp28attr, attribute_name)
213
+ rubyp28attr.puts " if child.name == '" + attribute_name.capitalize + "'"
214
+ rubyp28attr.puts " memlist = []"
215
+ rubyp28attr.puts " for member in child.elements"
216
+ rubyp28attr.puts " memlist.push member.text()"
217
+ rubyp28attr.puts " end"
218
+ rubyp28attr.puts " r." + attribute_name.downcase + "= memlist"
219
+ rubyp28attr.puts " end"
220
+ end
221
+ def write_member_id_p28reader(rubyp28attr, attribute_name)
222
+ rubyp28attr.puts " if child.name == '" + attribute_name.capitalize + "'"
223
+ rubyp28attr.puts " memlist = []"
224
+ rubyp28attr.puts " for member in child.elements"
225
+ rubyp28attr.puts " ref = member.attribute('ref')"
226
+ rubyp28attr.puts " i = 0"
227
+ rubyp28attr.puts " while i != -1"
228
+ rubyp28attr.puts " tempid = m.model_elements[i].getP28id.to_s"
229
+ rubyp28attr.puts " if tempid == ref.to_s"
230
+ rubyp28attr.puts " p = m.model_elements[i]"
231
+ rubyp28attr.puts " i = -2"
232
+ rubyp28attr.puts " end"
233
+ rubyp28attr.puts " i = i + 1"
234
+ rubyp28attr.puts " end"
235
+ rubyp28attr.puts " memlist.push p"
236
+ rubyp28attr.puts " end"
237
+ rubyp28attr.puts " r." + attribute_name.downcase + "= memlist"
238
+ rubyp28attr.puts " end"
239
+ end
240
+ def write_attribute_id_p28reader(rubyp28attr, attribute_name)
241
+ rubyp28attr.puts " if child.name == '" + attribute_name.capitalize + "'"
242
+ rubyp28attr.puts " ref = child.elements[1].attribute('ref')"
243
+ rubyp28attr.puts " i = 0"
244
+ rubyp28attr.puts " while i != -1"
245
+ rubyp28attr.puts " tempid = m.model_elements[i].getP28id.to_s"
246
+ rubyp28attr.puts " if tempid == ref.to_s"
247
+ rubyp28attr.puts " p = m.model_elements[i]"
248
+ rubyp28attr.puts " i = -2"
249
+ rubyp28attr.puts " end"
250
+ rubyp28attr.puts " i = i + 1"
251
+ rubyp28attr.puts " end"
252
+ rubyp28attr.puts " r." + attribute_name.downcase + "= p"
253
+ rubyp28attr.puts " end"
254
+ end
255
+ ## exp2ruby
256
+ ## Version 0.1
257
+ ## 2006-09-07
258
+ ##
259
+ ## Parse input options : exp=<filename> prefix=<shortname> are required
260
+ ##
261
+ exp_input = " "
262
+ prefix_input = " "
263
+ for arg in ARGV
264
+ argarray = arg.split('=')
265
+ if argarray[0] == "exp"
266
+ exp_input = argarray[1]
267
+ end
268
+ if argarray[0] == "prefix"
269
+ prefix_input = argarray[1]
270
+ end
271
+ if argarray[0] == "help" or argarray[0] == "-help" or argarray[0] == "--help"
272
+ puts "exp2ruby Version 0.1"
273
+ puts " "
274
+ puts "Usage : exp2ruby exp=<schema.xml> prefix=<shortname>"
275
+ puts " "
276
+ puts " <schema.xml> required input EXPRESS as XML file"
277
+ puts " <shortname> required XML Namespace prefix shortname (case sensitive) and Ruby module name (automatic upcase)"
278
+ puts "Example: exp2ruby exp=Model.XML prefix=ap233 results in ap233 for XML prefix and AP233 for Ruby module name for EXPRESS in Model.XML file"
279
+ exit
280
+ end
281
+ end
282
+ if exp_input == " "
283
+ puts "ERROR : No Schema XML input file (exp=<schema.xml>)"
284
+ exit
285
+ end
286
+ if prefix_input == " "
287
+ puts "ERROR : No XML Prefix and Ruby module name specified (prefix=<shortname>)"
288
+ exit
289
+ end
290
+ if FileTest.exist?(exp_input) != true
291
+ puts "ERROR : Schema XML input file not found : " + exp_input
292
+ exit
293
+ end
294
+ $modname = prefix_input.upcase
295
+ $xnspre = prefix_input + ':'
296
+ puts "exp2ruby : XML prefix = " + prefix_input
297
+ puts "exp2ruby : Ruby module name = " + $modname
298
+ ##
299
+ ## Set up EXPRESS XML File and new Ruby files
300
+ ##
301
+ expxmlfile = File.new(exp_input, "r")
302
+ exp = Document.new(expxmlfile)
303
+ schema_element = exp.elements["//schema[1]"]
304
+ schema_name = schema_element.attributes["name"]
305
+ puts "exp2ruby : EXPRESS SCHEMA = " + schema_name.to_s
306
+ rubyfile = File.new(schema_name + ".rb", "w")
307
+ rubyfile.puts "require " + '"' + schema_name + "___module" + '"'
308
+ rubyfile.puts "require " + '"' + schema_name + "___p28inst" + '"'
309
+ rubyfile.puts "require " + '"' + schema_name + "___p28attr" + '"'
310
+ rubyfile.puts "module " + $modname
311
+ rubymodule = File.new(schema_name + "___module.rb", "w")
312
+ ##
313
+ ## Set up P28 E2 instance reader code
314
+ rubyp28inst = File.new(schema_name + "___p28inst.rb", "w")
315
+ rubyp28inst.puts "def read_P28_entity_instances(p28doc,m)"
316
+ rubyp28inst.puts " uos = p28doc.root"
317
+ rubyp28inst.puts " for entity in uos.elements.to_a()"
318
+ rubyp28inst.puts " id = entity.attribute('id')"
319
+ ##
320
+ ## Set up P28 E2 attribute reader code
321
+ rubyp28attr = File.new(schema_name + "___p28attr.rb", "w")
322
+ rubyp28attr.puts "def read_P28_attribute_values(p28doc,m)"
323
+ rubyp28attr.puts " uos = p28doc.root"
324
+ rubyp28attr.puts " for entity in uos.elements.to_a()"
325
+ rubyp28attr.puts " id = entity.attribute('id')"
326
+ rubyp28attr.puts " i = 0"
327
+ rubyp28attr.puts " if entity.name != 'header'"
328
+ rubyp28attr.puts " while i != -1"
329
+ rubyp28attr.puts " tempid = m.model_elements[i].getP28id"
330
+ rubyp28attr.puts " if tempid == id.to_s"
331
+ rubyp28attr.puts " r = m.model_elements[i]"
332
+ rubyp28attr.puts " i = -2"
333
+ rubyp28attr.puts " end"
334
+ rubyp28attr.puts " i = i + 1"
335
+ rubyp28attr.puts " end"
336
+ rubyp28attr.puts " end"
337
+ ##
338
+ ## Global arrays used to deal with supertypes
339
+ $name_array = []
340
+ $todo_array = []
341
+ ##
342
+ ## WRITE a Ruby module for each entity type and include each locally-defined attribute
343
+ ##
344
+ stime = Time.now
345
+ ne = 0
346
+ entity_list = exp.elements.to_a("//schema/entity")
347
+ ce = entity_list.size
348
+ for entity in entity_list
349
+ ne = ne + 1
350
+ puts "Entity " + ne.to_s + " of " + ce.to_s + " = " + entity.attributes["name"].to_s + " (after " + ((Time.now - stime)/60).to_s + " minutes"
351
+ rubymodule.puts "module " + entity.attributes["name"].capitalize + "___module"
352
+ ##
353
+ ## write accessor (reader and writer) for each locally defined explicit attribute
354
+ ##
355
+ mandatory_attribute_name_list = []
356
+ for attribute in entity.elements.to_a("./explicit")
357
+ attr_redecl = attribute.elements["redeclaration"]
358
+ if attr_redecl == nil
359
+ rubymodule.puts " attr_accessor :" + attribute.attributes["name"].downcase
360
+ if attribute.attributes["optional"] == nil or attribute.attributes["optional"].to_s == 'NO'
361
+ mandatory_attribute_name_list.push attribute.attributes["name"].downcase
362
+ end
363
+ end
364
+ end
365
+ if mandatory_attribute_name_list.size != 0
366
+ rubymodule.puts ' def isValid' + entity.attributes["name"].capitalize + "___module"
367
+ rubymodule.puts ' return case'
368
+ for mp in mandatory_attribute_name_list
369
+ rubymodule.puts ' when ' + mp + ' == nil : false'
370
+ end
371
+ rubymodule.puts ' else true'
372
+ rubymodule.puts ' end'
373
+ rubymodule.puts ' end'
374
+ else
375
+ rubymodule.puts ' def isValid' + entity.attributes["name"].capitalize + "___module"
376
+ rubymodule.puts ' return true'
377
+ rubymodule.puts ' end'
378
+ end
379
+ rubymodule.puts "end"
380
+ ##
381
+ ## WRITE P28 READER for each entity instance and attribute value
382
+ write_read_P28_entity_instance_read(rubyp28inst, entity.attributes["name"])
383
+ write_read_P28_attribute_value_read(rubyp28attr, entity.attributes["name"], exp)
384
+ ##
385
+ ## WRITE a Ruby class for each entity type, include module for it and each supertype
386
+ ##
387
+ rubyfile.puts "class " + entity.attributes["name"].capitalize
388
+ supertypes = entity.attributes["supertypes"]
389
+ $name_array = []
390
+ $todo_array = []
391
+ if supertypes != nil
392
+ supertype_names = supertypes.split
393
+ supertype_names.each do |super_name|
394
+ $todo_array.push super_name
395
+ end
396
+ end
397
+ get_all_supertypes(exp)
398
+ $name_array.reverse_each do |super_name|
399
+ rubyfile.puts " include " + super_name.capitalize + "___module"
400
+ end
401
+ rubyfile.puts " include " + entity.attributes["name"].capitalize + "___module"
402
+ ##
403
+ ## write class variables containing the entity type and attribute names from the schema
404
+ ##
405
+ rubyfile.puts " @@entity = " + "'" + entity.attributes["name"].capitalize + "'"
406
+ for attribute in entity.elements.to_a("./explicit")
407
+ attr_redecl = attribute.elements["redeclaration"]
408
+ if attr_redecl == nil
409
+ rubyfile.puts " @@attr___" + attribute.attributes["name"].downcase + " = " + "'" + attribute.attributes["name"].capitalize + "'"
410
+ end
411
+ end
412
+
413
+ ##
414
+ ## initialize the count of the number of instances of the class for the entity type
415
+ ## increment the count each time a new instance is created and use it to define a Part 28 E2 XML ID for the instance
416
+ ##
417
+ rubyfile.puts " @@" + entity.attributes["name"].capitalize + "___count = 0"
418
+ rubyfile.puts " def initialize"
419
+ rubyfile.puts " @@" + entity.attributes["name"].capitalize + "___count += 1"
420
+ rubyfile.puts " @p28id = " + "'" + "id-" + entity.attributes["name"].upcase + "-" + "' + " + "@@" + entity.attributes["name"].capitalize+ "___count.to_s"
421
+ rubyfile.puts " end"
422
+ ##
423
+ ## add the method to check validity of instance
424
+ ##
425
+ rubyfile.puts ' def isValid'
426
+ rubyfile.puts ' return case'
427
+ rubyfile.puts ' when !isValid' + entity.attributes["name"].capitalize + '___module : false'
428
+ $name_array.reverse_each do |super_name|
429
+ rubyfile.puts ' when !isValid' + super_name.capitalize + '___module : false'
430
+ end
431
+ rubyfile.puts ' else true'
432
+ rubyfile.puts ' end'
433
+ rubyfile.puts ' end'
434
+ ##
435
+ ## add the method to write the Part 28 Edition 2 file content for the entity instance
436
+ ##
437
+ rubyfile.puts " def writeP28 p28file"
438
+ rubyfile.puts " e___added = p28file.root.add_element(" + "\'" + $xnspre + entity.attributes["name"].capitalize + "\', " + "{\'id\' => @p28id})"
439
+ ##
440
+ $name_array = []
441
+ $todo_array = []
442
+ if supertypes != nil
443
+ supertype_names = supertypes.split
444
+ supertype_names.each do |super_name|
445
+ $todo_array.push super_name
446
+ end
447
+ end
448
+ get_all_supertypes(exp)
449
+ $name_array.reverse_each do |super_name|
450
+ xp = "//entity[@name = " + "'" + super_name + "'" + "]"
451
+ super_entity = exp.root.elements[xp]
452
+ for super_attribute in super_entity.elements.to_a("./explicit")
453
+ handle_explicit(rubyfile, exp, super_attribute)
454
+ end
455
+ end
456
+
457
+ for attribute in entity.elements.to_a("./explicit")
458
+ handle_explicit(rubyfile, exp, attribute)
459
+ end
460
+
461
+ rubyfile.puts " end"
462
+ rubyfile.puts " def getP28id"
463
+ rubyfile.puts " @p28id"
464
+ rubyfile.puts " end"
465
+ rubyfile.puts " def putP28id(the_id)"
466
+ rubyfile.puts " @p28id = the_id"
467
+ rubyfile.puts " end"
468
+ rubyfile.puts " def getP28entity"
469
+ rubyfile.puts " return(" + "'" + $xnspre + "'" + " + @@entity)"
470
+ rubyfile.puts " end"
471
+ rubyfile.puts "end"
472
+ end
473
+ rubyfile.puts "class Model___data"
474
+ rubyfile.puts " attr_reader :model_elements, :model_name, :namespace, :originating_system, :preprocessor_version"
475
+ rubyfile.puts " attr_writer :model_elements, :model_name, :namespace, :originating_system, :preprocessor_version"
476
+ rubyfile.puts " def initialize"
477
+ rubyfile.puts " @model_elements = []"
478
+ rubyfile.puts " @namespace = '" + $xnspre.chop + "'"
479
+ rubyfile.puts " end"
480
+ rubyfile.puts " def readP28e2 p28doc"
481
+ rubyfile.puts " puts 'Reading P28E2 XML'"
482
+ rubyfile.puts " read_P28_entity_instances(p28doc,self)"
483
+ rubyfile.puts " read_P28_attribute_values(p28doc,self)"
484
+ rubyfile.puts " end"
485
+ rubyfile.puts " require 'time'"
486
+ rubyfile.puts " def writeP28e2 p28file"
487
+ rubyfile.puts " puts 'Writing P28E2 with XML namespace = ' + namespace"
488
+ rubyfile.puts " @p28file = p28file"
489
+ rubyfile.puts " p28file << XMLDecl.new"
490
+ rubyfile.puts " the_ns = 'xmlns:' + namespace"
491
+ rubyfile.puts " the_uos = namespace + ':uos'"
492
+ rubyfile.puts " uos = p28file.add_element(the_uos, {the_ns => 'urn:iso10303-28:schema/" + schema_name.capitalize + "'})"
493
+ rubyfile.puts " uos.add_namespace('xsi','http://www.w3.org/2001/XMLSchema-instance')"
494
+ rubyfile.puts " uos.add_namespace('ex','urn:iso:std:iso:10303:28:ed-2:2005:schema:common')"
495
+ rubyfile.puts " uos.add_namespace('exp','urn:iso:std:iso:10303:28:ed-2:2005:schema:common')"
496
+ rubyfile.puts " uos.add_attribute('xsi:schemaLocation','urn:iso10303-28:schema/" + schema_name.capitalize + " " + schema_name.capitalize + ".xsd')"
497
+ rubyfile.puts " header = p28file.root.add_element('exp:header')"
498
+ rubyfile.puts " t = header.add_element('time_stamp')"
499
+ rubyfile.puts " t.text = Time.now.xmlschema()"
500
+ rubyfile.puts " if self.originating_system != nil"
501
+ rubyfile.puts " t = header.add_element('preprocessor_version')"
502
+ rubyfile.puts " t.text = self.preprocessor_version"
503
+ rubyfile.puts " end"
504
+ rubyfile.puts " if self.originating_system != nil"
505
+ rubyfile.puts " t = header.add_element('originating_system')"
506
+ rubyfile.puts " t.text = self.originating_system"
507
+ rubyfile.puts " end"
508
+ rubyfile.puts " i = 1"
509
+ rubyfile.puts " for e in model_elements"
510
+ rubyfile.puts " puts i"
511
+ rubyfile.puts " e.writeP28(p28file)"
512
+ rubyfile.puts " i = i + 1"
513
+ rubyfile.puts " end"
514
+ rubyfile.puts " end"
515
+ rubyfile.puts "end"
516
+ rubyfile.puts "end"
517
+ rubyp28inst.puts " end"
518
+ rubyp28inst.puts "end"
519
+ rubyp28attr.puts " end"
520
+ rubyp28attr.puts "end"
521
+ expxmlfile.close
522
+ rubyfile.close
523
+ rubymodule.close
524
+ rubyp28inst.close
525
+ rubyp28attr.close