modl 0.3.5 → 0.3.6
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/grammar_tests/base_tests.json +4 -4
- data/lib/modl/parser/MODLParser.rb +202 -202
- data/lib/modl/parser/class_processor.rb +69 -13
- data/lib/modl/parser/interpreter.rb +4 -10
- data/lib/modl/parser/modl_class.rb +1 -1
- data/lib/modl/parser/parsed.rb +1 -3
- data/lib/modl/parser/parser.rb +16 -10
- data/lib/modl/parser/version.rb +1 -1
- data/modl.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0caf497c5981059ad90756e23646d96305d942e8156c65c38c4bb5afc9c062dd
|
4
|
+
data.tar.gz: 10025546c2ff729584277b5bfbe6c0da573dbd3619878224349095ac5397c69f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 25913fd65a62f4d5ad0cadc7368a9443e79b542568deabb8286e4ae9617e57e944a819c4803d0fd45c1bbdce89a62d4ac2dace2e9620ce39c8d89824116951d4
|
7
|
+
data.tar.gz: 7b9a44c8e7babe192a884a8df6b5c07c9cec48cb73194c3c86bead81082916e3ab11d73324a9152b15c0e39bc57b23008ed82247fa25175c11c69456fa71c099
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
0.3.6
|
2
|
+
===
|
3
|
+
- Use latest ANTLR4 Ruby.stg updated by Cameron Dutro.
|
4
|
+
- Use antrl4-runtime v0.2.2 which fixes some issues around Array2DHashSet
|
5
|
+
- Fixed a failing error test due to incorrect value type for a `*class` with supertype `num`.
|
6
|
+
- Corrected the ordering of fields within a class.
|
7
|
+
- Return `null` for empty output rather than `""`
|
8
|
+
- Fixed GitHub issue#4 - improved error reporting.
|
9
|
+
|
1
10
|
0.3.5
|
2
11
|
===
|
3
12
|
- Fixed another bug with class handling to expand classes properly.
|
@@ -590,7 +590,7 @@
|
|
590
590
|
}, {
|
591
591
|
"input": "_L=en;\n{\n C=ca?\n o(\n n=Tesco Canada;\n s={L=fr?\n Chaque Petite Contribution\n /?\n Every Little Helps\n }\n )\n}",
|
592
592
|
"minimised_modl": "_L=en;{C=ca?o(n=Tesco Canada;s={L=fr?Chaque Petite Contribution/?Every Little Helps})}",
|
593
|
-
"expected_output": "
|
593
|
+
"expected_output": "null"
|
594
594
|
}, {
|
595
595
|
"input": "_letter=a;\n{\n letter=a?\n word=Apple\n /letter=b?\n word=Bee\n /?\n word=Other\n}",
|
596
596
|
"minimised_modl": "_letter=a;{letter=a?word=Apple/letter=b?word=Bee/?word=Other}",
|
@@ -634,7 +634,7 @@
|
|
634
634
|
}, {
|
635
635
|
"input": "_test = 123;\n_test2 = abc",
|
636
636
|
"minimised_modl": "_test=123;_test2=abc",
|
637
|
-
"expected_output": "
|
637
|
+
"expected_output": "null"
|
638
638
|
}, {
|
639
639
|
"input": "_co=gb;\ntest=123",
|
640
640
|
"minimised_modl": "_co=gb;test=123",
|
@@ -698,7 +698,7 @@
|
|
698
698
|
}, {
|
699
699
|
"input": "_T=grammar_tests/demo;\n*L=`%T`_config",
|
700
700
|
"minimised_modl": "_T=grammar_tests/demo;*L=`%T`_config",
|
701
|
-
"expected_output": "
|
701
|
+
"expected_output": "null"
|
702
702
|
}, {
|
703
703
|
"input": "*l=grammar_tests/1;*L=grammar_tests/1;a=1",
|
704
704
|
"minimised_modl": "*l=grammar_tests/1;*L=grammar_tests/1;a=1",
|
@@ -995,5 +995,5 @@
|
|
995
995
|
"expected_output": "{\"x\" : [ 1, null, null, null, null, null, null, [2, null, null, null, null, null, null, null, null, 3], null, null, null, null, null, null, null, null, null, [4, null, null, null, null, null, null, null, null, 5] ]}"},
|
996
996
|
{"input": "*LOAD=\"http://modules.num.uk/1.txt\";o=Tesco:Every Little Helps:[t=Customer Service:0845555555];",
|
997
997
|
"minimised_modl": "*LOAD=\"http://modules.num.uk/1.txt\";o=Tesco:Every Little Helps:[t=Customer Service:0845555555];",
|
998
|
-
"expected_output": "{\
|
998
|
+
"expected_output": "{\"organisation\":{\"name\":\"Tesco\",\"slogan\":\"Every Little Helps\",\"objects\":[{\"telephone\":{\"description\":\"Customer Service\",\"value\":\"0845555555\",\"object_type\":\"media\",\"object_display_name\":\"Telephone\",\"description_default\":\"Call\",\"prefix\":\"tel://\",\"media_type\":\"core\"}}],\"object_type\":\"entity\",\"object_display_name\":\"Organisation\",\"description_default\":\"View Organisation\"}}"}
|
999
999
|
]
|
@@ -128,9 +128,9 @@ class MODLParser < Antlr4::Runtime::Parser
|
|
128
128
|
end
|
129
129
|
|
130
130
|
class ModlContext < Antlr4::Runtime::ParserRuleContext
|
131
|
-
|
132
|
-
|
133
|
-
|
131
|
+
def EOF()
|
132
|
+
return token(MODLParser::EOF, 0)
|
133
|
+
end
|
134
134
|
def modl_structure()
|
135
135
|
return rule_contexts("Modl_structureContext")
|
136
136
|
end
|
@@ -150,18 +150,18 @@ class MODLParser < Antlr4::Runtime::Parser
|
|
150
150
|
return RULE_modl
|
151
151
|
end
|
152
152
|
def enter_rule( listener)
|
153
|
-
if (
|
153
|
+
if (listener.respond_to?(:enterModl))
|
154
154
|
listener.enterModl(self)
|
155
155
|
end
|
156
156
|
end
|
157
157
|
def exit_rule( listener)
|
158
|
-
if (
|
158
|
+
if (listener.respond_to?(:exitModl))
|
159
159
|
listener.exitModl(self)
|
160
160
|
end
|
161
161
|
end
|
162
162
|
|
163
163
|
def accept(visitor)
|
164
|
-
if (
|
164
|
+
if (visitor.respond_to?(:visitModl))
|
165
165
|
return visitor.visitModl(self)
|
166
166
|
else
|
167
167
|
return visitor.visit_children(self)
|
@@ -175,9 +175,9 @@ class MODLParser < Antlr4::Runtime::Parser
|
|
175
175
|
_la = 0
|
176
176
|
begin
|
177
177
|
_alt = 0
|
178
|
-
|
178
|
+
enter_outer_alt(_localctx, 1)
|
179
179
|
|
180
|
-
|
180
|
+
@_state_number = 62
|
181
181
|
@_err_handler.sync(self)
|
182
182
|
case ( @_interp.adaptive_predict(@_input,3,@_ctx) )
|
183
183
|
when 1
|
@@ -224,9 +224,9 @@ class MODLParser < Antlr4::Runtime::Parser
|
|
224
224
|
end
|
225
225
|
|
226
226
|
|
227
|
-
|
228
|
-
|
229
|
-
|
227
|
+
end
|
228
|
+
@_state_number = 64
|
229
|
+
match(EOF)
|
230
230
|
rescue Antlr4::Runtime::RecognitionException => re
|
231
231
|
_localctx.exception = re
|
232
232
|
@_err_handler.report_error(self, re)
|
@@ -257,18 +257,18 @@ class MODLParser < Antlr4::Runtime::Parser
|
|
257
257
|
return RULE_modl_structure
|
258
258
|
end
|
259
259
|
def enter_rule( listener)
|
260
|
-
if (
|
260
|
+
if (listener.respond_to?(:enterModl_structure))
|
261
261
|
listener.enterModl_structure(self)
|
262
262
|
end
|
263
263
|
end
|
264
264
|
def exit_rule( listener)
|
265
|
-
if (
|
265
|
+
if (listener.respond_to?(:exitModl_structure))
|
266
266
|
listener.exitModl_structure(self)
|
267
267
|
end
|
268
268
|
end
|
269
269
|
|
270
270
|
def accept(visitor)
|
271
|
-
if (
|
271
|
+
if (visitor.respond_to?(:visitModl_structure))
|
272
272
|
return visitor.visitModl_structure(self)
|
273
273
|
else
|
274
274
|
return visitor.visit_children(self)
|
@@ -345,18 +345,18 @@ class MODLParser < Antlr4::Runtime::Parser
|
|
345
345
|
return RULE_modl_map
|
346
346
|
end
|
347
347
|
def enter_rule( listener)
|
348
|
-
if (
|
348
|
+
if (listener.respond_to?(:enterModl_map))
|
349
349
|
listener.enterModl_map(self)
|
350
350
|
end
|
351
351
|
end
|
352
352
|
def exit_rule( listener)
|
353
|
-
if (
|
353
|
+
if (listener.respond_to?(:exitModl_map))
|
354
354
|
listener.exitModl_map(self)
|
355
355
|
end
|
356
356
|
end
|
357
357
|
|
358
358
|
def accept(visitor)
|
359
|
-
if (
|
359
|
+
if (visitor.respond_to?(:visitModl_map))
|
360
360
|
return visitor.visitModl_map(self)
|
361
361
|
else
|
362
362
|
return visitor.visit_children(self)
|
@@ -440,18 +440,18 @@ class MODLParser < Antlr4::Runtime::Parser
|
|
440
440
|
return RULE_modl_array
|
441
441
|
end
|
442
442
|
def enter_rule( listener)
|
443
|
-
if (
|
443
|
+
if (listener.respond_to?(:enterModl_array))
|
444
444
|
listener.enterModl_array(self)
|
445
445
|
end
|
446
446
|
end
|
447
447
|
def exit_rule( listener)
|
448
|
-
if (
|
448
|
+
if (listener.respond_to?(:exitModl_array))
|
449
449
|
listener.exitModl_array(self)
|
450
450
|
end
|
451
451
|
end
|
452
452
|
|
453
453
|
def accept(visitor)
|
454
|
-
if (
|
454
|
+
if (visitor.respond_to?(:visitModl_array))
|
455
455
|
return visitor.visitModl_array(self)
|
456
456
|
else
|
457
457
|
return visitor.visit_children(self)
|
@@ -573,18 +573,18 @@ class MODLParser < Antlr4::Runtime::Parser
|
|
573
573
|
return RULE_modl_nb_array
|
574
574
|
end
|
575
575
|
def enter_rule( listener)
|
576
|
-
if (
|
576
|
+
if (listener.respond_to?(:enterModl_nb_array))
|
577
577
|
listener.enterModl_nb_array(self)
|
578
578
|
end
|
579
579
|
end
|
580
580
|
def exit_rule( listener)
|
581
|
-
if (
|
581
|
+
if (listener.respond_to?(:exitModl_nb_array))
|
582
582
|
listener.exitModl_nb_array(self)
|
583
583
|
end
|
584
584
|
end
|
585
585
|
|
586
586
|
def accept(visitor)
|
587
|
-
if (
|
587
|
+
if (visitor.respond_to?(:visitModl_nb_array))
|
588
588
|
return visitor.visitModl_nb_array(self)
|
589
589
|
else
|
590
590
|
return visitor.visit_children(self)
|
@@ -708,18 +708,18 @@ class MODLParser < Antlr4::Runtime::Parser
|
|
708
708
|
return RULE_modl_pair
|
709
709
|
end
|
710
710
|
def enter_rule( listener)
|
711
|
-
if (
|
711
|
+
if (listener.respond_to?(:enterModl_pair))
|
712
712
|
listener.enterModl_pair(self)
|
713
713
|
end
|
714
714
|
end
|
715
715
|
def exit_rule( listener)
|
716
|
-
if (
|
716
|
+
if (listener.respond_to?(:exitModl_pair))
|
717
717
|
listener.exitModl_pair(self)
|
718
718
|
end
|
719
719
|
end
|
720
720
|
|
721
721
|
def accept(visitor)
|
722
|
-
if (
|
722
|
+
if (visitor.respond_to?(:visitModl_pair))
|
723
723
|
return visitor.visitModl_pair(self)
|
724
724
|
else
|
725
725
|
return visitor.visit_children(self)
|
@@ -796,18 +796,18 @@ class MODLParser < Antlr4::Runtime::Parser
|
|
796
796
|
return RULE_modl_value_item
|
797
797
|
end
|
798
798
|
def enter_rule( listener)
|
799
|
-
if (
|
799
|
+
if (listener.respond_to?(:enterModl_value_item))
|
800
800
|
listener.enterModl_value_item(self)
|
801
801
|
end
|
802
802
|
end
|
803
803
|
def exit_rule( listener)
|
804
|
-
if (
|
804
|
+
if (listener.respond_to?(:exitModl_value_item))
|
805
805
|
listener.exitModl_value_item(self)
|
806
806
|
end
|
807
807
|
end
|
808
808
|
|
809
809
|
def accept(visitor)
|
810
|
-
if (
|
810
|
+
if (visitor.respond_to?(:visitModl_value_item))
|
811
811
|
return visitor.visitModl_value_item(self)
|
812
812
|
else
|
813
813
|
return visitor.visit_children(self)
|
@@ -883,18 +883,18 @@ class MODLParser < Antlr4::Runtime::Parser
|
|
883
883
|
return RULE_modl_top_level_conditional
|
884
884
|
end
|
885
885
|
def enter_rule( listener)
|
886
|
-
if (
|
886
|
+
if (listener.respond_to?(:enterModl_top_level_conditional))
|
887
887
|
listener.enterModl_top_level_conditional(self)
|
888
888
|
end
|
889
889
|
end
|
890
890
|
def exit_rule( listener)
|
891
|
-
if (
|
891
|
+
if (listener.respond_to?(:exitModl_top_level_conditional))
|
892
892
|
listener.exitModl_top_level_conditional(self)
|
893
893
|
end
|
894
894
|
end
|
895
895
|
|
896
896
|
def accept(visitor)
|
897
|
-
if (
|
897
|
+
if (visitor.respond_to?(:visitModl_top_level_conditional))
|
898
898
|
return visitor.visitModl_top_level_conditional(self)
|
899
899
|
else
|
900
900
|
return visitor.visit_children(self)
|
@@ -968,18 +968,18 @@ class MODLParser < Antlr4::Runtime::Parser
|
|
968
968
|
return RULE_modl_top_level_conditional_return
|
969
969
|
end
|
970
970
|
def enter_rule( listener)
|
971
|
-
if (
|
971
|
+
if (listener.respond_to?(:enterModl_top_level_conditional_return))
|
972
972
|
listener.enterModl_top_level_conditional_return(self)
|
973
973
|
end
|
974
974
|
end
|
975
975
|
def exit_rule( listener)
|
976
|
-
if (
|
976
|
+
if (listener.respond_to?(:exitModl_top_level_conditional_return))
|
977
977
|
listener.exitModl_top_level_conditional_return(self)
|
978
978
|
end
|
979
979
|
end
|
980
980
|
|
981
981
|
def accept(visitor)
|
982
|
-
if (
|
982
|
+
if (visitor.respond_to?(:visitModl_top_level_conditional_return))
|
983
983
|
return visitor.visitModl_top_level_conditional_return(self)
|
984
984
|
else
|
985
985
|
return visitor.visit_children(self)
|
@@ -1054,18 +1054,18 @@ class MODLParser < Antlr4::Runtime::Parser
|
|
1054
1054
|
return RULE_modl_map_conditional
|
1055
1055
|
end
|
1056
1056
|
def enter_rule( listener)
|
1057
|
-
if (
|
1057
|
+
if (listener.respond_to?(:enterModl_map_conditional))
|
1058
1058
|
listener.enterModl_map_conditional(self)
|
1059
1059
|
end
|
1060
1060
|
end
|
1061
1061
|
def exit_rule( listener)
|
1062
|
-
if (
|
1062
|
+
if (listener.respond_to?(:exitModl_map_conditional))
|
1063
1063
|
listener.exitModl_map_conditional(self)
|
1064
1064
|
end
|
1065
1065
|
end
|
1066
1066
|
|
1067
1067
|
def accept(visitor)
|
1068
|
-
if (
|
1068
|
+
if (visitor.respond_to?(:visitModl_map_conditional))
|
1069
1069
|
return visitor.visitModl_map_conditional(self)
|
1070
1070
|
else
|
1071
1071
|
return visitor.visit_children(self)
|
@@ -1139,18 +1139,18 @@ class MODLParser < Antlr4::Runtime::Parser
|
|
1139
1139
|
return RULE_modl_map_conditional_return
|
1140
1140
|
end
|
1141
1141
|
def enter_rule( listener)
|
1142
|
-
if (
|
1142
|
+
if (listener.respond_to?(:enterModl_map_conditional_return))
|
1143
1143
|
listener.enterModl_map_conditional_return(self)
|
1144
1144
|
end
|
1145
1145
|
end
|
1146
1146
|
def exit_rule( listener)
|
1147
|
-
if (
|
1147
|
+
if (listener.respond_to?(:exitModl_map_conditional_return))
|
1148
1148
|
listener.exitModl_map_conditional_return(self)
|
1149
1149
|
end
|
1150
1150
|
end
|
1151
1151
|
|
1152
1152
|
def accept(visitor)
|
1153
|
-
if (
|
1153
|
+
if (visitor.respond_to?(:visitModl_map_conditional_return))
|
1154
1154
|
return visitor.visitModl_map_conditional_return(self)
|
1155
1155
|
else
|
1156
1156
|
return visitor.visit_children(self)
|
@@ -1202,18 +1202,18 @@ class MODLParser < Antlr4::Runtime::Parser
|
|
1202
1202
|
return RULE_modl_map_item
|
1203
1203
|
end
|
1204
1204
|
def enter_rule( listener)
|
1205
|
-
if (
|
1205
|
+
if (listener.respond_to?(:enterModl_map_item))
|
1206
1206
|
listener.enterModl_map_item(self)
|
1207
1207
|
end
|
1208
1208
|
end
|
1209
1209
|
def exit_rule( listener)
|
1210
|
-
if (
|
1210
|
+
if (listener.respond_to?(:exitModl_map_item))
|
1211
1211
|
listener.exitModl_map_item(self)
|
1212
1212
|
end
|
1213
1213
|
end
|
1214
1214
|
|
1215
1215
|
def accept(visitor)
|
1216
|
-
if (
|
1216
|
+
if (visitor.respond_to?(:visitModl_map_item))
|
1217
1217
|
return visitor.visitModl_map_item(self)
|
1218
1218
|
else
|
1219
1219
|
return visitor.visit_children(self)
|
@@ -1290,18 +1290,18 @@ class MODLParser < Antlr4::Runtime::Parser
|
|
1290
1290
|
return RULE_modl_array_conditional
|
1291
1291
|
end
|
1292
1292
|
def enter_rule( listener)
|
1293
|
-
if (
|
1293
|
+
if (listener.respond_to?(:enterModl_array_conditional))
|
1294
1294
|
listener.enterModl_array_conditional(self)
|
1295
1295
|
end
|
1296
1296
|
end
|
1297
1297
|
def exit_rule( listener)
|
1298
|
-
if (
|
1298
|
+
if (listener.respond_to?(:exitModl_array_conditional))
|
1299
1299
|
listener.exitModl_array_conditional(self)
|
1300
1300
|
end
|
1301
1301
|
end
|
1302
1302
|
|
1303
1303
|
def accept(visitor)
|
1304
|
-
if (
|
1304
|
+
if (visitor.respond_to?(:visitModl_array_conditional))
|
1305
1305
|
return visitor.visitModl_array_conditional(self)
|
1306
1306
|
else
|
1307
1307
|
return visitor.visit_children(self)
|
@@ -1375,18 +1375,18 @@ class MODLParser < Antlr4::Runtime::Parser
|
|
1375
1375
|
return RULE_modl_array_conditional_return
|
1376
1376
|
end
|
1377
1377
|
def enter_rule( listener)
|
1378
|
-
if (
|
1378
|
+
if (listener.respond_to?(:enterModl_array_conditional_return))
|
1379
1379
|
listener.enterModl_array_conditional_return(self)
|
1380
1380
|
end
|
1381
1381
|
end
|
1382
1382
|
def exit_rule( listener)
|
1383
|
-
if (
|
1383
|
+
if (listener.respond_to?(:exitModl_array_conditional_return))
|
1384
1384
|
listener.exitModl_array_conditional_return(self)
|
1385
1385
|
end
|
1386
1386
|
end
|
1387
1387
|
|
1388
1388
|
def accept(visitor)
|
1389
|
-
if (
|
1389
|
+
if (visitor.respond_to?(:visitModl_array_conditional_return))
|
1390
1390
|
return visitor.visitModl_array_conditional_return(self)
|
1391
1391
|
else
|
1392
1392
|
return visitor.visit_children(self)
|
@@ -1438,18 +1438,18 @@ class MODLParser < Antlr4::Runtime::Parser
|
|
1438
1438
|
return RULE_modl_array_item
|
1439
1439
|
end
|
1440
1440
|
def enter_rule( listener)
|
1441
|
-
if (
|
1441
|
+
if (listener.respond_to?(:enterModl_array_item))
|
1442
1442
|
listener.enterModl_array_item(self)
|
1443
1443
|
end
|
1444
1444
|
end
|
1445
1445
|
def exit_rule( listener)
|
1446
|
-
if (
|
1446
|
+
if (listener.respond_to?(:exitModl_array_item))
|
1447
1447
|
listener.exitModl_array_item(self)
|
1448
1448
|
end
|
1449
1449
|
end
|
1450
1450
|
|
1451
1451
|
def accept(visitor)
|
1452
|
-
if (
|
1452
|
+
if (visitor.respond_to?(:visitModl_array_item))
|
1453
1453
|
return visitor.visitModl_array_item(self)
|
1454
1454
|
else
|
1455
1455
|
return visitor.visit_children(self)
|
@@ -1526,18 +1526,18 @@ class MODLParser < Antlr4::Runtime::Parser
|
|
1526
1526
|
return RULE_modl_value_conditional
|
1527
1527
|
end
|
1528
1528
|
def enter_rule( listener)
|
1529
|
-
if (
|
1529
|
+
if (listener.respond_to?(:enterModl_value_conditional))
|
1530
1530
|
listener.enterModl_value_conditional(self)
|
1531
1531
|
end
|
1532
1532
|
end
|
1533
1533
|
def exit_rule( listener)
|
1534
|
-
if (
|
1534
|
+
if (listener.respond_to?(:exitModl_value_conditional))
|
1535
1535
|
listener.exitModl_value_conditional(self)
|
1536
1536
|
end
|
1537
1537
|
end
|
1538
1538
|
|
1539
1539
|
def accept(visitor)
|
1540
|
-
if (
|
1540
|
+
if (visitor.respond_to?(:visitModl_value_conditional))
|
1541
1541
|
return visitor.visitModl_value_conditional(self)
|
1542
1542
|
else
|
1543
1543
|
return visitor.visit_children(self)
|
@@ -1627,18 +1627,18 @@ class MODLParser < Antlr4::Runtime::Parser
|
|
1627
1627
|
return RULE_modl_value_conditional_return
|
1628
1628
|
end
|
1629
1629
|
def enter_rule( listener)
|
1630
|
-
if (
|
1630
|
+
if (listener.respond_to?(:enterModl_value_conditional_return))
|
1631
1631
|
listener.enterModl_value_conditional_return(self)
|
1632
1632
|
end
|
1633
1633
|
end
|
1634
1634
|
def exit_rule( listener)
|
1635
|
-
if (
|
1635
|
+
if (listener.respond_to?(:exitModl_value_conditional_return))
|
1636
1636
|
listener.exitModl_value_conditional_return(self)
|
1637
1637
|
end
|
1638
1638
|
end
|
1639
1639
|
|
1640
1640
|
def accept(visitor)
|
1641
|
-
if (
|
1641
|
+
if (visitor.respond_to?(:visitModl_value_conditional_return))
|
1642
1642
|
return visitor.visitModl_value_conditional_return(self)
|
1643
1643
|
else
|
1644
1644
|
return visitor.visit_children(self)
|
@@ -1717,18 +1717,18 @@ class MODLParser < Antlr4::Runtime::Parser
|
|
1717
1717
|
return RULE_modl_condition_test
|
1718
1718
|
end
|
1719
1719
|
def enter_rule( listener)
|
1720
|
-
if (
|
1720
|
+
if (listener.respond_to?(:enterModl_condition_test))
|
1721
1721
|
listener.enterModl_condition_test(self)
|
1722
1722
|
end
|
1723
1723
|
end
|
1724
1724
|
def exit_rule( listener)
|
1725
|
-
if (
|
1725
|
+
if (listener.respond_to?(:exitModl_condition_test))
|
1726
1726
|
listener.exitModl_condition_test(self)
|
1727
1727
|
end
|
1728
1728
|
end
|
1729
1729
|
|
1730
1730
|
def accept(visitor)
|
1731
|
-
if (
|
1731
|
+
if (visitor.respond_to?(:visitModl_condition_test))
|
1732
1732
|
return visitor.visitModl_condition_test(self)
|
1733
1733
|
else
|
1734
1734
|
return visitor.visit_children(self)
|
@@ -1844,18 +1844,18 @@ class MODLParser < Antlr4::Runtime::Parser
|
|
1844
1844
|
return RULE_modl_operator
|
1845
1845
|
end
|
1846
1846
|
def enter_rule( listener)
|
1847
|
-
if (
|
1847
|
+
if (listener.respond_to?(:enterModl_operator))
|
1848
1848
|
listener.enterModl_operator(self)
|
1849
1849
|
end
|
1850
1850
|
end
|
1851
1851
|
def exit_rule( listener)
|
1852
|
-
if (
|
1852
|
+
if (listener.respond_to?(:exitModl_operator))
|
1853
1853
|
listener.exitModl_operator(self)
|
1854
1854
|
end
|
1855
1855
|
end
|
1856
1856
|
|
1857
1857
|
def accept(visitor)
|
1858
|
-
if (
|
1858
|
+
if (visitor.respond_to?(:visitModl_operator))
|
1859
1859
|
return visitor.visitModl_operator(self)
|
1860
1860
|
else
|
1861
1861
|
return visitor.visit_children(self)
|
@@ -1949,18 +1949,18 @@ class MODLParser < Antlr4::Runtime::Parser
|
|
1949
1949
|
return RULE_modl_condition
|
1950
1950
|
end
|
1951
1951
|
def enter_rule( listener)
|
1952
|
-
if (
|
1952
|
+
if (listener.respond_to?(:enterModl_condition))
|
1953
1953
|
listener.enterModl_condition(self)
|
1954
1954
|
end
|
1955
1955
|
end
|
1956
1956
|
def exit_rule( listener)
|
1957
|
-
if (
|
1957
|
+
if (listener.respond_to?(:exitModl_condition))
|
1958
1958
|
listener.exitModl_condition(self)
|
1959
1959
|
end
|
1960
1960
|
end
|
1961
1961
|
|
1962
1962
|
def accept(visitor)
|
1963
|
-
if (
|
1963
|
+
if (visitor.respond_to?(:visitModl_condition))
|
1964
1964
|
return visitor.visitModl_condition(self)
|
1965
1965
|
else
|
1966
1966
|
return visitor.visit_children(self)
|
@@ -2051,18 +2051,18 @@ class MODLParser < Antlr4::Runtime::Parser
|
|
2051
2051
|
return RULE_modl_condition_group
|
2052
2052
|
end
|
2053
2053
|
def enter_rule( listener)
|
2054
|
-
if (
|
2054
|
+
if (listener.respond_to?(:enterModl_condition_group))
|
2055
2055
|
listener.enterModl_condition_group(self)
|
2056
2056
|
end
|
2057
2057
|
end
|
2058
2058
|
def exit_rule( listener)
|
2059
|
-
if (
|
2059
|
+
if (listener.respond_to?(:exitModl_condition_group))
|
2060
2060
|
listener.exitModl_condition_group(self)
|
2061
2061
|
end
|
2062
2062
|
end
|
2063
2063
|
|
2064
2064
|
def accept(visitor)
|
2065
|
-
if (
|
2065
|
+
if (visitor.respond_to?(:visitModl_condition_group))
|
2066
2066
|
return visitor.visitModl_condition_group(self)
|
2067
2067
|
else
|
2068
2068
|
return visitor.visit_children(self)
|
@@ -2140,18 +2140,18 @@ class MODLParser < Antlr4::Runtime::Parser
|
|
2140
2140
|
return RULE_modl_value
|
2141
2141
|
end
|
2142
2142
|
def enter_rule( listener)
|
2143
|
-
if (
|
2143
|
+
if (listener.respond_to?(:enterModl_value))
|
2144
2144
|
listener.enterModl_value(self)
|
2145
2145
|
end
|
2146
2146
|
end
|
2147
2147
|
def exit_rule( listener)
|
2148
|
-
if (
|
2148
|
+
if (listener.respond_to?(:exitModl_value))
|
2149
2149
|
listener.exitModl_value(self)
|
2150
2150
|
end
|
2151
2151
|
end
|
2152
2152
|
|
2153
2153
|
def accept(visitor)
|
2154
|
-
if (
|
2154
|
+
if (visitor.respond_to?(:visitModl_value))
|
2155
2155
|
return visitor.visitModl_value(self)
|
2156
2156
|
else
|
2157
2157
|
return visitor.visit_children(self)
|
@@ -2227,18 +2227,18 @@ class MODLParser < Antlr4::Runtime::Parser
|
|
2227
2227
|
return RULE_modl_array_value_item
|
2228
2228
|
end
|
2229
2229
|
def enter_rule( listener)
|
2230
|
-
if (
|
2230
|
+
if (listener.respond_to?(:enterModl_array_value_item))
|
2231
2231
|
listener.enterModl_array_value_item(self)
|
2232
2232
|
end
|
2233
2233
|
end
|
2234
2234
|
def exit_rule( listener)
|
2235
|
-
if (
|
2235
|
+
if (listener.respond_to?(:exitModl_array_value_item))
|
2236
2236
|
listener.exitModl_array_value_item(self)
|
2237
2237
|
end
|
2238
2238
|
end
|
2239
2239
|
|
2240
2240
|
def accept(visitor)
|
2241
|
-
if (
|
2241
|
+
if (visitor.respond_to?(:visitModl_array_value_item))
|
2242
2242
|
return visitor.visitModl_array_value_item(self)
|
2243
2243
|
else
|
2244
2244
|
return visitor.visit_children(self)
|
@@ -2314,18 +2314,18 @@ class MODLParser < Antlr4::Runtime::Parser
|
|
2314
2314
|
return RULE_modl_primitive
|
2315
2315
|
end
|
2316
2316
|
def enter_rule( listener)
|
2317
|
-
if (
|
2317
|
+
if (listener.respond_to?(:enterModl_primitive))
|
2318
2318
|
listener.enterModl_primitive(self)
|
2319
2319
|
end
|
2320
2320
|
end
|
2321
2321
|
def exit_rule( listener)
|
2322
|
-
if (
|
2322
|
+
if (listener.respond_to?(:exitModl_primitive))
|
2323
2323
|
listener.exitModl_primitive(self)
|
2324
2324
|
end
|
2325
2325
|
end
|
2326
2326
|
|
2327
2327
|
def accept(visitor)
|
2328
|
-
if (
|
2328
|
+
if (visitor.respond_to?(:visitModl_primitive))
|
2329
2329
|
return visitor.visitModl_primitive(self)
|
2330
2330
|
else
|
2331
2331
|
return visitor.visit_children(self)
|
@@ -2363,128 +2363,128 @@ class MODLParser < Antlr4::Runtime::Parser
|
|
2363
2363
|
end
|
2364
2364
|
|
2365
2365
|
@@_serializedATN = ["\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964",
|
2366
|
-
|
2367
|
-
|
2368
|
-
|
2369
|
-
|
2370
|
-
|
2371
|
-
|
2372
|
-
|
2373
|
-
|
2374
|
-
|
2375
|
-
|
2376
|
-
|
2377
|
-
|
2378
|
-
|
2379
|
-
|
2380
|
-
|
2381
|
-
|
2382
|
-
|
2383
|
-
|
2384
|
-
|
2385
|
-
|
2386
|
-
|
2387
|
-
|
2388
|
-
|
2389
|
-
|
2390
|
-
|
2391
|
-
|
2392
|
-
|
2393
|
-
|
2394
|
-
|
2395
|
-
|
2396
|
-
|
2397
|
-
|
2398
|
-
|
2399
|
-
|
2400
|
-
|
2401
|
-
|
2402
|
-
|
2403
|
-
|
2404
|
-
|
2405
|
-
|
2406
|
-
|
2407
|
-
|
2408
|
-
|
2409
|
-
|
2410
|
-
|
2411
|
-
|
2412
|
-
|
2413
|
-
|
2414
|
-
|
2415
|
-
|
2416
|
-
|
2417
|
-
|
2418
|
-
|
2419
|
-
|
2420
|
-
|
2421
|
-
|
2422
|
-
|
2423
|
-
|
2424
|
-
|
2425
|
-
|
2426
|
-
|
2427
|
-
|
2428
|
-
|
2429
|
-
|
2430
|
-
|
2431
|
-
|
2432
|
-
|
2433
|
-
|
2434
|
-
|
2435
|
-
|
2436
|
-
|
2437
|
-
|
2438
|
-
|
2439
|
-
|
2440
|
-
|
2441
|
-
|
2442
|
-
|
2443
|
-
|
2444
|
-
|
2445
|
-
|
2446
|
-
|
2447
|
-
|
2448
|
-
|
2449
|
-
|
2450
|
-
|
2451
|
-
|
2452
|
-
|
2453
|
-
|
2454
|
-
|
2455
|
-
|
2456
|
-
|
2457
|
-
|
2458
|
-
|
2459
|
-
|
2460
|
-
|
2461
|
-
|
2462
|
-
|
2463
|
-
|
2464
|
-
|
2465
|
-
|
2466
|
-
|
2467
|
-
|
2468
|
-
|
2469
|
-
|
2470
|
-
|
2471
|
-
|
2472
|
-
|
2473
|
-
|
2474
|
-
|
2475
|
-
|
2476
|
-
|
2477
|
-
|
2478
|
-
|
2479
|
-
|
2480
|
-
|
2481
|
-
|
2482
|
-
|
2483
|
-
|
2484
|
-
|
2485
|
-
|
2486
|
-
|
2487
|
-
|
2366
|
+
"\3 \u0145\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4",
|
2367
|
+
"\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t",
|
2368
|
+
"\20\4\21\t\21\4\22\t\22\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27",
|
2369
|
+
"\t\27\4\30\t\30\4\31\t\31\3\2\5\2\64\n\2\3\2\3\2\3\2\7\29\n\2\f\2\16",
|
2370
|
+
"\2<\13\2\3\2\5\2?\n\2\5\2A\n\2\3\2\3\2\3\3\3\3\3\3\3\3\5\3I\n\3\3\4",
|
2371
|
+
"\3\4\3\4\3\4\7\4O\n\4\f\4\16\4R\13\4\5\4T\n\4\3\4\3\4\3\5\3\5\3\5\5",
|
2372
|
+
"\5[\n\5\3\5\6\5^\n\5\r\5\16\5_\3\5\3\5\5\5d\n\5\3\5\7\5g\n\5\f\5\16",
|
2373
|
+
"\5j\13\5\7\5l\n\5\f\5\16\5o\13\5\5\5q\n\5\3\5\3\5\3\6\3\6\6\6w\n\6",
|
2374
|
+
"\r\6\16\6x\6\6{\n\6\r\6\16\6|\3\6\7\6\u0080\n\6\f\6\16\6\u0083\13\6",
|
2375
|
+
"\3\6\5\6\u0086\n\6\3\7\3\7\3\7\3\7\3\7\3\7\3\7\5\7\u008f\n\7\3\b\3",
|
2376
|
+
"\b\5\b\u0093\n\b\3\t\3\t\3\t\3\t\3\t\3\t\5\t\u009b\n\t\3\t\3\t\7\t",
|
2377
|
+
"\u009f\n\t\f\t\16\t\u00a2\13\t\3\t\3\t\3\n\7\n\u00a7\n\n\f\n\16\n\u00aa",
|
2378
|
+
"\13\n\3\13\3\13\3\13\3\13\3\13\3\13\5\13\u00b2\n\13\3\13\3\13\7\13",
|
2379
|
+
"\u00b6\n\13\f\13\16\13\u00b9\13\13\3\13\3\13\3\f\6\f\u00be\n\f\r\f",
|
2380
|
+
"\16\f\u00bf\3\r\3\r\5\r\u00c4\n\r\3\16\3\16\3\16\3\16\3\16\3\16\5\16",
|
2381
|
+
"\u00cc\n\16\3\16\3\16\7\16\u00d0\n\16\f\16\16\16\u00d3\13\16\3\16\3",
|
2382
|
+
"\16\3\17\6\17\u00d8\n\17\r\17\16\17\u00d9\3\20\3\20\5\20\u00de\n\20",
|
2383
|
+
"\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\7\21\u00e9\n\21\f\21",
|
2384
|
+
"\16\21\u00ec\13\21\3\21\3\21\3\21\3\21\5\21\u00f2\n\21\3\21\3\21\3",
|
2385
|
+
"\22\3\22\3\22\7\22\u00f9\n\22\f\22\16\22\u00fc\13\22\3\23\5\23\u00ff",
|
2386
|
+
"\n\23\3\23\3\23\5\23\u0103\n\23\3\23\3\23\5\23\u0107\n\23\3\23\3\23",
|
2387
|
+
"\5\23\u010b\n\23\7\23\u010d\n\23\f\23\16\23\u0110\13\23\3\24\3\24\3",
|
2388
|
+
"\24\3\24\3\24\3\24\3\24\3\24\3\24\5\24\u011b\n\24\3\25\5\25\u011e\n",
|
2389
|
+
"\25\3\25\5\25\u0121\n\25\3\25\3\25\3\25\7\25\u0126\n\25\f\25\16\25",
|
2390
|
+
"\u0129\13\25\3\26\3\26\3\26\3\26\7\26\u012f\n\26\f\26\16\26\u0132\13",
|
2391
|
+
"\26\3\26\3\26\3\27\3\27\3\27\3\27\3\27\5\27\u013b\n\27\3\30\3\30\3",
|
2392
|
+
"\30\3\30\5\30\u0141\n\30\3\31\3\31\3\31\2\2\32\2\4\6\b\n\f\16\20\22",
|
2393
|
+
"\24\26\30\32\34\36 \"$&(*,.\60\2\4\6\2\4\6\17\17\21\21\23\23\3\2\34",
|
2394
|
+
"\35\2\u0165\2@\3\2\2\2\4H\3\2\2\2\6J\3\2\2\2\bW\3\2\2\2\nz\3\2\2\2",
|
2395
|
+
"\f\u008e\3\2\2\2\16\u0092\3\2\2\2\20\u0094\3\2\2\2\22\u00a8\3\2\2\2",
|
2396
|
+
"\24\u00ab\3\2\2\2\26\u00bd\3\2\2\2\30\u00c3\3\2\2\2\32\u00c5\3\2\2",
|
2397
|
+
"\2\34\u00d7\3\2\2\2\36\u00dd\3\2\2\2 \u00df\3\2\2\2\"\u00f5\3\2\2\2",
|
2398
|
+
"$\u00fe\3\2\2\2&\u011a\3\2\2\2(\u011d\3\2\2\2*\u012a\3\2\2\2,\u013a",
|
2399
|
+
"\3\2\2\2.\u0140\3\2\2\2\60\u0142\3\2\2\2\62\64\5\4\3\2\63\62\3\2\2",
|
2400
|
+
"\2\63\64\3\2\2\2\64A\3\2\2\2\65:\5\4\3\2\66\67\7\t\2\2\679\5\4\3\2",
|
2401
|
+
"8\66\3\2\2\29<\3\2\2\2:8\3\2\2\2:;\3\2\2\2;>\3\2\2\2<:\3\2\2\2=?\7",
|
2402
|
+
"\t\2\2>=\3\2\2\2>?\3\2\2\2?A\3\2\2\2@\63\3\2\2\2@\65\3\2\2\2AB\3\2",
|
2403
|
+
"\2\2BC\7\2\2\3C\3\3\2\2\2DI\5\6\4\2EI\5\b\5\2FI\5\20\t\2GI\5\f\7\2",
|
2404
|
+
"HD\3\2\2\2HE\3\2\2\2HF\3\2\2\2HG\3\2\2\2I\5\3\2\2\2JS\7\13\2\2KP\5",
|
2405
|
+
"\30\r\2LM\7\t\2\2MO\5\30\r\2NL\3\2\2\2OR\3\2\2\2PN\3\2\2\2PQ\3\2\2",
|
2406
|
+
"\2QT\3\2\2\2RP\3\2\2\2SK\3\2\2\2ST\3\2\2\2TU\3\2\2\2UV\7\f\2\2V\7\3",
|
2407
|
+
"\2\2\2Wp\7\r\2\2X[\5\36\20\2Y[\5\n\6\2ZX\3\2\2\2ZY\3\2\2\2[m\3\2\2",
|
2408
|
+
"\2\\^\7\t\2\2]\\\3\2\2\2^_\3\2\2\2_]\3\2\2\2_`\3\2\2\2`c\3\2\2\2ad",
|
2409
|
+
"\5\36\20\2bd\5\n\6\2ca\3\2\2\2cb\3\2\2\2dh\3\2\2\2eg\7\t\2\2fe\3\2",
|
2410
|
+
"\2\2gj\3\2\2\2hf\3\2\2\2hi\3\2\2\2il\3\2\2\2jh\3\2\2\2k]\3\2\2\2lo",
|
2411
|
+
"\3\2\2\2mk\3\2\2\2mn\3\2\2\2nq\3\2\2\2om\3\2\2\2pZ\3\2\2\2pq\3\2\2",
|
2412
|
+
"\2qr\3\2\2\2rs\7\16\2\2s\t\3\2\2\2tv\5\36\20\2uw\7\7\2\2vu\3\2\2\2",
|
2413
|
+
"wx\3\2\2\2xv\3\2\2\2xy\3\2\2\2y{\3\2\2\2zt\3\2\2\2{|\3\2\2\2|z\3\2",
|
2414
|
+
"\2\2|}\3\2\2\2}\u0081\3\2\2\2~\u0080\5\36\20\2\177~\3\2\2\2\u0080\u0083",
|
2415
|
+
"\3\2\2\2\u0081\177\3\2\2\2\u0081\u0082\3\2\2\2\u0082\u0085\3\2\2\2",
|
2416
|
+
"\u0083\u0081\3\2\2\2\u0084\u0086\7\7\2\2\u0085\u0084\3\2\2\2\u0085",
|
2417
|
+
"\u0086\3\2\2\2\u0086\13\3\2\2\2\u0087\u0088\t\2\2\2\u0088\u0089\7\b",
|
2418
|
+
"\2\2\u0089\u008f\5\16\b\2\u008a\u008b\7\21\2\2\u008b\u008f\5\6\4\2",
|
2419
|
+
"\u008c\u008d\7\21\2\2\u008d\u008f\5\b\5\2\u008e\u0087\3\2\2\2\u008e",
|
2420
|
+
"\u008a\3\2\2\2\u008e\u008c\3\2\2\2\u008f\r\3\2\2\2\u0090\u0093\5,\27",
|
2421
|
+
"\2\u0091\u0093\5 \21\2\u0092\u0090\3\2\2\2\u0092\u0091\3\2\2\2\u0093",
|
2422
|
+
"\17\3\2\2\2\u0094\u0095\7\25\2\2\u0095\u0096\5$\23\2\u0096\u0097\7",
|
2423
|
+
"\27\2\2\u0097\u00a0\5\22\n\2\u0098\u009a\7\30\2\2\u0099\u009b\5$\23",
|
2424
|
+
"\2\u009a\u0099\3\2\2\2\u009a\u009b\3\2\2\2\u009b\u009c\3\2\2\2\u009c",
|
2425
|
+
"\u009d\7\27\2\2\u009d\u009f\5\22\n\2\u009e\u0098\3\2\2\2\u009f\u00a2",
|
2426
|
+
"\3\2\2\2\u00a0\u009e\3\2\2\2\u00a0\u00a1\3\2\2\2\u00a1\u00a3\3\2\2",
|
2427
|
+
"\2\u00a2\u00a0\3\2\2\2\u00a3\u00a4\7 \2\2\u00a4\21\3\2\2\2\u00a5\u00a7",
|
2428
|
+
"\5\4\3\2\u00a6\u00a5\3\2\2\2\u00a7\u00aa\3\2\2\2\u00a8\u00a6\3\2\2",
|
2429
|
+
"\2\u00a8\u00a9\3\2\2\2\u00a9\23\3\2\2\2\u00aa\u00a8\3\2\2\2\u00ab\u00ac",
|
2430
|
+
"\7\25\2\2\u00ac\u00ad\5$\23\2\u00ad\u00ae\7\27\2\2\u00ae\u00b7\5\26",
|
2431
|
+
"\f\2\u00af\u00b1\7\30\2\2\u00b0\u00b2\5$\23\2\u00b1\u00b0\3\2\2\2\u00b1",
|
2432
|
+
"\u00b2\3\2\2\2\u00b2\u00b3\3\2\2\2\u00b3\u00b4\7\27\2\2\u00b4\u00b6",
|
2433
|
+
"\5\26\f\2\u00b5\u00af\3\2\2\2\u00b6\u00b9\3\2\2\2\u00b7\u00b5\3\2\2",
|
2434
|
+
"\2\u00b7\u00b8\3\2\2\2\u00b8\u00ba\3\2\2\2\u00b9\u00b7\3\2\2\2\u00ba",
|
2435
|
+
"\u00bb\7 \2\2\u00bb\25\3\2\2\2\u00bc\u00be\5\30\r\2\u00bd\u00bc\3\2",
|
2436
|
+
"\2\2\u00be\u00bf\3\2\2\2\u00bf\u00bd\3\2\2\2\u00bf\u00c0\3\2\2\2\u00c0",
|
2437
|
+
"\27\3\2\2\2\u00c1\u00c4\5\f\7\2\u00c2\u00c4\5\24\13\2\u00c3\u00c1\3",
|
2438
|
+
"\2\2\2\u00c3\u00c2\3\2\2\2\u00c4\31\3\2\2\2\u00c5\u00c6\7\25\2\2\u00c6",
|
2439
|
+
"\u00c7\5$\23\2\u00c7\u00c8\7\27\2\2\u00c8\u00d1\5\34\17\2\u00c9\u00cb",
|
2440
|
+
"\7\30\2\2\u00ca\u00cc\5$\23\2\u00cb\u00ca\3\2\2\2\u00cb\u00cc\3\2\2",
|
2441
|
+
"\2\u00cc\u00cd\3\2\2\2\u00cd\u00ce\7\27\2\2\u00ce\u00d0\5\34\17\2\u00cf",
|
2442
|
+
"\u00c9\3\2\2\2\u00d0\u00d3\3\2\2\2\u00d1\u00cf\3\2\2\2\u00d1\u00d2",
|
2443
|
+
"\3\2\2\2\u00d2\u00d4\3\2\2\2\u00d3\u00d1\3\2\2\2\u00d4\u00d5\7 \2\2",
|
2444
|
+
"\u00d5\33\3\2\2\2\u00d6\u00d8\5\36\20\2\u00d7\u00d6\3\2\2\2\u00d8\u00d9",
|
2445
|
+
"\3\2\2\2\u00d9\u00d7\3\2\2\2\u00d9\u00da\3\2\2\2\u00da\35\3\2\2\2\u00db",
|
2446
|
+
"\u00de\5.\30\2\u00dc\u00de\5\32\16\2\u00dd\u00db\3\2\2\2\u00dd\u00dc",
|
2447
|
+
"\3\2\2\2\u00de\37\3\2\2\2\u00df\u00e0\7\25\2\2\u00e0\u00e1\5$\23\2",
|
2448
|
+
"\u00e1\u00f1\7\27\2\2\u00e2\u00ea\5\"\22\2\u00e3\u00e4\7\30\2\2\u00e4",
|
2449
|
+
"\u00e5\5$\23\2\u00e5\u00e6\7\27\2\2\u00e6\u00e7\5\"\22\2\u00e7\u00e9",
|
2450
|
+
"\3\2\2\2\u00e8\u00e3\3\2\2\2\u00e9\u00ec\3\2\2\2\u00ea\u00e8\3\2\2",
|
2451
|
+
"\2\u00ea\u00eb\3\2\2\2\u00eb\u00ed\3\2\2\2\u00ec\u00ea\3\2\2\2\u00ed",
|
2452
|
+
"\u00ee\7\30\2\2\u00ee\u00ef\7\27\2\2\u00ef\u00f0\5\"\22\2\u00f0\u00f2",
|
2453
|
+
"\3\2\2\2\u00f1\u00e2\3\2\2\2\u00f1\u00f2\3\2\2\2\u00f2\u00f3\3\2\2",
|
2454
|
+
"\2\u00f3\u00f4\7 \2\2\u00f4!\3\2\2\2\u00f5\u00fa\5\16\b\2\u00f6\u00f7",
|
2455
|
+
"\7\7\2\2\u00f7\u00f9\5\16\b\2\u00f8\u00f6\3\2\2\2\u00f9\u00fc\3\2\2",
|
2456
|
+
"\2\u00fa\u00f8\3\2\2\2\u00fa\u00fb\3\2\2\2\u00fb#\3\2\2\2\u00fc\u00fa",
|
2457
|
+
"\3\2\2\2\u00fd\u00ff\7\36\2\2\u00fe\u00fd\3\2\2\2\u00fe\u00ff\3\2\2",
|
2458
|
+
"\2\u00ff\u0102\3\2\2\2\u0100\u0103\5(\25\2\u0101\u0103\5*\26\2\u0102",
|
2459
|
+
"\u0100\3\2\2\2\u0102\u0101\3\2\2\2\u0103\u010e\3\2\2\2\u0104\u0106",
|
2460
|
+
"\t\3\2\2\u0105\u0107\7\36\2\2\u0106\u0105\3\2\2\2\u0106\u0107\3\2\2",
|
2461
|
+
"\2\u0107\u010a\3\2\2\2\u0108\u010b\5(\25\2\u0109\u010b\5*\26\2\u010a",
|
2462
|
+
"\u0108\3\2\2\2\u010a\u0109\3\2\2\2\u010b\u010d\3\2\2\2\u010c\u0104",
|
2463
|
+
"\3\2\2\2\u010d\u0110\3\2\2\2\u010e\u010c\3\2\2\2\u010e\u010f\3\2\2",
|
2464
|
+
"\2\u010f%\3\2\2\2\u0110\u010e\3\2\2\2\u0111\u011b\7\b\2\2\u0112\u011b",
|
2465
|
+
"\7\31\2\2\u0113\u0114\7\31\2\2\u0114\u011b\7\b\2\2\u0115\u011b\7\32",
|
2466
|
+
"\2\2\u0116\u0117\7\32\2\2\u0117\u011b\7\b\2\2\u0118\u0119\7\36\2\2",
|
2467
|
+
"\u0119\u011b\7\b\2\2\u011a\u0111\3\2\2\2\u011a\u0112\3\2\2\2\u011a",
|
2468
|
+
"\u0113\3\2\2\2\u011a\u0115\3\2\2\2\u011a\u0116\3\2\2\2\u011a\u0118",
|
2469
|
+
"\3\2\2\2\u011b\'\3\2\2\2\u011c\u011e\7\21\2\2\u011d\u011c\3\2\2\2\u011d",
|
2470
|
+
"\u011e\3\2\2\2\u011e\u0120\3\2\2\2\u011f\u0121\5&\24\2\u0120\u011f",
|
2471
|
+
"\3\2\2\2\u0120\u0121\3\2\2\2\u0121\u0122\3\2\2\2\u0122\u0127\5,\27",
|
2472
|
+
"\2\u0123\u0124\7\30\2\2\u0124\u0126\5,\27\2\u0125\u0123\3\2\2\2\u0126",
|
2473
|
+
"\u0129\3\2\2\2\u0127\u0125\3\2\2\2\u0127\u0128\3\2\2\2\u0128)\3\2\2",
|
2474
|
+
"\2\u0129\u0127\3\2\2\2\u012a\u012b\7\25\2\2\u012b\u0130\5$\23\2\u012c",
|
2475
|
+
"\u012d\t\3\2\2\u012d\u012f\5$\23\2\u012e\u012c\3\2\2\2\u012f\u0132",
|
2476
|
+
"\3\2\2\2\u0130\u012e\3\2\2\2\u0130\u0131\3\2\2\2\u0131\u0133\3\2\2",
|
2477
|
+
"\2\u0132\u0130\3\2\2\2\u0133\u0134\7 \2\2\u0134+\3\2\2\2\u0135\u013b",
|
2478
|
+
"\5\6\4\2\u0136\u013b\5\b\5\2\u0137\u013b\5\n\6\2\u0138\u013b\5\f\7",
|
2479
|
+
"\2\u0139\u013b\5\60\31\2\u013a\u0135\3\2\2\2\u013a\u0136\3\2\2\2\u013a",
|
2480
|
+
"\u0137\3\2\2\2\u013a\u0138\3\2\2\2\u013a\u0139\3\2\2\2\u013b-\3\2\2",
|
2481
|
+
"\2\u013c\u0141\5\6\4\2\u013d\u0141\5\f\7\2\u013e\u0141\5\b\5\2\u013f",
|
2482
|
+
"\u0141\5\60\31\2\u0140\u013c\3\2\2\2\u0140\u013d\3\2\2\2\u0140\u013e",
|
2483
|
+
"\3\2\2\2\u0140\u013f\3\2\2\2\u0141/\3\2\2\2\u0142\u0143\t\2\2\2\u0143",
|
2484
|
+
"\61\3\2\2\2/\63:>@HPSZ_chmpx|\u0081\u0085\u008e\u0092\u009a\u00a0\u00a8",
|
2485
|
+
"\u00b1\u00b7\u00bf\u00c3\u00cb\u00d1\u00d9\u00dd\u00ea\u00f1\u00fa",
|
2486
|
+
"\u00fe\u0102\u0106\u010a\u010e\u011a\u011d\u0120\u0127\u0130\u013a",
|
2487
|
+
"\u0140"].join("")
|
2488
2488
|
|
2489
2489
|
@@_ATN = Antlr4::Runtime::ATNDeserializer.new().deserialize(@@_serializedATN)
|
2490
2490
|
|
@@ -22,8 +22,29 @@ module MODL
|
|
22
22
|
|
23
23
|
private
|
24
24
|
|
25
|
+
def self.check_class_type(global, key, value)
|
26
|
+
clazz = global.classs(key)
|
27
|
+
top = top_class(clazz, global)
|
28
|
+
case top
|
29
|
+
when 'num'
|
30
|
+
unless value.is_a?(Numeric)
|
31
|
+
raise InterpreterError, 'Interpreter Error: Numeric value expected, but found: ' + value.to_s + ' of type ' + value.class.to_s
|
32
|
+
end
|
33
|
+
return value
|
34
|
+
when 'str'
|
35
|
+
return value.to_s
|
36
|
+
end
|
37
|
+
value
|
38
|
+
end
|
39
|
+
|
25
40
|
# Process the contents of the supplied hash obj
|
26
41
|
def self.process_obj(global, obj)
|
42
|
+
if obj.length == 1
|
43
|
+
k = obj.keys[0]
|
44
|
+
nv = check_class_type(global, k, obj[k])
|
45
|
+
obj[k] = nv
|
46
|
+
end
|
47
|
+
|
27
48
|
obj.keys.each do |k|
|
28
49
|
value = obj[k]
|
29
50
|
# Does the key refer to a class that we have parsed or loaded?
|
@@ -32,17 +53,45 @@ module MODL
|
|
32
53
|
# Yes so convert this value to an instance of that class
|
33
54
|
new_k, new_v = process_class global, k, value
|
34
55
|
# Replace the existing object with the new class instance and a new key
|
35
|
-
|
36
|
-
obj
|
56
|
+
# We need to keep the same key order, hence this method below
|
57
|
+
replaceValue(obj, k, new_k, new_v)
|
58
|
+
else
|
59
|
+
new_v = value
|
37
60
|
end
|
38
61
|
# Recurse into the value in case it has contents that also refer to classes.
|
39
|
-
process global,
|
62
|
+
process global, new_v
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def self.replaceValue(obj, old_k, new_k, new_v)
|
67
|
+
tmp = obj.dup
|
68
|
+
obj.clear
|
69
|
+
tmp.keys.each do |tmpk|
|
70
|
+
tmpv = tmp[tmpk]
|
71
|
+
if tmpk == old_k
|
72
|
+
obj[new_k] = new_v
|
73
|
+
else
|
74
|
+
obj[tmpk] = tmpv
|
75
|
+
end
|
40
76
|
end
|
41
77
|
end
|
42
78
|
|
43
79
|
# Convert the supplied object val into an instance of the class with key k
|
44
80
|
def self.process_class(global, k, v)
|
45
81
|
clazz = global.classs(k)
|
82
|
+
if k != clazz.id && !(v.is_a?(Hash) || v.is_a?(Array))
|
83
|
+
return [k, v]
|
84
|
+
end
|
85
|
+
|
86
|
+
if k == clazz.name && !(v.is_a?(Array) || v.is_a?(Hash))
|
87
|
+
new_value = transform_to_class(clazz, global, [v], true)
|
88
|
+
if new_value.is_a?(Array) && new_value.length == 1
|
89
|
+
return [clazz.name_or_id, new_value[0]]
|
90
|
+
else
|
91
|
+
return [clazz.name_or_id, new_value]
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
46
95
|
new_value = transform_to_class(clazz, global, v)
|
47
96
|
|
48
97
|
if v.is_a?(Array)
|
@@ -68,7 +117,6 @@ module MODL
|
|
68
117
|
end
|
69
118
|
end
|
70
119
|
|
71
|
-
process_nested_classes(global, new_value)
|
72
120
|
[clazz.name_or_id, new_value]
|
73
121
|
end
|
74
122
|
|
@@ -113,8 +161,7 @@ module MODL
|
|
113
161
|
|
114
162
|
# Replace the value for this key if we've changed anything.
|
115
163
|
if new_value[new_k] != new_v
|
116
|
-
new_value
|
117
|
-
new_value[new_k] = new_v
|
164
|
+
replaceValue(new_value, new_k, new_k, new_v)
|
118
165
|
end
|
119
166
|
end
|
120
167
|
elsif new_value.is_a?(Array)
|
@@ -126,17 +173,25 @@ module MODL
|
|
126
173
|
|
127
174
|
# Process the *assign lists ('keylist' in this code) and any extra pairs defined by the class.
|
128
175
|
# The id, name, and superclass can be ignored here.
|
129
|
-
def self.transform_to_class(clazz, global, v)
|
176
|
+
def self.transform_to_class(clazz, global, v, ignore_assign = false)
|
130
177
|
new_value = {} # the replacement for val after conversion to a class instance
|
178
|
+
process_nested_classes(global, v)
|
131
179
|
|
132
180
|
# Process the key list if we found one otherwise raise an error
|
133
181
|
# Slightly different processing for hashes and arrays
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
182
|
+
unless ignore_assign
|
183
|
+
if v.is_a? Array
|
184
|
+
keys = key_list(global, clazz, v.length)
|
185
|
+
if keys.empty?
|
186
|
+
return v
|
187
|
+
else
|
188
|
+
lam = ->(i) {v[i]}
|
189
|
+
end
|
190
|
+
elsif !v.is_a?(Hash)
|
191
|
+
keys = key_list(global, clazz, 1)
|
192
|
+
lam = ->(i) {v}
|
193
|
+
return v if keys.length.zero?
|
194
|
+
end
|
140
195
|
end
|
141
196
|
|
142
197
|
keys&.each_index do |i|
|
@@ -162,6 +217,7 @@ module MODL
|
|
162
217
|
def self.top_class(clazz, global, depth = 0)
|
163
218
|
# Check for self-referential classes that cause infinite recursion
|
164
219
|
return if depth > MAX_RECURSION_DEPTH
|
220
|
+
return nil? if clazz.nil?
|
165
221
|
|
166
222
|
superclass = clazz.superclass
|
167
223
|
c = global.classs(superclass)
|
@@ -11,20 +11,14 @@ module MODL
|
|
11
11
|
class InterpreterError < StandardError
|
12
12
|
end
|
13
13
|
|
14
|
+
class ParserError < StandardError
|
15
|
+
end
|
16
|
+
|
14
17
|
# This is the main Ruby Interpreter entry point. Supply a String containing MODL text and it will return a String
|
15
18
|
# containing the JSON equivalent. The JSON isn't pretty-printed unless pretty is true
|
16
19
|
class Interpreter
|
17
20
|
def self.interpret(str, pretty = false)
|
18
|
-
|
19
|
-
parsed = MODL::Parser::Parser.parse str
|
20
|
-
|
21
|
-
# Convert the Parsed object into a simpler structure of and Array or Hash
|
22
|
-
interpreted = parsed.extract_hash
|
23
|
-
|
24
|
-
# Process any class definitions used by the MODL file.
|
25
|
-
MODL::Parser::ClassProcessor.process(parsed.global, interpreted)
|
26
|
-
MODL::Parser::InstructionProcessor.process(parsed.global, interpreted)
|
27
|
-
# If the result is a simple string then just return it.
|
21
|
+
interpreted = MODL.parse(str)
|
28
22
|
return interpreted if interpreted.is_a? String
|
29
23
|
|
30
24
|
# Otherwise generate a JSON string.
|
@@ -22,7 +22,7 @@ module MODL
|
|
22
22
|
return kl if kl.length == len
|
23
23
|
end
|
24
24
|
raise InterpreterError,
|
25
|
-
'No key list of the correct length in class ' + @id + ' - looking for one of length ' + len.to_s
|
25
|
+
'Interpreter Error: No key list of the correct length in class ' + @id + ' - looking for one of length ' + len.to_s
|
26
26
|
end
|
27
27
|
|
28
28
|
def merge_content(new_value)
|
data/lib/modl/parser/parsed.rb
CHANGED
@@ -344,10 +344,8 @@ module MODL
|
|
344
344
|
IndexExtractor.extract(self, @global)
|
345
345
|
when 'hidden'
|
346
346
|
extract_value
|
347
|
-
invoke_deref
|
348
347
|
else
|
349
348
|
extract_value
|
350
|
-
invoke_deref
|
351
349
|
end
|
352
350
|
|
353
351
|
return if @global.in_condition? # Don't store pairs in conditionals until we evaluate the conditions
|
@@ -1401,7 +1399,7 @@ module MODL
|
|
1401
1399
|
end
|
1402
1400
|
case result.length
|
1403
1401
|
when 0
|
1404
|
-
return
|
1402
|
+
return nil
|
1405
1403
|
when 1
|
1406
1404
|
return result[0]
|
1407
1405
|
end
|
data/lib/modl/parser/parser.rb
CHANGED
@@ -23,18 +23,24 @@ module MODL
|
|
23
23
|
parsed = Parsed.new(global)
|
24
24
|
parser.modl.enter_rule(parsed)
|
25
25
|
parsed
|
26
|
+
rescue Antlr4::Runtime::ParseCancellationException => e
|
27
|
+
check_modl_version(global)
|
28
|
+
raise ParserError, 'Parser Error: ' + e.message
|
26
29
|
rescue StandardError => e
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
global.syntax_version.to_s + ' file.'
|
35
|
-
end
|
30
|
+
check_modl_version(global)
|
31
|
+
raise InterpreterError, 'Interpreter Error: ' + e.message
|
32
|
+
rescue InterpreterError => e
|
33
|
+
check_modl_version(global)
|
34
|
+
raise InterpreterError, 'Interpreter Error: ' + e.message
|
35
|
+
end
|
36
|
+
end
|
36
37
|
|
37
|
-
|
38
|
+
def self.check_modl_version(global)
|
39
|
+
if global.syntax_version > global.interpreter_syntax_version
|
40
|
+
raise InterpreterError, 'Interpreter Error: MODL Version ' +
|
41
|
+
global.interpreter_syntax_version.to_s +
|
42
|
+
' interpreter cannot process this MODL Version ' +
|
43
|
+
global.syntax_version.to_s + ' file.'
|
38
44
|
end
|
39
45
|
end
|
40
46
|
end
|
data/lib/modl/parser/version.rb
CHANGED
data/modl.gemspec
CHANGED
@@ -26,6 +26,6 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.add_development_dependency 'antlr4-runtime', '>= 0.0.1'
|
27
27
|
spec.add_development_dependency 'rake', '~> 10.0'
|
28
28
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
29
|
-
spec.add_runtime_dependency 'antlr4-runtime', '= 0.2.
|
29
|
+
spec.add_runtime_dependency 'antlr4-runtime', '= 0.2.3'
|
30
30
|
spec.add_runtime_dependency 'punycode4r', '>= 0.2.0'
|
31
31
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: modl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tony Walmsley
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-05-
|
11
|
+
date: 2019-05-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: antlr4-runtime
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - '='
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.2.
|
61
|
+
version: 0.2.3
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - '='
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.2.
|
68
|
+
version: 0.2.3
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: punycode4r
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|