expressir 0.2.3 → 0.2.4

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 (69) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake.yml +46 -0
  3. data/.github/workflows/release.yml +74 -0
  4. data/.gitignore +1 -2
  5. data/.gitmodules +3 -0
  6. data/Gemfile +2 -0
  7. data/Rakefile +20 -0
  8. data/exe/generate-parser +48 -0
  9. data/expressir.gemspec +5 -2
  10. data/ext/express-parser/antlrgen/Express.interp +532 -0
  11. data/ext/express-parser/antlrgen/Express.tokens +190 -0
  12. data/ext/express-parser/antlrgen/ExpressBaseListener.cpp +7 -0
  13. data/ext/express-parser/antlrgen/ExpressBaseListener.h +623 -0
  14. data/ext/express-parser/antlrgen/ExpressBaseVisitor.cpp +7 -0
  15. data/ext/express-parser/antlrgen/ExpressBaseVisitor.h +816 -0
  16. data/ext/express-parser/antlrgen/ExpressLexer.cpp +1169 -0
  17. data/ext/express-parser/antlrgen/ExpressLexer.h +85 -0
  18. data/ext/express-parser/antlrgen/ExpressLexer.interp +534 -0
  19. data/ext/express-parser/antlrgen/ExpressLexer.tokens +190 -0
  20. data/ext/express-parser/antlrgen/ExpressListener.cpp +7 -0
  21. data/ext/express-parser/antlrgen/ExpressListener.h +616 -0
  22. data/ext/express-parser/antlrgen/ExpressParser.cpp +17284 -0
  23. data/ext/express-parser/antlrgen/ExpressParser.h +3696 -0
  24. data/ext/express-parser/antlrgen/ExpressVisitor.cpp +7 -0
  25. data/ext/express-parser/antlrgen/ExpressVisitor.h +422 -0
  26. data/ext/express-parser/express_parser.cpp +17931 -0
  27. data/ext/express-parser/extconf.rb +34 -0
  28. data/lib/expressir/express_exp/formatter.rb +50 -44
  29. data/lib/expressir/express_exp/parser.rb +12 -6
  30. data/lib/expressir/express_exp/visitor.rb +1377 -1068
  31. data/lib/expressir/model.rb +3 -0
  32. data/lib/expressir/model/attribute.rb +4 -5
  33. data/lib/expressir/model/constant.rb +3 -4
  34. data/lib/expressir/model/entity.rb +4 -4
  35. data/lib/expressir/model/enumeration_item.rb +1 -4
  36. data/lib/expressir/model/expressions/query_expression.rb +4 -4
  37. data/lib/expressir/model/function.rb +4 -4
  38. data/lib/expressir/model/identifier.rb +9 -0
  39. data/lib/expressir/model/parameter.rb +4 -5
  40. data/lib/expressir/model/procedure.rb +4 -4
  41. data/lib/expressir/model/repository.rb +2 -0
  42. data/lib/expressir/model/rule.rb +4 -4
  43. data/lib/expressir/model/schema.rb +3 -3
  44. data/lib/expressir/model/scope.rb +17 -0
  45. data/lib/expressir/model/statements/alias.rb +4 -4
  46. data/lib/expressir/model/statements/repeat.rb +4 -4
  47. data/lib/expressir/model/subtype_constraint.rb +9 -4
  48. data/lib/expressir/model/type.rb +4 -4
  49. data/lib/expressir/model/types/aggregate.rb +4 -5
  50. data/lib/expressir/model/types/generic.rb +2 -5
  51. data/lib/expressir/model/types/generic_entity.rb +2 -5
  52. data/lib/expressir/model/unique.rb +3 -4
  53. data/lib/expressir/model/variable.rb +3 -4
  54. data/lib/expressir/model/where.rb +3 -4
  55. data/lib/expressir/version.rb +1 -1
  56. data/original/examples/syntax/remark_formatted.exp +73 -71
  57. data/original/examples/syntax/syntax_formatted.exp +109 -98
  58. data/spec/expressir/express_exp/ap233_spec.rb +1 -1
  59. data/spec/expressir/express_exp/parse_syntax_spec.rb +30 -30
  60. data/spec/expressir/model/find_spec.rb +110 -0
  61. metadata +61 -15
  62. data/.github/workflows/macos.yml +0 -38
  63. data/.github/workflows/ubuntu.yml +0 -56
  64. data/.github/workflows/windows.yml +0 -40
  65. data/generate-parser.sh +0 -29
  66. data/lib/expressir/express_exp/generated/ExpressBaseVisitor.rb +0 -779
  67. data/lib/expressir/express_exp/generated/ExpressLexer.rb +0 -844
  68. data/lib/expressir/express_exp/generated/ExpressParser.rb +0 -12162
  69. data/lib/expressir/express_exp/generated/ExpressVisitor.rb +0 -394
@@ -1,5 +1,5 @@
1
1
  require "spec_helper"
2
- require_relative "../../../lib/expressir/express_exp/parser"
2
+ require "expressir/express_exp/parser"
3
3
 
4
4
  RSpec.describe Expressir::ExpressExp::Parser do
5
5
  describe ".from_file" do
@@ -171,8 +171,8 @@ RSpec.describe Expressir::ExpressExp::Parser do
171
171
  expect(x.attributes).to be_instance_of(Array)
172
172
  expect(x.attributes.count).to eq(1)
173
173
  expect(x.attributes[0]).to be_instance_of(Expressir::Model::Attribute)
174
- expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
175
174
  expect(x.attributes[0].id).to eq("test")
175
+ expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
176
176
  expect(x.attributes[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
177
177
  end
178
178
 
@@ -181,8 +181,8 @@ RSpec.describe Expressir::ExpressExp::Parser do
181
181
  expect(x.attributes).to be_instance_of(Array)
182
182
  expect(x.attributes.count).to eq(1)
183
183
  expect(x.attributes[0]).to be_instance_of(Expressir::Model::Attribute)
184
- expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
185
184
  expect(x.attributes[0].id).to eq("test")
185
+ expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
186
186
  expect(x.attributes[0].optional).to eq(true)
187
187
  expect(x.attributes[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
188
188
  end
@@ -192,12 +192,12 @@ RSpec.describe Expressir::ExpressExp::Parser do
192
192
  expect(x.attributes).to be_instance_of(Array)
193
193
  expect(x.attributes.count).to eq(2)
194
194
  expect(x.attributes[0]).to be_instance_of(Expressir::Model::Attribute)
195
- expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
196
195
  expect(x.attributes[0].id).to eq("test")
196
+ expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
197
197
  expect(x.attributes[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
198
198
  expect(x.attributes[1]).to be_instance_of(Expressir::Model::Attribute)
199
- expect(x.attributes[1].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
200
199
  expect(x.attributes[1].id).to eq("test2")
200
+ expect(x.attributes[1].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
201
201
  expect(x.attributes[1].type).to be_instance_of(Expressir::Model::Types::Boolean)
202
202
  end
203
203
 
@@ -206,12 +206,12 @@ RSpec.describe Expressir::ExpressExp::Parser do
206
206
  expect(x.attributes).to be_instance_of(Array)
207
207
  expect(x.attributes.count).to eq(2)
208
208
  expect(x.attributes[0]).to be_instance_of(Expressir::Model::Attribute)
209
- expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
210
209
  expect(x.attributes[0].id).to eq("test")
210
+ expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
211
211
  expect(x.attributes[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
212
212
  expect(x.attributes[1]).to be_instance_of(Expressir::Model::Attribute)
213
- expect(x.attributes[1].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
214
213
  expect(x.attributes[1].id).to eq("test2")
214
+ expect(x.attributes[1].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
215
215
  expect(x.attributes[1].type).to be_instance_of(Expressir::Model::Types::Boolean)
216
216
  end
217
217
 
@@ -237,6 +237,7 @@ RSpec.describe Expressir::ExpressExp::Parser do
237
237
  expect(x.attributes).to be_instance_of(Array)
238
238
  expect(x.attributes.count).to eq(1)
239
239
  expect(x.attributes[0]).to be_instance_of(Expressir::Model::Attribute)
240
+ expect(x.attributes[0].id).to eq("test2")
240
241
  expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
241
242
  expect(x.attributes[0].supertype_attribute).to be_instance_of(Expressir::Model::Expressions::AttributeReference)
242
243
  expect(x.attributes[0].supertype_attribute.ref).to be_instance_of(Expressir::Model::Expressions::GroupReference)
@@ -246,7 +247,6 @@ RSpec.describe Expressir::ExpressExp::Parser do
246
247
  expect(x.attributes[0].supertype_attribute.ref.entity.id).to eq("attribute_entity")
247
248
  expect(x.attributes[0].supertype_attribute.attribute).to be_instance_of(Expressir::Model::Expressions::SimpleReference)
248
249
  expect(x.attributes[0].supertype_attribute.attribute.id).to eq("test")
249
- expect(x.attributes[0].id).to eq("test2")
250
250
  expect(x.attributes[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
251
251
  end
252
252
 
@@ -255,8 +255,8 @@ RSpec.describe Expressir::ExpressExp::Parser do
255
255
  expect(x.attributes).to be_instance_of(Array)
256
256
  expect(x.attributes.count).to eq(1)
257
257
  expect(x.attributes[0]).to be_instance_of(Expressir::Model::Attribute)
258
- expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::DERIVED)
259
258
  expect(x.attributes[0].id).to eq("test")
259
+ expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::DERIVED)
260
260
  expect(x.attributes[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
261
261
  expect(x.attributes[0].expression).to be_instance_of(Expressir::Model::Literals::Logical)
262
262
  expect(x.attributes[0].expression.value).to eq(Expressir::Model::Literals::Logical::TRUE)
@@ -286,6 +286,7 @@ RSpec.describe Expressir::ExpressExp::Parser do
286
286
  expect(x.attributes).to be_instance_of(Array)
287
287
  expect(x.attributes.count).to eq(1)
288
288
  expect(x.attributes[0]).to be_instance_of(Expressir::Model::Attribute)
289
+ expect(x.attributes[0].id).to eq("test2")
289
290
  expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::DERIVED)
290
291
  expect(x.attributes[0].supertype_attribute).to be_instance_of(Expressir::Model::Expressions::AttributeReference)
291
292
  expect(x.attributes[0].supertype_attribute.ref).to be_instance_of(Expressir::Model::Expressions::GroupReference)
@@ -295,7 +296,6 @@ RSpec.describe Expressir::ExpressExp::Parser do
295
296
  expect(x.attributes[0].supertype_attribute.ref.entity.id).to eq("attribute_entity")
296
297
  expect(x.attributes[0].supertype_attribute.attribute).to be_instance_of(Expressir::Model::Expressions::SimpleReference)
297
298
  expect(x.attributes[0].supertype_attribute.attribute.id).to eq("test")
298
- expect(x.attributes[0].id).to eq("test2")
299
299
  expect(x.attributes[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
300
300
  expect(x.attributes[0].expression).to be_instance_of(Expressir::Model::Literals::Logical)
301
301
  expect(x.attributes[0].expression.value).to eq(Expressir::Model::Literals::Logical::TRUE)
@@ -306,8 +306,8 @@ RSpec.describe Expressir::ExpressExp::Parser do
306
306
  expect(x.attributes).to be_instance_of(Array)
307
307
  expect(x.attributes.count).to eq(1)
308
308
  expect(x.attributes[0]).to be_instance_of(Expressir::Model::Attribute)
309
- expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::INVERSE)
310
309
  expect(x.attributes[0].id).to eq("test")
310
+ expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::INVERSE)
311
311
  expect(x.attributes[0].type).to be_instance_of(Expressir::Model::Expressions::SimpleReference)
312
312
  expect(x.attributes[0].type.id).to eq("attribute_entity")
313
313
  expect(x.attributes[0].expression).to be_instance_of(Expressir::Model::Expressions::SimpleReference)
@@ -319,8 +319,8 @@ RSpec.describe Expressir::ExpressExp::Parser do
319
319
  expect(x.attributes).to be_instance_of(Array)
320
320
  expect(x.attributes.count).to eq(1)
321
321
  expect(x.attributes[0]).to be_instance_of(Expressir::Model::Attribute)
322
- expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::INVERSE)
323
322
  expect(x.attributes[0].id).to eq("test")
323
+ expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::INVERSE)
324
324
  expect(x.attributes[0].type).to be_instance_of(Expressir::Model::Expressions::SimpleReference)
325
325
  expect(x.attributes[0].type.id).to eq("attribute_entity")
326
326
  expect(x.attributes[0].expression).to be_instance_of(Expressir::Model::Expressions::AttributeReference)
@@ -335,8 +335,8 @@ RSpec.describe Expressir::ExpressExp::Parser do
335
335
  expect(x.attributes).to be_instance_of(Array)
336
336
  expect(x.attributes.count).to eq(1)
337
337
  expect(x.attributes[0]).to be_instance_of(Expressir::Model::Attribute)
338
- expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::INVERSE)
339
338
  expect(x.attributes[0].id).to eq("test")
339
+ expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::INVERSE)
340
340
  expect(x.attributes[0].type).to be_instance_of(Expressir::Model::Types::Set)
341
341
  expect(x.attributes[0].type.base_type).to be_instance_of(Expressir::Model::Expressions::SimpleReference)
342
342
  expect(x.attributes[0].type.base_type.id).to eq("attribute_entity")
@@ -349,8 +349,8 @@ RSpec.describe Expressir::ExpressExp::Parser do
349
349
  expect(x.attributes).to be_instance_of(Array)
350
350
  expect(x.attributes.count).to eq(1)
351
351
  expect(x.attributes[0]).to be_instance_of(Expressir::Model::Attribute)
352
- expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::INVERSE)
353
352
  expect(x.attributes[0].id).to eq("test")
353
+ expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::INVERSE)
354
354
  expect(x.attributes[0].type).to be_instance_of(Expressir::Model::Types::Set)
355
355
  expect(x.attributes[0].type.bound1).to be_instance_of(Expressir::Model::Literals::Integer)
356
356
  expect(x.attributes[0].type.bound1.value).to eq("1")
@@ -367,8 +367,8 @@ RSpec.describe Expressir::ExpressExp::Parser do
367
367
  expect(x.attributes).to be_instance_of(Array)
368
368
  expect(x.attributes.count).to eq(1)
369
369
  expect(x.attributes[0]).to be_instance_of(Expressir::Model::Attribute)
370
- expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::INVERSE)
371
370
  expect(x.attributes[0].id).to eq("test")
371
+ expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::INVERSE)
372
372
  expect(x.attributes[0].type).to be_instance_of(Expressir::Model::Types::Bag)
373
373
  expect(x.attributes[0].type.base_type).to be_instance_of(Expressir::Model::Expressions::SimpleReference)
374
374
  expect(x.attributes[0].type.base_type.id).to eq("attribute_entity")
@@ -381,8 +381,8 @@ RSpec.describe Expressir::ExpressExp::Parser do
381
381
  expect(x.attributes).to be_instance_of(Array)
382
382
  expect(x.attributes.count).to eq(1)
383
383
  expect(x.attributes[0]).to be_instance_of(Expressir::Model::Attribute)
384
- expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::INVERSE)
385
384
  expect(x.attributes[0].id).to eq("test")
385
+ expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::INVERSE)
386
386
  expect(x.attributes[0].type).to be_instance_of(Expressir::Model::Types::Bag)
387
387
  expect(x.attributes[0].type.bound1).to be_instance_of(Expressir::Model::Literals::Integer)
388
388
  expect(x.attributes[0].type.bound1.value).to eq("1")
@@ -419,6 +419,7 @@ RSpec.describe Expressir::ExpressExp::Parser do
419
419
  expect(x.attributes).to be_instance_of(Array)
420
420
  expect(x.attributes.count).to eq(1)
421
421
  expect(x.attributes[0]).to be_instance_of(Expressir::Model::Attribute)
422
+ expect(x.attributes[0].id).to eq("test2")
422
423
  expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::INVERSE)
423
424
  expect(x.attributes[0].supertype_attribute).to be_instance_of(Expressir::Model::Expressions::AttributeReference)
424
425
  expect(x.attributes[0].supertype_attribute.ref).to be_instance_of(Expressir::Model::Expressions::GroupReference)
@@ -428,7 +429,6 @@ RSpec.describe Expressir::ExpressExp::Parser do
428
429
  expect(x.attributes[0].supertype_attribute.ref.entity.id).to eq("attribute_entity")
429
430
  expect(x.attributes[0].supertype_attribute.attribute).to be_instance_of(Expressir::Model::Expressions::SimpleReference)
430
431
  expect(x.attributes[0].supertype_attribute.attribute.id).to eq("test")
431
- expect(x.attributes[0].id).to eq("test2")
432
432
  expect(x.attributes[0].type).to be_instance_of(Expressir::Model::Expressions::SimpleReference)
433
433
  expect(x.attributes[0].type.id).to eq("attribute_entity")
434
434
  expect(x.attributes[0].expression).to be_instance_of(Expressir::Model::Expressions::SimpleReference)
@@ -440,8 +440,8 @@ RSpec.describe Expressir::ExpressExp::Parser do
440
440
  expect(x.attributes).to be_instance_of(Array)
441
441
  expect(x.attributes.count).to eq(1)
442
442
  expect(x.attributes[0]).to be_instance_of(Expressir::Model::Attribute)
443
- expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
444
443
  expect(x.attributes[0].id).to eq("test")
444
+ expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
445
445
  expect(x.attributes[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
446
446
  expect(x.unique).to be_instance_of(Array)
447
447
  expect(x.unique.count).to eq(1)
@@ -457,8 +457,8 @@ RSpec.describe Expressir::ExpressExp::Parser do
457
457
  expect(x.attributes).to be_instance_of(Array)
458
458
  expect(x.attributes.count).to eq(1)
459
459
  expect(x.attributes[0]).to be_instance_of(Expressir::Model::Attribute)
460
- expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
461
460
  expect(x.attributes[0].id).to eq("test")
461
+ expect(x.attributes[0].kind).to eq(Expressir::Model::Attribute::EXPLICIT)
462
462
  expect(x.attributes[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
463
463
  expect(x.unique).to be_instance_of(Array)
464
464
  expect(x.unique.count).to eq(1)
@@ -1011,8 +1011,8 @@ RSpec.describe Expressir::ExpressExp::Parser do
1011
1011
  expect(x.parameters).to be_instance_of(Array)
1012
1012
  expect(x.parameters.count).to eq(1)
1013
1013
  expect(x.parameters[0]).to be_instance_of(Expressir::Model::Parameter)
1014
- expect(x.parameters[0].var).not_to eq(true)
1015
1014
  expect(x.parameters[0].id).to eq("test")
1015
+ expect(x.parameters[0].var).not_to eq(true)
1016
1016
  expect(x.parameters[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
1017
1017
  end
1018
1018
 
@@ -1021,12 +1021,12 @@ RSpec.describe Expressir::ExpressExp::Parser do
1021
1021
  expect(x.parameters).to be_instance_of(Array)
1022
1022
  expect(x.parameters.count).to eq(2)
1023
1023
  expect(x.parameters[0]).to be_instance_of(Expressir::Model::Parameter)
1024
- expect(x.parameters[0].var).not_to eq(true)
1025
1024
  expect(x.parameters[0].id).to eq("test")
1025
+ expect(x.parameters[0].var).not_to eq(true)
1026
1026
  expect(x.parameters[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
1027
1027
  expect(x.parameters[1]).to be_instance_of(Expressir::Model::Parameter)
1028
- expect(x.parameters[1].var).not_to eq(true)
1029
1028
  expect(x.parameters[1].id).to eq("test2")
1029
+ expect(x.parameters[1].var).not_to eq(true)
1030
1030
  expect(x.parameters[1].type).to be_instance_of(Expressir::Model::Types::Boolean)
1031
1031
  end
1032
1032
 
@@ -1035,12 +1035,12 @@ RSpec.describe Expressir::ExpressExp::Parser do
1035
1035
  expect(x.parameters).to be_instance_of(Array)
1036
1036
  expect(x.parameters.count).to eq(2)
1037
1037
  expect(x.parameters[0]).to be_instance_of(Expressir::Model::Parameter)
1038
- expect(x.parameters[0].var).not_to eq(true)
1039
1038
  expect(x.parameters[0].id).to eq("test")
1039
+ expect(x.parameters[0].var).not_to eq(true)
1040
1040
  expect(x.parameters[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
1041
1041
  expect(x.parameters[1]).to be_instance_of(Expressir::Model::Parameter)
1042
- expect(x.parameters[1].var).not_to eq(true)
1043
1042
  expect(x.parameters[1].id).to eq("test2")
1043
+ expect(x.parameters[1].var).not_to eq(true)
1044
1044
  expect(x.parameters[1].type).to be_instance_of(Expressir::Model::Types::Boolean)
1045
1045
  end
1046
1046
 
@@ -1049,8 +1049,8 @@ RSpec.describe Expressir::ExpressExp::Parser do
1049
1049
  expect(x.parameters).to be_instance_of(Array)
1050
1050
  expect(x.parameters.count).to eq(1)
1051
1051
  expect(x.parameters[0]).to be_instance_of(Expressir::Model::Parameter)
1052
- expect(x.parameters[0].var).to eq(true)
1053
1052
  expect(x.parameters[0].id).to eq("test")
1053
+ expect(x.parameters[0].var).to eq(true)
1054
1054
  expect(x.parameters[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
1055
1055
  end
1056
1056
 
@@ -1059,12 +1059,12 @@ RSpec.describe Expressir::ExpressExp::Parser do
1059
1059
  expect(x.parameters).to be_instance_of(Array)
1060
1060
  expect(x.parameters.count).to eq(2)
1061
1061
  expect(x.parameters[0]).to be_instance_of(Expressir::Model::Parameter)
1062
- expect(x.parameters[0].var).to eq(true)
1063
1062
  expect(x.parameters[0].id).to eq("test")
1063
+ expect(x.parameters[0].var).to eq(true)
1064
1064
  expect(x.parameters[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
1065
1065
  expect(x.parameters[1]).to be_instance_of(Expressir::Model::Parameter)
1066
- expect(x.parameters[1].var).not_to eq(true)
1067
1066
  expect(x.parameters[1].id).to eq("test2")
1067
+ expect(x.parameters[1].var).not_to eq(true)
1068
1068
  expect(x.parameters[1].type).to be_instance_of(Expressir::Model::Types::Boolean)
1069
1069
  end
1070
1070
 
@@ -1073,12 +1073,12 @@ RSpec.describe Expressir::ExpressExp::Parser do
1073
1073
  expect(x.parameters).to be_instance_of(Array)
1074
1074
  expect(x.parameters.count).to eq(2)
1075
1075
  expect(x.parameters[0]).to be_instance_of(Expressir::Model::Parameter)
1076
- expect(x.parameters[0].var).not_to eq(true)
1077
1076
  expect(x.parameters[0].id).to eq("test")
1077
+ expect(x.parameters[0].var).not_to eq(true)
1078
1078
  expect(x.parameters[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
1079
1079
  expect(x.parameters[1]).to be_instance_of(Expressir::Model::Parameter)
1080
- expect(x.parameters[1].var).to eq(true)
1081
1080
  expect(x.parameters[1].id).to eq("test2")
1081
+ expect(x.parameters[1].var).to eq(true)
1082
1082
  expect(x.parameters[1].type).to be_instance_of(Expressir::Model::Types::Boolean)
1083
1083
  end
1084
1084
 
@@ -1087,12 +1087,12 @@ RSpec.describe Expressir::ExpressExp::Parser do
1087
1087
  expect(x.parameters).to be_instance_of(Array)
1088
1088
  expect(x.parameters.count).to eq(2)
1089
1089
  expect(x.parameters[0]).to be_instance_of(Expressir::Model::Parameter)
1090
- expect(x.parameters[0].var).to eq(true)
1091
1090
  expect(x.parameters[0].id).to eq("test")
1091
+ expect(x.parameters[0].var).to eq(true)
1092
1092
  expect(x.parameters[0].type).to be_instance_of(Expressir::Model::Types::Boolean)
1093
1093
  expect(x.parameters[1]).to be_instance_of(Expressir::Model::Parameter)
1094
- expect(x.parameters[1].var).to eq(true)
1095
1094
  expect(x.parameters[1].id).to eq("test2")
1095
+ expect(x.parameters[1].var).to eq(true)
1096
1096
  expect(x.parameters[1].type).to be_instance_of(Expressir::Model::Types::Boolean)
1097
1097
  end
1098
1098
 
@@ -0,0 +1,110 @@
1
+ require "spec_helper"
2
+ require "expressir/express_exp/parser"
3
+
4
+ RSpec.describe Expressir::Model do
5
+ describe ".find" do
6
+ it "finds an object" do
7
+ repo = Expressir::ExpressExp::Parser.from_exp(sample_file)
8
+
9
+ # universal scope
10
+ expect(repo.find('remark_schema')).to be_instance_of(Expressir::Model::Schema)
11
+ expect(repo.find('remark_schema.remark_constant')).to be_instance_of(Expressir::Model::Constant)
12
+ expect(repo.find('remark_schema.remark_type')).to be_instance_of(Expressir::Model::Type)
13
+ expect(repo.find('remark_schema.remark_enumeration_item')).to be_instance_of(Expressir::Model::EnumerationItem)
14
+ expect(repo.find('remark_schema.remark_entity')).to be_instance_of(Expressir::Model::Entity)
15
+ expect(repo.find('remark_schema.remark_entity.remark_attribute')).to be_instance_of(Expressir::Model::Attribute)
16
+ expect(repo.find('remark_schema.remark_entity.remark_derived_attribute')).to be_instance_of(Expressir::Model::Attribute)
17
+ expect(repo.find('remark_schema.remark_entity.remark_inverse_attribute')).to be_instance_of(Expressir::Model::Attribute)
18
+ expect(repo.find('remark_schema.remark_entity.remark_unique')).to be_instance_of(Expressir::Model::Unique)
19
+ expect(repo.find('remark_schema.remark_entity.remark_where')).to be_instance_of(Expressir::Model::Where)
20
+ expect(repo.find('remark_schema.remark_subtype_constraint')).to be_instance_of(Expressir::Model::SubtypeConstraint)
21
+ expect(repo.find('remark_schema.remark_function')).to be_instance_of(Expressir::Model::Function)
22
+ expect(repo.find('remark_schema.remark_function.remark_parameter')).to be_instance_of(Expressir::Model::Parameter)
23
+ expect(repo.find('remark_schema.remark_function.remark_type')).to be_instance_of(Expressir::Model::Type)
24
+ expect(repo.find('remark_schema.remark_function.remark_enumeration_item')).to be_instance_of(Expressir::Model::EnumerationItem)
25
+ expect(repo.find('remark_schema.remark_function.remark_constant')).to be_instance_of(Expressir::Model::Constant)
26
+ expect(repo.find('remark_schema.remark_function.remark_variable')).to be_instance_of(Expressir::Model::Variable)
27
+ expect(repo.find('remark_schema.remark_procedure')).to be_instance_of(Expressir::Model::Procedure)
28
+ expect(repo.find('remark_schema.remark_procedure.remark_parameter')).to be_instance_of(Expressir::Model::Parameter)
29
+ expect(repo.find('remark_schema.remark_procedure.remark_type')).to be_instance_of(Expressir::Model::Type)
30
+ expect(repo.find('remark_schema.remark_procedure.remark_enumeration_item')).to be_instance_of(Expressir::Model::EnumerationItem)
31
+ expect(repo.find('remark_schema.remark_procedure.remark_constant')).to be_instance_of(Expressir::Model::Constant)
32
+ expect(repo.find('remark_schema.remark_procedure.remark_variable')).to be_instance_of(Expressir::Model::Variable)
33
+ expect(repo.find('remark_schema.remark_rule')).to be_instance_of(Expressir::Model::Rule)
34
+ expect(repo.find('remark_schema.remark_rule.remark_type')).to be_instance_of(Expressir::Model::Type)
35
+ expect(repo.find('remark_schema.remark_rule.remark_enumeration_item')).to be_instance_of(Expressir::Model::EnumerationItem)
36
+ expect(repo.find('remark_schema.remark_rule.remark_constant')).to be_instance_of(Expressir::Model::Constant)
37
+ expect(repo.find('remark_schema.remark_rule.remark_variable')).to be_instance_of(Expressir::Model::Variable)
38
+ expect(repo.find('remark_schema.remark_rule.remark_where')).to be_instance_of(Expressir::Model::Where)
39
+
40
+ # schema scope
41
+ schema = repo.schemas.first
42
+ expect(schema.find('remark_constant')).to be_instance_of(Expressir::Model::Constant)
43
+ expect(schema.find('remark_type')).to be_instance_of(Expressir::Model::Type)
44
+ expect(schema.find('remark_enumeration_item')).to be_instance_of(Expressir::Model::EnumerationItem)
45
+ expect(schema.find('remark_entity')).to be_instance_of(Expressir::Model::Entity)
46
+ expect(schema.find('remark_entity.remark_attribute')).to be_instance_of(Expressir::Model::Attribute)
47
+ expect(schema.find('remark_entity.remark_derived_attribute')).to be_instance_of(Expressir::Model::Attribute)
48
+ expect(schema.find('remark_entity.remark_inverse_attribute')).to be_instance_of(Expressir::Model::Attribute)
49
+ expect(schema.find('remark_entity.remark_unique')).to be_instance_of(Expressir::Model::Unique)
50
+ expect(schema.find('remark_entity.remark_where')).to be_instance_of(Expressir::Model::Where)
51
+ expect(schema.find('remark_subtype_constraint')).to be_instance_of(Expressir::Model::SubtypeConstraint)
52
+ expect(schema.find('remark_function')).to be_instance_of(Expressir::Model::Function)
53
+ expect(schema.find('remark_function.remark_parameter')).to be_instance_of(Expressir::Model::Parameter)
54
+ expect(schema.find('remark_function.remark_type')).to be_instance_of(Expressir::Model::Type)
55
+ expect(schema.find('remark_function.remark_enumeration_item')).to be_instance_of(Expressir::Model::EnumerationItem)
56
+ expect(schema.find('remark_function.remark_constant')).to be_instance_of(Expressir::Model::Constant)
57
+ expect(schema.find('remark_function.remark_variable')).to be_instance_of(Expressir::Model::Variable)
58
+ expect(schema.find('remark_procedure')).to be_instance_of(Expressir::Model::Procedure)
59
+ expect(schema.find('remark_procedure.remark_parameter')).to be_instance_of(Expressir::Model::Parameter)
60
+ expect(schema.find('remark_procedure.remark_type')).to be_instance_of(Expressir::Model::Type)
61
+ expect(schema.find('remark_procedure.remark_enumeration_item')).to be_instance_of(Expressir::Model::EnumerationItem)
62
+ expect(schema.find('remark_procedure.remark_constant')).to be_instance_of(Expressir::Model::Constant)
63
+ expect(schema.find('remark_procedure.remark_variable')).to be_instance_of(Expressir::Model::Variable)
64
+ expect(schema.find('remark_rule')).to be_instance_of(Expressir::Model::Rule)
65
+ expect(schema.find('remark_rule.remark_type')).to be_instance_of(Expressir::Model::Type)
66
+ expect(schema.find('remark_rule.remark_enumeration_item')).to be_instance_of(Expressir::Model::EnumerationItem)
67
+ expect(schema.find('remark_rule.remark_constant')).to be_instance_of(Expressir::Model::Constant)
68
+ expect(schema.find('remark_rule.remark_variable')).to be_instance_of(Expressir::Model::Variable)
69
+ expect(schema.find('remark_rule.remark_where')).to be_instance_of(Expressir::Model::Where)
70
+
71
+ # entity scope
72
+ entity = schema.entities.first
73
+ expect(entity.find('remark_attribute')).to be_instance_of(Expressir::Model::Attribute)
74
+ expect(entity.find('remark_derived_attribute')).to be_instance_of(Expressir::Model::Attribute)
75
+ expect(entity.find('remark_inverse_attribute')).to be_instance_of(Expressir::Model::Attribute)
76
+ expect(entity.find('remark_unique')).to be_instance_of(Expressir::Model::Unique)
77
+ expect(entity.find('remark_where')).to be_instance_of(Expressir::Model::Where)
78
+
79
+ # function scope
80
+ function = schema.functions.first
81
+ expect(function.find('remark_parameter')).to be_instance_of(Expressir::Model::Parameter)
82
+ expect(function.find('remark_type')).to be_instance_of(Expressir::Model::Type)
83
+ expect(function.find('remark_enumeration_item')).to be_instance_of(Expressir::Model::EnumerationItem)
84
+ expect(function.find('remark_constant')).to be_instance_of(Expressir::Model::Constant)
85
+ expect(function.find('remark_variable')).to be_instance_of(Expressir::Model::Variable)
86
+
87
+ # procedure scope
88
+ procedure = schema.procedures.first
89
+ expect(procedure.find('remark_parameter')).to be_instance_of(Expressir::Model::Parameter)
90
+ expect(procedure.find('remark_type')).to be_instance_of(Expressir::Model::Type)
91
+ expect(procedure.find('remark_enumeration_item')).to be_instance_of(Expressir::Model::EnumerationItem)
92
+ expect(procedure.find('remark_constant')).to be_instance_of(Expressir::Model::Constant)
93
+ expect(procedure.find('remark_variable')).to be_instance_of(Expressir::Model::Variable)
94
+
95
+ # rule scope
96
+ rule = schema.rules.first
97
+ expect(rule.find('remark_type')).to be_instance_of(Expressir::Model::Type)
98
+ expect(rule.find('remark_enumeration_item')).to be_instance_of(Expressir::Model::EnumerationItem)
99
+ expect(rule.find('remark_constant')).to be_instance_of(Expressir::Model::Constant)
100
+ expect(rule.find('remark_variable')).to be_instance_of(Expressir::Model::Variable)
101
+ expect(rule.find('remark_where')).to be_instance_of(Expressir::Model::Where)
102
+ end
103
+ end
104
+
105
+ def sample_file
106
+ @sample_file ||= Expressir.root_path.join(
107
+ "original", "examples", "syntax", "remark.exp"
108
+ )
109
+ end
110
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: expressir
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-11-24 00:00:00.000000000 Z
11
+ date: 2020-12-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -25,19 +25,33 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: antlr4-runtime
28
+ name: rice
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.2.12
33
+ version: 2.2.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.2.12
40
+ version: 2.2.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: antlr4-native
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 1.1.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 1.1.0
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: nokogiri
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +108,20 @@ dependencies:
94
108
  - - "~>"
95
109
  - !ruby/object:Gem::Version
96
110
  version: '10.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rake-compiler
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 1.1.1
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 1.1.1
97
125
  - !ruby/object:Gem::Dependency
98
126
  name: rspec
99
127
  requirement: !ruby/object:Gem::Requirement
@@ -113,13 +141,14 @@ email:
113
141
  - open.source@ribose.com'
114
142
  executables:
115
143
  - expressir
116
- extensions: []
144
+ extensions:
145
+ - ext/express-parser/extconf.rb
117
146
  extra_rdoc_files: []
118
147
  files:
119
- - ".github/workflows/macos.yml"
120
- - ".github/workflows/ubuntu.yml"
121
- - ".github/workflows/windows.yml"
148
+ - ".github/workflows/rake.yml"
149
+ - ".github/workflows/release.yml"
122
150
  - ".gitignore"
151
+ - ".gitmodules"
123
152
  - ".rspec"
124
153
  - ".rubocop.yml"
125
154
  - Gemfile
@@ -131,8 +160,26 @@ files:
131
160
  - demo.rb
132
161
  - docs/development.md
133
162
  - exe/expressir
163
+ - exe/generate-parser
134
164
  - expressir.gemspec
135
- - generate-parser.sh
165
+ - ext/express-parser/antlrgen/Express.interp
166
+ - ext/express-parser/antlrgen/Express.tokens
167
+ - ext/express-parser/antlrgen/ExpressBaseListener.cpp
168
+ - ext/express-parser/antlrgen/ExpressBaseListener.h
169
+ - ext/express-parser/antlrgen/ExpressBaseVisitor.cpp
170
+ - ext/express-parser/antlrgen/ExpressBaseVisitor.h
171
+ - ext/express-parser/antlrgen/ExpressLexer.cpp
172
+ - ext/express-parser/antlrgen/ExpressLexer.h
173
+ - ext/express-parser/antlrgen/ExpressLexer.interp
174
+ - ext/express-parser/antlrgen/ExpressLexer.tokens
175
+ - ext/express-parser/antlrgen/ExpressListener.cpp
176
+ - ext/express-parser/antlrgen/ExpressListener.h
177
+ - ext/express-parser/antlrgen/ExpressParser.cpp
178
+ - ext/express-parser/antlrgen/ExpressParser.h
179
+ - ext/express-parser/antlrgen/ExpressVisitor.cpp
180
+ - ext/express-parser/antlrgen/ExpressVisitor.h
181
+ - ext/express-parser/express_parser.cpp
182
+ - ext/express-parser/extconf.rb
136
183
  - lib/expressir.rb
137
184
  - lib/expressir/cli.rb
138
185
  - lib/expressir/cli/ui.rb
@@ -167,10 +214,6 @@ files:
167
214
  - lib/expressir/express/unique_rule.rb
168
215
  - lib/expressir/express/where_rule.rb
169
216
  - lib/expressir/express_exp/formatter.rb
170
- - lib/expressir/express_exp/generated/ExpressBaseVisitor.rb
171
- - lib/expressir/express_exp/generated/ExpressLexer.rb
172
- - lib/expressir/express_exp/generated/ExpressParser.rb
173
- - lib/expressir/express_exp/generated/ExpressVisitor.rb
174
217
  - lib/expressir/express_exp/parser.rb
175
218
  - lib/expressir/express_exp/visitor.rb
176
219
  - lib/expressir/express_parser.rb
@@ -192,6 +235,7 @@ files:
192
235
  - lib/expressir/model/expressions/simple_reference.rb
193
236
  - lib/expressir/model/expressions/unary_expression.rb
194
237
  - lib/expressir/model/function.rb
238
+ - lib/expressir/model/identifier.rb
195
239
  - lib/expressir/model/interface.rb
196
240
  - lib/expressir/model/literals/binary.rb
197
241
  - lib/expressir/model/literals/integer.rb
@@ -204,6 +248,7 @@ files:
204
248
  - lib/expressir/model/repository.rb
205
249
  - lib/expressir/model/rule.rb
206
250
  - lib/expressir/model/schema.rb
251
+ - lib/expressir/model/scope.rb
207
252
  - lib/expressir/model/statements/alias.rb
208
253
  - lib/expressir/model/statements/assignment.rb
209
254
  - lib/expressir/model/statements/call.rb
@@ -288,6 +333,7 @@ files:
288
333
  - spec/expressir/express_exp/format_syntax_spec.rb
289
334
  - spec/expressir/express_exp/parse_remark_spec.rb
290
335
  - spec/expressir/express_exp/parse_syntax_spec.rb
336
+ - spec/expressir/model/find_spec.rb
291
337
  - spec/expressr_spec.rb
292
338
  - spec/spec_helper.rb
293
339
  - spec/support/console_helper.rb
@@ -313,7 +359,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
313
359
  - !ruby/object:Gem::Version
314
360
  version: '0'
315
361
  requirements: []
316
- rubygems_version: 3.0.6
362
+ rubygems_version: 3.0.3
317
363
  signing_key:
318
364
  specification_version: 4
319
365
  summary: ISO EXPRESS parser in Ruby, tools for accessing EXPRESS data models.