expressir 1.2.3-aarch64-linux

Sign up to get free protection for your applications and to get access to all the features.
Files changed (181) hide show
  1. checksums.yaml +7 -0
  2. data/.cross_rubies +21 -0
  3. data/.github/workflows/rake.yml +96 -0
  4. data/.github/workflows/release.yml +120 -0
  5. data/.gitignore +17 -0
  6. data/.gitmodules +3 -0
  7. data/.hound.yml +3 -0
  8. data/.rspec +2 -0
  9. data/.rubocop.yml +8 -0
  10. data/.yardopts +11 -0
  11. data/Gemfile +4 -0
  12. data/README.adoc +147 -0
  13. data/Rakefile +14 -0
  14. data/bin/console +12 -0
  15. data/bin/rspec +29 -0
  16. data/bin/setup +8 -0
  17. data/demo.rb +18 -0
  18. data/docs/development.md +90 -0
  19. data/exe/expressir +20 -0
  20. data/exe/format +18 -0
  21. data/exe/format-test +81 -0
  22. data/exe/generate-parser +48 -0
  23. data/expressir.gemspec +46 -0
  24. data/lib/expressir/cli/ui.rb +36 -0
  25. data/lib/expressir/cli.rb +21 -0
  26. data/lib/expressir/config.rb +23 -0
  27. data/lib/expressir/express/2.7/express_parser.so +0 -0
  28. data/lib/expressir/express/3.0/express_parser.so +0 -0
  29. data/lib/expressir/express/3.1/express_parser.so +0 -0
  30. data/lib/expressir/express/cache.rb +51 -0
  31. data/lib/expressir/express/formatter.rb +1608 -0
  32. data/lib/expressir/express/hyperlink_formatter.rb +36 -0
  33. data/lib/expressir/express/model_visitor.rb +24 -0
  34. data/lib/expressir/express/parser.rb +81 -0
  35. data/lib/expressir/express/resolve_references_model_visitor.rb +31 -0
  36. data/lib/expressir/express/schema_head_formatter.rb +23 -0
  37. data/lib/expressir/express/visitor.rb +2574 -0
  38. data/lib/expressir/model/cache.rb +17 -0
  39. data/lib/expressir/model/data_type.rb +9 -0
  40. data/lib/expressir/model/data_types/aggregate.rb +31 -0
  41. data/lib/expressir/model/data_types/array.rb +31 -0
  42. data/lib/expressir/model/data_types/bag.rb +25 -0
  43. data/lib/expressir/model/data_types/binary.rb +22 -0
  44. data/lib/expressir/model/data_types/boolean.rb +10 -0
  45. data/lib/expressir/model/data_types/enumeration.rb +25 -0
  46. data/lib/expressir/model/data_types/enumeration_item.rb +26 -0
  47. data/lib/expressir/model/data_types/generic.rb +26 -0
  48. data/lib/expressir/model/data_types/generic_entity.rb +26 -0
  49. data/lib/expressir/model/data_types/integer.rb +10 -0
  50. data/lib/expressir/model/data_types/list.rb +28 -0
  51. data/lib/expressir/model/data_types/logical.rb +10 -0
  52. data/lib/expressir/model/data_types/number.rb +10 -0
  53. data/lib/expressir/model/data_types/real.rb +19 -0
  54. data/lib/expressir/model/data_types/select.rb +28 -0
  55. data/lib/expressir/model/data_types/set.rb +25 -0
  56. data/lib/expressir/model/data_types/string.rb +22 -0
  57. data/lib/expressir/model/declaration.rb +9 -0
  58. data/lib/expressir/model/declarations/attribute.rb +47 -0
  59. data/lib/expressir/model/declarations/constant.rb +34 -0
  60. data/lib/expressir/model/declarations/entity.rb +53 -0
  61. data/lib/expressir/model/declarations/function.rb +67 -0
  62. data/lib/expressir/model/declarations/interface.rb +28 -0
  63. data/lib/expressir/model/declarations/interface_item.rb +23 -0
  64. data/lib/expressir/model/declarations/interfaced_item.rb +37 -0
  65. data/lib/expressir/model/declarations/parameter.rb +34 -0
  66. data/lib/expressir/model/declarations/procedure.rb +64 -0
  67. data/lib/expressir/model/declarations/remark_item.rb +21 -0
  68. data/lib/expressir/model/declarations/rule.rb +71 -0
  69. data/lib/expressir/model/declarations/schema.rb +117 -0
  70. data/lib/expressir/model/declarations/schema_version.rb +22 -0
  71. data/lib/expressir/model/declarations/schema_version_item.rb +22 -0
  72. data/lib/expressir/model/declarations/subtype_constraint.rb +40 -0
  73. data/lib/expressir/model/declarations/type.rb +45 -0
  74. data/lib/expressir/model/declarations/unique_rule.rb +31 -0
  75. data/lib/expressir/model/declarations/variable.rb +34 -0
  76. data/lib/expressir/model/declarations/where_rule.rb +31 -0
  77. data/lib/expressir/model/expression.rb +9 -0
  78. data/lib/expressir/model/expressions/aggregate_initializer.rb +19 -0
  79. data/lib/expressir/model/expressions/aggregate_initializer_item.rb +22 -0
  80. data/lib/expressir/model/expressions/binary_expression.rb +53 -0
  81. data/lib/expressir/model/expressions/entity_constructor.rb +22 -0
  82. data/lib/expressir/model/expressions/function_call.rb +22 -0
  83. data/lib/expressir/model/expressions/interval.rb +34 -0
  84. data/lib/expressir/model/expressions/query_expression.rb +35 -0
  85. data/lib/expressir/model/expressions/unary_expression.rb +27 -0
  86. data/lib/expressir/model/identifier.rb +34 -0
  87. data/lib/expressir/model/literal.rb +9 -0
  88. data/lib/expressir/model/literals/binary.rb +19 -0
  89. data/lib/expressir/model/literals/integer.rb +19 -0
  90. data/lib/expressir/model/literals/logical.rb +23 -0
  91. data/lib/expressir/model/literals/real.rb +19 -0
  92. data/lib/expressir/model/literals/string.rb +22 -0
  93. data/lib/expressir/model/model_element.rb +208 -0
  94. data/lib/expressir/model/reference.rb +9 -0
  95. data/lib/expressir/model/references/attribute_reference.rb +22 -0
  96. data/lib/expressir/model/references/group_reference.rb +22 -0
  97. data/lib/expressir/model/references/index_reference.rb +27 -0
  98. data/lib/expressir/model/references/simple_reference.rb +24 -0
  99. data/lib/expressir/model/repository.rb +23 -0
  100. data/lib/expressir/model/statement.rb +9 -0
  101. data/lib/expressir/model/statements/alias.rb +35 -0
  102. data/lib/expressir/model/statements/assignment.rb +22 -0
  103. data/lib/expressir/model/statements/case.rb +25 -0
  104. data/lib/expressir/model/statements/case_action.rb +22 -0
  105. data/lib/expressir/model/statements/compound.rb +19 -0
  106. data/lib/expressir/model/statements/escape.rb +10 -0
  107. data/lib/expressir/model/statements/if.rb +25 -0
  108. data/lib/expressir/model/statements/null.rb +10 -0
  109. data/lib/expressir/model/statements/procedure_call.rb +22 -0
  110. data/lib/expressir/model/statements/repeat.rb +47 -0
  111. data/lib/expressir/model/statements/return.rb +19 -0
  112. data/lib/expressir/model/statements/skip.rb +10 -0
  113. data/lib/expressir/model/supertype_expression.rb +9 -0
  114. data/lib/expressir/model/supertype_expressions/binary_supertype_expression.rb +29 -0
  115. data/lib/expressir/model/supertype_expressions/oneof_supertype_expression.rb +19 -0
  116. data/lib/expressir/model.rb +79 -0
  117. data/lib/expressir/version.rb +3 -0
  118. data/lib/expressir.rb +20 -0
  119. data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.exp +9589 -0
  120. data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.owl +36619 -0
  121. data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.xml +13294 -0
  122. data/original/examples/employment/eclipse/.project +17 -0
  123. data/original/examples/employment/eclipse/Export/Employment.png +0 -0
  124. data/original/examples/employment/eclipse/Express/employment_schema.exp +33 -0
  125. data/original/examples/employment/eclipse/Express/employment_schema.xmi +77 -0
  126. data/original/examples/employment/eclipse/Express/employment_schema.xml +93 -0
  127. data/original/examples/employment/eclipse/Models/Employment.uml +4 -0
  128. data/original/examples/employment/eclipse/Models/Employment.umldi +240 -0
  129. data/original/examples/employment/eclipse/readme.txt +7 -0
  130. data/original/examples/employment/employment_schema.exp +33 -0
  131. data/original/examples/employment/employment_schema.rb +232 -0
  132. data/original/examples/employment/employment_schema.xml +93 -0
  133. data/original/examples/employment/employment_schema___module.rb +46 -0
  134. data/original/examples/employment/employment_schema___p28attr.rb +126 -0
  135. data/original/examples/employment/employment_schema___p28inst.rb +26 -0
  136. data/original/examples/employment/example_employment_data.xml +1 -0
  137. data/original/examples/employment/example_employment_data_copy.xml +1 -0
  138. data/original/examples/employment/example_employment_reader.rb +30 -0
  139. data/original/examples/employment/example_employment_writer.rb +51 -0
  140. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.exp +3710 -0
  141. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.owl +35880 -0
  142. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.xmi +15357 -0
  143. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.xml +9468 -0
  144. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.exp +8404 -0
  145. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.owl +43147 -0
  146. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.xmi +18341 -0
  147. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.xml +11632 -0
  148. data/original/exp2ruby.rb +525 -0
  149. data/original/expsm.rb +34 -0
  150. data/original/mapping_owl.rb +1018 -0
  151. data/original/mapping_sysml.rb +2281 -0
  152. data/original/mapping_uml2.rb +599 -0
  153. data/original/mapping_uml2_eclipse.rb +433 -0
  154. data/original/reeper.rb +134 -0
  155. data/rakelib/cross-ruby.rake +316 -0
  156. data/spec/acceptance/version_spec.rb +12 -0
  157. data/spec/expressir/express/cache_spec.rb +64 -0
  158. data/spec/expressir/express/formatter_spec.rb +127 -0
  159. data/spec/expressir/express/parser_spec.rb +98 -0
  160. data/spec/expressir/model/model_element_spec.rb +266 -0
  161. data/spec/expressr_spec.rb +5 -0
  162. data/spec/spec_helper.rb +17 -0
  163. data/spec/support/console_helper.rb +29 -0
  164. data/spec/syntax/multiple.exp +23 -0
  165. data/spec/syntax/multiple.yaml +198 -0
  166. data/spec/syntax/multiple_formatted.exp +71 -0
  167. data/spec/syntax/multiple_hyperlink_formatted.exp +71 -0
  168. data/spec/syntax/multiple_schema_head_hyperlink_formatted.exp +13 -0
  169. data/spec/syntax/remark.exp +191 -0
  170. data/spec/syntax/remark.yaml +466 -0
  171. data/spec/syntax/remark_formatted.exp +227 -0
  172. data/spec/syntax/single.exp +4 -0
  173. data/spec/syntax/single.yaml +18 -0
  174. data/spec/syntax/single_formatted.exp +10 -0
  175. data/spec/syntax/single_formatted.yaml +36 -0
  176. data/spec/syntax/syntax.exp +333 -0
  177. data/spec/syntax/syntax.yaml +3509 -0
  178. data/spec/syntax/syntax_formatted.exp +902 -0
  179. data/spec/syntax/syntax_hyperlink_formatted.exp +902 -0
  180. data/spec/syntax/syntax_schema_head_formatted.exp +18 -0
  181. metadata +398 -0
@@ -0,0 +1,36 @@
1
+ module Expressir
2
+ module Express
3
+ # Formatter module - format references as hyperlinks
4
+ # @example Include into Formatter subclass
5
+ # formatter = Class.new(Expressir::Express::Formatter) do
6
+ # include Expressir::Express::HyperlinkFormatter
7
+ # end
8
+ module HyperlinkFormatter
9
+ # @!visibility private
10
+ def self.included(mod)
11
+ if !mod.superclass.private_method_defined? :format_references_simple_reference
12
+ raise 'Missing method'
13
+ end
14
+ end
15
+
16
+ private
17
+
18
+ def format_references_simple_reference(node)
19
+ return node.id unless node.base_path
20
+
21
+ # find closest node with path
22
+ current_node = node
23
+ while !current_node.path
24
+ current_node = current_node.parent
25
+ end
26
+
27
+ # skip if this reference and target node are in the same node with path
28
+ node_base_path_parts = node.base_path.split(".")
29
+ current_node_path_parts = current_node.path.split(".")
30
+ return node.id if node_base_path_parts[0..1] == current_node_path_parts[0..1]
31
+
32
+ "{{{<<express:#{node.base_path},#{node.id}>>}}}"
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,24 @@
1
+ require "expressir/model"
2
+
3
+ module Expressir
4
+ module Express
5
+ # @abstract
6
+ class ModelVisitor
7
+ def visit(node)
8
+ node.class.model_attrs.each do |variable|
9
+ value = node.send(variable)
10
+
11
+ if value.is_a? Array
12
+ value.each do |value|
13
+ if value.is_a? Model::ModelElement
14
+ visit(value)
15
+ end
16
+ end
17
+ elsif value.is_a? Model::ModelElement
18
+ visit(value)
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,81 @@
1
+ begin
2
+ RUBY_VERSION =~ /(\d+\.\d+)/
3
+ require_relative "#{$1}/express_parser"
4
+ rescue LoadError
5
+ require_relative "express_parser"
6
+ end
7
+ require 'expressir/express/visitor'
8
+ require 'expressir/express/resolve_references_model_visitor'
9
+
10
+ =begin
11
+ char_stream = Antlr4::Runtime::CharStreams.from_string(input, 'String')
12
+ lexer = ::ExpressParser::Lexer.new(char_stream)
13
+ token_stream = Antlr4::Runtime::CommonTokenStream.new(lexer)
14
+ parser = ::ExpressParser::Parser.new(token_stream)
15
+
16
+ # don't attempt to recover from any parsing error
17
+ parser.instance_variable_set(:@_err_handler, Antlr4::Runtime::BailErrorStrategy.new)
18
+
19
+ parse_tree = parser.syntax()
20
+
21
+ visitor = Visitor.new(token_stream)
22
+ repo = visitor.visit(parse_tree)
23
+ =end
24
+
25
+ module Expressir
26
+ module Express
27
+ class Parser
28
+ # Parses Express file into an Express model
29
+ # @param [String] file Express file path
30
+ # @param [Boolean] skip_references skip resolving references
31
+ # @param [Boolean] include_source attach original source code to model elements
32
+ # @return [Model::Repository]
33
+ def self.from_file(file, skip_references: nil, include_source: nil)
34
+ input = File.read(file)
35
+
36
+ parser = ::ExpressParser::Parser.parse(input)
37
+
38
+ parse_tree = parser.syntax()
39
+
40
+ visitor = Visitor.new(parser.tokens, include_source: include_source)
41
+ repository = visitor.visit(parse_tree)
42
+
43
+ repository.schemas.each do |schema|
44
+ schema.file = file.to_s
45
+ end
46
+
47
+ unless skip_references
48
+ resolve_references_model_visitor = ResolveReferencesModelVisitor.new
49
+ resolve_references_model_visitor.visit(repository)
50
+ end
51
+
52
+ repository
53
+ end
54
+
55
+ # Parses Express files into an Express model
56
+ # @param [Array<String>] files Express file paths
57
+ # @param [Boolean] skip_references skip resolving references
58
+ # @param [Boolean] include_source attach original source code to model elements
59
+ # @return [Model::Repository]
60
+ def self.from_files(files, skip_references: nil, include_source: nil)
61
+ schemas = files.each_with_index.map do |file, i|
62
+ # start = Time.now
63
+ repository = self.from_file(file, skip_references: true)
64
+ # STDERR.puts "#{i+1}/#{files.length} #{file} #{Time.now - start}"
65
+ repository.schemas
66
+ end.flatten
67
+
68
+ repository = Model::Repository.new(
69
+ schemas: schemas
70
+ )
71
+
72
+ unless skip_references
73
+ resolve_references_model_visitor = ResolveReferencesModelVisitor.new
74
+ resolve_references_model_visitor.visit(repository)
75
+ end
76
+
77
+ repository
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,31 @@
1
+ require "expressir/express/model_visitor"
2
+ require "expressir/model"
3
+
4
+ module Expressir
5
+ module Express
6
+ class ResolveReferencesModelVisitor < ModelVisitor
7
+ def visit(node)
8
+ if node.is_a? Model::References::SimpleReference
9
+ visit_references_simple_reference(node)
10
+ end
11
+
12
+ super
13
+ end
14
+
15
+ private
16
+
17
+ def visit_references_simple_reference(node)
18
+ return if node.parent.is_a? Model::References::AttributeReference
19
+
20
+ if node.parent.is_a? Model::Declarations::InterfaceItem
21
+ base_item = node.find("#{node.parent.parent.schema.id}.#{node.parent.ref.id}")
22
+ else
23
+ base_item = node.find(node.id)
24
+ end
25
+ return unless base_item
26
+
27
+ node.base_path = base_item.path
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,23 @@
1
+ module Expressir
2
+ module Express
3
+ # Formatter module - format schema as schema head only
4
+ # @example Include into Formatter subclass
5
+ # formatter = Class.new(Expressir::Express::Formatter) do
6
+ # include Expressir::Express::SchemaHeadFormatter
7
+ # end
8
+ module SchemaHeadFormatter
9
+ # @!visibility private
10
+ def self.included(mod)
11
+ if !mod.superclass.private_method_defined? :format_declarations_schema or !mod.superclass.private_method_defined? :format_declarations_schema_head
12
+ raise 'Missing method'
13
+ end
14
+ end
15
+
16
+ private
17
+
18
+ def format_declarations_schema(node)
19
+ format_declarations_schema_head(node)
20
+ end
21
+ end
22
+ end
23
+ end