edn-abnf 0.0.7 → 0.0.9
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/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
|