edn-abnf 0.0.7 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/edn-abnf.gemspec +1 -1
- data/lib/parser/edngrammar.rb +481 -472
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1e4580b57714274ff5eb197811b5584c38537e43bf95b7a0add51171ed108db5
|
4
|
+
data.tar.gz: fc0240e0e1ef858a1f341c14e28bbba97f7108fef336f77e689a9369dc6aa5ea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ec376dbe72f63df3dcb2f34509e434b1d8f644369ac7a4e8e957072324b75146e50f4dd035669ec29c3f8199d2ae39a774751d1ac1657a7eccc36a801a483fb5
|
7
|
+
data.tar.gz: f603be649a4410de915c88109a7d3f5250868cb8ba02d4f2ca059358cdfd9a9bb93e76127c0b39344a3fceed326515d47b3dbc006821467645bef17551a18e0c
|
data/edn-abnf.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "edn-abnf"
|
3
|
-
s.version = "0.0.
|
3
|
+
s.version = "0.0.9"
|
4
4
|
s.summary = "CDDL (Concise Data Definition Language) converters and miscellaneous tools"
|
5
5
|
s.description = %q{edn-abnf implements converters and miscellaneous tools for CBOR EDN's ABNF}
|
6
6
|
s.author = "Carsten Bormann"
|
data/lib/parser/edngrammar.rb
CHANGED
@@ -187,52 +187,28 @@ module EDNGRAMMAR
|
|
187
187
|
r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
|
188
188
|
r0 = r3
|
189
189
|
else
|
190
|
-
r4 =
|
190
|
+
r4 = _nt_number
|
191
191
|
if r4
|
192
192
|
r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
|
193
193
|
r0 = r4
|
194
194
|
else
|
195
|
-
r5 =
|
195
|
+
r5 = _nt_simple
|
196
196
|
if r5
|
197
197
|
r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
|
198
198
|
r0 = r5
|
199
199
|
else
|
200
|
-
r6 =
|
200
|
+
r6 = _nt_string
|
201
201
|
if r6
|
202
202
|
r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true
|
203
203
|
r0 = r6
|
204
204
|
else
|
205
|
-
r7 =
|
205
|
+
r7 = _nt_streamstring
|
206
206
|
if r7
|
207
207
|
r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
|
208
208
|
r0 = r7
|
209
209
|
else
|
210
|
-
|
211
|
-
|
212
|
-
r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true
|
213
|
-
r0 = r8
|
214
|
-
else
|
215
|
-
r9 = _nt_bstr
|
216
|
-
if r9
|
217
|
-
r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true
|
218
|
-
r0 = r9
|
219
|
-
else
|
220
|
-
r10 = _nt_embedded
|
221
|
-
if r10
|
222
|
-
r10 = SyntaxNode.new(input, (index-1)...index) if r10 == true
|
223
|
-
r0 = r10
|
224
|
-
else
|
225
|
-
r11 = _nt_streamstring
|
226
|
-
if r11
|
227
|
-
r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true
|
228
|
-
r0 = r11
|
229
|
-
else
|
230
|
-
@index = i0
|
231
|
-
r0 = nil
|
232
|
-
end
|
233
|
-
end
|
234
|
-
end
|
235
|
-
end
|
210
|
+
@index = i0
|
211
|
+
r0 = nil
|
236
212
|
end
|
237
213
|
end
|
238
214
|
end
|
@@ -246,6 +222,134 @@ module EDNGRAMMAR
|
|
246
222
|
r0
|
247
223
|
end
|
248
224
|
|
225
|
+
module Number0
|
226
|
+
def spec
|
227
|
+
elements[1]
|
228
|
+
end
|
229
|
+
end
|
230
|
+
|
231
|
+
module Number1
|
232
|
+
def ast
|
233
|
+
if ei = spec.text_value[1..-1]
|
234
|
+
warn "*** ignoring unimplemented encoding indicator #{ei.inspect} for #{elements[0].text_value}"
|
235
|
+
end
|
236
|
+
elements[0].ast
|
237
|
+
end
|
238
|
+
end
|
239
|
+
|
240
|
+
def _nt_number
|
241
|
+
start_index = index
|
242
|
+
if node_cache[:number].has_key?(index)
|
243
|
+
cached = node_cache[:number][index]
|
244
|
+
if cached
|
245
|
+
node_cache[:number][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
246
|
+
@index = cached.interval.end
|
247
|
+
end
|
248
|
+
return cached
|
249
|
+
end
|
250
|
+
|
251
|
+
i0, s0 = index, []
|
252
|
+
i1 = index
|
253
|
+
r2 = _nt_basenumber
|
254
|
+
if r2
|
255
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
256
|
+
r1 = r2
|
257
|
+
else
|
258
|
+
r3 = _nt_decnumber
|
259
|
+
if r3
|
260
|
+
r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
|
261
|
+
r1 = r3
|
262
|
+
else
|
263
|
+
r4 = _nt_infin
|
264
|
+
if r4
|
265
|
+
r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
|
266
|
+
r1 = r4
|
267
|
+
else
|
268
|
+
@index = i1
|
269
|
+
r1 = nil
|
270
|
+
end
|
271
|
+
end
|
272
|
+
end
|
273
|
+
s0 << r1
|
274
|
+
if r1
|
275
|
+
r5 = _nt_spec
|
276
|
+
s0 << r5
|
277
|
+
end
|
278
|
+
if s0.last
|
279
|
+
r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
|
280
|
+
r0.extend(Number0)
|
281
|
+
r0.extend(Number1)
|
282
|
+
else
|
283
|
+
@index = i0
|
284
|
+
r0 = nil
|
285
|
+
end
|
286
|
+
|
287
|
+
node_cache[:number][start_index] = r0
|
288
|
+
|
289
|
+
r0
|
290
|
+
end
|
291
|
+
|
292
|
+
module String0
|
293
|
+
def spec
|
294
|
+
elements[1]
|
295
|
+
end
|
296
|
+
end
|
297
|
+
|
298
|
+
module String1
|
299
|
+
def ast
|
300
|
+
if ei = spec.text_value[1..-1]
|
301
|
+
warn "*** ignoring unimplemented encoding indicator #{ei.inspect} for #{elements[0].text_value}"
|
302
|
+
end
|
303
|
+
elements[0].ast
|
304
|
+
end
|
305
|
+
end
|
306
|
+
|
307
|
+
def _nt_string
|
308
|
+
start_index = index
|
309
|
+
if node_cache[:string].has_key?(index)
|
310
|
+
cached = node_cache[:string][index]
|
311
|
+
if cached
|
312
|
+
node_cache[:string][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
313
|
+
@index = cached.interval.end
|
314
|
+
end
|
315
|
+
return cached
|
316
|
+
end
|
317
|
+
|
318
|
+
i0, s0 = index, []
|
319
|
+
i1 = index
|
320
|
+
r2 = _nt_tstr
|
321
|
+
if r2
|
322
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
323
|
+
r1 = r2
|
324
|
+
else
|
325
|
+
r3 = _nt_bstr
|
326
|
+
if r3
|
327
|
+
r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
|
328
|
+
r1 = r3
|
329
|
+
else
|
330
|
+
@index = i1
|
331
|
+
r1 = nil
|
332
|
+
end
|
333
|
+
end
|
334
|
+
s0 << r1
|
335
|
+
if r1
|
336
|
+
r4 = _nt_spec
|
337
|
+
s0 << r4
|
338
|
+
end
|
339
|
+
if s0.last
|
340
|
+
r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
|
341
|
+
r0.extend(String0)
|
342
|
+
r0.extend(String1)
|
343
|
+
else
|
344
|
+
@index = i0
|
345
|
+
r0 = nil
|
346
|
+
end
|
347
|
+
|
348
|
+
node_cache[:string][start_index] = r0
|
349
|
+
|
350
|
+
r0
|
351
|
+
end
|
352
|
+
|
249
353
|
def _nt_sign
|
250
354
|
start_index = index
|
251
355
|
if node_cache[:sign].has_key?(index)
|
@@ -1026,22 +1130,29 @@ module EDNGRAMMAR
|
|
1026
1130
|
elements[0]
|
1027
1131
|
end
|
1028
1132
|
|
1133
|
+
def spec
|
1134
|
+
elements[1]
|
1135
|
+
end
|
1136
|
+
|
1029
1137
|
def S1
|
1030
|
-
elements[
|
1138
|
+
elements[3]
|
1031
1139
|
end
|
1032
1140
|
|
1033
1141
|
def item
|
1034
|
-
elements[
|
1142
|
+
elements[4]
|
1035
1143
|
end
|
1036
1144
|
|
1037
1145
|
def S2
|
1038
|
-
elements[
|
1146
|
+
elements[5]
|
1039
1147
|
end
|
1040
1148
|
|
1041
1149
|
end
|
1042
1150
|
|
1043
1151
|
module Tagged1
|
1044
1152
|
def ast
|
1153
|
+
if ei = spec.text_value[1..-1]
|
1154
|
+
warn "*** ignoring unimplemented encoding indicator #{ei.inspect} after tag number #{uint.text_value}"
|
1155
|
+
end
|
1045
1156
|
CBOR::Tagged.new(uint.text_value.to_i, item.ast)
|
1046
1157
|
end
|
1047
1158
|
end
|
@@ -1061,32 +1172,36 @@ module EDNGRAMMAR
|
|
1061
1172
|
r1 = _nt_uint
|
1062
1173
|
s0 << r1
|
1063
1174
|
if r1
|
1064
|
-
|
1065
|
-
r2 = true
|
1066
|
-
@index += match_len
|
1067
|
-
else
|
1068
|
-
terminal_parse_failure('"("')
|
1069
|
-
r2 = nil
|
1070
|
-
end
|
1175
|
+
r2 = _nt_spec
|
1071
1176
|
s0 << r2
|
1072
1177
|
if r2
|
1073
|
-
|
1178
|
+
if (match_len = has_terminal?("(", false, index))
|
1179
|
+
r3 = true
|
1180
|
+
@index += match_len
|
1181
|
+
else
|
1182
|
+
terminal_parse_failure('"("')
|
1183
|
+
r3 = nil
|
1184
|
+
end
|
1074
1185
|
s0 << r3
|
1075
1186
|
if r3
|
1076
|
-
r4 =
|
1187
|
+
r4 = _nt_S
|
1077
1188
|
s0 << r4
|
1078
1189
|
if r4
|
1079
|
-
r5 =
|
1190
|
+
r5 = _nt_item
|
1080
1191
|
s0 << r5
|
1081
1192
|
if r5
|
1082
|
-
|
1083
|
-
r6 = true
|
1084
|
-
@index += match_len
|
1085
|
-
else
|
1086
|
-
terminal_parse_failure('")"')
|
1087
|
-
r6 = nil
|
1088
|
-
end
|
1193
|
+
r6 = _nt_S
|
1089
1194
|
s0 << r6
|
1195
|
+
if r6
|
1196
|
+
if (match_len = has_terminal?(")", false, index))
|
1197
|
+
r7 = true
|
1198
|
+
@index += match_len
|
1199
|
+
else
|
1200
|
+
terminal_parse_failure('")"')
|
1201
|
+
r7 = nil
|
1202
|
+
end
|
1203
|
+
s0 << r7
|
1204
|
+
end
|
1090
1205
|
end
|
1091
1206
|
end
|
1092
1207
|
end
|
@@ -1298,8 +1413,14 @@ module EDNGRAMMAR
|
|
1298
1413
|
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
1299
1414
|
r0 = r2
|
1300
1415
|
else
|
1301
|
-
|
1302
|
-
|
1416
|
+
r3 = _nt_embedded
|
1417
|
+
if r3
|
1418
|
+
r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
|
1419
|
+
r0 = r3
|
1420
|
+
else
|
1421
|
+
@index = i0
|
1422
|
+
r0 = nil
|
1423
|
+
end
|
1303
1424
|
end
|
1304
1425
|
end
|
1305
1426
|
|
@@ -1468,17 +1589,26 @@ module EDNGRAMMAR
|
|
1468
1589
|
elements[1]
|
1469
1590
|
end
|
1470
1591
|
|
1592
|
+
def S
|
1593
|
+
elements[2]
|
1594
|
+
end
|
1595
|
+
|
1471
1596
|
end
|
1472
1597
|
|
1473
1598
|
module Array3
|
1474
1599
|
def ast
|
1475
|
-
r = if e = elements[
|
1600
|
+
r = if e = elements[3].elements
|
1476
1601
|
[e[0].ast] + e[2].elements.map {|x| x.item.ast }
|
1477
1602
|
else
|
1478
1603
|
[]
|
1479
1604
|
end
|
1480
|
-
if spec.
|
1481
|
-
|
1605
|
+
if ei = spec.text_value[1..-1]
|
1606
|
+
# warn "** ei #{ei.inspect}"
|
1607
|
+
if ei == ""
|
1608
|
+
r.cbor_stream!
|
1609
|
+
else
|
1610
|
+
warn "*** ignoring unimplemented encoding indicator #{ei.inspect} after ["
|
1611
|
+
end
|
1482
1612
|
end
|
1483
1613
|
r
|
1484
1614
|
end
|
@@ -1508,79 +1638,83 @@ module EDNGRAMMAR
|
|
1508
1638
|
r2 = _nt_spec
|
1509
1639
|
s0 << r2
|
1510
1640
|
if r2
|
1511
|
-
|
1512
|
-
|
1513
|
-
|
1514
|
-
|
1515
|
-
r6 =
|
1516
|
-
|
1641
|
+
r3 = _nt_S
|
1642
|
+
s0 << r3
|
1643
|
+
if r3
|
1644
|
+
i5, s5 = index, []
|
1645
|
+
r6 = _nt_item
|
1646
|
+
s5 << r6
|
1517
1647
|
if r6
|
1518
|
-
|
1519
|
-
|
1520
|
-
|
1521
|
-
|
1522
|
-
|
1523
|
-
|
1524
|
-
|
1525
|
-
|
1526
|
-
|
1527
|
-
|
1528
|
-
|
1529
|
-
|
1530
|
-
|
1531
|
-
|
1648
|
+
r7 = _nt_S
|
1649
|
+
s5 << r7
|
1650
|
+
if r7
|
1651
|
+
s8, i8 = [], index
|
1652
|
+
loop do
|
1653
|
+
i9, s9 = index, []
|
1654
|
+
if (match_len = has_terminal?(",", false, index))
|
1655
|
+
r10 = true
|
1656
|
+
@index += match_len
|
1657
|
+
else
|
1658
|
+
terminal_parse_failure('","')
|
1659
|
+
r10 = nil
|
1660
|
+
end
|
1661
|
+
s9 << r10
|
1532
1662
|
if r10
|
1533
|
-
r11 =
|
1534
|
-
|
1663
|
+
r11 = _nt_S
|
1664
|
+
s9 << r11
|
1535
1665
|
if r11
|
1536
|
-
r12 =
|
1537
|
-
|
1666
|
+
r12 = _nt_item
|
1667
|
+
s9 << r12
|
1668
|
+
if r12
|
1669
|
+
r13 = _nt_S
|
1670
|
+
s9 << r13
|
1671
|
+
end
|
1538
1672
|
end
|
1539
1673
|
end
|
1674
|
+
if s9.last
|
1675
|
+
r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
|
1676
|
+
r9.extend(Array0)
|
1677
|
+
else
|
1678
|
+
@index = i9
|
1679
|
+
r9 = nil
|
1680
|
+
end
|
1681
|
+
if r9
|
1682
|
+
s8 << r9
|
1683
|
+
else
|
1684
|
+
break
|
1685
|
+
end
|
1540
1686
|
end
|
1541
|
-
|
1542
|
-
|
1543
|
-
r8.extend(Array0)
|
1544
|
-
else
|
1545
|
-
@index = i8
|
1546
|
-
r8 = nil
|
1547
|
-
end
|
1687
|
+
r8 = instantiate_node(SyntaxNode,input, i8...index, s8)
|
1688
|
+
s5 << r8
|
1548
1689
|
if r8
|
1549
|
-
|
1550
|
-
|
1551
|
-
break
|
1690
|
+
r14 = _nt_OC
|
1691
|
+
s5 << r14
|
1552
1692
|
end
|
1553
1693
|
end
|
1554
|
-
r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
|
1555
|
-
s4 << r7
|
1556
|
-
if r7
|
1557
|
-
r13 = _nt_OC
|
1558
|
-
s4 << r13
|
1559
|
-
end
|
1560
1694
|
end
|
1561
|
-
|
1562
|
-
|
1563
|
-
|
1564
|
-
r4.extend(Array1)
|
1565
|
-
else
|
1566
|
-
@index = i4
|
1567
|
-
r4 = nil
|
1568
|
-
end
|
1569
|
-
if r4
|
1570
|
-
r3 = r4
|
1571
|
-
else
|
1572
|
-
r3 = instantiate_node(SyntaxNode,input, index...index)
|
1573
|
-
end
|
1574
|
-
s0 << r3
|
1575
|
-
if r3
|
1576
|
-
if (match_len = has_terminal?("]", false, index))
|
1577
|
-
r14 = true
|
1578
|
-
@index += match_len
|
1695
|
+
if s5.last
|
1696
|
+
r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
|
1697
|
+
r5.extend(Array1)
|
1579
1698
|
else
|
1580
|
-
|
1581
|
-
|
1699
|
+
@index = i5
|
1700
|
+
r5 = nil
|
1701
|
+
end
|
1702
|
+
if r5
|
1703
|
+
r4 = r5
|
1704
|
+
else
|
1705
|
+
r4 = instantiate_node(SyntaxNode,input, index...index)
|
1706
|
+
end
|
1707
|
+
s0 << r4
|
1708
|
+
if r4
|
1709
|
+
if (match_len = has_terminal?("]", false, index))
|
1710
|
+
r15 = true
|
1711
|
+
@index += match_len
|
1712
|
+
else
|
1713
|
+
terminal_parse_failure('"]"')
|
1714
|
+
r15 = nil
|
1715
|
+
end
|
1716
|
+
s0 << r15
|
1582
1717
|
end
|
1583
|
-
s0 << r14
|
1584
1718
|
end
|
1585
1719
|
end
|
1586
1720
|
end
|
@@ -1631,17 +1765,25 @@ module EDNGRAMMAR
|
|
1631
1765
|
elements[1]
|
1632
1766
|
end
|
1633
1767
|
|
1768
|
+
def S
|
1769
|
+
elements[2]
|
1770
|
+
end
|
1771
|
+
|
1634
1772
|
end
|
1635
1773
|
|
1636
1774
|
module Map3
|
1637
1775
|
def ast
|
1638
|
-
r = if e = elements[
|
1776
|
+
r = if e = elements[3].elements
|
1639
1777
|
Hash[ [e[0].ast] + e[2].elements.map {|x| x.kp.ast } ]
|
1640
1778
|
else
|
1641
1779
|
{}
|
1642
1780
|
end
|
1643
|
-
if spec.
|
1644
|
-
|
1781
|
+
if ei = spec.text_value[1..-1]
|
1782
|
+
if ei == ""
|
1783
|
+
r.cbor_stream!
|
1784
|
+
else
|
1785
|
+
warn "*** ignoring unimplemented encoding indicator #{ei.inspect} after \x7b"
|
1786
|
+
end
|
1645
1787
|
end
|
1646
1788
|
r
|
1647
1789
|
end
|
@@ -1671,79 +1813,83 @@ module EDNGRAMMAR
|
|
1671
1813
|
r2 = _nt_spec
|
1672
1814
|
s0 << r2
|
1673
1815
|
if r2
|
1674
|
-
|
1675
|
-
|
1676
|
-
|
1677
|
-
|
1678
|
-
r6 =
|
1679
|
-
|
1816
|
+
r3 = _nt_S
|
1817
|
+
s0 << r3
|
1818
|
+
if r3
|
1819
|
+
i5, s5 = index, []
|
1820
|
+
r6 = _nt_kp
|
1821
|
+
s5 << r6
|
1680
1822
|
if r6
|
1681
|
-
|
1682
|
-
|
1683
|
-
|
1684
|
-
|
1685
|
-
|
1686
|
-
|
1687
|
-
|
1688
|
-
|
1689
|
-
|
1690
|
-
|
1691
|
-
|
1692
|
-
|
1693
|
-
|
1694
|
-
|
1823
|
+
r7 = _nt_S
|
1824
|
+
s5 << r7
|
1825
|
+
if r7
|
1826
|
+
s8, i8 = [], index
|
1827
|
+
loop do
|
1828
|
+
i9, s9 = index, []
|
1829
|
+
if (match_len = has_terminal?(",", false, index))
|
1830
|
+
r10 = true
|
1831
|
+
@index += match_len
|
1832
|
+
else
|
1833
|
+
terminal_parse_failure('","')
|
1834
|
+
r10 = nil
|
1835
|
+
end
|
1836
|
+
s9 << r10
|
1695
1837
|
if r10
|
1696
|
-
r11 =
|
1697
|
-
|
1838
|
+
r11 = _nt_S
|
1839
|
+
s9 << r11
|
1698
1840
|
if r11
|
1699
|
-
r12 =
|
1700
|
-
|
1841
|
+
r12 = _nt_kp
|
1842
|
+
s9 << r12
|
1843
|
+
if r12
|
1844
|
+
r13 = _nt_S
|
1845
|
+
s9 << r13
|
1846
|
+
end
|
1701
1847
|
end
|
1702
1848
|
end
|
1849
|
+
if s9.last
|
1850
|
+
r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
|
1851
|
+
r9.extend(Map0)
|
1852
|
+
else
|
1853
|
+
@index = i9
|
1854
|
+
r9 = nil
|
1855
|
+
end
|
1856
|
+
if r9
|
1857
|
+
s8 << r9
|
1858
|
+
else
|
1859
|
+
break
|
1860
|
+
end
|
1703
1861
|
end
|
1704
|
-
|
1705
|
-
|
1706
|
-
r8.extend(Map0)
|
1707
|
-
else
|
1708
|
-
@index = i8
|
1709
|
-
r8 = nil
|
1710
|
-
end
|
1862
|
+
r8 = instantiate_node(SyntaxNode,input, i8...index, s8)
|
1863
|
+
s5 << r8
|
1711
1864
|
if r8
|
1712
|
-
|
1713
|
-
|
1714
|
-
break
|
1865
|
+
r14 = _nt_OC
|
1866
|
+
s5 << r14
|
1715
1867
|
end
|
1716
1868
|
end
|
1717
|
-
r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
|
1718
|
-
s4 << r7
|
1719
|
-
if r7
|
1720
|
-
r13 = _nt_OC
|
1721
|
-
s4 << r13
|
1722
|
-
end
|
1723
1869
|
end
|
1724
|
-
|
1725
|
-
|
1726
|
-
|
1727
|
-
r4.extend(Map1)
|
1728
|
-
else
|
1729
|
-
@index = i4
|
1730
|
-
r4 = nil
|
1731
|
-
end
|
1732
|
-
if r4
|
1733
|
-
r3 = r4
|
1734
|
-
else
|
1735
|
-
r3 = instantiate_node(SyntaxNode,input, index...index)
|
1736
|
-
end
|
1737
|
-
s0 << r3
|
1738
|
-
if r3
|
1739
|
-
if (match_len = has_terminal?("}", false, index))
|
1740
|
-
r14 = true
|
1741
|
-
@index += match_len
|
1870
|
+
if s5.last
|
1871
|
+
r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
|
1872
|
+
r5.extend(Map1)
|
1742
1873
|
else
|
1743
|
-
|
1744
|
-
|
1874
|
+
@index = i5
|
1875
|
+
r5 = nil
|
1876
|
+
end
|
1877
|
+
if r5
|
1878
|
+
r4 = r5
|
1879
|
+
else
|
1880
|
+
r4 = instantiate_node(SyntaxNode,input, index...index)
|
1881
|
+
end
|
1882
|
+
s0 << r4
|
1883
|
+
if r4
|
1884
|
+
if (match_len = has_terminal?("}", false, index))
|
1885
|
+
r15 = true
|
1886
|
+
@index += match_len
|
1887
|
+
else
|
1888
|
+
terminal_parse_failure('"}"')
|
1889
|
+
r15 = nil
|
1890
|
+
end
|
1891
|
+
s0 << r15
|
1745
1892
|
end
|
1746
|
-
s0 << r14
|
1747
1893
|
end
|
1748
1894
|
end
|
1749
1895
|
end
|
@@ -2261,60 +2407,27 @@ module EDNGRAMMAR
|
|
2261
2407
|
if s1.last
|
2262
2408
|
r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
|
2263
2409
|
r1.extend(OC0)
|
2264
|
-
else
|
2265
|
-
@index = i1
|
2266
|
-
r1 = nil
|
2267
|
-
end
|
2268
|
-
if r1
|
2269
|
-
r0 = r1
|
2270
|
-
else
|
2271
|
-
r0 = instantiate_node(SyntaxNode,input, index...index)
|
2272
|
-
end
|
2273
|
-
|
2274
|
-
node_cache[:OC][start_index] = r0
|
2275
|
-
|
2276
|
-
r0
|
2277
|
-
end
|
2278
|
-
|
2279
|
-
module Streamstring0
|
2280
|
-
def S1
|
2281
|
-
elements[1]
|
2282
|
-
end
|
2283
|
-
|
2284
|
-
def tstr
|
2285
|
-
elements[2]
|
2286
|
-
end
|
2287
|
-
|
2288
|
-
def S2
|
2289
|
-
elements[3]
|
2290
|
-
end
|
2291
|
-
end
|
2292
|
-
|
2293
|
-
module Streamstring1
|
2294
|
-
def spec1
|
2295
|
-
elements[1]
|
2296
|
-
end
|
2297
|
-
|
2298
|
-
def tstr
|
2299
|
-
elements[2]
|
2410
|
+
else
|
2411
|
+
@index = i1
|
2412
|
+
r1 = nil
|
2300
2413
|
end
|
2301
|
-
|
2302
|
-
|
2303
|
-
|
2414
|
+
if r1
|
2415
|
+
r0 = r1
|
2416
|
+
else
|
2417
|
+
r0 = instantiate_node(SyntaxNode,input, index...index)
|
2304
2418
|
end
|
2305
2419
|
|
2306
|
-
|
2307
|
-
elements[5]
|
2308
|
-
end
|
2420
|
+
node_cache[:OC][start_index] = r0
|
2309
2421
|
|
2422
|
+
r0
|
2310
2423
|
end
|
2311
2424
|
|
2312
|
-
module
|
2425
|
+
module Streamstring0
|
2313
2426
|
def S1
|
2314
2427
|
elements[1]
|
2315
2428
|
end
|
2316
2429
|
|
2317
|
-
def
|
2430
|
+
def string
|
2318
2431
|
elements[2]
|
2319
2432
|
end
|
2320
2433
|
|
@@ -2323,16 +2436,16 @@ module EDNGRAMMAR
|
|
2323
2436
|
end
|
2324
2437
|
end
|
2325
2438
|
|
2326
|
-
module
|
2327
|
-
def
|
2439
|
+
module Streamstring1
|
2440
|
+
def S1
|
2328
2441
|
elements[1]
|
2329
2442
|
end
|
2330
2443
|
|
2331
|
-
def
|
2444
|
+
def string
|
2332
2445
|
elements[2]
|
2333
2446
|
end
|
2334
2447
|
|
2335
|
-
def
|
2448
|
+
def S2
|
2336
2449
|
elements[3]
|
2337
2450
|
end
|
2338
2451
|
|
@@ -2342,6 +2455,16 @@ module EDNGRAMMAR
|
|
2342
2455
|
|
2343
2456
|
end
|
2344
2457
|
|
2458
|
+
module Streamstring2
|
2459
|
+
def ast
|
2460
|
+
strings = [elements[2].ast] + elements[4].elements.map {|x| x.string.ast }
|
2461
|
+
unless Set[*strings.map(&:encoding)].size == 1
|
2462
|
+
warn "*** mixed streamstring #{strings.cbor_diagnostic}"
|
2463
|
+
end
|
2464
|
+
strings.join.cbor_stream!(strings.map(&:size))
|
2465
|
+
end
|
2466
|
+
end
|
2467
|
+
|
2345
2468
|
def _nt_streamstring
|
2346
2469
|
start_index = index
|
2347
2470
|
if node_cache[:streamstring].has_key?(index)
|
@@ -2353,182 +2476,88 @@ module EDNGRAMMAR
|
|
2353
2476
|
return cached
|
2354
2477
|
end
|
2355
2478
|
|
2356
|
-
i0 = index
|
2357
|
-
|
2358
|
-
|
2359
|
-
r2 = true
|
2479
|
+
i0, s0 = index, []
|
2480
|
+
if (match_len = has_terminal?("(_", false, index))
|
2481
|
+
r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
|
2360
2482
|
@index += match_len
|
2361
2483
|
else
|
2362
|
-
terminal_parse_failure('"("')
|
2363
|
-
|
2484
|
+
terminal_parse_failure('"(_"')
|
2485
|
+
r1 = nil
|
2364
2486
|
end
|
2365
|
-
|
2366
|
-
if
|
2367
|
-
|
2368
|
-
|
2369
|
-
if
|
2370
|
-
|
2371
|
-
|
2372
|
-
if
|
2373
|
-
|
2374
|
-
|
2375
|
-
if
|
2376
|
-
|
2487
|
+
s0 << r1
|
2488
|
+
if r1
|
2489
|
+
r2 = _nt_S
|
2490
|
+
s0 << r2
|
2491
|
+
if r2
|
2492
|
+
r3 = _nt_string
|
2493
|
+
s0 << r3
|
2494
|
+
if r3
|
2495
|
+
r4 = _nt_S
|
2496
|
+
s0 << r4
|
2497
|
+
if r4
|
2498
|
+
s5, i5 = [], index
|
2377
2499
|
loop do
|
2378
|
-
|
2500
|
+
i6, s6 = index, []
|
2379
2501
|
if (match_len = has_terminal?(",", false, index))
|
2380
|
-
|
2502
|
+
r7 = true
|
2381
2503
|
@index += match_len
|
2382
2504
|
else
|
2383
2505
|
terminal_parse_failure('","')
|
2384
|
-
|
2506
|
+
r7 = nil
|
2385
2507
|
end
|
2386
|
-
|
2387
|
-
if
|
2388
|
-
|
2389
|
-
|
2390
|
-
if
|
2391
|
-
|
2392
|
-
|
2393
|
-
if
|
2394
|
-
|
2395
|
-
|
2508
|
+
s6 << r7
|
2509
|
+
if r7
|
2510
|
+
r8 = _nt_S
|
2511
|
+
s6 << r8
|
2512
|
+
if r8
|
2513
|
+
r9 = _nt_string
|
2514
|
+
s6 << r9
|
2515
|
+
if r9
|
2516
|
+
r10 = _nt_S
|
2517
|
+
s6 << r10
|
2396
2518
|
end
|
2397
2519
|
end
|
2398
2520
|
end
|
2399
|
-
if
|
2400
|
-
|
2401
|
-
|
2521
|
+
if s6.last
|
2522
|
+
r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
|
2523
|
+
r6.extend(Streamstring0)
|
2402
2524
|
else
|
2403
|
-
@index =
|
2404
|
-
|
2525
|
+
@index = i6
|
2526
|
+
r6 = nil
|
2405
2527
|
end
|
2406
|
-
if
|
2407
|
-
|
2528
|
+
if r6
|
2529
|
+
s5 << r6
|
2408
2530
|
else
|
2409
2531
|
break
|
2410
2532
|
end
|
2411
2533
|
end
|
2412
|
-
|
2413
|
-
|
2414
|
-
if
|
2415
|
-
|
2416
|
-
|
2417
|
-
if
|
2534
|
+
r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
|
2535
|
+
s0 << r5
|
2536
|
+
if r5
|
2537
|
+
r11 = _nt_OC
|
2538
|
+
s0 << r11
|
2539
|
+
if r11
|
2418
2540
|
if (match_len = has_terminal?(")", false, index))
|
2419
|
-
|
2541
|
+
r12 = true
|
2420
2542
|
@index += match_len
|
2421
2543
|
else
|
2422
2544
|
terminal_parse_failure('")"')
|
2423
|
-
|
2545
|
+
r12 = nil
|
2424
2546
|
end
|
2425
|
-
|
2547
|
+
s0 << r12
|
2426
2548
|
end
|
2427
2549
|
end
|
2428
2550
|
end
|
2429
2551
|
end
|
2430
2552
|
end
|
2431
2553
|
end
|
2432
|
-
if
|
2433
|
-
|
2434
|
-
|
2435
|
-
|
2436
|
-
@index = i1
|
2437
|
-
r1 = nil
|
2438
|
-
end
|
2439
|
-
if r1
|
2440
|
-
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
2441
|
-
r0 = r1
|
2554
|
+
if s0.last
|
2555
|
+
r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
|
2556
|
+
r0.extend(Streamstring1)
|
2557
|
+
r0.extend(Streamstring2)
|
2442
2558
|
else
|
2443
|
-
|
2444
|
-
|
2445
|
-
r15 = true
|
2446
|
-
@index += match_len
|
2447
|
-
else
|
2448
|
-
terminal_parse_failure('"("')
|
2449
|
-
r15 = nil
|
2450
|
-
end
|
2451
|
-
s14 << r15
|
2452
|
-
if r15
|
2453
|
-
r16 = _nt_spec1
|
2454
|
-
s14 << r16
|
2455
|
-
if r16
|
2456
|
-
r17 = _nt_bstr
|
2457
|
-
s14 << r17
|
2458
|
-
if r17
|
2459
|
-
r18 = _nt_S
|
2460
|
-
s14 << r18
|
2461
|
-
if r18
|
2462
|
-
s19, i19 = [], index
|
2463
|
-
loop do
|
2464
|
-
i20, s20 = index, []
|
2465
|
-
if (match_len = has_terminal?(",", false, index))
|
2466
|
-
r21 = true
|
2467
|
-
@index += match_len
|
2468
|
-
else
|
2469
|
-
terminal_parse_failure('","')
|
2470
|
-
r21 = nil
|
2471
|
-
end
|
2472
|
-
s20 << r21
|
2473
|
-
if r21
|
2474
|
-
r22 = _nt_S
|
2475
|
-
s20 << r22
|
2476
|
-
if r22
|
2477
|
-
r23 = _nt_bstr
|
2478
|
-
s20 << r23
|
2479
|
-
if r23
|
2480
|
-
r24 = _nt_S
|
2481
|
-
s20 << r24
|
2482
|
-
end
|
2483
|
-
end
|
2484
|
-
end
|
2485
|
-
if s20.last
|
2486
|
-
r20 = instantiate_node(SyntaxNode,input, i20...index, s20)
|
2487
|
-
r20.extend(Streamstring2)
|
2488
|
-
else
|
2489
|
-
@index = i20
|
2490
|
-
r20 = nil
|
2491
|
-
end
|
2492
|
-
if r20
|
2493
|
-
s19 << r20
|
2494
|
-
else
|
2495
|
-
break
|
2496
|
-
end
|
2497
|
-
end
|
2498
|
-
r19 = instantiate_node(SyntaxNode,input, i19...index, s19)
|
2499
|
-
s14 << r19
|
2500
|
-
if r19
|
2501
|
-
r25 = _nt_OC
|
2502
|
-
s14 << r25
|
2503
|
-
if r25
|
2504
|
-
if (match_len = has_terminal?(")", false, index))
|
2505
|
-
r26 = true
|
2506
|
-
@index += match_len
|
2507
|
-
else
|
2508
|
-
terminal_parse_failure('")"')
|
2509
|
-
r26 = nil
|
2510
|
-
end
|
2511
|
-
s14 << r26
|
2512
|
-
end
|
2513
|
-
end
|
2514
|
-
end
|
2515
|
-
end
|
2516
|
-
end
|
2517
|
-
end
|
2518
|
-
if s14.last
|
2519
|
-
r14 = instantiate_node(SyntaxNode,input, i14...index, s14)
|
2520
|
-
r14.extend(Streamstring3)
|
2521
|
-
else
|
2522
|
-
@index = i14
|
2523
|
-
r14 = nil
|
2524
|
-
end
|
2525
|
-
if r14
|
2526
|
-
r14 = SyntaxNode.new(input, (index-1)...index) if r14 == true
|
2527
|
-
r0 = r14
|
2528
|
-
else
|
2529
|
-
@index = i0
|
2530
|
-
r0 = nil
|
2531
|
-
end
|
2559
|
+
@index = i0
|
2560
|
+
r0 = nil
|
2532
2561
|
end
|
2533
2562
|
|
2534
2563
|
node_cache[:streamstring][start_index] = r0
|
@@ -2537,20 +2566,6 @@ module EDNGRAMMAR
|
|
2537
2566
|
end
|
2538
2567
|
|
2539
2568
|
module Spec0
|
2540
|
-
def S
|
2541
|
-
elements[1]
|
2542
|
-
end
|
2543
|
-
end
|
2544
|
-
|
2545
|
-
module Spec1
|
2546
|
-
def S
|
2547
|
-
elements[0]
|
2548
|
-
end
|
2549
|
-
|
2550
|
-
end
|
2551
|
-
|
2552
|
-
module Spec2
|
2553
|
-
def ast; (e1 = elements[1].elements) && !e1[0].empty? end
|
2554
2569
|
end
|
2555
2570
|
|
2556
2571
|
def _nt_spec
|
@@ -2564,98 +2579,42 @@ module EDNGRAMMAR
|
|
2564
2579
|
return cached
|
2565
2580
|
end
|
2566
2581
|
|
2567
|
-
|
2568
|
-
|
2569
|
-
|
2570
|
-
|
2571
|
-
i3, s3 = index, []
|
2572
|
-
if (match_len = has_terminal?("_", false, index))
|
2573
|
-
r4 = true
|
2574
|
-
@index += match_len
|
2575
|
-
else
|
2576
|
-
terminal_parse_failure('"_"')
|
2577
|
-
r4 = nil
|
2578
|
-
end
|
2579
|
-
s3 << r4
|
2580
|
-
if r4
|
2581
|
-
r5 = _nt_S
|
2582
|
-
s3 << r5
|
2583
|
-
end
|
2584
|
-
if s3.last
|
2585
|
-
r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
|
2586
|
-
r3.extend(Spec0)
|
2587
|
-
else
|
2588
|
-
@index = i3
|
2589
|
-
r3 = nil
|
2590
|
-
end
|
2591
|
-
if r3
|
2592
|
-
r2 = r3
|
2593
|
-
else
|
2594
|
-
r2 = instantiate_node(SyntaxNode,input, index...index)
|
2595
|
-
end
|
2596
|
-
s0 << r2
|
2597
|
-
end
|
2598
|
-
if s0.last
|
2599
|
-
r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
|
2600
|
-
r0.extend(Spec1)
|
2601
|
-
r0.extend(Spec2)
|
2582
|
+
i1, s1 = index, []
|
2583
|
+
if (match_len = has_terminal?("_", false, index))
|
2584
|
+
r2 = true
|
2585
|
+
@index += match_len
|
2602
2586
|
else
|
2603
|
-
|
2604
|
-
|
2605
|
-
end
|
2606
|
-
|
2607
|
-
node_cache[:spec][start_index] = r0
|
2608
|
-
|
2609
|
-
r0
|
2610
|
-
end
|
2611
|
-
|
2612
|
-
module Spec10
|
2613
|
-
def S1
|
2614
|
-
elements[0]
|
2615
|
-
end
|
2616
|
-
|
2617
|
-
def S2
|
2618
|
-
elements[2]
|
2587
|
+
terminal_parse_failure('"_"')
|
2588
|
+
r2 = nil
|
2619
2589
|
end
|
2620
|
-
|
2621
|
-
|
2622
|
-
|
2623
|
-
|
2624
|
-
|
2625
|
-
|
2626
|
-
|
2627
|
-
|
2628
|
-
|
2590
|
+
s1 << r2
|
2591
|
+
if r2
|
2592
|
+
s3, i3 = [], index
|
2593
|
+
loop do
|
2594
|
+
r4 = _nt_wordchar
|
2595
|
+
if r4
|
2596
|
+
s3 << r4
|
2597
|
+
else
|
2598
|
+
break
|
2599
|
+
end
|
2629
2600
|
end
|
2630
|
-
|
2601
|
+
r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
|
2602
|
+
s1 << r3
|
2631
2603
|
end
|
2632
|
-
|
2633
|
-
|
2634
|
-
|
2635
|
-
|
2636
|
-
|
2637
|
-
|
2638
|
-
r2 = true
|
2639
|
-
@index += match_len
|
2640
|
-
else
|
2641
|
-
terminal_parse_failure('"_"')
|
2642
|
-
r2 = nil
|
2643
|
-
end
|
2644
|
-
s0 << r2
|
2645
|
-
if r2
|
2646
|
-
r3 = _nt_S
|
2647
|
-
s0 << r3
|
2648
|
-
end
|
2604
|
+
if s1.last
|
2605
|
+
r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
|
2606
|
+
r1.extend(Spec0)
|
2607
|
+
else
|
2608
|
+
@index = i1
|
2609
|
+
r1 = nil
|
2649
2610
|
end
|
2650
|
-
if
|
2651
|
-
r0 =
|
2652
|
-
r0.extend(Spec10)
|
2611
|
+
if r1
|
2612
|
+
r0 = r1
|
2653
2613
|
else
|
2654
|
-
|
2655
|
-
r0 = nil
|
2614
|
+
r0 = instantiate_node(SyntaxNode,input, index...index)
|
2656
2615
|
end
|
2657
2616
|
|
2658
|
-
node_cache[:
|
2617
|
+
node_cache[:spec][start_index] = r0
|
2659
2618
|
|
2660
2619
|
r0
|
2661
2620
|
end
|
@@ -3965,6 +3924,56 @@ module EDNGRAMMAR
|
|
3965
3924
|
r0
|
3966
3925
|
end
|
3967
3926
|
|
3927
|
+
def _nt_wordchar
|
3928
|
+
start_index = index
|
3929
|
+
if node_cache[:wordchar].has_key?(index)
|
3930
|
+
cached = node_cache[:wordchar][index]
|
3931
|
+
if cached
|
3932
|
+
node_cache[:wordchar][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
3933
|
+
@index = cached.interval.end
|
3934
|
+
end
|
3935
|
+
return cached
|
3936
|
+
end
|
3937
|
+
|
3938
|
+
i0 = index
|
3939
|
+
if (match_len = has_terminal?("_", false, index))
|
3940
|
+
r1 = true
|
3941
|
+
@index += match_len
|
3942
|
+
else
|
3943
|
+
terminal_parse_failure('"_"')
|
3944
|
+
r1 = nil
|
3945
|
+
end
|
3946
|
+
if r1
|
3947
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
3948
|
+
r0 = r1
|
3949
|
+
else
|
3950
|
+
r2 = _nt_lcalnum
|
3951
|
+
if r2
|
3952
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
3953
|
+
r0 = r2
|
3954
|
+
else
|
3955
|
+
if has_terminal?(@regexps[gr = '\A[A-Z]'] ||= Regexp.new(gr), :regexp, index)
|
3956
|
+
r3 = true
|
3957
|
+
@index += 1
|
3958
|
+
else
|
3959
|
+
terminal_parse_failure('[A-Z]')
|
3960
|
+
r3 = nil
|
3961
|
+
end
|
3962
|
+
if r3
|
3963
|
+
r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
|
3964
|
+
r0 = r3
|
3965
|
+
else
|
3966
|
+
@index = i0
|
3967
|
+
r0 = nil
|
3968
|
+
end
|
3969
|
+
end
|
3970
|
+
end
|
3971
|
+
|
3972
|
+
node_cache[:wordchar][start_index] = r0
|
3973
|
+
|
3974
|
+
r0
|
3975
|
+
end
|
3976
|
+
|
3968
3977
|
end
|
3969
3978
|
|
3970
3979
|
class EDNGRAMMARParser < Treetop::Runtime::CompiledParser
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: edn-abnf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Carsten Bormann
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-10-
|
11
|
+
date: 2023-10-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|