expressir 2.1.0 → 2.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +8 -13
  3. data/.rubocop_todo.yml +69 -6
  4. data/Gemfile +1 -1
  5. data/README.adoc +46 -0
  6. data/exe/expressir-format-test +2 -1
  7. data/expressir.gemspec +2 -3
  8. data/lib/expressir/express/cache.rb +6 -6
  9. data/lib/expressir/express/formatter.rb +754 -741
  10. data/lib/expressir/express/hyperlink_formatter.rb +2 -2
  11. data/lib/expressir/express/model_visitor.rb +1 -1
  12. data/lib/expressir/express/parser.rb +224 -100
  13. data/lib/expressir/express/resolve_references_model_visitor.rb +6 -6
  14. data/lib/expressir/express/schema_head_formatter.rb +3 -3
  15. data/lib/expressir/express/visitor.rb +353 -344
  16. data/lib/expressir/model/cache.rb +3 -3
  17. data/lib/expressir/model/data_type.rb +1 -1
  18. data/lib/expressir/model/data_types/aggregate.rb +3 -3
  19. data/lib/expressir/model/data_types/array.rb +6 -6
  20. data/lib/expressir/model/data_types/bag.rb +4 -4
  21. data/lib/expressir/model/data_types/binary.rb +3 -3
  22. data/lib/expressir/model/data_types/boolean.rb +1 -1
  23. data/lib/expressir/model/data_types/enumeration.rb +4 -4
  24. data/lib/expressir/model/data_types/enumeration_item.rb +2 -2
  25. data/lib/expressir/model/data_types/generic.rb +2 -2
  26. data/lib/expressir/model/data_types/generic_entity.rb +2 -2
  27. data/lib/expressir/model/data_types/integer.rb +1 -1
  28. data/lib/expressir/model/data_types/list.rb +5 -5
  29. data/lib/expressir/model/data_types/logical.rb +1 -1
  30. data/lib/expressir/model/data_types/number.rb +1 -1
  31. data/lib/expressir/model/data_types/real.rb +2 -2
  32. data/lib/expressir/model/data_types/select.rb +5 -5
  33. data/lib/expressir/model/data_types/set.rb +4 -4
  34. data/lib/expressir/model/data_types/string.rb +3 -3
  35. data/lib/expressir/model/declaration.rb +1 -1
  36. data/lib/expressir/model/declarations/attribute.rb +7 -7
  37. data/lib/expressir/model/declarations/constant.rb +4 -4
  38. data/lib/expressir/model/declarations/entity.rb +9 -9
  39. data/lib/expressir/model/declarations/function.rb +13 -13
  40. data/lib/expressir/model/declarations/interface.rb +4 -4
  41. data/lib/expressir/model/declarations/interface_item.rb +3 -3
  42. data/lib/expressir/model/declarations/interfaced_item.rb +6 -6
  43. data/lib/expressir/model/declarations/parameter.rb +4 -4
  44. data/lib/expressir/model/declarations/procedure.rb +12 -12
  45. data/lib/expressir/model/declarations/remark_item.rb +3 -3
  46. data/lib/expressir/model/declarations/rule.rb +14 -14
  47. data/lib/expressir/model/declarations/schema.rb +18 -18
  48. data/lib/expressir/model/declarations/schema_version.rb +3 -3
  49. data/lib/expressir/model/declarations/schema_version_item.rb +3 -3
  50. data/lib/expressir/model/declarations/subtype_constraint.rb +6 -6
  51. data/lib/expressir/model/declarations/type.rb +5 -5
  52. data/lib/expressir/model/declarations/unique_rule.rb +3 -3
  53. data/lib/expressir/model/declarations/variable.rb +4 -4
  54. data/lib/expressir/model/declarations/where_rule.rb +3 -3
  55. data/lib/expressir/model/expression.rb +1 -1
  56. data/lib/expressir/model/expressions/aggregate_initializer.rb +2 -2
  57. data/lib/expressir/model/expressions/aggregate_initializer_item.rb +3 -3
  58. data/lib/expressir/model/expressions/binary_expression.rb +12 -5
  59. data/lib/expressir/model/expressions/entity_constructor.rb +3 -3
  60. data/lib/expressir/model/expressions/function_call.rb +3 -3
  61. data/lib/expressir/model/expressions/interval.rb +6 -6
  62. data/lib/expressir/model/expressions/query_expression.rb +4 -4
  63. data/lib/expressir/model/expressions/unary_expression.rb +3 -3
  64. data/lib/expressir/model/identifier.rb +5 -5
  65. data/lib/expressir/model/literal.rb +1 -1
  66. data/lib/expressir/model/literals/binary.rb +2 -2
  67. data/lib/expressir/model/literals/integer.rb +2 -2
  68. data/lib/expressir/model/literals/logical.rb +2 -2
  69. data/lib/expressir/model/literals/real.rb +2 -2
  70. data/lib/expressir/model/literals/string.rb +3 -3
  71. data/lib/expressir/model/model_element.rb +35 -41
  72. data/lib/expressir/model/reference.rb +1 -1
  73. data/lib/expressir/model/references/attribute_reference.rb +3 -3
  74. data/lib/expressir/model/references/group_reference.rb +3 -3
  75. data/lib/expressir/model/references/index_reference.rb +4 -4
  76. data/lib/expressir/model/references/simple_reference.rb +3 -3
  77. data/lib/expressir/model/repository.rb +3 -4
  78. data/lib/expressir/model/statement.rb +1 -1
  79. data/lib/expressir/model/statements/alias.rb +4 -4
  80. data/lib/expressir/model/statements/assignment.rb +3 -3
  81. data/lib/expressir/model/statements/case.rb +4 -4
  82. data/lib/expressir/model/statements/case_action.rb +3 -3
  83. data/lib/expressir/model/statements/compound.rb +2 -2
  84. data/lib/expressir/model/statements/escape.rb +1 -1
  85. data/lib/expressir/model/statements/if.rb +4 -4
  86. data/lib/expressir/model/statements/null.rb +1 -1
  87. data/lib/expressir/model/statements/procedure_call.rb +3 -3
  88. data/lib/expressir/model/statements/repeat.rb +8 -8
  89. data/lib/expressir/model/statements/return.rb +2 -2
  90. data/lib/expressir/model/statements/skip.rb +1 -1
  91. data/lib/expressir/model/supertype_expression.rb +1 -1
  92. data/lib/expressir/model/supertype_expressions/binary_supertype_expression.rb +4 -4
  93. data/lib/expressir/model/supertype_expressions/oneof_supertype_expression.rb +2 -2
  94. data/lib/expressir/version.rb +1 -1
  95. metadata +12 -12
@@ -25,16 +25,16 @@ require "set"
25
25
  # - prevents segfault in ANTLR4 C++ runtime, not sure why they are caused
26
26
  # - e.g. see visit_schema_decl
27
27
 
28
- require 'objspace'
28
+ require "objspace"
29
29
 
30
30
  module Expressir
31
31
  module Express
32
32
  class Visitor
33
33
  class Ctx
34
- attr_reader :name
35
- attr_reader :data
34
+ attr_reader :name, :data
36
35
  attr_accessor :source_pos
37
- def initialize(data,name)
36
+
37
+ def initialize(data, name)
38
38
  @data = data
39
39
  @name = name
40
40
  end
@@ -43,10 +43,10 @@ module Expressir
43
43
  str.data.to_s
44
44
  end
45
45
 
46
- def method_missing(name,*args)
47
- rulename = name.to_s.sub(/^visit_/,"").gsub(/_([a-z])/) { |m| m[1].upcase }.to_sym
46
+ def method_missing(name, *args)
47
+ rulename = name.to_s.sub(/^visit_/, "").gsub(/_([a-z])/) { |m| m[1].upcase }.to_sym
48
48
  self.class.define_method(name) { @data[rulename] }
49
- self.send name, *args
49
+ send name, *args
50
50
  end
51
51
 
52
52
  def keys
@@ -63,9 +63,9 @@ module Expressir
63
63
  end
64
64
 
65
65
  class SimpleCtx
66
- attr_reader :name
67
- attr_reader :data
68
- def initialize(data,name)
66
+ attr_reader :name, :data
67
+
68
+ def initialize(data, name)
69
69
  @data = data
70
70
  @name = name
71
71
  end
@@ -88,68 +88,69 @@ module Expressir
88
88
  @attached_remark_tokens = Set.new
89
89
 
90
90
  @visit_methods = Hash[
91
- private_methods.grep(/^visit_/).map { |name|
92
- rulename = name.to_s.sub(/^visit_/,"").gsub(/_([a-z])/) { $1.upcase }
93
- [rulename.to_sym,name.to_sym]
94
- }
91
+ private_methods.grep(/^visit_/).map do |name|
92
+ rulename = name.to_s.sub(/^visit_/, "").gsub(/_([a-z])/) { $1.upcase }
93
+ [rulename.to_sym, name.to_sym]
94
+ end
95
95
  ]
96
96
  end
97
97
 
98
- def to_ctx(ast,name=:unnamed)
98
+ def to_ctx(ast, name = :unnamed)
99
99
  case ast
100
100
  when Hash
101
101
  nodes = Hash[
102
- ast.map { |k,v|
103
- if k.match(/^listOf_(.*)$/)
102
+ ast.map do |k, v|
103
+ if k =~ /^listOf_(.*)$/
104
104
  itemkey = $1.to_sym
105
- ary = (Array === v) ? v : [v]
106
- [ itemkey, to_ctx(ary.select { |v| v[itemkey] }.map { |v| v.slice(itemkey) }) ]
105
+ ary = Array === v ? v : [v]
106
+ [itemkey, to_ctx(ary.select { |v| v[itemkey] }.map { |v| v.slice(itemkey) })]
107
107
  else
108
- [ k, to_ctx(v,k) ]
108
+ [k, to_ctx(v, k)]
109
109
  end
110
- }
110
+ end
111
111
  ]
112
- Ctx.new nodes,name
112
+ Ctx.new nodes, name
113
113
  when Array
114
- ast.map { |v|
114
+ ast.map do |v|
115
115
  v.length == 1 or raise "element of array invalid (#{v.keys})"
116
- to_ctx(v.values[0],v.keys[0])
117
- }
116
+ to_ctx(v.values[0], v.keys[0])
117
+ end
118
118
  when nil
119
119
  nil
120
120
  else
121
- SimpleCtx.new ast,name
121
+ SimpleCtx.new ast, name
122
122
  end
123
123
  end
124
124
 
125
125
  def get_source_pos(ctx)
126
- ranges = nil
126
+ nil
127
127
  ranges = case ctx
128
- when Ctx
129
- ctx.source_pos and return ctx.source_pos # cache
130
- ctx.values.map { |item| get_source_pos(item) }
131
- when SimpleCtx
132
- return nil unless ctx.data.respond_to? :offset
133
- [ [ctx.data.offset, ctx.data.offset + ctx.data.length] ]
134
- when Array
135
- ctx.map { |item| get_source_pos(item) }
136
- else
137
- raise "unknown type in Ctx tree: #{ctx}"
128
+ when Ctx
129
+ ctx.source_pos and return ctx.source_pos # cache
130
+ ctx.values.map { |item| get_source_pos(item) }
131
+ when SimpleCtx
132
+ return nil unless ctx.data.respond_to? :offset
133
+
134
+ [[ctx.data.offset, ctx.data.offset + ctx.data.length]]
135
+ when Array
136
+ ctx.map { |item| get_source_pos(item) }
137
+ else
138
+ raise "unknown type in Ctx tree: #{ctx}"
139
+ end
140
+ source_pos = ranges.compact.reduce do |item, acc|
141
+ [[item[0], acc[0]].min, [item[1], acc[1]].max]
138
142
  end
139
- source_pos = ranges.compact.reduce { |item,acc|
140
- [ [item[0],acc[0]].min, [item[1],acc[1]].max ]
141
- }
142
143
  Ctx === ctx and ctx.source_pos = source_pos
143
144
  source_pos
144
145
  end
145
146
 
146
147
  def get_source(ctx)
147
- a,b = get_source_pos ctx
148
- @source[a..b-1].strip
148
+ a, b = get_source_pos ctx
149
+ @source[a..b - 1].strip
149
150
  end
150
151
 
151
- def visit_ast(ast,name)
152
- ctx = to_ctx(ast,name)
152
+ def visit_ast(ast, name)
153
+ ctx = to_ctx(ast, name)
153
154
 
154
155
  visit ctx
155
156
  end
@@ -161,7 +162,7 @@ module Expressir
161
162
 
162
163
  node = ctx
163
164
  if @visit_methods[ctx.name]
164
- node = send(@visit_methods[ctx.name],ctx)
165
+ node = send(@visit_methods[ctx.name], ctx)
165
166
  if @include_source && node.respond_to?(:source)
166
167
  node.source = get_source ctx
167
168
  end
@@ -171,7 +172,7 @@ module Expressir
171
172
  node
172
173
  end
173
174
 
174
- ############################################3
175
+ # ###########################################3
175
176
  private
176
177
 
177
178
  def visit_top(ctx)
@@ -188,7 +189,7 @@ module Expressir
188
189
 
189
190
  def visit_if_map(ctx)
190
191
  if ctx
191
- ctx.map{|ctx2| visit(ctx2)}
192
+ ctx.map { |ctx2| visit(ctx2) }
192
193
  else
193
194
  []
194
195
  end
@@ -196,7 +197,7 @@ module Expressir
196
197
 
197
198
  def visit_if_map_flatten(ctx)
198
199
  if ctx
199
- ctx.map{|ctx2| visit(ctx2)}.flatten
200
+ ctx.map { |ctx2| visit(ctx2) }.flatten
200
201
  else
201
202
  []
202
203
  end
@@ -204,11 +205,10 @@ module Expressir
204
205
 
205
206
  def node_find(node, path)
206
207
  if node.is_a?(Enumerable)
207
- target_node = node.find { |item| item.find(path) }
208
+ node.find { |item| item.find(path) }
208
209
  else
209
- target_node = node.find(path)
210
+ node.find(path)
210
211
  end
211
- target_node
212
212
  end
213
213
 
214
214
  def find_remark_target(node, path)
@@ -221,15 +221,15 @@ module Expressir
221
221
  rest, _, current_path = path.rpartition(".") # get last path part
222
222
  _, _, current_path = current_path.rpartition(":") # ignore prefix
223
223
  parent_node = node_find(node, rest)
224
- if parent_node and parent_node.class.method_defined? :remark_items
224
+ if parent_node&.class&.method_defined?(:remark_items)
225
225
  remark_item = Model::Declarations::RemarkItem.new(
226
- id: current_path
226
+ id: current_path,
227
227
  )
228
228
  remark_item.parent = parent_node
229
229
 
230
230
  # check if path can create implicit informal proposition
231
231
  # see https://github.com/lutaml/expressir/issues/50
232
- if parent_node.class.method_defined? :informal_propositions and current_path.match(/^IP\d+$/)
232
+ if parent_node.class.method_defined?(:informal_propositions) && current_path.match(/^IP\d+$/)
233
233
  parent_node.informal_propositions << remark_item
234
234
  else
235
235
  parent_node.remark_items << remark_item
@@ -240,16 +240,16 @@ module Expressir
240
240
  end
241
241
  end
242
242
 
243
- def get_remarks(ctx,indent="")
243
+ def get_remarks(ctx, indent = "")
244
244
  case ctx
245
245
  when Ctx
246
- ctx.values.map { |item| get_remarks(item,indent+" ") }.inject([],:+)
246
+ ctx.values.map { |item| get_remarks(item, "#{indent} ") }.inject([], :+)
247
247
  when Array
248
- x = ctx.map { |item| get_remarks(item,indent+" ") }.inject([],:+)
249
- x
248
+ ctx.map { |item| get_remarks(item, "#{indent} ") }.inject([], :+)
249
+
250
250
  else
251
- if [:tailRemark, :embeddedRemark].include?(ctx.name)
252
- [ get_source_pos(ctx) ]
251
+ if %i[tailRemark embeddedRemark].include?(ctx.name)
252
+ [get_source_pos(ctx)]
253
253
  else
254
254
  []
255
255
  end
@@ -257,30 +257,29 @@ module Expressir
257
257
  end
258
258
 
259
259
  def attach_remarks(ctx, node)
260
-
261
260
  remark_tokens = get_remarks ctx
262
261
 
263
262
  # skip already attached remarks
264
- remark_tokens = remark_tokens.select{|x| !@attached_remark_tokens.include?(x)}
263
+ remark_tokens = remark_tokens.reject { |x| @attached_remark_tokens.include?(x) }
265
264
 
266
265
  # parse remarks, find remark targets
267
266
  tagged_remark_tokens = remark_tokens.map do |span|
268
- text = @source[span[0]..span[1]-1]
269
- _, remark_tag, remark_text = if text.start_with?('--')
270
- text.match(/^--"([^"]*)"(.*)$/).to_a
271
- else
272
- text.match(/^\(\*"([^"]*)"(.*)\*\)$/m).to_a
273
- end
267
+ text = @source[span[0]..span[1] - 1]
268
+ _, remark_tag, remark_text = if text.start_with?("--")
269
+ text.match(/^--"([^"]*)"(.*)$/).to_a
270
+ else
271
+ text.match(/^\(\*"([^"]*)"(.*)\*\)$/m).to_a
272
+ end
274
273
 
275
274
  if remark_tag
276
275
  remark_target = find_remark_target(node, remark_tag)
277
276
  end
278
277
  if remark_text
279
- remark_text = remark_text.strip.force_encoding('UTF-8')
278
+ remark_text = remark_text.strip.force_encoding("UTF-8")
280
279
  end
281
280
 
282
281
  [span, remark_target, remark_text]
283
- end.select{|x| x[1]}
282
+ end.select { |x| x[1] }
284
283
 
285
284
  tagged_remark_tokens.each do |span, remark_target, remark_text|
286
285
  # attach remark
@@ -298,7 +297,7 @@ module Expressir
298
297
  id = visit_if(ctx__attribute_id)
299
298
 
300
299
  Model::References::SimpleReference.new(
301
- id: id
300
+ id: id,
302
301
  )
303
302
  end
304
303
 
@@ -308,7 +307,7 @@ module Expressir
308
307
  id = visit_if(ctx__constant_id)
309
308
 
310
309
  Model::References::SimpleReference.new(
311
- id: id
310
+ id: id,
312
311
  )
313
312
  end
314
313
 
@@ -318,7 +317,7 @@ module Expressir
318
317
  id = visit_if(ctx__entity_id)
319
318
 
320
319
  Model::References::SimpleReference.new(
321
- id: id
320
+ id: id,
322
321
  )
323
322
  end
324
323
 
@@ -328,7 +327,7 @@ module Expressir
328
327
  id = visit_if(ctx__enumeration_id)
329
328
 
330
329
  Model::References::SimpleReference.new(
331
- id: id
330
+ id: id,
332
331
  )
333
332
  end
334
333
 
@@ -338,7 +337,7 @@ module Expressir
338
337
  id = visit_if(ctx__function_id)
339
338
 
340
339
  Model::References::SimpleReference.new(
341
- id: id
340
+ id: id,
342
341
  )
343
342
  end
344
343
 
@@ -348,7 +347,7 @@ module Expressir
348
347
  id = visit_if(ctx__parameter_id)
349
348
 
350
349
  Model::References::SimpleReference.new(
351
- id: id
350
+ id: id,
352
351
  )
353
352
  end
354
353
 
@@ -358,7 +357,7 @@ module Expressir
358
357
  id = visit_if(ctx__procedure_id)
359
358
 
360
359
  Model::References::SimpleReference.new(
361
- id: id
360
+ id: id,
362
361
  )
363
362
  end
364
363
 
@@ -368,7 +367,7 @@ module Expressir
368
367
  id = visit_if(ctx__rule_label_id)
369
368
 
370
369
  Model::References::SimpleReference.new(
371
- id: id
370
+ id: id,
372
371
  )
373
372
  end
374
373
 
@@ -378,7 +377,7 @@ module Expressir
378
377
  id = visit_if(ctx__rule_id)
379
378
 
380
379
  Model::References::SimpleReference.new(
381
- id: id
380
+ id: id,
382
381
  )
383
382
  end
384
383
 
@@ -388,7 +387,7 @@ module Expressir
388
387
  id = visit_if(ctx__schema_id)
389
388
 
390
389
  Model::References::SimpleReference.new(
391
- id: id
390
+ id: id,
392
391
  )
393
392
  end
394
393
 
@@ -398,7 +397,7 @@ module Expressir
398
397
  id = visit_if(ctx__subtype_constraint_id)
399
398
 
400
399
  Model::References::SimpleReference.new(
401
- id: id
400
+ id: id,
402
401
  )
403
402
  end
404
403
 
@@ -408,7 +407,7 @@ module Expressir
408
407
  id = visit_if(ctx__type_label_id)
409
408
 
410
409
  Model::References::SimpleReference.new(
411
- id: id
410
+ id: id,
412
411
  )
413
412
  end
414
413
 
@@ -418,7 +417,7 @@ module Expressir
418
417
  id = visit_if(ctx__type_id)
419
418
 
420
419
  Model::References::SimpleReference.new(
421
- id: id
420
+ id: id,
422
421
  )
423
422
  end
424
423
 
@@ -428,16 +427,16 @@ module Expressir
428
427
  id = visit_if(ctx__variable_id)
429
428
 
430
429
  Model::References::SimpleReference.new(
431
- id: id
430
+ id: id,
432
431
  )
433
432
  end
434
433
 
435
- def visit_abstract_entity_declaration(ctx)
436
- raise 'Invalid state'
434
+ def visit_abstract_entity_declaration(_ctx)
435
+ raise "Invalid state"
437
436
  end
438
437
 
439
- def visit_abstract_supertype(ctx)
440
- raise 'Invalid state'
438
+ def visit_abstract_supertype(_ctx)
439
+ raise "Invalid state"
441
440
  end
442
441
 
443
442
  def visit_abstract_supertype_declaration(ctx)
@@ -454,8 +453,8 @@ module Expressir
454
453
 
455
454
  def visit_add_like_op(ctx)
456
455
  ctx__text = ctx.values[0].text
457
- ctx__ADDITION = ctx__text == '+'
458
- ctx__SUBTRACTION = ctx__text == '-'
456
+ ctx__ADDITION = ctx__text == "+"
457
+ ctx__SUBTRACTION = ctx__text == "-"
459
458
  ctx__OR = ctx.tOR
460
459
  ctx__XOR = ctx.tXOR
461
460
 
@@ -468,7 +467,7 @@ module Expressir
468
467
  elsif ctx__XOR
469
468
  Model::Expressions::BinaryExpression::XOR
470
469
  else
471
- raise 'Invalid state'
470
+ raise "Invalid state"
472
471
  end
473
472
  end
474
473
 
@@ -478,7 +477,7 @@ module Expressir
478
477
  items = visit_if_map(ctx__element)
479
478
 
480
479
  Model::Expressions::AggregateInitializer.new(
481
- items: items
480
+ items: items,
482
481
  )
483
482
  end
484
483
 
@@ -497,7 +496,7 @@ module Expressir
497
496
 
498
497
  Model::DataTypes::Aggregate.new(
499
498
  id: id,
500
- base_type: base_type
499
+ base_type: base_type,
501
500
  )
502
501
  end
503
502
 
@@ -510,8 +509,8 @@ module Expressir
510
509
  visit_if(ctx__array_type || ctx__bag_type || ctx__list_type || ctx__set_type)
511
510
  end
512
511
 
513
- def visit_algorithm_head(ctx)
514
- raise 'Invalid state'
512
+ def visit_algorithm_head(_ctx)
513
+ raise "Invalid state"
515
514
  end
516
515
 
517
516
  def visit_alias_stmt(ctx)
@@ -527,7 +526,7 @@ module Expressir
527
526
  Model::Statements::Alias.new(
528
527
  id: id,
529
528
  expression: expression,
530
- statements: statements
529
+ statements: statements,
531
530
  )
532
531
  end
533
532
 
@@ -550,7 +549,7 @@ module Expressir
550
549
  bound2: bound2,
551
550
  optional: optional,
552
551
  unique: unique,
553
- base_type: base_type
552
+ base_type: base_type,
554
553
  )
555
554
  end
556
555
 
@@ -564,7 +563,7 @@ module Expressir
564
563
 
565
564
  Model::Statements::Assignment.new(
566
565
  ref: ref,
567
- expression: expression
566
+ expression: expression,
568
567
  )
569
568
  end
570
569
 
@@ -579,7 +578,7 @@ module Expressir
579
578
 
580
579
  Model::Declarations::Attribute.new(
581
580
  id: id,
582
- supertype_attribute: supertype_attribute
581
+ supertype_attribute: supertype_attribute,
583
582
  )
584
583
  end
585
584
 
@@ -595,12 +594,12 @@ module Expressir
595
594
  attribute = visit_if(ctx__attribute_ref)
596
595
 
597
596
  Model::References::AttributeReference.new(
598
- attribute: attribute
597
+ attribute: attribute,
599
598
  )
600
599
  end
601
600
 
602
- def visit_attribute_reference(ctx)
603
- raise 'Invalid state'
601
+ def visit_attribute_reference(_ctx)
602
+ raise "Invalid state"
604
603
  end
605
604
 
606
605
  def visit_bag_type(ctx)
@@ -616,7 +615,7 @@ module Expressir
616
615
  Model::DataTypes::Bag.new(
617
616
  bound1: bound1,
618
617
  bound2: bound2,
619
- base_type: base_type
618
+ base_type: base_type,
620
619
  )
621
620
  end
622
621
 
@@ -630,11 +629,11 @@ module Expressir
630
629
 
631
630
  Model::DataTypes::Binary.new(
632
631
  width: width,
633
- fixed: fixed
632
+ fixed: fixed,
634
633
  )
635
634
  end
636
635
 
637
- def visit_boolean_type(ctx)
636
+ def visit_boolean_type(_ctx)
638
637
  Model::DataTypes::Boolean.new
639
638
  end
640
639
 
@@ -650,8 +649,8 @@ module Expressir
650
649
  visit_if(ctx__numeric_expression)
651
650
  end
652
651
 
653
- def visit_bound_spec(ctx)
654
- raise 'Invalid state'
652
+ def visit_bound_spec(_ctx)
653
+ raise "Invalid state"
655
654
  end
656
655
 
657
656
  def visit_built_in_constant(ctx)
@@ -660,7 +659,7 @@ module Expressir
660
659
  id = ctx__text
661
660
 
662
661
  Model::References::SimpleReference.new(
663
- id: id
662
+ id: id,
664
663
  )
665
664
  end
666
665
 
@@ -670,7 +669,7 @@ module Expressir
670
669
  id = ctx__text
671
670
 
672
671
  Model::References::SimpleReference.new(
673
- id: id
672
+ id: id,
674
673
  )
675
674
  end
676
675
 
@@ -680,7 +679,7 @@ module Expressir
680
679
  id = ctx__text
681
680
 
682
681
  Model::References::SimpleReference.new(
683
- id: id
682
+ id: id,
684
683
  )
685
684
  end
686
685
 
@@ -693,7 +692,7 @@ module Expressir
693
692
 
694
693
  Model::Statements::CaseAction.new(
695
694
  labels: labels,
696
- statement: statement
695
+ statement: statement,
697
696
  )
698
697
  end
699
698
 
@@ -716,7 +715,7 @@ module Expressir
716
715
  Model::Statements::Case.new(
717
716
  expression: expression,
718
717
  actions: actions,
719
- otherwise_statement: otherwise_statement
718
+ otherwise_statement: otherwise_statement,
720
719
  )
721
720
  end
722
721
 
@@ -726,7 +725,7 @@ module Expressir
726
725
  statements = visit_if_map(ctx__stmt)
727
726
 
728
727
  Model::Statements::Compound.new(
729
- statements: statements
728
+ statements: statements,
730
729
  )
731
730
  end
732
731
 
@@ -750,7 +749,7 @@ module Expressir
750
749
  Model::Declarations::Constant.new(
751
750
  id: id,
752
751
  type: type,
753
- expression: expression
752
+ expression: expression,
754
753
  )
755
754
  end
756
755
 
@@ -804,7 +803,7 @@ module Expressir
804
803
  kind: Model::Declarations::Attribute::DERIVED,
805
804
  supertype_attribute: attribute.supertype_attribute, # reuse
806
805
  type: type,
807
- expression: expression
806
+ expression: expression,
808
807
  )
809
808
  end
810
809
 
@@ -823,7 +822,7 @@ module Expressir
823
822
 
824
823
  Model::Declarations::WhereRule.new(
825
824
  id: id,
826
- expression: expression
825
+ expression: expression,
827
826
  )
828
827
  end
829
828
 
@@ -837,15 +836,15 @@ module Expressir
837
836
 
838
837
  Model::Expressions::AggregateInitializerItem.new(
839
838
  expression: expression,
840
- repetition: repetition
839
+ repetition: repetition,
841
840
  )
842
841
  else
843
842
  visit_if(ctx__expression)
844
843
  end
845
844
  end
846
845
 
847
- def visit_entity_body(ctx)
848
- raise 'Invalid state'
846
+ def visit_entity_body(_ctx)
847
+ raise "Invalid state"
849
848
  end
850
849
 
851
850
  def visit_entity_constructor(ctx)
@@ -861,7 +860,7 @@ module Expressir
861
860
  # )
862
861
  Model::Expressions::FunctionCall.new(
863
862
  function: entity,
864
- parameters: parameters
863
+ parameters: parameters,
865
864
  )
866
865
  end
867
866
 
@@ -871,8 +870,10 @@ module Expressir
871
870
  ctx__entity_head__entity_id = ctx__entity_head&.entity_id
872
871
  ctx__entity_head__subsuper = visit_if ctx__entity_head&.subsuper
873
872
  ctx__entity_head__subsuper__supertype_constraint = ctx__entity_head__subsuper&.supertype_constraint
874
- ctx__entity_head__subsuper__supertype_constraint__abstract_entity_declaration = ctx__entity_head__subsuper__supertype_constraint&.abstract_entity_declaration
875
- ctx__entity_head__subsuper__supertype_constraint__abstract_supertype_declaration = ctx__entity_head__subsuper__supertype_constraint&.abstract_supertype_declaration
873
+ ctx__entity_head__subsuper__supertype_constraint__abstract_entity_declaration =
874
+ ctx__entity_head__subsuper__supertype_constraint&.abstract_entity_declaration
875
+ ctx__entity_head__subsuper__supertype_constraint__abstract_supertype_declaration =
876
+ ctx__entity_head__subsuper__supertype_constraint&.abstract_supertype_declaration
876
877
  ctx__entity_head__subsuper__supertype_constraint__supertype_rule = ctx__entity_head__subsuper__supertype_constraint&.supertype_rule
877
878
  ctx__entity_head__subsuper__subtype_declaration = ctx__entity_head__subsuper&.subtype_declaration
878
879
  ctx__entity_body__explicit_attr = ctx__entity_body&.explicit_attr
@@ -882,13 +883,15 @@ module Expressir
882
883
  ctx__entity_body__where_clause = ctx__entity_body&.where_clause
883
884
 
884
885
  id = visit_if(ctx__entity_head__entity_id)
885
- abstract = (ctx__entity_head__subsuper__supertype_constraint__abstract_entity_declaration || ctx__entity_head__subsuper__supertype_constraint__abstract_supertype_declaration) && true
886
- supertype_expression = visit_if(ctx__entity_head__subsuper__supertype_constraint__abstract_supertype_declaration || ctx__entity_head__subsuper__supertype_constraint__supertype_rule)
886
+ abstract = (ctx__entity_head__subsuper__supertype_constraint__abstract_entity_declaration ||
887
+ ctx__entity_head__subsuper__supertype_constraint__abstract_supertype_declaration) && true
888
+ supertype_expression = visit_if(ctx__entity_head__subsuper__supertype_constraint__abstract_supertype_declaration ||
889
+ ctx__entity_head__subsuper__supertype_constraint__supertype_rule)
887
890
  subtype_of = visit_if(ctx__entity_head__subsuper__subtype_declaration, [])
888
891
  attributes = [
889
892
  *visit_if_map_flatten(ctx__entity_body__explicit_attr),
890
893
  *visit_if(ctx__entity_body__derive_clause),
891
- *visit_if(ctx__entity_body__inverse_clause)
894
+ *visit_if(ctx__entity_body__inverse_clause),
892
895
  ]
893
896
  unique_rules = visit_if(ctx__entity_body__unique_clause, [])
894
897
  where_rules = visit_if(ctx__entity_body__where_clause, [])
@@ -900,12 +903,12 @@ module Expressir
900
903
  subtype_of: subtype_of,
901
904
  attributes: attributes,
902
905
  unique_rules: unique_rules,
903
- where_rules: where_rules
906
+ where_rules: where_rules,
904
907
  )
905
908
  end
906
909
 
907
- def visit_entity_head(ctx)
908
- raise 'Invalid state'
910
+ def visit_entity_head(_ctx)
911
+ raise "Invalid state"
909
912
  end
910
913
 
911
914
  def visit_entity_id(ctx)
@@ -914,8 +917,8 @@ module Expressir
914
917
  handle_simple_id(ctx__SimpleId)
915
918
  end
916
919
 
917
- def visit_enumeration_extension(ctx)
918
- raise 'Invalid state'
920
+ def visit_enumeration_extension(_ctx)
921
+ raise "Invalid state"
919
922
  end
920
923
 
921
924
  def visit_enumeration_id(ctx)
@@ -936,7 +939,7 @@ module Expressir
936
939
  id = visit_if(ctx__enumeration_id)
937
940
 
938
941
  Model::DataTypes::EnumerationItem.new(
939
- id: id
942
+ id: id,
940
943
  )
941
944
  end
942
945
 
@@ -950,7 +953,7 @@ module Expressir
950
953
 
951
954
  Model::References::AttributeReference.new(
952
955
  ref: ref,
953
- attribute: attribute
956
+ attribute: attribute,
954
957
  )
955
958
  else
956
959
  visit_if(ctx__enumeration_ref)
@@ -971,11 +974,11 @@ module Expressir
971
974
  Model::DataTypes::Enumeration.new(
972
975
  extensible: extensible,
973
976
  based_on: based_on,
974
- items: items
977
+ items: items,
975
978
  )
976
979
  end
977
980
 
978
- def visit_escape_stmt(ctx)
981
+ def visit_escape_stmt(_ctx)
979
982
  Model::Statements::Escape.new
980
983
  end
981
984
 
@@ -994,7 +997,7 @@ module Expressir
994
997
  kind: Model::Declarations::Attribute::EXPLICIT,
995
998
  supertype_attribute: attribute.supertype_attribute, # reuse
996
999
  optional: optional,
997
- type: type
1000
+ type: type,
998
1001
  )
999
1002
  end
1000
1003
  end
@@ -1012,7 +1015,7 @@ module Expressir
1012
1015
  Model::Expressions::BinaryExpression.new(
1013
1016
  operator: operator,
1014
1017
  operand1: operand1,
1015
- operand2: operand2
1018
+ operand2: operand2,
1016
1019
  )
1017
1020
  else
1018
1021
  visit_if(ctx__simple_expression)
@@ -1031,7 +1034,7 @@ module Expressir
1031
1034
  Model::Expressions::BinaryExpression.new(
1032
1035
  operator: operator,
1033
1036
  operand1: operand1,
1034
- operand2: operand2
1037
+ operand2: operand2,
1035
1038
  )
1036
1039
  else
1037
1040
  visit_if(ctx__simple_factor)
@@ -1048,7 +1051,7 @@ module Expressir
1048
1051
  ids.map do |id|
1049
1052
  Model::Declarations::Parameter.new(
1050
1053
  id: id,
1051
- type: type
1054
+ type: type,
1052
1055
  )
1053
1056
  end
1054
1057
  end
@@ -1063,7 +1066,7 @@ module Expressir
1063
1066
 
1064
1067
  Model::Expressions::FunctionCall.new(
1065
1068
  function: function,
1066
- parameters: parameters
1069
+ parameters: parameters,
1067
1070
  )
1068
1071
  end
1069
1072
 
@@ -1082,11 +1085,11 @@ module Expressir
1082
1085
  parameters = visit_if_map_flatten(ctx__function_head__formal_parameter)
1083
1086
  return_type = visit_if(ctx__function_head__parameter_type)
1084
1087
  declarations = visit_if_map(ctx__algorithm_head__declaration)
1085
- types = declarations.select{|x| x.is_a? Model::Declarations::Type}
1086
- entities = declarations.select{|x| x.is_a? Model::Declarations::Entity}
1087
- subtype_constraints = declarations.select{|x| x.is_a? Model::Declarations::SubtypeConstraint}
1088
- functions = declarations.select{|x| x.is_a? Model::Declarations::Function}
1089
- procedures = declarations.select{|x| x.is_a? Model::Declarations::Procedure}
1088
+ types = declarations.select { |x| x.is_a? Model::Declarations::Type }
1089
+ entities = declarations.select { |x| x.is_a? Model::Declarations::Entity }
1090
+ subtype_constraints = declarations.select { |x| x.is_a? Model::Declarations::SubtypeConstraint }
1091
+ functions = declarations.select { |x| x.is_a? Model::Declarations::Function }
1092
+ procedures = declarations.select { |x| x.is_a? Model::Declarations::Procedure }
1090
1093
  constants = visit_if(ctx__algorithm_head__constant_decl, [])
1091
1094
  variables = visit_if(ctx__algorithm_head__local_decl, [])
1092
1095
  statements = visit_if_map(ctx__stmt)
@@ -1102,12 +1105,12 @@ module Expressir
1102
1105
  procedures: procedures,
1103
1106
  constants: constants,
1104
1107
  variables: variables,
1105
- statements: statements
1108
+ statements: statements,
1106
1109
  )
1107
1110
  end
1108
1111
 
1109
- def visit_function_head(ctx)
1110
- raise 'Invalid state'
1112
+ def visit_function_head(_ctx)
1113
+ raise "Invalid state"
1111
1114
  end
1112
1115
 
1113
1116
  def visit_function_id(ctx)
@@ -1153,7 +1156,7 @@ module Expressir
1153
1156
  bound2: bound2,
1154
1157
  optional: optional,
1155
1158
  unique: unique,
1156
- base_type: base_type
1159
+ base_type: base_type,
1157
1160
  )
1158
1161
  end
1159
1162
 
@@ -1170,7 +1173,7 @@ module Expressir
1170
1173
  Model::DataTypes::Bag.new(
1171
1174
  bound1: bound1,
1172
1175
  bound2: bound2,
1173
- base_type: base_type
1176
+ base_type: base_type,
1174
1177
  )
1175
1178
  end
1176
1179
 
@@ -1190,7 +1193,7 @@ module Expressir
1190
1193
  bound1: bound1,
1191
1194
  bound2: bound2,
1192
1195
  unique: unique,
1193
- base_type: base_type
1196
+ base_type: base_type,
1194
1197
  )
1195
1198
  end
1196
1199
 
@@ -1214,7 +1217,7 @@ module Expressir
1214
1217
  Model::DataTypes::Set.new(
1215
1218
  bound1: bound1,
1216
1219
  bound2: bound2,
1217
- base_type: base_type
1220
+ base_type: base_type,
1218
1221
  )
1219
1222
  end
1220
1223
 
@@ -1224,7 +1227,7 @@ module Expressir
1224
1227
  id = visit_if(ctx__type_label)
1225
1228
 
1226
1229
  Model::DataTypes::GenericEntity.new(
1227
- id: id
1230
+ id: id,
1228
1231
  )
1229
1232
  end
1230
1233
 
@@ -1234,7 +1237,7 @@ module Expressir
1234
1237
  id = visit_if(ctx__type_label)
1235
1238
 
1236
1239
  Model::DataTypes::Generic.new(
1237
- id: id
1240
+ id: id,
1238
1241
  )
1239
1242
  end
1240
1243
 
@@ -1244,12 +1247,12 @@ module Expressir
1244
1247
  entity = visit_if(ctx__entity_ref)
1245
1248
 
1246
1249
  Model::References::GroupReference.new(
1247
- entity: entity
1250
+ entity: entity,
1248
1251
  )
1249
1252
  end
1250
1253
 
1251
- def visit_group_reference(ctx)
1252
- raise 'Invalid state'
1254
+ def visit_group_reference(_ctx)
1255
+ raise "Invalid state"
1253
1256
  end
1254
1257
 
1255
1258
  def visit_if_stmt(ctx)
@@ -1264,7 +1267,7 @@ module Expressir
1264
1267
  Model::Statements::If.new(
1265
1268
  expression: expression,
1266
1269
  statements: statements,
1267
- else_statements: else_statements
1270
+ else_statements: else_statements,
1268
1271
  )
1269
1272
  end
1270
1273
 
@@ -1286,8 +1289,8 @@ module Expressir
1286
1289
  visit_if(ctx__numeric_expression)
1287
1290
  end
1288
1291
 
1289
- def visit_increment_control(ctx)
1290
- raise 'Invalid state'
1292
+ def visit_increment_control(_ctx)
1293
+ raise "Invalid state"
1291
1294
  end
1292
1295
 
1293
1296
  def visit_index(ctx)
@@ -1317,12 +1320,12 @@ module Expressir
1317
1320
 
1318
1321
  Model::References::IndexReference.new(
1319
1322
  index1: index1,
1320
- index2: index2
1323
+ index2: index2,
1321
1324
  )
1322
1325
  end
1323
1326
 
1324
- def visit_index_reference(ctx)
1325
- raise 'Invalid state'
1327
+ def visit_index_reference(_ctx)
1328
+ raise "Invalid state"
1326
1329
  end
1327
1330
 
1328
1331
  def visit_instantiable_type(ctx)
@@ -1332,7 +1335,7 @@ module Expressir
1332
1335
  visit_if(ctx__concrete_types || ctx__entity_ref)
1333
1336
  end
1334
1337
 
1335
- def visit_integer_type(ctx)
1338
+ def visit_integer_type(_ctx)
1336
1339
  Model::DataTypes::Integer.new
1337
1340
  end
1338
1341
 
@@ -1361,7 +1364,7 @@ module Expressir
1361
1364
  operator1: operator1,
1362
1365
  item: item,
1363
1366
  operator2: operator2,
1364
- high: high
1367
+ high: high,
1365
1368
  )
1366
1369
  end
1367
1370
 
@@ -1385,15 +1388,15 @@ module Expressir
1385
1388
 
1386
1389
  def visit_interval_op(ctx)
1387
1390
  ctx__text = ctx.values[0].text
1388
- ctx__LESS_THAN = ctx__text == '<'
1389
- ctx__LESS_THAN_OR_EQUAL = ctx__text == '<='
1391
+ ctx__LESS_THAN = ctx__text == "<"
1392
+ ctx__LESS_THAN_OR_EQUAL = ctx__text == "<="
1390
1393
 
1391
1394
  if ctx__LESS_THAN
1392
1395
  Model::Expressions::Interval::LESS_THAN
1393
1396
  elsif ctx__LESS_THAN_OR_EQUAL
1394
1397
  Model::Expressions::Interval::LESS_THAN_OR_EQUAL
1395
1398
  else
1396
- raise 'Invalid state'
1399
+ raise "Invalid state"
1397
1400
  end
1398
1401
  end
1399
1402
 
@@ -1406,23 +1409,23 @@ module Expressir
1406
1409
  attribute = visit_if(ctx__attribute_decl)
1407
1410
  type = visit_if(ctx__inverse_attr_type)
1408
1411
  expression = if ctx__entity_ref
1409
- ref = visit(ctx__entity_ref)
1410
- attribute_ref = visit(ctx__attribute_ref)
1412
+ ref = visit(ctx__entity_ref)
1413
+ attribute_ref = visit(ctx__attribute_ref)
1411
1414
 
1412
- Model::References::AttributeReference.new(
1413
- ref: ref,
1414
- attribute: attribute_ref
1415
- )
1416
- else
1417
- visit(ctx__attribute_ref)
1418
- end
1415
+ Model::References::AttributeReference.new(
1416
+ ref: ref,
1417
+ attribute: attribute_ref,
1418
+ )
1419
+ else
1420
+ visit(ctx__attribute_ref)
1421
+ end
1419
1422
 
1420
1423
  Model::Declarations::Attribute.new(
1421
1424
  id: attribute.id, # reuse
1422
1425
  kind: Model::Declarations::Attribute::INVERSE,
1423
1426
  supertype_attribute: attribute.supertype_attribute, # reuse
1424
1427
  type: type,
1425
- expression: expression
1428
+ expression: expression,
1426
1429
  )
1427
1430
  end
1428
1431
 
@@ -1442,7 +1445,7 @@ module Expressir
1442
1445
  Model::DataTypes::Set.new(
1443
1446
  bound1: bound1,
1444
1447
  bound2: bound2,
1445
- base_type: base_type
1448
+ base_type: base_type,
1446
1449
  )
1447
1450
  elsif ctx__BAG
1448
1451
  bound1 = visit_if(ctx__bound_spec__bound1)
@@ -1452,7 +1455,7 @@ module Expressir
1452
1455
  Model::DataTypes::Bag.new(
1453
1456
  bound1: bound1,
1454
1457
  bound2: bound2,
1455
- base_type: base_type
1458
+ base_type: base_type,
1456
1459
  )
1457
1460
  else
1458
1461
  visit_if(ctx__entity_ref)
@@ -1481,7 +1484,7 @@ module Expressir
1481
1484
  bound1: bound1,
1482
1485
  bound2: bound2,
1483
1486
  unique: unique,
1484
- base_type: base_type
1487
+ base_type: base_type,
1485
1488
  )
1486
1489
  end
1487
1490
 
@@ -1503,7 +1506,7 @@ module Expressir
1503
1506
  elsif ctx__string_literal
1504
1507
  visit(ctx__string_literal)
1505
1508
  else
1506
- raise 'Invalid state'
1509
+ raise "Invalid state"
1507
1510
  end
1508
1511
  end
1509
1512
 
@@ -1526,7 +1529,7 @@ module Expressir
1526
1529
  Model::Declarations::Variable.new(
1527
1530
  id: id,
1528
1531
  type: type,
1529
- expression: expression
1532
+ expression: expression,
1530
1533
  )
1531
1534
  end
1532
1535
  end
@@ -1543,32 +1546,32 @@ module Expressir
1543
1546
  ctx__UNKNOWN = ctx.tUNKNOWN
1544
1547
 
1545
1548
  value = if ctx__TRUE
1546
- Model::Literals::Logical::TRUE
1547
- elsif ctx__FALSE
1548
- Model::Literals::Logical::FALSE
1549
- elsif ctx__UNKNOWN
1550
- Model::Literals::Logical::UNKNOWN
1551
- else
1552
- raise 'Invalid state'
1553
- end
1549
+ Model::Literals::Logical::TRUE
1550
+ elsif ctx__FALSE
1551
+ Model::Literals::Logical::FALSE
1552
+ elsif ctx__UNKNOWN
1553
+ Model::Literals::Logical::UNKNOWN
1554
+ else
1555
+ raise "Invalid state"
1556
+ end
1554
1557
 
1555
1558
  Model::Literals::Logical.new(
1556
- value: value
1559
+ value: value,
1557
1560
  )
1558
1561
  end
1559
1562
 
1560
- def visit_logical_type(ctx)
1563
+ def visit_logical_type(_ctx)
1561
1564
  Model::DataTypes::Logical.new
1562
1565
  end
1563
1566
 
1564
1567
  def visit_multiplication_like_op(ctx)
1565
1568
  ctx__text = ctx.values[0].text
1566
- ctx__MULTIPLICATION = ctx__text == '*'
1567
- ctx__REAL_DIVISION = ctx__text == '/'
1569
+ ctx__MULTIPLICATION = ctx__text == "*"
1570
+ ctx__REAL_DIVISION = ctx__text == "/"
1568
1571
  ctx__INTEGER_DIVISION = ctx.tDIV
1569
1572
  ctx__MODULO = ctx.tMOD
1570
1573
  ctx__AND = ctx.tAND
1571
- ctx__COMBINE = ctx__text == '||'
1574
+ ctx__COMBINE = ctx__text == "||"
1572
1575
 
1573
1576
  if ctx__MULTIPLICATION
1574
1577
  Model::Expressions::BinaryExpression::MULTIPLICATION
@@ -1583,7 +1586,7 @@ module Expressir
1583
1586
  elsif ctx__COMBINE
1584
1587
  Model::Expressions::BinaryExpression::COMBINE
1585
1588
  else
1586
- raise 'Invalid state'
1589
+ raise "Invalid state"
1587
1590
  end
1588
1591
  end
1589
1592
 
@@ -1604,15 +1607,15 @@ module Expressir
1604
1607
 
1605
1608
  Model::Declarations::InterfaceItem.new(
1606
1609
  ref: ref,
1607
- id: id
1610
+ id: id,
1608
1611
  )
1609
1612
  end
1610
1613
 
1611
- def visit_null_stmt(ctx)
1614
+ def visit_null_stmt(_ctx)
1612
1615
  Model::Statements::Null.new
1613
1616
  end
1614
1617
 
1615
- def visit_number_type(ctx)
1618
+ def visit_number_type(_ctx)
1616
1619
  Model::DataTypes::Number.new
1617
1620
  end
1618
1621
 
@@ -1628,7 +1631,7 @@ module Expressir
1628
1631
  operands = visit_if_map(ctx__supertype_expression)
1629
1632
 
1630
1633
  Model::SupertypeExpressions::OneofSupertypeExpression.new(
1631
- operands: operands
1634
+ operands: operands,
1632
1635
  )
1633
1636
  end
1634
1637
 
@@ -1674,7 +1677,7 @@ module Expressir
1674
1677
  elsif ctx__qualifiable_factor
1675
1678
  handle_qualified_ref(visit(ctx__qualifiable_factor), ctx__qualifier)
1676
1679
  else
1677
- raise 'Invalid state'
1680
+ raise "Invalid state"
1678
1681
  end
1679
1682
  end
1680
1683
 
@@ -1688,7 +1691,7 @@ module Expressir
1688
1691
 
1689
1692
  Model::Statements::ProcedureCall.new(
1690
1693
  procedure: procedure,
1691
- parameters: parameters
1694
+ parameters: parameters,
1692
1695
  )
1693
1696
  end
1694
1697
 
@@ -1705,11 +1708,11 @@ module Expressir
1705
1708
  id = visit_if(ctx__procedure_head__procedure_id)
1706
1709
  parameters = visit_if_map_flatten(ctx__procedure_head__procedure_head_parameter)
1707
1710
  declarations = visit_if_map(ctx__algorithm_head__declaration)
1708
- types = declarations.select{|x| x.is_a? Model::Declarations::Type}
1709
- entities = declarations.select{|x| x.is_a? Model::Declarations::Entity}
1710
- subtype_constraints = declarations.select{|x| x.is_a? Model::Declarations::SubtypeConstraint}
1711
- functions = declarations.select{|x| x.is_a? Model::Declarations::Function}
1712
- procedures = declarations.select{|x| x.is_a? Model::Declarations::Procedure}
1711
+ types = declarations.select { |x| x.is_a? Model::Declarations::Type }
1712
+ entities = declarations.select { |x| x.is_a? Model::Declarations::Entity }
1713
+ subtype_constraints = declarations.select { |x| x.is_a? Model::Declarations::SubtypeConstraint }
1714
+ functions = declarations.select { |x| x.is_a? Model::Declarations::Function }
1715
+ procedures = declarations.select { |x| x.is_a? Model::Declarations::Procedure }
1713
1716
  constants = visit_if(ctx__algorithm_head__constant_decl, [])
1714
1717
  variables = visit_if(ctx__algorithm_head__local_decl, [])
1715
1718
  statements = visit_if_map(ctx__stmt)
@@ -1724,17 +1727,17 @@ module Expressir
1724
1727
  procedures: procedures,
1725
1728
  constants: constants,
1726
1729
  variables: variables,
1727
- statements: statements
1730
+ statements: statements,
1728
1731
  )
1729
1732
  end
1730
1733
 
1731
- def visit_procedure_head(ctx)
1732
- raise 'Invalid state'
1734
+ def visit_procedure_head(_ctx)
1735
+ raise "Invalid state"
1733
1736
  end
1734
1737
 
1735
1738
  def visit_procedure_head_parameter(ctx)
1736
1739
  ctx__formal_parameter = ctx.formal_parameter
1737
- ctx__VAR = ctx.tVAR
1740
+ ctx.tVAR
1738
1741
 
1739
1742
  parameters = visit(ctx__formal_parameter)
1740
1743
 
@@ -1743,7 +1746,7 @@ module Expressir
1743
1746
  Model::Declarations::Parameter.new(
1744
1747
  id: parameter.id,
1745
1748
  var: true,
1746
- type: parameter.type
1749
+ type: parameter.type,
1747
1750
  )
1748
1751
  end
1749
1752
  else
@@ -1771,18 +1774,18 @@ module Expressir
1771
1774
  ctx__group_qualifier = ctx.group_qualifier
1772
1775
  ctx__attribute_qualifier = ctx.attribute_qualifier
1773
1776
 
1774
- id = 'SELF'
1777
+ id = "SELF"
1775
1778
  group_reference = visit_if(ctx__group_qualifier)
1776
1779
  attribute_reference = visit_if(ctx__attribute_qualifier)
1777
1780
 
1778
1781
  Model::References::AttributeReference.new(
1779
1782
  ref: Model::References::GroupReference.new(
1780
1783
  ref: Model::References::SimpleReference.new(
1781
- id: id
1784
+ id: id,
1782
1785
  ),
1783
- entity: group_reference.entity # reuse
1786
+ entity: group_reference.entity, # reuse
1784
1787
  ),
1785
- attribute: attribute_reference.attribute # reuse
1788
+ attribute: attribute_reference.attribute, # reuse
1786
1789
  )
1787
1790
  end
1788
1791
 
@@ -1806,7 +1809,7 @@ module Expressir
1806
1809
  Model::Expressions::QueryExpression.new(
1807
1810
  id: id,
1808
1811
  aggregate_source: aggregate_source,
1809
- expression: expression
1812
+ expression: expression,
1810
1813
  )
1811
1814
  end
1812
1815
 
@@ -1816,12 +1819,12 @@ module Expressir
1816
1819
  precision = visit_if(ctx__precision_spec)
1817
1820
 
1818
1821
  Model::DataTypes::Real.new(
1819
- precision: precision
1822
+ precision: precision,
1820
1823
  )
1821
1824
  end
1822
1825
 
1823
- def visit_redeclared_attribute(ctx)
1824
- raise 'Invalid state'
1826
+ def visit_redeclared_attribute(_ctx)
1827
+ raise "Invalid state"
1825
1828
  end
1826
1829
 
1827
1830
  def visit_referenced_attribute(ctx)
@@ -1841,20 +1844,20 @@ module Expressir
1841
1844
  Model::Declarations::Interface.new(
1842
1845
  kind: Model::Declarations::Interface::REFERENCE,
1843
1846
  schema: schema,
1844
- items: items
1847
+ items: items,
1845
1848
  )
1846
1849
  end
1847
1850
 
1848
1851
  def visit_rel_op(ctx)
1849
1852
  ctx__text = ctx.values[0].text
1850
- ctx__LESS_THAN = ctx__text == '<'
1851
- ctx__GREATER_THAN = ctx__text == '>'
1852
- ctx__LESS_THAN_OR_EQUAL = ctx__text == '<='
1853
- ctx__GREATER_THAN_OR_EQUAL = ctx__text == '>='
1854
- ctx__NOT_EQUAL = ctx__text == '<>'
1855
- ctx__EQUAL = ctx__text == '='
1856
- ctx__INSTANCE_NOT_EQUAL = ctx__text == ':<>:'
1857
- ctx__INSTANCE_EQUAL = ctx__text == ':=:'
1853
+ ctx__LESS_THAN = ctx__text == "<"
1854
+ ctx__GREATER_THAN = ctx__text == ">"
1855
+ ctx__LESS_THAN_OR_EQUAL = ctx__text == "<="
1856
+ ctx__GREATER_THAN_OR_EQUAL = ctx__text == ">="
1857
+ ctx__NOT_EQUAL = ctx__text == "<>"
1858
+ ctx__EQUAL = ctx__text == "="
1859
+ ctx__INSTANCE_NOT_EQUAL = ctx__text == ":<>:"
1860
+ ctx__INSTANCE_EQUAL = ctx__text == ":=:"
1858
1861
 
1859
1862
  if ctx__LESS_THAN
1860
1863
  Model::Expressions::BinaryExpression::LESS_THAN
@@ -1873,7 +1876,7 @@ module Expressir
1873
1876
  elsif ctx__INSTANCE_EQUAL
1874
1877
  Model::Expressions::BinaryExpression::INSTANCE_EQUAL
1875
1878
  else
1876
- raise 'Invalid state'
1879
+ raise "Invalid state"
1877
1880
  end
1878
1881
  end
1879
1882
 
@@ -1889,7 +1892,7 @@ module Expressir
1889
1892
  elsif ctx__LIKE
1890
1893
  Model::Expressions::BinaryExpression::LIKE
1891
1894
  else
1892
- raise 'Invalid state'
1895
+ raise "Invalid state"
1893
1896
  end
1894
1897
  end
1895
1898
 
@@ -1904,7 +1907,7 @@ module Expressir
1904
1907
  end
1905
1908
 
1906
1909
  def visit_repeat_control(ctx)
1907
- (SimpleCtx === ctx) ? to_ctx({},:repeatControl) : ctx
1910
+ SimpleCtx === ctx ? to_ctx({}, :repeatControl) : ctx
1908
1911
  end
1909
1912
 
1910
1913
  def visit_repeat_stmt(ctx)
@@ -1933,7 +1936,7 @@ module Expressir
1933
1936
  increment: increment,
1934
1937
  while_expression: while_expression,
1935
1938
  until_expression: until_expression,
1936
- statements: statements
1939
+ statements: statements,
1937
1940
  )
1938
1941
  end
1939
1942
 
@@ -1952,7 +1955,7 @@ module Expressir
1952
1955
 
1953
1956
  Model::Declarations::InterfaceItem.new(
1954
1957
  ref: ref,
1955
- id: id
1958
+ id: id,
1956
1959
  )
1957
1960
  end
1958
1961
 
@@ -1972,7 +1975,7 @@ module Expressir
1972
1975
  expression = visit_if(ctx__expression)
1973
1976
 
1974
1977
  Model::Statements::Return.new(
1975
- expression: expression
1978
+ expression: expression,
1976
1979
  )
1977
1980
  end
1978
1981
 
@@ -1990,11 +1993,11 @@ module Expressir
1990
1993
  id = visit_if(ctx__rule_head__rule_id)
1991
1994
  applies_to = visit_if_map(ctx__rule_head__entity_ref)
1992
1995
  declarations = visit_if_map(ctx__algorithm_head__declaration)
1993
- types = declarations.select{|x| x.is_a? Model::Declarations::Type}
1994
- entities = declarations.select{|x| x.is_a? Model::Declarations::Entity}
1995
- subtype_constraints = declarations.select{|x| x.is_a? Model::Declarations::SubtypeConstraint}
1996
- functions = declarations.select{|x| x.is_a? Model::Declarations::Function}
1997
- procedures = declarations.select{|x| x.is_a? Model::Declarations::Procedure}
1996
+ types = declarations.select { |x| x.is_a? Model::Declarations::Type }
1997
+ entities = declarations.select { |x| x.is_a? Model::Declarations::Entity }
1998
+ subtype_constraints = declarations.select { |x| x.is_a? Model::Declarations::SubtypeConstraint }
1999
+ functions = declarations.select { |x| x.is_a? Model::Declarations::Function }
2000
+ procedures = declarations.select { |x| x.is_a? Model::Declarations::Procedure }
1998
2001
  constants = visit_if(ctx__algorithm_head__constant_decl, [])
1999
2002
  variables = visit_if(ctx__algorithm_head__local_decl, [])
2000
2003
  statements = visit_if_map(ctx__stmt)
@@ -2011,12 +2014,12 @@ module Expressir
2011
2014
  constants: constants,
2012
2015
  variables: variables,
2013
2016
  statements: statements,
2014
- where_rules: where_rules
2017
+ where_rules: where_rules,
2015
2018
  )
2016
2019
  end
2017
2020
 
2018
- def visit_rule_head(ctx)
2019
- raise 'Invalid state'
2021
+ def visit_rule_head(_ctx)
2022
+ raise "Invalid state"
2020
2023
  end
2021
2024
 
2022
2025
  def visit_rule_id(ctx)
@@ -2031,8 +2034,8 @@ module Expressir
2031
2034
  handle_simple_id(ctx__SimpleId)
2032
2035
  end
2033
2036
 
2034
- def visit_schema_body(ctx)
2035
- raise 'Invalid state'
2037
+ def visit_schema_body(_ctx)
2038
+ raise "Invalid state"
2036
2039
  end
2037
2040
 
2038
2041
  def visit_schema_body_declaration(ctx)
@@ -2055,12 +2058,12 @@ module Expressir
2055
2058
  interfaces = visit_if_map(ctx__schema_body__interface_specification)
2056
2059
  constants = visit_if(ctx__schema_body__constant_decl, [])
2057
2060
  declarations = visit_if_map(ctx__schema_body__schema_body_declaration)
2058
- types = declarations.select{|x| x.is_a? Model::Declarations::Type}
2059
- entities = declarations.select{|x| x.is_a? Model::Declarations::Entity}
2060
- subtype_constraints = declarations.select{|x| x.is_a? Model::Declarations::SubtypeConstraint}
2061
- functions = declarations.select{|x| x.is_a? Model::Declarations::Function}
2062
- rules = declarations.select{|x| x.is_a? Model::Declarations::Rule}
2063
- procedures = declarations.select{|x| x.is_a? Model::Declarations::Procedure}
2061
+ types = declarations.select { |x| x.is_a? Model::Declarations::Type }
2062
+ entities = declarations.select { |x| x.is_a? Model::Declarations::Entity }
2063
+ subtype_constraints = declarations.select { |x| x.is_a? Model::Declarations::SubtypeConstraint }
2064
+ functions = declarations.select { |x| x.is_a? Model::Declarations::Function }
2065
+ rules = declarations.select { |x| x.is_a? Model::Declarations::Rule }
2066
+ procedures = declarations.select { |x| x.is_a? Model::Declarations::Procedure }
2064
2067
 
2065
2068
  Model::Declarations::Schema.new(
2066
2069
  id: id,
@@ -2072,7 +2075,7 @@ module Expressir
2072
2075
  subtype_constraints: subtype_constraints,
2073
2076
  functions: functions,
2074
2077
  rules: rules,
2075
- procedures: procedures
2078
+ procedures: procedures,
2076
2079
  )
2077
2080
  end
2078
2081
 
@@ -2088,34 +2091,34 @@ module Expressir
2088
2091
  value = visit_if(ctx__string_literal)
2089
2092
  value = value.value
2090
2093
 
2091
- items = if value.start_with?('{') and value.end_with?('}')
2092
- parts = value.sub(/^\{/, '').sub(/\}$/, '').split(' ')
2093
- parts.map do |part|
2094
- if match = part.match(/^(.+)\((\d+)\)$/)
2095
- Model::Declarations::SchemaVersionItem.new(
2096
- name: match[1],
2097
- value: match[2]
2098
- )
2099
- elsif part.match(/^\d+$/)
2100
- Model::Declarations::SchemaVersionItem.new(
2101
- value: part
2102
- )
2103
- else
2104
- Model::Declarations::SchemaVersionItem.new(
2105
- name: part
2106
- )
2107
- end
2108
- end
2109
- end
2094
+ items = if value.start_with?("{") && value.end_with?("}")
2095
+ parts = value.sub(/^\{/, "").sub(/\}$/, "").split(" ")
2096
+ parts.map do |part|
2097
+ if match = part.match(/^(.+)\((\d+)\)$/)
2098
+ Model::Declarations::SchemaVersionItem.new(
2099
+ name: match[1],
2100
+ value: match[2],
2101
+ )
2102
+ elsif /^\d+$/.match?(part)
2103
+ Model::Declarations::SchemaVersionItem.new(
2104
+ value: part,
2105
+ )
2106
+ else
2107
+ Model::Declarations::SchemaVersionItem.new(
2108
+ name: part,
2109
+ )
2110
+ end
2111
+ end
2112
+ end
2110
2113
 
2111
2114
  Model::Declarations::SchemaVersion.new(
2112
2115
  value: value,
2113
- items: items
2116
+ items: items,
2114
2117
  )
2115
2118
  end
2116
2119
 
2117
- def visit_selector(ctx)
2118
- raise 'Invalid state'
2120
+ def visit_selector(_ctx)
2121
+ raise "Invalid state"
2119
2122
  end
2120
2123
 
2121
2124
  def visit_select_extension(ctx)
@@ -2147,7 +2150,7 @@ module Expressir
2147
2150
  extensible: extensible,
2148
2151
  generic_entity: generic_entity,
2149
2152
  based_on: based_on,
2150
- items: items
2153
+ items: items,
2151
2154
  )
2152
2155
  end
2153
2156
 
@@ -2164,28 +2167,28 @@ module Expressir
2164
2167
  Model::DataTypes::Set.new(
2165
2168
  bound1: bound1,
2166
2169
  bound2: bound2,
2167
- base_type: base_type
2170
+ base_type: base_type,
2168
2171
  )
2169
2172
  end
2170
2173
 
2171
2174
  def visit_simple_expression(ctx)
2172
- ctx__term = [ctx.term] + ctx.rhs.map { |item| item.term }
2175
+ ctx__term = [ctx.term] + ctx.rhs.map(&:term)
2173
2176
  ctx__add_like_op = ctx.rhs.map { |item| item.operator.values[0] }
2174
2177
 
2175
2178
  if ctx__term
2176
2179
  if ctx__term.length >= 2
2177
- if ctx__add_like_op and ctx__add_like_op.length == ctx__term.length - 1
2178
- operands = ctx__term.map(&self.method(:visit))
2179
- operators = ctx__add_like_op.map(&self.method(:visit))
2180
+ if ctx__add_like_op && (ctx__add_like_op.length == ctx__term.length - 1)
2181
+ operands = ctx__term.map(&method(:visit))
2182
+ operators = ctx__add_like_op.map(&method(:visit))
2180
2183
 
2181
2184
  handle_binary_expression(operands, operators)
2182
2185
  else
2183
- raise 'Invalid state'
2186
+ raise "Invalid state"
2184
2187
  end
2185
2188
  elsif ctx__term.length == 1
2186
2189
  visit(ctx__term[0])
2187
2190
  else
2188
- raise 'Invalid state'
2191
+ raise "Invalid state"
2189
2192
  end
2190
2193
  end
2191
2194
  end
@@ -2199,7 +2202,10 @@ module Expressir
2199
2202
  ctx__simple_factor_expression = ctx.simple_factor_expression
2200
2203
  ctx__simple_factor_unary_expression = ctx.simple_factor_unary_expression
2201
2204
 
2202
- visit_if(ctx__aggregate_initializer || ctx__entity_constructor || ctx__enumeration_reference || ctx__interval || ctx__query_expression || ctx__simple_factor_expression || ctx__simple_factor_unary_expression)
2205
+ visit_if(ctx__aggregate_initializer || ctx__entity_constructor ||
2206
+ ctx__enumeration_reference || ctx__interval ||
2207
+ ctx__query_expression || ctx__simple_factor_expression ||
2208
+ ctx__simple_factor_unary_expression)
2203
2209
  end
2204
2210
 
2205
2211
  def visit_simple_factor_expression(ctx)
@@ -2218,7 +2224,7 @@ module Expressir
2218
2224
 
2219
2225
  Model::Expressions::UnaryExpression.new(
2220
2226
  operator: operator,
2221
- operand: operand
2227
+ operand: operand,
2222
2228
  )
2223
2229
  end
2224
2230
 
@@ -2231,10 +2237,12 @@ module Expressir
2231
2237
  ctx__real_type = ctx.real_type
2232
2238
  ctx__string_type = ctx.string_type
2233
2239
 
2234
- visit_if(ctx__binary_type || ctx__boolean_type || ctx__integer_type || ctx__logical_type || ctx__number_type || ctx__real_type || ctx__string_type)
2240
+ visit_if(ctx__binary_type || ctx__boolean_type || ctx__integer_type ||
2241
+ ctx__logical_type || ctx__number_type || ctx__real_type ||
2242
+ ctx__string_type)
2235
2243
  end
2236
2244
 
2237
- def visit_skip_stmt(ctx)
2245
+ def visit_skip_stmt(_ctx)
2238
2246
  Model::Statements::Skip.new
2239
2247
  end
2240
2248
 
@@ -2251,7 +2259,10 @@ module Expressir
2251
2259
  ctx__return_stmt = ctx.return_stmt
2252
2260
  ctx__skip_stmt = ctx.skip_stmt
2253
2261
 
2254
- visit_if(ctx__alias_stmt || ctx__assignment_stmt || ctx__case_stmt || ctx__compound_stmt || ctx__escape_stmt || ctx__if_stmt || ctx__null_stmt || ctx__procedure_call_stmt || ctx__repeat_stmt || ctx__return_stmt || ctx__skip_stmt)
2262
+ visit_if(ctx__alias_stmt || ctx__assignment_stmt || ctx__case_stmt ||
2263
+ ctx__compound_stmt || ctx__escape_stmt || ctx__if_stmt ||
2264
+ ctx__null_stmt || ctx__procedure_call_stmt ||
2265
+ ctx__repeat_stmt || ctx__return_stmt || ctx__skip_stmt)
2255
2266
  end
2256
2267
 
2257
2268
  def visit_string_literal(ctx)
@@ -2263,7 +2274,7 @@ module Expressir
2263
2274
  elsif ctx__EncodedStringLiteral
2264
2275
  handle_encoded_string_literal(ctx__EncodedStringLiteral)
2265
2276
  else
2266
- raise 'Invalid state'
2277
+ raise "Invalid state"
2267
2278
  end
2268
2279
  end
2269
2280
 
@@ -2277,12 +2288,12 @@ module Expressir
2277
2288
 
2278
2289
  Model::DataTypes::String.new(
2279
2290
  width: width,
2280
- fixed: fixed
2291
+ fixed: fixed,
2281
2292
  )
2282
2293
  end
2283
2294
 
2284
2295
  def visit_subsuper(ctx)
2285
- (SimpleCtx === ctx) ? to_ctx({},:subsuper) : ctx
2296
+ SimpleCtx === ctx ? to_ctx({}, :subsuper) : ctx
2286
2297
  end
2287
2298
 
2288
2299
  def visit_subtype_constraint(ctx)
@@ -2292,7 +2303,7 @@ module Expressir
2292
2303
  end
2293
2304
 
2294
2305
  def visit_subtype_constraint_body(ctx)
2295
- (SimpleCtx === ctx) ? to_ctx({},:subtypeConstraintBody) : ctx
2306
+ SimpleCtx === ctx ? to_ctx({}, :subtypeConstraintBody) : ctx
2296
2307
  end
2297
2308
 
2298
2309
  def visit_subtype_constraint_decl(ctx)
@@ -2315,12 +2326,12 @@ module Expressir
2315
2326
  applies_to: applies_to,
2316
2327
  abstract: abstract,
2317
2328
  total_over: total_over,
2318
- supertype_expression: supertype_expression
2329
+ supertype_expression: supertype_expression,
2319
2330
  )
2320
2331
  end
2321
2332
 
2322
- def visit_subtype_constraint_head(ctx)
2323
- raise 'Invalid state'
2333
+ def visit_subtype_constraint_head(_ctx)
2334
+ raise "Invalid state"
2324
2335
  end
2325
2336
 
2326
2337
  def visit_subtype_constraint_id(ctx)
@@ -2335,50 +2346,50 @@ module Expressir
2335
2346
  visit_if_map(ctx__entity_ref)
2336
2347
  end
2337
2348
 
2338
- def visit_supertype_constraint(ctx)
2339
- raise 'Invalid state'
2349
+ def visit_supertype_constraint(_ctx)
2350
+ raise "Invalid state"
2340
2351
  end
2341
2352
 
2342
2353
  def visit_supertype_expression(ctx)
2343
- ctx__supertype_factor = [ctx.supertype_factor]+ctx.rhs.map { |item| item.supertype_factor }
2354
+ ctx__supertype_factor = [ctx.supertype_factor] + ctx.rhs.map(&:supertype_factor)
2344
2355
  ctx__ANDOR = ctx.rhs.map { |item| item.operator.values[0] }
2345
2356
 
2346
2357
  if ctx__supertype_factor
2347
2358
  if ctx__supertype_factor.length >= 2
2348
- if ctx__ANDOR and ctx__ANDOR.length == ctx__supertype_factor.length - 1
2349
- operands = ctx__supertype_factor.map(&self.method(:visit))
2350
- operators = ctx__ANDOR.map{Model::SupertypeExpressions::BinarySupertypeExpression::ANDOR}
2359
+ if ctx__ANDOR && (ctx__ANDOR.length == ctx__supertype_factor.length - 1)
2360
+ operands = ctx__supertype_factor.map(&method(:visit))
2361
+ operators = ctx__ANDOR.map { Model::SupertypeExpressions::BinarySupertypeExpression::ANDOR }
2351
2362
 
2352
2363
  handle_binary_supertype_expression(operands, operators)
2353
2364
  else
2354
- raise 'Invalid state'
2365
+ raise "Invalid state"
2355
2366
  end
2356
2367
  elsif ctx__supertype_factor.length == 1
2357
2368
  visit(ctx__supertype_factor[0])
2358
2369
  else
2359
- raise 'Invalid state'
2370
+ raise "Invalid state"
2360
2371
  end
2361
2372
  end
2362
2373
  end
2363
2374
 
2364
2375
  def visit_supertype_factor(ctx)
2365
- ctx__supertype_term = [ctx.supertype_term] + ctx.rhs.map { |item| item.supertype_term }
2376
+ ctx__supertype_term = [ctx.supertype_term] + ctx.rhs.map(&:supertype_term)
2366
2377
  ctx__AND = ctx.rhs.map { |item| item.operator.values[0] }
2367
2378
 
2368
2379
  if ctx__supertype_term
2369
2380
  if ctx__supertype_term.length >= 2
2370
- if ctx__AND and ctx__AND.length == ctx__supertype_term.length - 1
2371
- operands = ctx__supertype_term.map(&self.method(:visit))
2372
- operators = ctx__AND.map{Model::SupertypeExpressions::BinarySupertypeExpression::AND}
2381
+ if ctx__AND && (ctx__AND.length == ctx__supertype_term.length - 1)
2382
+ operands = ctx__supertype_term.map(&method(:visit))
2383
+ operators = ctx__AND.map { Model::SupertypeExpressions::BinarySupertypeExpression::AND }
2373
2384
 
2374
2385
  handle_binary_supertype_expression(operands, operators)
2375
2386
  else
2376
- raise 'Invalid state'
2387
+ raise "Invalid state"
2377
2388
  end
2378
2389
  elsif ctx__supertype_term.length == 1
2379
2390
  visit(ctx__supertype_term[0])
2380
2391
  else
2381
- raise 'Invalid state'
2392
+ raise "Invalid state"
2382
2393
  end
2383
2394
  end
2384
2395
  end
@@ -2403,28 +2414,28 @@ module Expressir
2403
2414
  schemas = visit_if_map(ctx__schema_decl)
2404
2415
 
2405
2416
  Model::Repository.new(
2406
- schemas: schemas
2417
+ schemas: schemas,
2407
2418
  )
2408
2419
  end
2409
2420
 
2410
2421
  def visit_term(ctx)
2411
- ctx__factor = [ctx.factor] + ctx.rhs.map { |item| item.factor }
2412
- ctx__multiplication_like_op = ctx.rhs.map { |item| item.multiplication_like_op }
2422
+ ctx__factor = [ctx.factor] + ctx.rhs.map(&:factor)
2423
+ ctx__multiplication_like_op = ctx.rhs.map(&:multiplication_like_op)
2413
2424
 
2414
2425
  if ctx__factor
2415
2426
  if ctx__factor.length >= 2
2416
- if ctx__multiplication_like_op and ctx__multiplication_like_op.length == ctx__factor.length - 1
2417
- operands = ctx__factor.map(&self.method(:visit))
2418
- operators = ctx__multiplication_like_op.map(&self.method(:visit))
2427
+ if ctx__multiplication_like_op && (ctx__multiplication_like_op.length == ctx__factor.length - 1)
2428
+ operands = ctx__factor.map(&method(:visit))
2429
+ operators = ctx__multiplication_like_op.map(&method(:visit))
2419
2430
 
2420
2431
  handle_binary_expression(operands, operators)
2421
2432
  else
2422
- raise 'Invalid state'
2433
+ raise "Invalid state"
2423
2434
  end
2424
2435
  elsif ctx__factor.length == 1
2425
2436
  visit(ctx__factor[0])
2426
2437
  else
2427
- raise 'Invalid state'
2438
+ raise "Invalid state"
2428
2439
  end
2429
2440
  end
2430
2441
  end
@@ -2447,7 +2458,7 @@ module Expressir
2447
2458
  Model::Declarations::Type.new(
2448
2459
  id: id,
2449
2460
  underlying_type: underlying_type,
2450
- where_rules: where_rules
2461
+ where_rules: where_rules,
2451
2462
  )
2452
2463
  end
2453
2464
 
@@ -2472,8 +2483,8 @@ module Expressir
2472
2483
 
2473
2484
  def visit_unary_op(ctx)
2474
2485
  ctx__text = ctx.values[0].text
2475
- ctx__PLUS = ctx__text == '+'
2476
- ctx__MINUS = ctx__text == '-'
2486
+ ctx__PLUS = ctx__text == "+"
2487
+ ctx__MINUS = ctx__text == "-"
2477
2488
  ctx__NOT = ctx.tNOT
2478
2489
 
2479
2490
  if ctx__PLUS
@@ -2483,7 +2494,7 @@ module Expressir
2483
2494
  elsif ctx__NOT
2484
2495
  Model::Expressions::UnaryExpression::NOT
2485
2496
  else
2486
- raise 'Invalid state'
2497
+ raise "Invalid state"
2487
2498
  end
2488
2499
  end
2489
2500
 
@@ -2509,7 +2520,7 @@ module Expressir
2509
2520
 
2510
2521
  Model::Declarations::UniqueRule.new(
2511
2522
  id: id,
2512
- attributes: attributes
2523
+ attributes: attributes,
2513
2524
  )
2514
2525
  end
2515
2526
 
@@ -2529,7 +2540,7 @@ module Expressir
2529
2540
  Model::Declarations::Interface.new(
2530
2541
  kind: Model::Declarations::Interface::USE,
2531
2542
  schema: schema,
2532
- items: items
2543
+ items: items,
2533
2544
  )
2534
2545
  end
2535
2546
 
@@ -2557,25 +2568,25 @@ module Expressir
2557
2568
  visit_if(ctx__numeric_expression)
2558
2569
  end
2559
2570
 
2560
- def visit_width_spec(ctx)
2561
- raise 'Invalid state'
2571
+ def visit_width_spec(_ctx)
2572
+ raise "Invalid state"
2562
2573
  end
2563
2574
 
2564
2575
  def handle_binary_expression(operands, operators)
2565
2576
  if operands.length != operators.length + 1
2566
- raise 'Invalid state'
2577
+ raise "Invalid state"
2567
2578
  end
2568
2579
 
2569
2580
  expression = Model::Expressions::BinaryExpression.new(
2570
2581
  operator: operators[0],
2571
2582
  operand1: operands[0],
2572
- operand2: operands[1]
2583
+ operand2: operands[1],
2573
2584
  )
2574
2585
  operators[1..(operators.length - 1)].each_with_index do |operator, i|
2575
2586
  expression = Model::Expressions::BinaryExpression.new(
2576
2587
  operator: operator,
2577
2588
  operand1: expression,
2578
- operand2: operands[i + 2]
2589
+ operand2: operands[i + 2],
2579
2590
  )
2580
2591
  end
2581
2592
  expression
@@ -2583,19 +2594,19 @@ module Expressir
2583
2594
 
2584
2595
  def handle_binary_supertype_expression(operands, operators)
2585
2596
  if operands.length != operators.length + 1
2586
- raise 'Invalid state'
2597
+ raise "Invalid state"
2587
2598
  end
2588
2599
 
2589
2600
  expression = Model::SupertypeExpressions::BinarySupertypeExpression.new(
2590
2601
  operator: operators[0],
2591
2602
  operand1: operands[0],
2592
- operand2: operands[1]
2603
+ operand2: operands[1],
2593
2604
  )
2594
2605
  operators[1..(operators.length - 1)].each_with_index do |operator, i|
2595
2606
  expression = Model::SupertypeExpressions::BinarySupertypeExpression.new(
2596
2607
  operator: operator,
2597
2608
  operand1: expression,
2598
- operand2: operands[i + 2]
2609
+ operand2: operands[i + 2],
2599
2610
  )
2600
2611
  end
2601
2612
  expression
@@ -2612,14 +2623,14 @@ module Expressir
2612
2623
 
2613
2624
  Model::References::AttributeReference.new(
2614
2625
  ref: ref,
2615
- attribute: attribute_reference.attribute
2626
+ attribute: attribute_reference.attribute,
2616
2627
  )
2617
2628
  elsif ctx__group_qualifier
2618
2629
  group_reference = visit_if(ctx__group_qualifier)
2619
2630
 
2620
2631
  Model::References::GroupReference.new(
2621
2632
  ref: ref,
2622
- entity: group_reference.entity
2633
+ entity: group_reference.entity,
2623
2634
  )
2624
2635
  elsif ctx__index_qualifier
2625
2636
  index_reference = visit_if(ctx__index_qualifier)
@@ -2627,10 +2638,10 @@ module Expressir
2627
2638
  Model::References::IndexReference.new(
2628
2639
  ref: ref,
2629
2640
  index1: index_reference.index1,
2630
- index2: index_reference.index2
2641
+ index2: index_reference.index2,
2631
2642
  )
2632
2643
  else
2633
- raise 'Invalid state'
2644
+ raise "Invalid state"
2634
2645
  end
2635
2646
  end
2636
2647
  end
@@ -2641,7 +2652,7 @@ module Expressir
2641
2652
  value = ctx__text[1..(ctx__text.length - 1)]
2642
2653
 
2643
2654
  Model::Literals::Binary.new(
2644
- value: value
2655
+ value: value,
2645
2656
  )
2646
2657
  end
2647
2658
 
@@ -2651,7 +2662,7 @@ module Expressir
2651
2662
  value = ctx__text
2652
2663
 
2653
2664
  Model::Literals::Integer.new(
2654
- value: value
2665
+ value: value,
2655
2666
  )
2656
2667
  end
2657
2668
 
@@ -2661,34 +2672,32 @@ module Expressir
2661
2672
  value = ctx__text
2662
2673
 
2663
2674
  Model::Literals::Real.new(
2664
- value: value
2675
+ value: value,
2665
2676
  )
2666
2677
  end
2667
2678
 
2668
2679
  def handle_simple_id(ctx)
2669
- ctx__text = ctx.text
2670
-
2671
- ctx__text
2680
+ ctx.text
2672
2681
  end
2673
2682
 
2674
2683
  def handle_simple_string_literal(ctx)
2675
2684
  ctx__text = ctx.text
2676
2685
 
2677
- value = ctx__text[1..(ctx__text.length - 2)].force_encoding('UTF-8')
2686
+ value = ctx__text[1..(ctx__text.length - 2)].force_encoding("UTF-8")
2678
2687
 
2679
2688
  Model::Literals::String.new(
2680
- value: value
2689
+ value: value,
2681
2690
  )
2682
2691
  end
2683
2692
 
2684
2693
  def handle_encoded_string_literal(ctx)
2685
2694
  ctx__text = ctx.text
2686
2695
 
2687
- value = ctx__text[1..(ctx__text.length - 2)].force_encoding('UTF-8')
2696
+ value = ctx__text[1..(ctx__text.length - 2)].force_encoding("UTF-8")
2688
2697
 
2689
2698
  Model::Literals::String.new(
2690
2699
  value: value,
2691
- encoded: true
2700
+ encoded: true,
2692
2701
  )
2693
2702
  end
2694
2703
  end