modl 0.3.14 → 0.3.15

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a8272c24a2a1e013cfd4eb6e6bdfff61aefe3bc3c14d21c2bb074fa5353fb91f
4
- data.tar.gz: d6e20fcb6c8315ef74138022014247b3911f8583e9f50c22b279a96d6395331d
3
+ metadata.gz: 19862a8b989bb41687946af65e7368ee2c9ab88794498d9bc0383dba94bbd1ad
4
+ data.tar.gz: e1b01ea144720b3b96f7ee412c843154fdb10acf6f84ebd72e24e23a5aef7f25
5
5
  SHA512:
6
- metadata.gz: 933b9a82f45098b11a216bf45d0ed5dae37bfe2bd8ef0b2c84340a9760df8e9b496fca19f0ca5f06b28c28a706f83b9794eb8b0c27c79be08a88ae1e0f1d1450
7
- data.tar.gz: 7ec8e041d755fe6db94658144a23b18a1f4485e8a2db61729d68f63758de4d412cfdfffe2161401aadbc58310112b048b847dcd6dfde75e365df7192e2e3ca35
6
+ metadata.gz: eea7c86691b1e027737cbefbb92644731f96d049fbdf2bf894c0ea971679536f9111ff0c670ce2785b6346664df90e813bd5cce2c3f8b6360e1d91e2cbe94446
7
+ data.tar.gz: e059d05d456ab4f73bc11b5dc62f50e7a291d00158063c4cc43ca7d3a3f5b9b1da09457bf3bf3f44d41d896576e3879efb49398434aa088b3229b64d50a12882
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ 0.3.15
2
+ ===
3
+ - Interpreter Error: undefined method `text' for nil:NilClass. GitHub issue #23
4
+ - Fixed some NOT IMPLEMENTED sections for *method interpretation. GitHub issue #25
5
+ - Standardise the error messages to match the Java interpreter.
6
+
1
7
  0.3.14
2
8
  ===
3
9
  - MODL Syntax Versioning errors update. GitHub issue #11
@@ -1,77 +1,677 @@
1
1
  [
2
- "*VERSION=100;\"123\"=1",
3
- "b=(c=(d=(e=(f=(g=(h=(i=(j=1))))))));a=%b.c.e.f.g.h.i.j",
4
- "*method(*id=hy;*name=hyp1;*transform=`replace( ,-)`);*method(*id=hy;*name=hyp2;*transform=`replace( ,-)`)",
5
- "*method(*id=hy;*name=hyp1;*transform=`replace( ,-)`);*method(*id=hy1;*name=hyp1;*transform=`replace( ,-)`)",
6
- "*method(*id=hy;*name=hyp;*transform=`replace( ,-)`);*method(*id=hyp1;*name=hy;*transform=`replace( ,-)`)",
7
- "*method(*id=hy;*name=hyp;*transform=`replace( ,-)`);*method(*id=hyp;*name=hyp1;*transform=`replace( ,-)`)",
8
- "*class(*id=t;*name=test;*assign=[[a;b];[a]])",
9
- "*class(*id=t;*name=test;*assign=[[a;b]]);test=1:2:3",
10
- "*class(*id=t;*name=test);*class(*id=tt;*name=test)",
11
- "*class(*id=test;*name=t);*class(*id=tt;*name=test)",
12
- "*class(*id=test;*name=t);*class(*id=test;*name=tt)",
13
- "*class(*name=test;*id=t);*class(*id=test;*name=tt)",
14
- "*L=grammar_tests/1;*l=grammar_tests/1;a=1",
15
- "*L=grammar_tests/1;*L=grammar_tests/1",
16
- "*class(\n *id=g;\n *name=glossary;\n *superclass=map\n);\n*class(\n *id=t;\n *name=title;\n *superclass=str\n);\n*class(\n *id=d;\n *name=GlossDiv;\n *superclass=map\n);\n*class(\n *id=l;\n *name=GlossList;\n *superclass=map\n);\n*class(\n *id=e;\n *name=GlossEntry;\n *superclass=map;\n *assign[\n [i;s;gt;a;ab;gd;gs]\n ]\n);\n*class(\n *id=i;\n *name=ID;\n *superclass=str\n);\n*class(\n *id=s;\n *name=SortAs;\n *superclass=str\n);\n*class(\n *id=gt;\n *name=GlossTerm;\n *superclass=str\n);\n*class(\n *id=a;\n *name=Acronym;\n *superclass=str\n);\n*class(\n *id=ab;\n *name=Abbrev;\n *superclass=str\n);\n*class(\n *id=gd;\n *name=GlossDef;\n *superclass=map;\n *assign=[\n [p];\n [p;sa]\n ]\n);\n*CLASS(\n *id=p;\n *name=para;\n *superclass=str\n);\n*class(\n *id=sa;\n *name=SeeAlso;\n *superclass=arr\n);\n*class(\n *id=gs;\n *name=GlossSee;\n *superclass=str\n);\n\ng(\n ?=[SGML;markup;language];\n t=example glossary;\n d(\n t=S;\n l(\n e(\n i=%0;\n s=%0;\n gt=Standard Generalized %1.s %2.s;\n a=%0;\n ab=ISO 8879\\:1986;\n gd=A meta-%1 %2, used to create %1 %2s such as DocBook.\n :[GML;XML];\n gs=%1\n )\n )\n )\n)",
17
- "*class(*id=n;*name=name;*superclass=num);n=Elliott",
18
- "*class(*id=newstr;*superclass=str);*class(*id=a;*name=age;*superclass=anotherstr);a=10",
19
- "!a=1",
20
- "a!=1",
21
- "!a!=1",
22
- "!~a~!=1",
23
- "£x=y",
24
- "$x=y",
25
- "@x=y",
26
- "-x=y",
27
- "+x=y",
28
- "'x'=y",
29
- "'x?=y",
30
- "a=1:2:3;;\nb=4:5:6",
31
- "a=1:2:3;\n;\nb=4:5:6",
32
- "a=1:2:3\n;\n;\nb=4:5:6",
33
- "a=1:2:3\n;;\nb=4:5:6",
34
- "a=1:2:3\n;\nb=4:5:6\n;\n;\n",
35
- "a=1:2:3\n;\nb=4:5:6\n;;\n",
36
- "*nonsense=1",
37
- "?=1:2:3:4;_12%3=1",
38
- "_123=1",
39
- "_12*3=1",
40
- "_12!3=1",
41
- "_12@3=1",
42
- "_12#3=1",
43
- "_12$3=1",
44
- "_12^3=1",
45
- "_12&3=1",
46
- "_12(3=1",
47
- "_12)3=1",
48
- "123=456",
49
- "_test=(\n first=(\"v1\"=(one=(two=three)))\n);\n \ntesting = %test.first.v1.one.0",
50
- "_test=(\n first=(\"v1\"=(one=(two=three)))\n);\n \ntesting = %test.first.v1.0.two",
51
- "_test=(\n first=(\"v1\"=(one=(two=three)))\n);\n \ntesting = %test.first.v1.0.0",
52
- "_test=(\n numbers=(\"one\"=1)\n);\n\ntesting = this is a string that includes a reference with a letter s after it %test.numbers.ones",
53
- "true=test",
54
- "false=test",
55
- "null=test",
56
- "*class(*id=arr)",
57
- "*class(*id=num)",
58
- "*class(*id=map)",
59
- "*class(*id=str)",
60
- "*class(*name=arr)",
61
- "*class(*name=num)",
62
- "*class(*name=map)",
63
- "*class(*name=str)",
64
- "IMMUTABLE=true;IMMUTABLE=false",
65
- "*VERSION=test",
66
- "*V=test",
67
- "*VERSION=0",
68
- "*VERSION=0.1",
69
- "a=b;*VERSION=1",
70
- "*class(*id=a;*name=alpha;*superclass=str);a=null",
71
- "*class(*id=a;*name=alpha;*superclass=num);a=null",
72
- "*class(*id=a;*name=alpha;*superclass=num);a=x",
73
- "*class(*id=a;*name=alpha;*superclass=num);a=null",
74
- "*class(*id=a;*name=alpha;*superclass=map);a=[1;2;3]",
75
- "*class(*id=a;*name=alpha;*superclass=arr);a=(c=d)",
76
- "*L=grammar_tests/test_import_dir/nested_import1.txt;files=%*load"
77
- ]
2
+ {
3
+ "id": 1,
4
+ "input": "*VERSION=100;\"123\"=1",
5
+ "expected_output": "Interpreter Error: Invalid key - \"123\" - entirely numeric keys are not allowed: 123 - MODL Version 1 interpreter cannot process this MODL Version 100 file.",
6
+ "tested_features": [
7
+ "errors"
8
+ ],
9
+ "minimised_modl": "*VERSION=100;\"123\"=1"
10
+ },
11
+ {
12
+ "id": 2,
13
+ "input": "b=(c=(d=(e=(f=(g=(h=(i=(j=1))))))));a=%b.c.e.f.g.h.i.j",
14
+ "expected_output": "Interpreter Error: Invalid object reference: \"%b.c.e.f.g.h.i.j\"",
15
+ "tested_features": [
16
+ "errors"
17
+ ],
18
+ "minimised_modl": "b=(c=(d=(e=(f=(g=(h=(i=(j=1))))))));a=%b.c.e.f.g.h.i.j"
19
+ },
20
+ {
21
+ "id": 3,
22
+ "input": "*method(*id=hy;*name=hyp1;*transform=replace< ,->);*method(*id=hy;*name=hyp2;*transform=replace< ,->)",
23
+ "expected_output": "Interpreter Error: Duplicate method name or id: hy",
24
+ "tested_features": [
25
+ "errors"
26
+ ],
27
+ "minimised_modl": "*method(*id=hy;*name=hyp1;*transform=replace< ,->);*method(*id=hy;*name=hyp2;*transform=replace< ,->)"
28
+ },
29
+ {
30
+ "id": 4,
31
+ "input": "*method(*id=hy;*name=hyp1;*transform=replace< ,->);*method(*id=hy1;*name=hyp1;*transform=replace< ,->)",
32
+ "expected_output": "Interpreter Error: Duplicate method name or id: hyp1",
33
+ "tested_features": [
34
+ "errors"
35
+ ],
36
+ "minimised_modl": "*method(*id=hy;*name=hyp1;*transform=replace< ,->);*method(*id=hy1;*name=hyp1;*transform=replace< ,->)"
37
+ },
38
+ {
39
+ "id": 5,
40
+ "input": "*method(*id=hy;*name=hyp;*transform=replace< ,->);*method(*id=hyp1;*name=hy;*transform=replace< ,->)",
41
+ "expected_output": "Interpreter Error: Duplicate method name or id: hy",
42
+ "tested_features": [
43
+ "errors"
44
+ ],
45
+ "minimised_modl": "*method(*id=hy;*name=hyp;*transform=replace< ,->);*method(*id=hyp1;*name=hy;*transform=replace< ,->)"
46
+ },
47
+ {
48
+ "id": 6,
49
+ "input": "*method(*id=hy;*name=hyp;*transform=replace< ,->);*method(*id=hyp;*name=hyp1;*transform=replace< ,->)",
50
+ "expected_output": "Interpreter Error: Duplicate method name or id: hyp",
51
+ "tested_features": [
52
+ "errors"
53
+ ],
54
+ "minimised_modl": "*method(*id=hy;*name=hyp;*transform=replace< ,->);*method(*id=hyp;*name=hyp1;*transform=replace< ,->)"
55
+ },
56
+ {
57
+ "id": 7,
58
+ "input": "*class(*id=t;*name=test;*assign=[[a;b];[a]])",
59
+ "expected_output": "Interpreter Error: Error: Key lists in *assign are not in ascending order of list length: [\"a\"]",
60
+ "tested_features": [
61
+ "errors"
62
+ ],
63
+ "minimised_modl": "*class(*id=t;*name=test;*assign=[[a;b];[a]])"
64
+ },
65
+ {
66
+ "id": 8,
67
+ "input": "*class(*id=t;*name=test;*assign=[[a;b]]);test=1:2:3",
68
+ "expected_output": "Interpreter Error: No key list of the correct length in class t - looking for one of length 3",
69
+ "tested_features": [
70
+ "errors"
71
+ ],
72
+ "minimised_modl": "*class(*id=t;*name=test;*assign=[[a;b]]);test=1:2:3"
73
+ },
74
+ {
75
+ "id": 9,
76
+ "input": "*class(*id=t;*name=test);*class(*id=tt;*name=test)",
77
+ "expected_output": "Interpreter Error: Class name or id already defined - cannot redefine: tt, test",
78
+ "tested_features": [
79
+ "errors"
80
+ ],
81
+ "minimised_modl": "*class(*id=t;*name=test);*class(*id=tt;*name=test)"
82
+ },
83
+ {
84
+ "id": 10,
85
+ "input": "*class(*id=test;*name=t);*class(*id=tt;*name=test)",
86
+ "expected_output": "Interpreter Error: Class name or id already defined - cannot redefine: tt, test",
87
+ "tested_features": [
88
+ "errors"
89
+ ],
90
+ "minimised_modl": "*class(*id=test;*name=t);*class(*id=tt;*name=test)"
91
+ },
92
+ {
93
+ "id": 11,
94
+ "input": "*class(*id=test;*name=t);*class(*id=test;*name=tt)",
95
+ "expected_output": "Interpreter Error: Class name or id already defined - cannot redefine: test, tt",
96
+ "tested_features": [
97
+ "errors"
98
+ ],
99
+ "minimised_modl": "*class(*id=test;*name=t);*class(*id=test;*name=tt)"
100
+ },
101
+ {
102
+ "id": 12,
103
+ "input": "*class(*name=test;*id=t);*class(*id=test;*name=tt)",
104
+ "expected_output": "Interpreter Error: Class name or id already defined - cannot redefine: test, tt",
105
+ "tested_features": [
106
+ "errors"
107
+ ],
108
+ "minimised_modl": "*class(*name=test;*id=t);*class(*id=test;*name=tt)"
109
+ },
110
+ {
111
+ "id": 13,
112
+ "input": "*L=grammar_tests/1;*l=grammar_tests/1;a=1",
113
+ "expected_output": "Interpreter Error: Cannot load multiple files after *LOAD instruction",
114
+ "tested_features": [
115
+ "errors"
116
+ ],
117
+ "minimised_modl": "*L=grammar_tests/1;*l=grammar_tests/1;a=1"
118
+ },
119
+ {
120
+ "id": 14,
121
+ "input": "*L=grammar_tests/1;*L=grammar_tests/1",
122
+ "expected_output": "Interpreter Error: Cannot load multiple files after *LOAD instruction",
123
+ "tested_features": [
124
+ "errors"
125
+ ],
126
+ "minimised_modl": "*L=grammar_tests/1;*L=grammar_tests/1"
127
+ },
128
+ {
129
+ "id": 15,
130
+ "input": "*class(\n *id=g;\n *name=glossary;\n *superclass=map\n);\n*class(\n *id=t;\n *name=title;\n *superclass=str\n);\n*class(\n *id=d;\n *name=GlossDiv;\n *superclass=map\n);\n*class(\n *id=l;\n *name=GlossList;\n *superclass=map\n);\n*class(\n *id=e;\n *name=GlossEntry;\n *superclass=map;\n *assign[\n [i;s;gt;a;ab;gd;gs]\n ]\n);\n*class(\n *id=i;\n *name=ID;\n *superclass=str\n);\n*class(\n *id=s;\n *name=SortAs;\n *superclass=str\n);\n*class(\n *id=gt;\n *name=GlossTerm;\n *superclass=str\n);\n*class(\n *id=a;\n *name=Acronym;\n *superclass=str\n);\n*class(\n *id=ab;\n *name=Abbrev;\n *superclass=str\n);\n*class(\n *id=gd;\n *name=GlossDef;\n *superclass=map;\n *assign=[\n [p];\n [p;sa]\n ]\n);\n*CLASS(\n *id=p;\n *name=para;\n *superclass=str\n);\n*class(\n *id=sa;\n *name=SeeAlso;\n *superclass=arr\n);\n*class(\n *id=gs;\n *name=GlossSee;\n *superclass=str\n);\n\ng(\n ?=[SGML;markup;language];\n t=example glossary;\n d(\n t=S;\n l(\n e(\n i=%0;\n s=%0;\n gt=Standard Generalized %1.s %2.s;\n a=%0;\n ab=ISO 8879\\:1986;\n gd=A meta-%1 %2, used to create %1 %2s such as DocBook.\n :[GML;XML];\n gs=%1\n )\n )\n )\n)",
131
+ "expected_output": "Interpreter Error: Already defined *class as final.",
132
+ "tested_features": [
133
+ "errors"
134
+ ],
135
+ "minimised_modl": "*class(\n *id=g;\n *name=glossary;\n *superclass=map\n);\n*class(\n *id=t;\n *name=title;\n *superclass=str\n);\n*class(\n *id=d;\n *name=GlossDiv;\n *superclass=map\n);\n*class(\n *id=l;\n *name=GlossList;\n *superclass=map\n);\n*class(\n *id=e;\n *name=GlossEntry;\n *superclass=map;\n *assign[\n [i;s;gt;a;ab;gd;gs]\n ]\n);\n*class(\n *id=i;\n *name=ID;\n *superclass=str\n);\n*class(\n *id=s;\n *name=SortAs;\n *superclass=str\n);\n*class(\n *id=gt;\n *name=GlossTerm;\n *superclass=str\n);\n*class(\n *id=a;\n *name=Acronym;\n *superclass=str\n);\n*class(\n *id=ab;\n *name=Abbrev;\n *superclass=str\n);\n*class(\n *id=gd;\n *name=GlossDef;\n *superclass=map;\n *assign=[\n [p];\n [p;sa]\n ]\n);\n*CLASS(\n *id=p;\n *name=para;\n *superclass=str\n);\n*class(\n *id=sa;\n *name=SeeAlso;\n *superclass=arr\n);\n*class(\n *id=gs;\n *name=GlossSee;\n *superclass=str\n);\n\ng(\n ?=[SGML;markup;language];\n t=example glossary;\n d(\n t=S;\n l(\n e(\n i=%0;\n s=%0;\n gt=Standard Generalized %1.s %2.s;\n a=%0;\n ab=ISO 8879\\:1986;\n gd=A meta-%1 %2, used to create %1 %2s such as DocBook.\n :[GML;XML];\n gs=%1\n )\n )\n )\n)"
136
+ },
137
+ {
138
+ "id": 16,
139
+ "input": "*class(*id=n;*name=name;*superclass=num);n=Elliott",
140
+ "expected_output": "Superclass of \"n\" is num - cannot assign value \"Elliott\"",
141
+ "tested_features": [
142
+ "errors"
143
+ ],
144
+ "minimised_modl": "*class(*id=n;*name=name;*superclass=num);n=Elliott"
145
+ },
146
+ {
147
+ "id": 17,
148
+ "input": "*class(*id=newstr;*superclass=str);*class(*id=a;*name=age;*superclass=anotherstr);a=10",
149
+ "expected_output": "Interpreter Error: Invalid superclass: anotherstr",
150
+ "tested_features": [
151
+ "errors"
152
+ ],
153
+ "minimised_modl": "*class(*id=newstr;*superclass=str);*class(*id=a;*name=age;*superclass=anotherstr);a=10"
154
+ },
155
+ {
156
+ "id": 18,
157
+ "input": "!a=1",
158
+ "expected_output": "Interpreter Error: Invalid key - \"!\" character not allowed: !a",
159
+ "tested_features": [
160
+ "errors"
161
+ ],
162
+ "minimised_modl": "!a=1"
163
+ },
164
+ {
165
+ "id": 19,
166
+ "input": "a!=1",
167
+ "expected_output": "Interpreter Error: Invalid key - \"!\" character not allowed: a!",
168
+ "tested_features": [
169
+ "errors"
170
+ ],
171
+ "minimised_modl": "a!=1"
172
+ },
173
+ {
174
+ "id": 20,
175
+ "input": "!a!=1",
176
+ "expected_output": "Interpreter Error: Invalid key - \"!\" character not allowed: !a!",
177
+ "tested_features": [
178
+ "errors"
179
+ ],
180
+ "minimised_modl": "!a!=1"
181
+ },
182
+ {
183
+ "id": 21,
184
+ "input": "!~a~!=1",
185
+ "expected_output": "Parser Error: line 1:1 token recognition error at: '~a'",
186
+ "tested_features": [
187
+ "errors"
188
+ ],
189
+ "minimised_modl": "!~a~!=1"
190
+ },
191
+ {
192
+ "id": 22,
193
+ "input": "£x=y",
194
+ "expected_output": "Interpreter Error: Invalid key - \"£\" character not allowed: £x",
195
+ "tested_features": [
196
+ "errors"
197
+ ],
198
+ "minimised_modl": "£x=y"
199
+ },
200
+ {
201
+ "id": 23,
202
+ "input": "$x=y",
203
+ "expected_output": "Interpreter Error: Invalid key - \"$\" character not allowed: $x",
204
+ "tested_features": [
205
+ "errors"
206
+ ],
207
+ "minimised_modl": "$x=y"
208
+ },
209
+ {
210
+ "id": 24,
211
+ "input": "@x=y",
212
+ "expected_output": "Interpreter Error: Invalid key - \"@\" character not allowed: @x",
213
+ "tested_features": [
214
+ "errors"
215
+ ],
216
+ "minimised_modl": "@x=y"
217
+ },
218
+ {
219
+ "id": 25,
220
+ "input": "-x=y",
221
+ "expected_output": "Interpreter Error: Invalid key - \"-\" character not allowed: -x",
222
+ "tested_features": [
223
+ "errors"
224
+ ],
225
+ "minimised_modl": "-x=y"
226
+ },
227
+ {
228
+ "id": 26,
229
+ "input": "+x=y",
230
+ "expected_output": "Interpreter Error: Invalid key - \"+\" character not allowed: +x",
231
+ "tested_features": [
232
+ "errors"
233
+ ],
234
+ "minimised_modl": "+x=y"
235
+ },
236
+ {
237
+ "id": 27,
238
+ "input": "'x'=y",
239
+ "expected_output": "Interpreter Error: Invalid key - \"'\" character not allowed: 'x'",
240
+ "tested_features": [
241
+ "errors"
242
+ ],
243
+ "minimised_modl": "'x'=y"
244
+ },
245
+ {
246
+ "id": 28,
247
+ "input": "'x?=y",
248
+ "expected_output": "Interpreter Error: Invalid key - \"'\" character not allowed: 'x?",
249
+ "tested_features": [
250
+ "errors"
251
+ ],
252
+ "minimised_modl": "'x?=y"
253
+ },
254
+ {
255
+ "id": 29,
256
+ "input": "a=1:2:3;;\nb=4:5:6",
257
+ "expected_output": "Parser Error: line 1:8 no viable alternative at input ';;'",
258
+ "tested_features": [
259
+ "errors"
260
+ ],
261
+ "minimised_modl": "a=1:2:3;;\nb=4:5:6"
262
+ },
263
+ {
264
+ "id": 30,
265
+ "input": "a=1:2:3;\n;\nb=4:5:6",
266
+ "expected_output": "Parser Error: line 2:0 no viable alternative at input ';;'",
267
+ "tested_features": [
268
+ "errors"
269
+ ],
270
+ "minimised_modl": "a=1:2:3;\n;\nb=4:5:6"
271
+ },
272
+ {
273
+ "id": 31,
274
+ "input": "a=1:2:3\n;\n;\nb=4:5:6",
275
+ "expected_output": "Parser Error: line 3:0 no viable alternative at input ';;'",
276
+ "tested_features": [
277
+ "errors"
278
+ ],
279
+ "minimised_modl": "a=1:2:3\n;\n;\nb=4:5:6"
280
+ },
281
+ {
282
+ "id": 32,
283
+ "input": "a=1:2:3\n;;\nb=4:5:6",
284
+ "expected_output": "Parser Error: line 2:1 no viable alternative at input ';;'",
285
+ "tested_features": [
286
+ "errors"
287
+ ],
288
+ "minimised_modl": "a=1:2:3\n;;\nb=4:5:6"
289
+ },
290
+ {
291
+ "id": 33,
292
+ "input": "a=1:2:3\n;\nb=4:5:6\n;\n;\n",
293
+ "expected_output": "Parser Error: line 5:0 no viable alternative at input ';;'",
294
+ "tested_features": [
295
+ "errors"
296
+ ],
297
+ "minimised_modl": "a=1:2:3\n;\nb=4:5:6\n;\n;\n"
298
+ },
299
+ {
300
+ "id": 34,
301
+ "input": "a=1:2:3\n;\nb=4:5:6\n;;\n",
302
+ "expected_output": "Parser Error: line 4:1 no viable alternative at input ';;'",
303
+ "tested_features": [
304
+ "errors"
305
+ ],
306
+ "minimised_modl": "a=1:2:3\n;\nb=4:5:6\n;;\n"
307
+ },
308
+ {
309
+ "id": 35,
310
+ "input": "*nonsense=1",
311
+ "expected_output": "Interpreter Error: Invalid keyword: *nonsense",
312
+ "tested_features": [
313
+ "errors"
314
+ ],
315
+ "minimised_modl": "*nonsense=1"
316
+ },
317
+ {
318
+ "id": 36,
319
+ "input": "?=1:2:3:4;_12%3=1",
320
+ "expected_output": "Interpreter Error: Invalid key - \"124\" - entirely numeric keys are not allowed: _124",
321
+ "tested_features": [
322
+ "errors"
323
+ ],
324
+ "minimised_modl": "?=1:2:3:4;_12%3=1"
325
+ },
326
+ {
327
+ "id": 37,
328
+ "input": "_123=1",
329
+ "expected_output": "Interpreter Error: Invalid key - \"123\" - entirely numeric keys are not allowed: _123",
330
+ "tested_features": [
331
+ "errors"
332
+ ],
333
+ "minimised_modl": "_123=1"
334
+ },
335
+ {
336
+ "id": 38,
337
+ "input": "_12*3=1",
338
+ "expected_output": "Interpreter Error: Invalid key - \"*\" character not allowed: _12*3",
339
+ "tested_features": [
340
+ "errors"
341
+ ],
342
+ "minimised_modl": "_12*3=1"
343
+ },
344
+ {
345
+ "id": 39,
346
+ "input": "_12!3=1",
347
+ "expected_output": "Interpreter Error: Invalid key - \"!\" character not allowed: _12!3",
348
+ "tested_features": [
349
+ "errors"
350
+ ],
351
+ "minimised_modl": "_12!3=1"
352
+ },
353
+ {
354
+ "id": 40,
355
+ "input": "_12@3=1",
356
+ "expected_output": "Interpreter Error: Invalid key - \"@\" character not allowed: _12@3",
357
+ "tested_features": [
358
+ "errors"
359
+ ],
360
+ "minimised_modl": "_12@3=1"
361
+ },
362
+ {
363
+ "id": 41,
364
+ "input": "_12#3=1",
365
+ "expected_output": "Interpreter Error: Invalid key - \"#\" character not allowed: _12#3",
366
+ "tested_features": [
367
+ "errors"
368
+ ],
369
+ "minimised_modl": "_12#3=1"
370
+ },
371
+ {
372
+ "id": 42,
373
+ "input": "_12$3=1",
374
+ "expected_output": "Interpreter Error: Invalid key - \"$\" character not allowed: _12$3",
375
+ "tested_features": [
376
+ "errors"
377
+ ],
378
+ "minimised_modl": "_12$3=1"
379
+ },
380
+ {
381
+ "id": 43,
382
+ "input": "_12^3=1",
383
+ "expected_output": "Interpreter Error: Invalid key - \"^\" character not allowed: _12^3",
384
+ "tested_features": [
385
+ "errors"
386
+ ],
387
+ "minimised_modl": "_12^3=1"
388
+ },
389
+ {
390
+ "id": 44,
391
+ "input": "_12&3=1",
392
+ "expected_output": "Interpreter Error: Invalid key - \"&\" character not allowed: _12&3",
393
+ "tested_features": [
394
+ "errors"
395
+ ],
396
+ "minimised_modl": "_12&3=1"
397
+ },
398
+ {
399
+ "id": 45,
400
+ "input": "_12(3=1",
401
+ "expected_output": "Parser Error: line 1:4 no viable alternative at input '_12(3'",
402
+ "tested_features": [
403
+ "errors"
404
+ ],
405
+ "minimised_modl": "_12(3=1"
406
+ },
407
+ {
408
+ "id": 46,
409
+ "input": "_12)3=1",
410
+ "expected_output": "Parser Error: line 1:3 no viable alternative at input '_12)'",
411
+ "tested_features": [
412
+ "errors"
413
+ ],
414
+ "minimised_modl": "_12)3=1"
415
+ },
416
+ {
417
+ "id": 47,
418
+ "input": "123=456",
419
+ "expected_output": "Parser Error: line 1:0 mismatched input '123' expecting {<EOF>, LBRAC, LSBRAC, QUOTED, STRING, '{'}",
420
+ "tested_features": [
421
+ "errors"
422
+ ],
423
+ "minimised_modl": "123=456"
424
+ },
425
+ {
426
+ "id": 48,
427
+ "input": "_test=(\n first=(\"v1\"=(one=(two=three)))\n);\n \ntesting = %test.first.v1.one.0",
428
+ "expected_output": "Interpreter Error: Found a map when expecting an array",
429
+ "tested_features": [
430
+ "errors"
431
+ ],
432
+ "minimised_modl": "_test=(\n first=(\"v1\"=(one=(two=three)))\n);\n \ntesting = %test.first.v1.one.0"
433
+ },
434
+ {
435
+ "id": 49,
436
+ "input": "_test=(\n first=(\"v1\"=(one=(two=three)))\n);\n \ntesting = %test.first.v1.0.two",
437
+ "expected_output": "Interpreter Error: Invalid object reference: \"%test.first.v1.0.two\"",
438
+ "tested_features": [
439
+ "errors"
440
+ ],
441
+ "minimised_modl": "_test=(\n first=(\"v1\"=(one=(two=three)))\n);\n \ntesting = %test.first.v1.0.two"
442
+ },
443
+ {
444
+ "id": 50,
445
+ "input": "_test=(\n first=(\"v1\"=(one=(two=three)))\n);\n \ntesting = %test.first.v1.0.0",
446
+ "expected_output": "Interpreter Error: Found a map when expecting an array",
447
+ "tested_features": [
448
+ "errors"
449
+ ],
450
+ "minimised_modl": "_test=(\n first=(\"v1\"=(one=(two=three)))\n);\n \ntesting = %test.first.v1.0.0"
451
+ },
452
+ {
453
+ "id": 51,
454
+ "input": "_test=(\n numbers=(\"one\"=1)\n);\n\ntesting = this is a string that includes a reference with a letter s after it %test.numbers.ones",
455
+ "expected_output": "Interpreter Error: Invalid object reference: \"this is a string that includes a reference with a letter s after it %test.numbers.ones\"",
456
+ "tested_features": [
457
+ "errors"
458
+ ],
459
+ "minimised_modl": "_test=(\n numbers=(\"one\"=1)\n);\n\ntesting = this is a string that includes a reference with a letter s after it %test.numbers.ones"
460
+ },
461
+ {
462
+ "id": 52,
463
+ "input": "true=test",
464
+ "expected_output": "Parser Error: line 1:0 mismatched input 'true' expecting {<EOF>, LBRAC, LSBRAC, QUOTED, STRING, '{'}",
465
+ "tested_features": [
466
+ "errors"
467
+ ],
468
+ "minimised_modl": "true=test"
469
+ },
470
+ {
471
+ "id": 53,
472
+ "input": "false=test",
473
+ "expected_output": "Parser Error: line 1:0 mismatched input 'false' expecting {<EOF>, LBRAC, LSBRAC, QUOTED, STRING, '{'}",
474
+ "tested_features": [
475
+ "errors"
476
+ ],
477
+ "minimised_modl": "false=test"
478
+ },
479
+ {
480
+ "id": 54,
481
+ "input": "null=test",
482
+ "expected_output": "Parser Error: line 1:0 mismatched input 'null' expecting {<EOF>, LBRAC, LSBRAC, QUOTED, STRING, '{'}",
483
+ "tested_features": [
484
+ "errors"
485
+ ],
486
+ "minimised_modl": "null=test"
487
+ },
488
+ {
489
+ "id": 55,
490
+ "input": "*class(*id=arr)",
491
+ "expected_output": "Interpreter Error: Reserved class id - cannot redefine: arr",
492
+ "tested_features": [
493
+ "errors"
494
+ ],
495
+ "minimised_modl": "*class(*id=arr)"
496
+ },
497
+ {
498
+ "id": 56,
499
+ "input": "*class(*id=num)",
500
+ "expected_output": "Interpreter Error: Reserved class id - cannot redefine: num",
501
+ "tested_features": [
502
+ "errors"
503
+ ],
504
+ "minimised_modl": "*class(*id=num)"
505
+ },
506
+ {
507
+ "id": 57,
508
+ "input": "*class(*id=map)",
509
+ "expected_output": "Interpreter Error: Reserved class id - cannot redefine: map",
510
+ "tested_features": [
511
+ "errors"
512
+ ],
513
+ "minimised_modl": "*class(*id=map)"
514
+ },
515
+ {
516
+ "id": 58,
517
+ "input": "*class(*id=str)",
518
+ "expected_output": "Interpreter Error: Reserved class id - cannot redefine: str",
519
+ "tested_features": [
520
+ "errors"
521
+ ],
522
+ "minimised_modl": "*class(*id=str)"
523
+ },
524
+ {
525
+ "id": 59,
526
+ "input": "*class(*name=arr)",
527
+ "expected_output": "Interpreter Error: Reserved class name - cannot redefine: arr",
528
+ "tested_features": [
529
+ "errors"
530
+ ],
531
+ "minimised_modl": "*class(*name=arr)"
532
+ },
533
+ {
534
+ "id": 60,
535
+ "input": "*class(*name=num)",
536
+ "expected_output": "Interpreter Error: Reserved class name - cannot redefine: num",
537
+ "tested_features": [
538
+ "errors"
539
+ ],
540
+ "minimised_modl": "*class(*name=num)"
541
+ },
542
+ {
543
+ "id": 61,
544
+ "input": "*class(*name=map)",
545
+ "expected_output": "Interpreter Error: Reserved class name - cannot redefine: map",
546
+ "tested_features": [
547
+ "errors"
548
+ ],
549
+ "minimised_modl": "*class(*name=map)"
550
+ },
551
+ {
552
+ "id": 62,
553
+ "input": "*class(*name=str)",
554
+ "expected_output": "Interpreter Error: Reserved class name - cannot redefine: str",
555
+ "tested_features": [
556
+ "errors"
557
+ ],
558
+ "minimised_modl": "*class(*name=str)"
559
+ },
560
+ {
561
+ "id": 63,
562
+ "input": "IMMUTABLE=true;IMMUTABLE=false",
563
+ "expected_output": "Interpreter Error: Already defined IMMUTABLE as final.",
564
+ "tested_features": [
565
+ "errors"
566
+ ],
567
+ "minimised_modl": "IMMUTABLE=true;IMMUTABLE=false"
568
+ },
569
+ {
570
+ "id": 64,
571
+ "input": "*VERSION=test",
572
+ "expected_output": "Interpreter Error: Invalid MODL version: test",
573
+ "tested_features": [
574
+ "errors"
575
+ ],
576
+ "minimised_modl": "*VERSION=test"
577
+ },
578
+ {
579
+ "id": 65,
580
+ "input": "*V=test",
581
+ "expected_output": "Interpreter Error: Invalid MODL version: test",
582
+ "tested_features": [
583
+ "errors"
584
+ ],
585
+ "minimised_modl": "*V=test"
586
+ },
587
+ {
588
+ "id": 66,
589
+ "input": "*VERSION=0",
590
+ "expected_output": "Interpreter Error: Invalid MODL version: 0",
591
+ "tested_features": [
592
+ "errors"
593
+ ],
594
+ "minimised_modl": "*VERSION=0"
595
+ },
596
+ {
597
+ "id": 67,
598
+ "input": "*VERSION=0.1",
599
+ "expected_output": "Interpreter Error: Invalid MODL version: 0.1",
600
+ "tested_features": [
601
+ "errors"
602
+ ],
603
+ "minimised_modl": "*VERSION=0.1"
604
+ },
605
+ {
606
+ "id": 68,
607
+ "input": "a=b;*VERSION=1",
608
+ "expected_output": "Interpreter Error: MODL version should be on the first line if specified.",
609
+ "tested_features": [
610
+ "errors"
611
+ ],
612
+ "minimised_modl": "a=b;*VERSION=1"
613
+ },
614
+ {
615
+ "id": 69,
616
+ "input": "*class(*id=a;*name=alpha;*superclass=str);a=null",
617
+ "expected_output": "Interpreter Error: Cannot convert null value to string.",
618
+ "tested_features": [
619
+ "errors"
620
+ ],
621
+ "minimised_modl": "*class(*id=a;*name=alpha;*superclass=str);a=null"
622
+ },
623
+ {
624
+ "id": 70,
625
+ "input": "*class(*id=a;*name=alpha;*superclass=num);a=null",
626
+ "expected_output": "Superclass of \"a\" is num - cannot assign value \"\"",
627
+ "tested_features": [
628
+ "errors"
629
+ ],
630
+ "minimised_modl": "*class(*id=a;*name=alpha;*superclass=num);a=null"
631
+ },
632
+ {
633
+ "id": 71,
634
+ "input": "*class(*id=a;*name=alpha;*superclass=num);a=x",
635
+ "expected_output": "Superclass of \"a\" is num - cannot assign value \"x\"",
636
+ "tested_features": [
637
+ "errors"
638
+ ],
639
+ "minimised_modl": "*class(*id=a;*name=alpha;*superclass=num);a=x"
640
+ },
641
+ {
642
+ "id": 72,
643
+ "input": "*class(*id=a;*name=alpha;*superclass=num);a=null",
644
+ "expected_output": "Superclass of \"a\" is num - cannot assign value \"\"",
645
+ "tested_features": [
646
+ "errors"
647
+ ],
648
+ "minimised_modl": "*class(*id=a;*name=alpha;*superclass=num);a=null"
649
+ },
650
+ {
651
+ "id": 73,
652
+ "input": "*class(*id=a;*name=alpha;*superclass=map);a=[1;2;3]",
653
+ "expected_output": "Interpreter Error: Cannot convert array to map: [1, 2, 3]",
654
+ "tested_features": [
655
+ "errors"
656
+ ],
657
+ "minimised_modl": "*class(*id=a;*name=alpha;*superclass=map);a=[1;2;3]"
658
+ },
659
+ {
660
+ "id": 74,
661
+ "input": "*class(*id=a;*name=alpha;*superclass=arr);a=(c=d)",
662
+ "expected_output": "Interpreter Error: Cannot convert map to array: {\"c\"=>\"d\"}",
663
+ "tested_features": [
664
+ "errors"
665
+ ],
666
+ "minimised_modl": "*class(*id=a;*name=alpha;*superclass=arr);a=(c=d)"
667
+ },
668
+ {
669
+ "id": 75,
670
+ "input": "*L=grammar_tests/test_import_dir/nested_import1.txt;files=%*load",
671
+ "expected_output": "Interpreter Error: Cannot load multiple files after *LOAD instruction",
672
+ "tested_features": [
673
+ "errors"
674
+ ],
675
+ "minimised_modl": "*L=grammar_tests/test_import_dir/nested_import1.txt;files=%*load"
676
+ }
677
+ ]
@@ -39,31 +39,35 @@ module MODL
39
39
  # Consume the elements of the transform spec until there are none left.
40
40
  transform = @transform
41
41
  while transform && transform.length > 0
42
- if transform.start_with? 'replace'
42
+ if transform.start_with?('replace<') || transform.start_with?('r<')
43
43
  close_bracket = transform.index('>')
44
44
  m = Sutil.head(transform, close_bracket + 1).sub!('replace', 'r')
45
45
  str = StandardMethods.run_method(m, str)
46
46
  # Consume the subst clause
47
47
  close_bracket = transform.index('>')
48
48
  transform = Sutil.tail(transform, close_bracket + 2)
49
- elsif transform.start_with? 'trim'
49
+ elsif transform.start_with?('trim') || transform.start_with?('t<')
50
50
  close_bracket = transform.index('>')
51
51
  m = Sutil.head(transform, close_bracket + 1).sub!('trim', 't')
52
52
  str = StandardMethods.run_method(m, str)
53
53
  # Consume the trunc clause
54
54
  close_bracket = transform.index('>')
55
55
  transform = Sutil.tail(transform, close_bracket + 2)
56
- elsif transform.start_with? 'initcap'
57
- str = str.split.map(&:capitalize) * ' '
58
- transform = Sutil.tail(transform, 8)
59
- elsif transform.start_with? 'upcase'
60
- raise InterpreterError, 'NOT IMPLEMENTED'
61
- elsif transform.start_with? 'downcase'
62
- raise InterpreterError, 'NOT IMPLEMENTED'
63
- elsif transform.start_with? 'sentence'
64
- raise InterpreterError, 'NOT IMPLEMENTED'
65
- elsif transform.start_with? 'urlencode'
66
- raise InterpreterError, 'NOT IMPLEMENTED'
56
+ elsif transform.start_with?('initcap') || transform.start_with?('i')
57
+ str = StandardMethods.run_method('i', str)
58
+ transform = Sutil.after(transform, '.')
59
+ elsif transform.start_with?('upcase') || transform.start_with?('u')
60
+ str = StandardMethods.run_method('u', str)
61
+ transform = Sutil.after(transform, '.')
62
+ elsif transform.start_with?('downcase') || transform.start_with?('d')
63
+ str = StandardMethods.run_method('d', str)
64
+ transform = Sutil.after(transform, '.')
65
+ elsif transform.start_with?('sentence') || transform.start_with?('s')
66
+ str = StandardMethods.run_method('s', str)
67
+ transform = Sutil.after(transform, '.')
68
+ elsif transform.start_with?('urlencode') || transform.start_with?('e')
69
+ str = StandardMethods.run_method('e', str)
70
+ transform = Sutil.after(transform, '.')
67
71
  else
68
72
  raise InterpreterError, 'NOT IMPLEMENTED'
69
73
  end
@@ -99,8 +103,8 @@ module MODL
99
103
 
100
104
  raise InterpreterError, 'Missing id for method' if mthd.id.nil?
101
105
  raise InterpreterError, 'Missing name for method' if mthd.name.nil?
102
- raise InterpreterError, 'Duplicate method name: ' + mthd.name if global.has_user_method?(mthd.name)
103
- raise InterpreterError, 'Duplicate method id: ' + mthd.id if global.has_user_method?(mthd.id)
106
+ raise InterpreterError, 'Duplicate method name or id: ' + mthd.name if global.has_user_method?(mthd.name)
107
+ raise InterpreterError, 'Duplicate method name or id: ' + mthd.id if global.has_user_method?(mthd.id)
104
108
 
105
109
  # store the methods by id and name to make them easier to find later
106
110
  global.user_method_id(mthd.id, mthd)
@@ -304,6 +304,7 @@ module MODL
304
304
  if @key.include?('%') || @key.include?('`')
305
305
  @key, new_value = RefProcessor.deref @key, @global
306
306
  unless @key.is_a?(String)
307
+ raise InterpreterError, "Error: '" + @key.to_s + "' is an invalid key." if new_value.nil?
307
308
  @key = new_value.is_a?(String) ? new_value : new_value.text
308
309
  end
309
310
  raise InterpreterError, "Error: '" + @key.to_s + "' should de-ref to a string." unless key.is_a?(String)
@@ -349,7 +350,7 @@ module MODL
349
350
  when 'version'
350
351
  extract_value
351
352
 
352
- raise InterpreterError, 'Invalid MODL version: nil' if @valueItem.value.primitive.number.nil?
353
+ raise InterpreterError, 'Invalid MODL version: ' + @valueItem.value.primitive.text if @valueItem.value.primitive.number.nil?
353
354
  raise InterpreterError, 'Invalid MODL version: ' + @valueItem.value.primitive.number.num.to_s if @valueItem.value.primitive.number.num.is_a? Float
354
355
  raise InterpreterError, 'Invalid MODL version: ' + @valueItem.value.primitive.number.num.to_s if @valueItem.value.primitive.number.num.zero?
355
356
  raise InterpreterError, 'MODL version should be on the first line if specified.' if @global.has_pairs?
@@ -376,12 +377,14 @@ module MODL
376
377
  if @key.start_with? '_'
377
378
  k = Sutil.tail(@key)
378
379
  existing = @global.pair(k)
379
- raise InterpreterError, 'Already defined ' + k + ' as final.' if existing&.final
380
+ raise InterpreterError, 'Already defined ' + k + ' as final.' if existing&.final && @type != "import"
381
+ raise InterpreterError, 'Cannot load multiple files after *LOAD instruction' if existing&.final && @type == "import"
380
382
 
381
383
  @global.pair(k, self)
382
384
  end
383
385
  existing = @global.pair(@key)
384
- raise InterpreterError, 'Already defined ' + @key + ' as final.' if existing&.final
386
+ raise InterpreterError, 'Already defined ' + @key + ' as final.' if existing&.final && @type != "import"
387
+ raise InterpreterError, 'Cannot load multiple files after *LOAD instruction' if existing&.final && @type == "import"
385
388
 
386
389
  @global.pair(@key, self)
387
390
  end
@@ -61,7 +61,7 @@ module MODL
61
61
 
62
62
  def self.check_modl_version(global, e)
63
63
  if global.syntax_version > global.interpreter_syntax_version
64
- raise InterpreterError, e.message + ' - MODL Version ' +
64
+ raise InterpreterError, 'Interpreter Error: ' + e.message + ' - MODL Version ' +
65
65
  global.interpreter_syntax_version.to_s +
66
66
  ' interpreter cannot process this MODL Version ' +
67
67
  global.syntax_version.to_s + ' file.'
@@ -110,7 +110,7 @@ module MODL
110
110
  end
111
111
  else
112
112
  new_value = nil
113
- raise InterpreterError, 'Cannot resolve reference in : "' + str + '"' if str == original
113
+ raise InterpreterError, 'Invalid object reference: "' + str + '"' if str == original
114
114
  end
115
115
  end
116
116
  return new_value, str
@@ -142,7 +142,12 @@ module MODL
142
142
  result = if n.to_s == p
143
143
  # Numeric ref
144
144
  if !result.nil? && !result.respond_to?(:find_property)
145
- raise InterpreterError, 'Invalid object reference: ' + degraved
145
+ if !result.is_a?(Parsed::ParsedArrayValueItem)
146
+ t = result.class
147
+ t = 'map' if result.is_a? Parsed::ParsedMapItem
148
+ raise InterpreterError, 'Found a ' + t + ' when expecting an array'
149
+ end
150
+ raise InterpreterError, 'Invalid object reference: "' + degraved + '"'
146
151
  end
147
152
  result.nil? ? global.index_value(n, degraved) : result.find_property(n)
148
153
  else
@@ -198,7 +203,7 @@ module MODL
198
203
  nil
199
204
  else
200
205
  if !result.nil? && !result.respond_to?(:find_property)
201
- raise InterpreterError, 'Invalid object reference: ' + degraved
206
+ raise InterpreterError, 'Invalid object reference: "' + degraved + '"'
202
207
  end
203
208
  if result.nil?
204
209
  unless ref.start_with?('%`')
@@ -29,7 +29,7 @@ module MODL::Parser
29
29
  include Singleton
30
30
 
31
31
  def syntax_error(_recognizer, _offending_symbol, _line, _char_position_in_line, _msg, _e)
32
- raise Antlr4::Runtime::ParseCancellationException, 'line' + _line.to_s + ':' + _char_position_in_line.to_s + ' ' + _msg.to_s
32
+ raise Antlr4::Runtime::ParseCancellationException, 'line ' + _line.to_s + ':' + _char_position_in_line.to_s + ' ' + _msg.to_s
33
33
  end
34
34
 
35
35
  def report_ambiguity(_recognizer, _dfa, _start_index, _stop_index, _exact, _ambig_ilts, _configs)
@@ -24,6 +24,6 @@
24
24
 
25
25
  module MODL
26
26
  module Parser
27
- VERSION = "0.3.14"
27
+ VERSION = "0.3.15"
28
28
  end
29
29
  end
data/modl.gemspec CHANGED
@@ -23,9 +23,8 @@ Gem::Specification.new do |spec|
23
23
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
24
  spec.require_paths = ['lib']
25
25
 
26
- spec.add_development_dependency 'antlr4-runtime', '>= 0.0.1'
27
26
  spec.add_development_dependency 'rake', '~> 10.0'
28
27
  spec.add_development_dependency 'rspec', '~> 3.0'
29
- spec.add_runtime_dependency 'antlr4-runtime', '= 0.2.7'
28
+ spec.add_runtime_dependency 'antlr4-runtime', '= 0.2.8'
30
29
  spec.add_runtime_dependency 'punycode4r', '>= 0.2.0'
31
30
  end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: modl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.14
4
+ version: 0.3.15
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-07-03 00:00:00.000000000 Z
11
+ date: 2019-07-05 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: antlr4-runtime
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 0.0.1
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: 0.0.1
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: rake
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -58,14 +44,14 @@ dependencies:
58
44
  requirements:
59
45
  - - '='
60
46
  - !ruby/object:Gem::Version
61
- version: 0.2.7
47
+ version: 0.2.8
62
48
  type: :runtime
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
52
  - - '='
67
53
  - !ruby/object:Gem::Version
68
- version: 0.2.7
54
+ version: 0.2.8
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: punycode4r
71
57
  requirement: !ruby/object:Gem::Requirement