expressir 0.2.8-x64-mingw32 → 0.2.13-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 (105) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/release.yml +1 -7
  3. data/exe/format +20 -0
  4. data/expressir.gemspec +3 -2
  5. data/lib/expressir/express_exp/2.4/express_parser.so +0 -0
  6. data/lib/expressir/express_exp/2.5/express_parser.so +0 -0
  7. data/lib/expressir/express_exp/2.6/express_parser.so +0 -0
  8. data/lib/expressir/express_exp/2.7/express_parser.so +0 -0
  9. data/lib/expressir/express_exp/3.0/express_parser.so +0 -0
  10. data/lib/expressir/express_exp/formatter.rb +147 -110
  11. data/lib/expressir/express_exp/hyperlink_formatter.rb +25 -0
  12. data/lib/expressir/express_exp/parser.rb +14 -1
  13. data/lib/expressir/express_exp/schema_head_formatter.rb +14 -0
  14. data/lib/expressir/express_exp/visitor.rb +197 -111
  15. data/lib/expressir/model.rb +3 -1
  16. data/lib/expressir/model/attribute.rb +5 -1
  17. data/lib/expressir/model/constant.rb +5 -1
  18. data/lib/expressir/model/entity.rb +14 -20
  19. data/lib/expressir/model/enumeration_item.rb +5 -1
  20. data/lib/expressir/model/expressions/aggregate_initializer.rb +4 -2
  21. data/lib/expressir/model/expressions/aggregate_item.rb +3 -1
  22. data/lib/expressir/model/expressions/attribute_reference.rb +3 -1
  23. data/lib/expressir/model/expressions/binary_expression.rb +3 -1
  24. data/lib/expressir/model/expressions/call.rb +4 -2
  25. data/lib/expressir/model/expressions/entity_constructor.rb +4 -2
  26. data/lib/expressir/model/expressions/group_reference.rb +3 -1
  27. data/lib/expressir/model/expressions/index_reference.rb +3 -1
  28. data/lib/expressir/model/expressions/interval.rb +3 -1
  29. data/lib/expressir/model/expressions/query_expression.rb +5 -2
  30. data/lib/expressir/model/expressions/simple_reference.rb +3 -1
  31. data/lib/expressir/model/expressions/unary_expression.rb +3 -1
  32. data/lib/expressir/model/function.rb +28 -39
  33. data/lib/expressir/model/identifier.rb +1 -3
  34. data/lib/expressir/model/informal_proposition.rb +15 -0
  35. data/lib/expressir/model/interface.rb +4 -2
  36. data/lib/expressir/model/literals/binary.rb +3 -1
  37. data/lib/expressir/model/literals/integer.rb +3 -1
  38. data/lib/expressir/model/literals/logical.rb +3 -1
  39. data/lib/expressir/model/literals/real.rb +3 -1
  40. data/lib/expressir/model/literals/string.rb +3 -1
  41. data/lib/expressir/model/model_element.rb +140 -0
  42. data/lib/expressir/model/parameter.rb +5 -1
  43. data/lib/expressir/model/procedure.rb +29 -40
  44. data/lib/expressir/model/renamed_ref.rb +3 -1
  45. data/lib/expressir/model/repository.rb +5 -5
  46. data/lib/expressir/model/rule.rb +33 -41
  47. data/lib/expressir/model/schema.rb +44 -46
  48. data/lib/expressir/model/statements/alias.rb +6 -3
  49. data/lib/expressir/model/statements/assignment.rb +3 -1
  50. data/lib/expressir/model/statements/call.rb +4 -2
  51. data/lib/expressir/model/statements/case.rb +4 -2
  52. data/lib/expressir/model/statements/case_action.rb +4 -2
  53. data/lib/expressir/model/statements/compound.rb +4 -2
  54. data/lib/expressir/model/statements/escape.rb +1 -1
  55. data/lib/expressir/model/statements/if.rb +5 -3
  56. data/lib/expressir/model/statements/null.rb +1 -1
  57. data/lib/expressir/model/statements/repeat.rb +6 -3
  58. data/lib/expressir/model/statements/return.rb +3 -1
  59. data/lib/expressir/model/statements/skip.rb +1 -1
  60. data/lib/expressir/model/subtype_constraint.rb +5 -2
  61. data/lib/expressir/model/type.rb +11 -4
  62. data/lib/expressir/model/types/aggregate.rb +5 -1
  63. data/lib/expressir/model/types/array.rb +3 -1
  64. data/lib/expressir/model/types/bag.rb +3 -1
  65. data/lib/expressir/model/types/binary.rb +3 -1
  66. data/lib/expressir/model/types/boolean.rb +1 -1
  67. data/lib/expressir/model/types/enumeration.rb +5 -3
  68. data/lib/expressir/model/types/generic.rb +5 -1
  69. data/lib/expressir/model/types/generic_entity.rb +5 -1
  70. data/lib/expressir/model/types/integer.rb +1 -1
  71. data/lib/expressir/model/types/list.rb +3 -1
  72. data/lib/expressir/model/types/logical.rb +1 -1
  73. data/lib/expressir/model/types/number.rb +1 -1
  74. data/lib/expressir/model/types/real.rb +3 -1
  75. data/lib/expressir/model/types/select.rb +5 -3
  76. data/lib/expressir/model/types/set.rb +3 -1
  77. data/lib/expressir/model/types/string.rb +3 -1
  78. data/lib/expressir/model/unique.rb +6 -2
  79. data/lib/expressir/model/variable.rb +5 -1
  80. data/lib/expressir/model/where.rb +5 -1
  81. data/lib/expressir/version.rb +1 -1
  82. data/original/examples/syntax/hyperlink.exp +8 -0
  83. data/original/examples/syntax/hyperlink_formatted.exp +19 -0
  84. data/original/examples/syntax/remark.exp +63 -20
  85. data/original/examples/syntax/remark_formatted.exp +62 -24
  86. data/original/examples/syntax/simple.exp +3 -0
  87. data/original/examples/syntax/source.exp +16 -0
  88. data/original/examples/syntax/syntax.exp +201 -190
  89. data/original/examples/syntax/syntax_formatted.exp +370 -799
  90. data/spec/expressir/express_exp/{format_remark_spec.rb → formatter/remark_spec.rb} +2 -2
  91. data/spec/expressir/express_exp/{format_syntax_spec.rb → formatter/syntax_spec.rb} +2 -2
  92. data/spec/expressir/express_exp/hyperlink_formatter_spec.rb +24 -0
  93. data/spec/expressir/express_exp/parser/head_source_spec.rb +38 -0
  94. data/spec/expressir/express_exp/parser/multiple_spec.rb +32 -0
  95. data/spec/expressir/express_exp/{parse_remark_spec.rb → parser/remark_spec.rb} +120 -55
  96. data/spec/expressir/express_exp/{source_spec.rb → parser/source_spec.rb} +3 -6
  97. data/spec/expressir/express_exp/parser/syntax_spec.rb +3080 -0
  98. data/spec/expressir/express_exp/schema_head_formatter_spec.rb +36 -0
  99. data/spec/expressir/model/{find_spec.rb → model_element/find_spec.rb} +26 -8
  100. data/spec/expressir/model/model_element/hash_spec.rb +66 -0
  101. metadata +38 -13
  102. data/lib/expressir/model/scope.rb +0 -32
  103. data/spec/expressir/express_exp/ap233_spec.rb +0 -22
  104. data/spec/expressir/express_exp/find_spec.rb +0 -28
  105. data/spec/expressir/express_exp/parse_syntax_spec.rb +0 -3003
@@ -4,8 +4,8 @@ require "expressir/express_exp/formatter"
4
4
 
5
5
  RSpec.describe Expressir::ExpressExp::Formatter do
6
6
  describe ".format" do
7
- it "formats a file" do
8
- repo = Expressir::ExpressExp::Parser.from_exp(input_file)
7
+ it "formats remark" do
8
+ repo = Expressir::ExpressExp::Parser.from_file(input_file)
9
9
 
10
10
  result = Expressir::ExpressExp::Formatter.format(repo)
11
11
  expected_result = File.read(output_file)
@@ -4,8 +4,8 @@ require "expressir/express_exp/formatter"
4
4
 
5
5
  RSpec.describe Expressir::ExpressExp::Formatter do
6
6
  describe ".format" do
7
- it "formats a file" do
8
- repo = Expressir::ExpressExp::Parser.from_exp(input_file)
7
+ it "formats syntax" do
8
+ repo = Expressir::ExpressExp::Parser.from_file(input_file)
9
9
 
10
10
  result = Expressir::ExpressExp::Formatter.format(repo)
11
11
  expected_result = File.read(output_file)
@@ -0,0 +1,24 @@
1
+ require "spec_helper"
2
+ require "expressir/express_exp/parser"
3
+ require "expressir/express_exp/hyperlink_formatter"
4
+
5
+ RSpec.describe Expressir::ExpressExp::HyperlinkFormatter do
6
+ describe ".format" do
7
+ it "formats hyperlink" do
8
+ repo = Expressir::ExpressExp::Parser.from_file(input_file)
9
+
10
+ result = Expressir::ExpressExp::HyperlinkFormatter.format(repo)
11
+ expected_result = File.read(output_file)
12
+
13
+ expect(result).to eq(expected_result)
14
+ end
15
+ end
16
+
17
+ def input_file
18
+ @input_file ||= Expressir.root_path.join("original", "examples", "syntax", "hyperlink.exp")
19
+ end
20
+
21
+ def output_file
22
+ @output_file ||= Expressir.root_path.join("original", "examples", "syntax", "hyperlink_formatted.exp")
23
+ end
24
+ end
@@ -0,0 +1,38 @@
1
+ require "spec_helper"
2
+ require "expressir/express_exp/parser"
3
+
4
+ RSpec.describe Expressir::ExpressExp::Parser do
5
+ describe ".head_source" do
6
+ it "contains original head source" do
7
+ input = File.read(sample_file)
8
+ repo = Expressir::ExpressExp::Parser.from_file(sample_file)
9
+
10
+ repo.schemas[0].tap do |x|
11
+ start_index = x.source.index("SCHEMA")
12
+ stop_index = x.source.index(";") + ";".length - 1
13
+ expected_result = x.source[start_index..stop_index]
14
+ expect(x.head_source).to eq(expected_result)
15
+ end
16
+
17
+ repo.schemas[1].tap do |x|
18
+ start_index = x.source.index("SCHEMA")
19
+ stop_index = x.source.index(";") + ";".length - 1
20
+ expected_result = x.source[start_index..stop_index]
21
+ expect(x.head_source).to eq(expected_result)
22
+ end
23
+
24
+ repo.schemas[2].tap do |x|
25
+ start_index = x.source.index("SCHEMA")
26
+ stop_index = x.source.index("REFERENCE FROM contract_schema;") + "REFERENCE FROM contract_schema;".length - 1
27
+ expected_result = x.source[start_index..stop_index]
28
+ expect(x.head_source).to eq(expected_result)
29
+ end
30
+ end
31
+ end
32
+
33
+ def sample_file
34
+ @sample_file ||= Expressir.root_path.join(
35
+ "original", "examples", "syntax", "source.exp"
36
+ )
37
+ end
38
+ end
@@ -0,0 +1,32 @@
1
+ require "spec_helper"
2
+ require "expressir/express_exp/parser"
3
+
4
+ RSpec.describe Expressir::ExpressExp::Parser do
5
+ describe ".from_files" do
6
+ it "parses multiple files" do
7
+ repo = Expressir::ExpressExp::Parser.from_files(sample_files)
8
+
9
+ schemas = repo.schemas
10
+ expect(schemas.count).to eq(5)
11
+ expect(schemas[0].id).to eq("syntax_schema")
12
+ expect(schemas[1].id).to eq("remark_schema")
13
+ expect(schemas[2].id).to eq("entity_schema")
14
+ expect(schemas[3].id).to eq("version_entity_schema")
15
+ expect(schemas[4].id).to eq("version_interface_entity_schema")
16
+ end
17
+ end
18
+
19
+ def sample_files
20
+ @sample_files ||= [
21
+ Expressir.root_path.join(
22
+ "original", "examples", "syntax", "syntax.exp"
23
+ ),
24
+ Expressir.root_path.join(
25
+ "original", "examples", "syntax", "remark.exp"
26
+ ),
27
+ Expressir.root_path.join(
28
+ "original", "examples", "syntax", "source.exp"
29
+ )
30
+ ]
31
+ end
32
+ end
@@ -3,8 +3,8 @@ require "expressir/express_exp/parser"
3
3
 
4
4
  RSpec.describe Expressir::ExpressExp::Parser do
5
5
  describe ".from_file" do
6
- it "build an instance from a file" do
7
- repo = Expressir::ExpressExp::Parser.from_exp(sample_file)
6
+ it "parses remark" do
7
+ repo = Expressir::ExpressExp::Parser.from_file(sample_file)
8
8
 
9
9
  schema = repo.schemas.first
10
10
 
@@ -18,7 +18,7 @@ RSpec.describe Expressir::ExpressExp::Parser do
18
18
  expect(x.remarks[3]).to eq("universal scope - schema before")
19
19
  expect(x.remarks[4]).to eq("universal scope - schema")
20
20
  end
21
-
21
+
22
22
  schema.constants.first.tap do |x|
23
23
  expect(x).to be_instance_of(Expressir::Model::Constant)
24
24
  expect(x.remarks).to be_instance_of(Array)
@@ -26,7 +26,7 @@ RSpec.describe Expressir::ExpressExp::Parser do
26
26
  expect(x.remarks[0]).to eq("schema scope - constant")
27
27
  expect(x.remarks[1]).to eq("universal scope - constant")
28
28
  end
29
-
29
+
30
30
  schema.types.first.tap do |x|
31
31
  expect(x).to be_instance_of(Expressir::Model::Type)
32
32
  expect(x.remarks).to be_instance_of(Array)
@@ -38,12 +38,38 @@ RSpec.describe Expressir::ExpressExp::Parser do
38
38
  x.type.items.first.tap do |x|
39
39
  expect(x).to be_instance_of(Expressir::Model::EnumerationItem)
40
40
  expect(x.remarks).to be_instance_of(Array)
41
- expect(x.remarks.count).to eq(2)
41
+ expect(x.remarks.count).to eq(4)
42
42
  expect(x.remarks[0]).to eq("schema scope - enumeration item")
43
- expect(x.remarks[1]).to eq("universal scope - enumeration item")
43
+ expect(x.remarks[1]).to eq("schema scope - enumeration item, on the same level as the type")
44
+ expect(x.remarks[2]).to eq("universal scope - enumeration item")
45
+ expect(x.remarks[3]).to eq("universal scope - enumeration item, on the same level as the type")
44
46
  end
45
47
  end
46
-
48
+
49
+ schema.types.first.where.first.tap do |x|
50
+ expect(x).to be_instance_of(Expressir::Model::Where)
51
+ expect(x.remarks).to be_instance_of(Array)
52
+ expect(x.remarks.count).to eq(6)
53
+ expect(x.remarks[0]).to eq("type scope - type where")
54
+ expect(x.remarks[1]).to eq("type scope - type where, with prefix")
55
+ expect(x.remarks[2]).to eq("schema scope - type where")
56
+ expect(x.remarks[3]).to eq("schema scope - type where, with prefix")
57
+ expect(x.remarks[4]).to eq("universal scope - type where")
58
+ expect(x.remarks[5]).to eq("universal scope - type where, with prefix")
59
+ end
60
+
61
+ schema.types.first.informal_propositions.first.tap do |x|
62
+ expect(x).to be_instance_of(Expressir::Model::InformalProposition)
63
+ expect(x.remarks).to be_instance_of(Array)
64
+ expect(x.remarks.count).to eq(6)
65
+ expect(x.remarks[0]).to eq("type scope - type informal proposition")
66
+ expect(x.remarks[1]).to eq("type scope - type informal proposition, with prefix")
67
+ expect(x.remarks[2]).to eq("schema scope - type informal proposition")
68
+ expect(x.remarks[3]).to eq("schema scope - type informal proposition, with prefix")
69
+ expect(x.remarks[4]).to eq("universal scope - type informal proposition")
70
+ expect(x.remarks[5]).to eq("universal scope - type informal proposition, with prefix")
71
+ end
72
+
47
73
  schema.entities.first.tap do |x|
48
74
  expect(x).to be_instance_of(Expressir::Model::Entity)
49
75
  expect(x.remarks).to be_instance_of(Array)
@@ -51,8 +77,8 @@ RSpec.describe Expressir::ExpressExp::Parser do
51
77
  expect(x.remarks[0]).to eq("schema scope - entity")
52
78
  expect(x.remarks[1]).to eq("universal scope - entity")
53
79
  end
54
-
55
- schema.entities.first.explicit_attributes.first.tap do |x|
80
+
81
+ schema.entities.first.attributes.find{|x| x.kind == Expressir::Model::Attribute::EXPLICIT}.tap do |x|
56
82
  expect(x).to be_instance_of(Expressir::Model::Attribute)
57
83
  expect(x.kind).to eq(Expressir::Model::Attribute::EXPLICIT)
58
84
  expect(x.remarks).to be_instance_of(Array)
@@ -61,8 +87,8 @@ RSpec.describe Expressir::ExpressExp::Parser do
61
87
  expect(x.remarks[1]).to eq("schema scope - entity attribute")
62
88
  expect(x.remarks[2]).to eq("universal scope - entity attribute")
63
89
  end
64
-
65
- schema.entities.first.derived_attributes.first.tap do |x|
90
+
91
+ schema.entities.first.attributes.find{|x| x.kind == Expressir::Model::Attribute::DERIVED}.tap do |x|
66
92
  expect(x).to be_instance_of(Expressir::Model::Attribute)
67
93
  expect(x.kind).to eq(Expressir::Model::Attribute::DERIVED)
68
94
  expect(x.remarks).to be_instance_of(Array)
@@ -71,8 +97,8 @@ RSpec.describe Expressir::ExpressExp::Parser do
71
97
  expect(x.remarks[1]).to eq("schema scope - entity derived attribute")
72
98
  expect(x.remarks[2]).to eq("universal scope - entity derived attribute")
73
99
  end
74
-
75
- schema.entities.first.inverse_attributes.first.tap do |x|
100
+
101
+ schema.entities.first.attributes.find{|x| x.kind == Expressir::Model::Attribute::INVERSE}.tap do |x|
76
102
  expect(x).to be_instance_of(Expressir::Model::Attribute)
77
103
  expect(x.kind).to eq(Expressir::Model::Attribute::INVERSE)
78
104
  expect(x.remarks).to be_instance_of(Array)
@@ -81,7 +107,7 @@ RSpec.describe Expressir::ExpressExp::Parser do
81
107
  expect(x.remarks[1]).to eq("schema scope - entity inverse attribute")
82
108
  expect(x.remarks[2]).to eq("universal scope - entity inverse attribute")
83
109
  end
84
-
110
+
85
111
  schema.entities.first.unique.first.tap do |x|
86
112
  expect(x).to be_instance_of(Expressir::Model::Unique)
87
113
  expect(x.remarks).to be_instance_of(Array)
@@ -90,16 +116,31 @@ RSpec.describe Expressir::ExpressExp::Parser do
90
116
  expect(x.remarks[1]).to eq("schema scope - entity unique")
91
117
  expect(x.remarks[2]).to eq("universal scope - entity unique")
92
118
  end
93
-
119
+
94
120
  schema.entities.first.where.first.tap do |x|
95
121
  expect(x).to be_instance_of(Expressir::Model::Where)
96
122
  expect(x.remarks).to be_instance_of(Array)
97
- expect(x.remarks.count).to eq(3)
123
+ expect(x.remarks.count).to eq(6)
98
124
  expect(x.remarks[0]).to eq("entity scope - entity where")
99
- expect(x.remarks[1]).to eq("schema scope - entity where")
100
- expect(x.remarks[2]).to eq("universal scope - entity where")
125
+ expect(x.remarks[1]).to eq("entity scope - entity where, with prefix")
126
+ expect(x.remarks[2]).to eq("schema scope - entity where")
127
+ expect(x.remarks[3]).to eq("schema scope - entity where, with prefix")
128
+ expect(x.remarks[4]).to eq("universal scope - entity where")
129
+ expect(x.remarks[5]).to eq("universal scope - entity where, with prefix")
130
+ end
131
+
132
+ schema.entities.first.informal_propositions.first.tap do |x|
133
+ expect(x).to be_instance_of(Expressir::Model::InformalProposition)
134
+ expect(x.remarks).to be_instance_of(Array)
135
+ expect(x.remarks.count).to eq(6)
136
+ expect(x.remarks[0]).to eq("entity scope - entity informal proposition")
137
+ expect(x.remarks[1]).to eq("entity scope - entity informal proposition, with prefix")
138
+ expect(x.remarks[2]).to eq("schema scope - entity informal proposition")
139
+ expect(x.remarks[3]).to eq("schema scope - entity informal proposition, with prefix")
140
+ expect(x.remarks[4]).to eq("universal scope - entity informal proposition")
141
+ expect(x.remarks[5]).to eq("universal scope - entity informal proposition, with prefix")
101
142
  end
102
-
143
+
103
144
  schema.subtype_constraints.first.tap do |x|
104
145
  expect(x).to be_instance_of(Expressir::Model::SubtypeConstraint)
105
146
  expect(x.remarks).to be_instance_of(Array)
@@ -107,7 +148,7 @@ RSpec.describe Expressir::ExpressExp::Parser do
107
148
  expect(x.remarks[0]).to eq("schema scope - subtype constraint")
108
149
  expect(x.remarks[1]).to eq("universal scope - subtype constraint")
109
150
  end
110
-
151
+
111
152
  schema.functions.first.tap do |x|
112
153
  expect(x).to be_instance_of(Expressir::Model::Function)
113
154
  expect(x.remarks).to be_instance_of(Array)
@@ -115,7 +156,7 @@ RSpec.describe Expressir::ExpressExp::Parser do
115
156
  expect(x.remarks[0]).to eq("schema scope - function")
116
157
  expect(x.remarks[1]).to eq("universal scope - function")
117
158
  end
118
-
159
+
119
160
  schema.functions.first.parameters.first.tap do |x|
120
161
  expect(x).to be_instance_of(Expressir::Model::Parameter)
121
162
  expect(x.remarks).to be_instance_of(Array)
@@ -124,7 +165,7 @@ RSpec.describe Expressir::ExpressExp::Parser do
124
165
  expect(x.remarks[1]).to eq("schema scope - function parameter")
125
166
  expect(x.remarks[2]).to eq("universal scope - function parameter")
126
167
  end
127
-
168
+
128
169
  schema.functions.first.types.first.tap do |x|
129
170
  expect(x).to be_instance_of(Expressir::Model::Type)
130
171
  expect(x.remarks).to be_instance_of(Array)
@@ -137,13 +178,16 @@ RSpec.describe Expressir::ExpressExp::Parser do
137
178
  x.type.items.first.tap do |x|
138
179
  expect(x).to be_instance_of(Expressir::Model::EnumerationItem)
139
180
  expect(x.remarks).to be_instance_of(Array)
140
- expect(x.remarks.count).to eq(3)
181
+ expect(x.remarks.count).to eq(6)
141
182
  expect(x.remarks[0]).to eq("function scope - function enumeration item")
142
- expect(x.remarks[1]).to eq("schema scope - function enumeration item")
143
- expect(x.remarks[2]).to eq("universal scope - function enumeration item")
183
+ expect(x.remarks[1]).to eq("function scope - function enumeration item, on the same level as the type")
184
+ expect(x.remarks[2]).to eq("schema scope - function enumeration item")
185
+ expect(x.remarks[3]).to eq("schema scope - function enumeration item, on the same level as the type")
186
+ expect(x.remarks[4]).to eq("universal scope - function enumeration item")
187
+ expect(x.remarks[5]).to eq("universal scope - function enumeration item, on the same level as the type")
144
188
  end
145
189
  end
146
-
190
+
147
191
  schema.functions.first.constants.first.tap do |x|
148
192
  expect(x).to be_instance_of(Expressir::Model::Constant)
149
193
  expect(x.remarks).to be_instance_of(Array)
@@ -152,7 +196,7 @@ RSpec.describe Expressir::ExpressExp::Parser do
152
196
  expect(x.remarks[1]).to eq("schema scope - function constant")
153
197
  expect(x.remarks[2]).to eq("universal scope - function constant")
154
198
  end
155
-
199
+
156
200
  schema.functions.first.variables.first.tap do |x|
157
201
  expect(x).to be_instance_of(Expressir::Model::Variable)
158
202
  expect(x.remarks).to be_instance_of(Array)
@@ -161,21 +205,21 @@ RSpec.describe Expressir::ExpressExp::Parser do
161
205
  expect(x.remarks[1]).to eq("schema scope - function variable")
162
206
  expect(x.remarks[2]).to eq("universal scope - function variable")
163
207
  end
164
-
208
+
165
209
  schema.functions.first.statements[0].tap do |x|
166
210
  expect(x).to be_instance_of(Expressir::Model::Statements::Alias)
167
211
  expect(x.remarks).to be_instance_of(Array)
168
212
  expect(x.remarks.count).to eq(1)
169
213
  expect(x.remarks[0]).to eq("function alias scope - function alias")
170
214
  end
171
-
215
+
172
216
  schema.functions.first.statements[1].tap do |x|
173
217
  expect(x).to be_instance_of(Expressir::Model::Statements::Repeat)
174
218
  expect(x.remarks).to be_instance_of(Array)
175
219
  expect(x.remarks.count).to eq(1)
176
220
  expect(x.remarks[0]).to eq("function repeat scope - function repeat")
177
221
  end
178
-
222
+
179
223
  schema.functions.first.statements[2].tap do |x|
180
224
  expect(x).to be_instance_of(Expressir::Model::Statements::Assignment)
181
225
  expect(x.expression).to be_instance_of(Expressir::Model::Expressions::QueryExpression)
@@ -183,7 +227,7 @@ RSpec.describe Expressir::ExpressExp::Parser do
183
227
  expect(x.expression.remarks.count).to eq(1)
184
228
  expect(x.expression.remarks[0]).to eq("function query scope - function query")
185
229
  end
186
-
230
+
187
231
  schema.procedures.first.tap do |x|
188
232
  expect(x).to be_instance_of(Expressir::Model::Procedure)
189
233
  expect(x.remarks).to be_instance_of(Array)
@@ -191,7 +235,7 @@ RSpec.describe Expressir::ExpressExp::Parser do
191
235
  expect(x.remarks[0]).to eq("schema scope - procedure")
192
236
  expect(x.remarks[1]).to eq("universal scope - procedure")
193
237
  end
194
-
238
+
195
239
  schema.procedures.first.parameters.first.tap do |x|
196
240
  expect(x).to be_instance_of(Expressir::Model::Parameter)
197
241
  expect(x.remarks).to be_instance_of(Array)
@@ -200,7 +244,7 @@ RSpec.describe Expressir::ExpressExp::Parser do
200
244
  expect(x.remarks[1]).to eq("schema scope - procedure parameter")
201
245
  expect(x.remarks[2]).to eq("universal scope - procedure parameter")
202
246
  end
203
-
247
+
204
248
  schema.procedures.first.types.first.tap do |x|
205
249
  expect(x).to be_instance_of(Expressir::Model::Type)
206
250
  expect(x.remarks).to be_instance_of(Array)
@@ -213,13 +257,16 @@ RSpec.describe Expressir::ExpressExp::Parser do
213
257
  x.type.items.first.tap do |x|
214
258
  expect(x).to be_instance_of(Expressir::Model::EnumerationItem)
215
259
  expect(x.remarks).to be_instance_of(Array)
216
- expect(x.remarks.count).to eq(3)
260
+ expect(x.remarks.count).to eq(6)
217
261
  expect(x.remarks[0]).to eq("procedure scope - procedure enumeration item")
218
- expect(x.remarks[1]).to eq("schema scope - procedure enumeration item")
219
- expect(x.remarks[2]).to eq("universal scope - procedure enumeration item")
262
+ expect(x.remarks[1]).to eq("procedure scope - procedure enumeration item, on the same level as the type")
263
+ expect(x.remarks[2]).to eq("schema scope - procedure enumeration item")
264
+ expect(x.remarks[3]).to eq("schema scope - procedure enumeration item, on the same level as the type")
265
+ expect(x.remarks[4]).to eq("universal scope - procedure enumeration item")
266
+ expect(x.remarks[5]).to eq("universal scope - procedure enumeration item, on the same level as the type")
220
267
  end
221
268
  end
222
-
269
+
223
270
  schema.procedures.first.constants.first.tap do |x|
224
271
  expect(x).to be_instance_of(Expressir::Model::Constant)
225
272
  expect(x.remarks).to be_instance_of(Array)
@@ -228,7 +275,7 @@ RSpec.describe Expressir::ExpressExp::Parser do
228
275
  expect(x.remarks[1]).to eq("schema scope - procedure constant")
229
276
  expect(x.remarks[2]).to eq("universal scope - procedure constant")
230
277
  end
231
-
278
+
232
279
  schema.procedures.first.variables.first.tap do |x|
233
280
  expect(x).to be_instance_of(Expressir::Model::Variable)
234
281
  expect(x.remarks).to be_instance_of(Array)
@@ -237,21 +284,21 @@ RSpec.describe Expressir::ExpressExp::Parser do
237
284
  expect(x.remarks[1]).to eq("schema scope - procedure variable")
238
285
  expect(x.remarks[2]).to eq("universal scope - procedure variable")
239
286
  end
240
-
287
+
241
288
  schema.procedures.first.statements[0].tap do |x|
242
289
  expect(x).to be_instance_of(Expressir::Model::Statements::Alias)
243
290
  expect(x.remarks).to be_instance_of(Array)
244
291
  expect(x.remarks.count).to eq(1)
245
292
  expect(x.remarks[0]).to eq("procedure alias scope - procedure alias")
246
293
  end
247
-
294
+
248
295
  schema.procedures.first.statements[1].tap do |x|
249
296
  expect(x).to be_instance_of(Expressir::Model::Statements::Repeat)
250
297
  expect(x.remarks).to be_instance_of(Array)
251
298
  expect(x.remarks.count).to eq(1)
252
299
  expect(x.remarks[0]).to eq("procedure repeat scope - procedure repeat")
253
300
  end
254
-
301
+
255
302
  schema.procedures.first.statements[2].tap do |x|
256
303
  expect(x).to be_instance_of(Expressir::Model::Statements::Assignment)
257
304
  expect(x.expression).to be_instance_of(Expressir::Model::Expressions::QueryExpression)
@@ -259,7 +306,7 @@ RSpec.describe Expressir::ExpressExp::Parser do
259
306
  expect(x.expression.remarks.count).to eq(1)
260
307
  expect(x.expression.remarks[0]).to eq("procedure query scope - procedure query")
261
308
  end
262
-
309
+
263
310
  schema.rules.first.tap do |x|
264
311
  expect(x).to be_instance_of(Expressir::Model::Rule)
265
312
  expect(x.remarks).to be_instance_of(Array)
@@ -267,7 +314,7 @@ RSpec.describe Expressir::ExpressExp::Parser do
267
314
  expect(x.remarks[0]).to eq("schema scope - rule")
268
315
  expect(x.remarks[1]).to eq("universal scope - rule")
269
316
  end
270
-
317
+
271
318
  schema.rules.first.types.first.tap do |x|
272
319
  expect(x).to be_instance_of(Expressir::Model::Type)
273
320
  expect(x.remarks).to be_instance_of(Array)
@@ -280,13 +327,16 @@ RSpec.describe Expressir::ExpressExp::Parser do
280
327
  x.type.items.first.tap do |x|
281
328
  expect(x).to be_instance_of(Expressir::Model::EnumerationItem)
282
329
  expect(x.remarks).to be_instance_of(Array)
283
- expect(x.remarks.count).to eq(3)
330
+ expect(x.remarks.count).to eq(6)
284
331
  expect(x.remarks[0]).to eq("rule scope - rule enumeration item")
285
- expect(x.remarks[1]).to eq("schema scope - rule enumeration item")
286
- expect(x.remarks[2]).to eq("universal scope - rule enumeration item")
332
+ expect(x.remarks[1]).to eq("rule scope - rule enumeration item, on the same level as the type")
333
+ expect(x.remarks[2]).to eq("schema scope - rule enumeration item")
334
+ expect(x.remarks[3]).to eq("schema scope - rule enumeration item, on the same level as the type")
335
+ expect(x.remarks[4]).to eq("universal scope - rule enumeration item")
336
+ expect(x.remarks[5]).to eq("universal scope - rule enumeration item, on the same level as the type")
287
337
  end
288
338
  end
289
-
339
+
290
340
  schema.rules.first.constants.first.tap do |x|
291
341
  expect(x).to be_instance_of(Expressir::Model::Constant)
292
342
  expect(x.remarks).to be_instance_of(Array)
@@ -295,7 +345,7 @@ RSpec.describe Expressir::ExpressExp::Parser do
295
345
  expect(x.remarks[1]).to eq("schema scope - rule constant")
296
346
  expect(x.remarks[2]).to eq("universal scope - rule constant")
297
347
  end
298
-
348
+
299
349
  schema.rules.first.variables.first.tap do |x|
300
350
  expect(x).to be_instance_of(Expressir::Model::Variable)
301
351
  expect(x.remarks).to be_instance_of(Array)
@@ -304,21 +354,21 @@ RSpec.describe Expressir::ExpressExp::Parser do
304
354
  expect(x.remarks[1]).to eq("schema scope - rule variable")
305
355
  expect(x.remarks[2]).to eq("universal scope - rule variable")
306
356
  end
307
-
357
+
308
358
  schema.rules.first.statements[0].tap do |x|
309
359
  expect(x).to be_instance_of(Expressir::Model::Statements::Alias)
310
360
  expect(x.remarks).to be_instance_of(Array)
311
361
  expect(x.remarks.count).to eq(1)
312
362
  expect(x.remarks[0]).to eq("rule alias scope - rule alias")
313
363
  end
314
-
364
+
315
365
  schema.rules.first.statements[1].tap do |x|
316
366
  expect(x).to be_instance_of(Expressir::Model::Statements::Repeat)
317
367
  expect(x.remarks).to be_instance_of(Array)
318
368
  expect(x.remarks.count).to eq(1)
319
369
  expect(x.remarks[0]).to eq("rule repeat scope - rule repeat")
320
370
  end
321
-
371
+
322
372
  schema.rules.first.statements[2].tap do |x|
323
373
  expect(x).to be_instance_of(Expressir::Model::Statements::Assignment)
324
374
  expect(x.expression).to be_instance_of(Expressir::Model::Expressions::QueryExpression)
@@ -326,14 +376,29 @@ RSpec.describe Expressir::ExpressExp::Parser do
326
376
  expect(x.expression.remarks.count).to eq(1)
327
377
  expect(x.expression.remarks[0]).to eq("rule query scope - rule query")
328
378
  end
329
-
379
+
330
380
  schema.rules.first.where.first.tap do |x|
331
381
  expect(x).to be_instance_of(Expressir::Model::Where)
332
382
  expect(x.remarks).to be_instance_of(Array)
333
- expect(x.remarks.count).to eq(3)
383
+ expect(x.remarks.count).to eq(6)
334
384
  expect(x.remarks[0]).to eq("rule scope - rule where")
335
- expect(x.remarks[1]).to eq("schema scope - rule where")
336
- expect(x.remarks[2]).to eq("universal scope - rule where")
385
+ expect(x.remarks[1]).to eq("rule scope - rule where, with prefix")
386
+ expect(x.remarks[2]).to eq("schema scope - rule where")
387
+ expect(x.remarks[3]).to eq("schema scope - rule where, with prefix")
388
+ expect(x.remarks[4]).to eq("universal scope - rule where")
389
+ expect(x.remarks[5]).to eq("universal scope - rule where, with prefix")
390
+ end
391
+
392
+ schema.rules.first.informal_propositions.first.tap do |x|
393
+ expect(x).to be_instance_of(Expressir::Model::InformalProposition)
394
+ expect(x.remarks).to be_instance_of(Array)
395
+ expect(x.remarks.count).to eq(6)
396
+ expect(x.remarks[0]).to eq("rule scope - rule informal proposition")
397
+ expect(x.remarks[1]).to eq("rule scope - rule informal proposition, with prefix")
398
+ expect(x.remarks[2]).to eq("schema scope - rule informal proposition")
399
+ expect(x.remarks[3]).to eq("schema scope - rule informal proposition, with prefix")
400
+ expect(x.remarks[4]).to eq("universal scope - rule informal proposition")
401
+ expect(x.remarks[5]).to eq("universal scope - rule informal proposition, with prefix")
337
402
  end
338
403
  end
339
404
  end