expressir 1.2.4-x86_64-linux → 1.2.5-x86_64-linux

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/.cross_rubies +0 -6
  3. data/.github/workflows/rake.yml +200 -9
  4. data/.gitignore +7 -2
  5. data/.gitmodules +3 -0
  6. data/.rubocop.yml +13 -4
  7. data/Rakefile +4 -1
  8. data/bin/console +0 -1
  9. data/bin/rspec +3 -3
  10. data/exe/expressir +4 -2
  11. data/exe/format +1 -1
  12. data/exe/format-test +25 -25
  13. data/exe/generate-parser +16 -13
  14. data/expressir.gemspec +11 -9
  15. data/lib/expressir/config.rb +1 -1
  16. data/lib/expressir/express/2.7/express_parser.so +0 -0
  17. data/lib/expressir/express/3.0/express_parser.so +0 -0
  18. data/lib/expressir/express/3.1/express_parser.so +0 -0
  19. data/lib/expressir/express/parser.rb +2 -2
  20. data/lib/expressir/express/visitor.rb +7 -5
  21. data/lib/expressir/model.rb +78 -78
  22. data/lib/expressir/version.rb +1 -1
  23. data/rakelib/antlr4-native.rake +63 -0
  24. data/rakelib/cross-ruby.rake +213 -162
  25. data/spec/acceptance/version_spec.rb +7 -2
  26. data/spec/expressir/express/cache_spec.rb +8 -5
  27. data/spec/expressir/express/formatter_spec.rb +16 -8
  28. data/spec/expressir/express/parser_spec.rb +17 -11
  29. data/spec/expressir/model/model_element_spec.rb +154 -146
  30. metadata +52 -61
  31. data/demo.rb +0 -18
  32. data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.exp +0 -9589
  33. data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.owl +0 -36619
  34. data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.xml +0 -13294
  35. data/original/examples/employment/eclipse/.project +0 -17
  36. data/original/examples/employment/eclipse/Export/Employment.png +0 -0
  37. data/original/examples/employment/eclipse/Express/employment_schema.exp +0 -33
  38. data/original/examples/employment/eclipse/Express/employment_schema.xmi +0 -77
  39. data/original/examples/employment/eclipse/Express/employment_schema.xml +0 -93
  40. data/original/examples/employment/eclipse/Models/Employment.uml +0 -4
  41. data/original/examples/employment/eclipse/Models/Employment.umldi +0 -240
  42. data/original/examples/employment/eclipse/readme.txt +0 -7
  43. data/original/examples/employment/employment_schema.exp +0 -33
  44. data/original/examples/employment/employment_schema.rb +0 -232
  45. data/original/examples/employment/employment_schema.xml +0 -93
  46. data/original/examples/employment/employment_schema___module.rb +0 -46
  47. data/original/examples/employment/employment_schema___p28attr.rb +0 -126
  48. data/original/examples/employment/employment_schema___p28inst.rb +0 -26
  49. data/original/examples/employment/example_employment_data.xml +0 -1
  50. data/original/examples/employment/example_employment_data_copy.xml +0 -1
  51. data/original/examples/employment/example_employment_reader.rb +0 -30
  52. data/original/examples/employment/example_employment_writer.rb +0 -51
  53. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.exp +0 -3710
  54. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.owl +0 -35880
  55. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.xmi +0 -15357
  56. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.xml +0 -9468
  57. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.exp +0 -8404
  58. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.owl +0 -43147
  59. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.xmi +0 -18341
  60. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.xml +0 -11632
  61. data/original/exp2ruby.rb +0 -525
  62. data/original/expsm.rb +0 -34
  63. data/original/mapping_owl.rb +0 -1018
  64. data/original/mapping_sysml.rb +0 -2281
  65. data/original/mapping_uml2.rb +0 -599
  66. data/original/mapping_uml2_eclipse.rb +0 -433
  67. data/original/reeper.rb +0 -134
  68. data/spec/expressr_spec.rb +0 -5
@@ -1,79 +1,79 @@
1
- require 'expressir/model/model_element'
1
+ require "expressir/model/model_element"
2
2
 
3
- require 'expressir/model/cache'
4
- require 'expressir/model/data_type'
5
- require 'expressir/model/declaration'
6
- require 'expressir/model/expression'
7
- require 'expressir/model/identifier'
8
- require 'expressir/model/literal'
9
- require 'expressir/model/reference'
10
- require 'expressir/model/repository'
11
- require 'expressir/model/statement'
12
- require 'expressir/model/supertype_expression'
13
- require 'expressir/model/data_types/aggregate'
14
- require 'expressir/model/data_types/array'
15
- require 'expressir/model/data_types/bag'
16
- require 'expressir/model/data_types/binary'
17
- require 'expressir/model/data_types/boolean'
18
- require 'expressir/model/data_types/enumeration'
19
- require 'expressir/model/data_types/enumeration_item'
20
- require 'expressir/model/data_types/generic_entity'
21
- require 'expressir/model/data_types/generic'
22
- require 'expressir/model/data_types/integer'
23
- require 'expressir/model/data_types/list'
24
- require 'expressir/model/data_types/logical'
25
- require 'expressir/model/data_types/number'
26
- require 'expressir/model/data_types/real'
27
- require 'expressir/model/data_types/set'
28
- require 'expressir/model/data_types/select'
29
- require 'expressir/model/data_types/string'
30
- require 'expressir/model/declarations/attribute'
31
- require 'expressir/model/declarations/constant'
32
- require 'expressir/model/declarations/entity'
33
- require 'expressir/model/declarations/function'
34
- require 'expressir/model/declarations/interface'
35
- require 'expressir/model/declarations/interface_item'
36
- require 'expressir/model/declarations/interfaced_item'
37
- require 'expressir/model/declarations/parameter'
38
- require 'expressir/model/declarations/procedure'
39
- require 'expressir/model/declarations/remark_item'
40
- require 'expressir/model/declarations/rule'
41
- require 'expressir/model/declarations/schema'
42
- require 'expressir/model/declarations/schema_version'
43
- require 'expressir/model/declarations/schema_version_item'
44
- require 'expressir/model/declarations/subtype_constraint'
45
- require 'expressir/model/declarations/type'
46
- require 'expressir/model/declarations/unique_rule'
47
- require 'expressir/model/declarations/variable'
48
- require 'expressir/model/declarations/where_rule'
49
- require 'expressir/model/expressions/aggregate_initializer'
50
- require 'expressir/model/expressions/aggregate_initializer_item'
51
- require 'expressir/model/expressions/binary_expression'
52
- require 'expressir/model/expressions/entity_constructor'
53
- require 'expressir/model/expressions/function_call'
54
- require 'expressir/model/expressions/interval'
55
- require 'expressir/model/expressions/query_expression'
56
- require 'expressir/model/expressions/unary_expression'
57
- require 'expressir/model/literals/binary'
58
- require 'expressir/model/literals/integer'
59
- require 'expressir/model/literals/logical'
60
- require 'expressir/model/literals/real'
61
- require 'expressir/model/literals/string'
62
- require 'expressir/model/references/attribute_reference'
63
- require 'expressir/model/references/group_reference'
64
- require 'expressir/model/references/index_reference'
65
- require 'expressir/model/references/simple_reference'
66
- require 'expressir/model/statements/alias'
67
- require 'expressir/model/statements/assignment'
68
- require 'expressir/model/statements/case'
69
- require 'expressir/model/statements/case_action'
70
- require 'expressir/model/statements/compound'
71
- require 'expressir/model/statements/escape'
72
- require 'expressir/model/statements/if'
73
- require 'expressir/model/statements/null'
74
- require 'expressir/model/statements/procedure_call'
75
- require 'expressir/model/statements/repeat'
76
- require 'expressir/model/statements/return'
77
- require 'expressir/model/statements/skip'
78
- require 'expressir/model/supertype_expressions/binary_supertype_expression'
79
- require 'expressir/model/supertype_expressions/oneof_supertype_expression'
3
+ require "expressir/model/cache"
4
+ require "expressir/model/data_type"
5
+ require "expressir/model/declaration"
6
+ require "expressir/model/expression"
7
+ require "expressir/model/identifier"
8
+ require "expressir/model/literal"
9
+ require "expressir/model/reference"
10
+ require "expressir/model/repository"
11
+ require "expressir/model/statement"
12
+ require "expressir/model/supertype_expression"
13
+ require "expressir/model/data_types/aggregate"
14
+ require "expressir/model/data_types/array"
15
+ require "expressir/model/data_types/bag"
16
+ require "expressir/model/data_types/binary"
17
+ require "expressir/model/data_types/boolean"
18
+ require "expressir/model/data_types/enumeration"
19
+ require "expressir/model/data_types/enumeration_item"
20
+ require "expressir/model/data_types/generic_entity"
21
+ require "expressir/model/data_types/generic"
22
+ require "expressir/model/data_types/integer"
23
+ require "expressir/model/data_types/list"
24
+ require "expressir/model/data_types/logical"
25
+ require "expressir/model/data_types/number"
26
+ require "expressir/model/data_types/real"
27
+ require "expressir/model/data_types/set"
28
+ require "expressir/model/data_types/select"
29
+ require "expressir/model/data_types/string"
30
+ require "expressir/model/declarations/attribute"
31
+ require "expressir/model/declarations/constant"
32
+ require "expressir/model/declarations/entity"
33
+ require "expressir/model/declarations/function"
34
+ require "expressir/model/declarations/interface"
35
+ require "expressir/model/declarations/interface_item"
36
+ require "expressir/model/declarations/interfaced_item"
37
+ require "expressir/model/declarations/parameter"
38
+ require "expressir/model/declarations/procedure"
39
+ require "expressir/model/declarations/remark_item"
40
+ require "expressir/model/declarations/rule"
41
+ require "expressir/model/declarations/schema"
42
+ require "expressir/model/declarations/schema_version"
43
+ require "expressir/model/declarations/schema_version_item"
44
+ require "expressir/model/declarations/subtype_constraint"
45
+ require "expressir/model/declarations/type"
46
+ require "expressir/model/declarations/unique_rule"
47
+ require "expressir/model/declarations/variable"
48
+ require "expressir/model/declarations/where_rule"
49
+ require "expressir/model/expressions/aggregate_initializer"
50
+ require "expressir/model/expressions/aggregate_initializer_item"
51
+ require "expressir/model/expressions/binary_expression"
52
+ require "expressir/model/expressions/entity_constructor"
53
+ require "expressir/model/expressions/function_call"
54
+ require "expressir/model/expressions/interval"
55
+ require "expressir/model/expressions/query_expression"
56
+ require "expressir/model/expressions/unary_expression"
57
+ require "expressir/model/literals/binary"
58
+ require "expressir/model/literals/integer"
59
+ require "expressir/model/literals/logical"
60
+ require "expressir/model/literals/real"
61
+ require "expressir/model/literals/string"
62
+ require "expressir/model/references/attribute_reference"
63
+ require "expressir/model/references/group_reference"
64
+ require "expressir/model/references/index_reference"
65
+ require "expressir/model/references/simple_reference"
66
+ require "expressir/model/statements/alias"
67
+ require "expressir/model/statements/assignment"
68
+ require "expressir/model/statements/case"
69
+ require "expressir/model/statements/case_action"
70
+ require "expressir/model/statements/compound"
71
+ require "expressir/model/statements/escape"
72
+ require "expressir/model/statements/if"
73
+ require "expressir/model/statements/null"
74
+ require "expressir/model/statements/procedure_call"
75
+ require "expressir/model/statements/repeat"
76
+ require "expressir/model/statements/return"
77
+ require "expressir/model/statements/skip"
78
+ require "expressir/model/supertype_expressions/binary_supertype_expression"
79
+ require "expressir/model/supertype_expressions/oneof_supertype_expression"
@@ -1,3 +1,3 @@
1
1
  module Expressir
2
- VERSION = "1.2.4".freeze
2
+ VERSION = "1.2.5".freeze
3
3
  end
@@ -0,0 +1,63 @@
1
+ require "fileutils"
2
+ require "antlr4-native"
3
+ require "rake"
4
+
5
+ def create_tokens_api(parser_source_lines)
6
+ # - add ParserProxy tokens method, simple compensation for missing exposed BufferedTokenStream
7
+ i = parser_source_lines.index { |x| x == " Object syntax() {" }
8
+ parser_source_lines[i + 6] += <<~CPP.split("\n").map { |x| x == "" ? x : " #{x}" }.join("\n")
9
+
10
+ Array getTokens() {
11
+ Array a;
12
+
13
+ std::vector<Token*> tokens = this -> tokens -> getTokens();
14
+
15
+ for (auto &token : tokens) {
16
+ a.push(token);
17
+ }
18
+
19
+ return a;
20
+ }
21
+
22
+ CPP
23
+ end
24
+
25
+ def create_tokens_method(parser_source_lines)
26
+ i = parser_source_lines.index { |x| x == ' .define_method("syntax", &ParserProxy::syntax, Return().keepAlive())' }
27
+ parser_source_lines[i] += <<~CPP.split("\n").map { |x| x == "" ? x : " #{x}" }.join("\n")
28
+
29
+ .define_method("tokens", &ParserProxy::getTokens)
30
+ CPP
31
+ end
32
+
33
+ desc "Generate parser (Usage: 'rake generate <grammar_file>')"
34
+ task "generate" do
35
+ grammar_file = ARGV[1]
36
+ if grammar_file.nil?
37
+ grammar_file = File.expand_path(File.join("..", "ext", "express-grammar", "Express.g4"), __dir__)
38
+ end
39
+
40
+ puts "Generating parser from '#{grammar_file}'"
41
+
42
+ # ANTLR does weird things if the grammar file isn't in the current working directory
43
+ temp_grammar_file = File.join(FileUtils.pwd, File.basename(grammar_file))
44
+ FileUtils.cp(grammar_file, temp_grammar_file)
45
+
46
+ # generate parser
47
+ generator = Antlr4Native::Generator.new(
48
+ grammar_files: [File.basename(temp_grammar_file)],
49
+ output_dir: "ext",
50
+ parser_root_method: "syntax",
51
+ )
52
+ generator.generate
53
+
54
+ # fix issues with generated parser
55
+ parser_source_file = File.join("ext", "express-parser", "express_parser.cpp")
56
+ parser_source_lines = File.read(parser_source_file).split("\n")
57
+ create_tokens_api(parser_source_lines)
58
+ create_tokens_method(parser_source_lines)
59
+ File.write(parser_source_file, "#{parser_source_lines.join("\n")}\n")
60
+
61
+ # cleanup
62
+ FileUtils.rm(temp_grammar_file)
63
+ end