cbor-diag 0.1.5 → 0.2.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fcb520130b1dd8d160e193f0e220042dfd4779ea
4
- data.tar.gz: 2f1f8ed1bcb7b8e0d956d505307b3b6bd22edc1f
3
+ metadata.gz: 22c36d8aa85fc04cdf37ca11218c7665d659a60d
4
+ data.tar.gz: 62b8bd6567f5749883aa48fb05978a389e04fa9b
5
5
  SHA512:
6
- metadata.gz: be137d244ceaedcb26dcdcecd52ec08684703759b3364b902aa6244c459f2e27a82999d0d4244d3ef7d638930925a2c5b1bbd790cf7c8ba79a6acf77cebdcb00
7
- data.tar.gz: d790ec5b0deaefe14607c3ea18eb8aacd50933f9d270bdedb3da13b6e3a65dc81508c0128bf20aa5b472e16800c7e958c884612181990d0edc1d6039a3bbcb65
6
+ metadata.gz: fc82632b8b0fe411a73ac15f3dd9f45233575cf5bb0812732059d71dae10adccc3c24243820b23b39b0a92ea985b57208767851dc19e8ec1d667df1b7f4f4532
7
+ data.tar.gz: 883cf391dd38d6b217e015519e4c5bde3018a59e6cf64d1256d4d99f9e4c464e2f7feb3d7bf1beb80e2bac14e1e1e158014db6c8e3d449db17352c04f3594a20
data/cbor-diag.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "cbor-diag"
3
- s.version = "0.1.5"
3
+ s.version = "0.2.0"
4
4
  s.summary = "CBOR (Concise Binary Object Representation) diagnostic notation"
5
5
  s.description = %q{cbor-diag implements diagnostic notation for CBOR, RFC 7049}
6
6
  s.author = "Carsten Bormann"
@@ -104,28 +104,34 @@ module CBOR_DIAG
104
104
  r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true
105
105
  r0 = r6
106
106
  else
107
- r7 = _nt_b64string
107
+ r7 = _nt_bstring
108
108
  if r7
109
109
  r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
110
110
  r0 = r7
111
111
  else
112
- r8 = _nt_array
112
+ r8 = _nt_b64string
113
113
  if r8
114
114
  r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true
115
115
  r0 = r8
116
116
  else
117
- r9 = _nt_map
117
+ r9 = _nt_array
118
118
  if r9
119
119
  r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true
120
120
  r0 = r9
121
121
  else
122
- r10 = _nt_streamstring
122
+ r10 = _nt_map
123
123
  if r10
124
124
  r10 = SyntaxNode.new(input, (index-1)...index) if r10 == true
125
125
  r0 = r10
126
126
  else
127
- @index = i0
128
- r0 = nil
127
+ r11 = _nt_streamstring
128
+ if r11
129
+ r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true
130
+ r0 = r11
131
+ else
132
+ @index = i0
133
+ r0 = nil
134
+ end
129
135
  end
130
136
  end
131
137
  end
@@ -1180,20 +1186,622 @@ module CBOR_DIAG
1180
1186
  r0
1181
1187
  end
1182
1188
 
1183
- module Hstring0
1189
+ module Bstring0
1190
+ def s
1191
+ elements[1]
1192
+ end
1193
+
1194
+ end
1195
+
1196
+ module Bstring1
1197
+ #'
1198
+ def to_rb
1199
+ s.elements.map(&:partval).join.b
1200
+ end
1201
+ end
1202
+
1203
+ def _nt_bstring
1204
+ start_index = index
1205
+ if node_cache[:bstring].has_key?(index)
1206
+ cached = node_cache[:bstring][index]
1207
+ if cached
1208
+ node_cache[:bstring][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1209
+ @index = cached.interval.end
1210
+ end
1211
+ return cached
1212
+ end
1213
+
1214
+ i0, s0 = index, []
1215
+ if (match_len = has_terminal?("'", false, index))
1216
+ r1 = true
1217
+ @index += match_len
1218
+ else
1219
+ terminal_parse_failure('"\'"')
1220
+ r1 = nil
1221
+ end
1222
+ s0 << r1
1223
+ if r1
1224
+ s2, i2 = [], index
1225
+ loop do
1226
+ r3 = _nt_string_part1
1227
+ if r3
1228
+ s2 << r3
1229
+ else
1230
+ break
1231
+ end
1232
+ end
1233
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1234
+ s0 << r2
1235
+ if r2
1236
+ if (match_len = has_terminal?("'", false, index))
1237
+ r4 = true
1238
+ @index += match_len
1239
+ else
1240
+ terminal_parse_failure('"\'"')
1241
+ r4 = nil
1242
+ end
1243
+ s0 << r4
1244
+ end
1245
+ end
1246
+ if s0.last
1247
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1248
+ r0.extend(Bstring0)
1249
+ r0.extend(Bstring1)
1250
+ else
1251
+ @index = i0
1252
+ r0 = nil
1253
+ end
1254
+
1255
+ node_cache[:bstring][start_index] = r0
1256
+
1257
+ r0
1258
+ end
1259
+
1260
+ module StringPart10
1261
+ def partval; text_value end
1262
+ end
1263
+
1264
+ module StringPart11
1265
+ def s
1266
+ elements[1]
1267
+ end
1268
+ end
1269
+
1270
+ module StringPart12
1271
+ #"
1272
+ def partval
1273
+ v = s.text_value
1274
+ {"b" => "\b", "f" => "\f", "n" => "\n", "r" => "\r", "t" => "\t"}[v] || v
1275
+ end
1276
+ end
1277
+
1278
+ module StringPart13
1279
+ end
1280
+
1281
+ module StringPart14
1282
+ end
1283
+
1284
+ module StringPart15
1285
+ def s
1286
+ elements[1]
1287
+ end
1288
+
1289
+ def t
1290
+ elements[3]
1291
+ end
1292
+ end
1293
+
1294
+ module StringPart16
1295
+ def partval; (((s.text_value.to_i(16) & 0x3FF) << 10) +
1296
+ (t.text_value.to_i(16) & 0x3FF) + 0x10000).chr(Encoding::UTF_8) end
1297
+ end
1298
+
1299
+ module StringPart17
1300
+ end
1301
+
1302
+ module StringPart18
1303
+ end
1304
+
1305
+ module StringPart19
1306
+ def s
1307
+ elements[1]
1308
+ end
1309
+ end
1310
+
1311
+ module StringPart110
1312
+ def partval; s.text_value.to_i(16).chr(Encoding::UTF_8) end
1313
+ end
1314
+
1315
+ def _nt_string_part1
1316
+ start_index = index
1317
+ if node_cache[:string_part1].has_key?(index)
1318
+ cached = node_cache[:string_part1][index]
1319
+ if cached
1320
+ node_cache[:string_part1][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1321
+ @index = cached.interval.end
1322
+ end
1323
+ return cached
1324
+ end
1325
+
1326
+ i0 = index
1327
+ s1, i1 = [], index
1328
+ loop do
1329
+ if has_terminal?(@regexps[gr = '\A[^\\\\\']'] ||= Regexp.new(gr), :regexp, index)
1330
+ r2 = true
1331
+ @index += 1
1332
+ else
1333
+ terminal_parse_failure('[^\\\\\']')
1334
+ r2 = nil
1335
+ end
1336
+ if r2
1337
+ s1 << r2
1338
+ else
1339
+ break
1340
+ end
1341
+ end
1342
+ if s1.empty?
1343
+ @index = i1
1344
+ r1 = nil
1345
+ else
1346
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
1347
+ r1.extend(StringPart10)
1348
+ end
1349
+ if r1
1350
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
1351
+ r0 = r1
1352
+ else
1353
+ i3, s3 = index, []
1354
+ if (match_len = has_terminal?("\\", false, index))
1355
+ r4 = true
1356
+ @index += match_len
1357
+ else
1358
+ terminal_parse_failure('"\\\\"')
1359
+ r4 = nil
1360
+ end
1361
+ s3 << r4
1362
+ if r4
1363
+ if has_terminal?(@regexps[gr = '\A["\\\\/bfnrt]'] ||= Regexp.new(gr), :regexp, index)
1364
+ r5 = true
1365
+ @index += 1
1366
+ else
1367
+ terminal_parse_failure('["\\\\/bfnrt]')
1368
+ r5 = nil
1369
+ end
1370
+ s3 << r5
1371
+ end
1372
+ if s3.last
1373
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
1374
+ r3.extend(StringPart11)
1375
+ r3.extend(StringPart12)
1376
+ else
1377
+ @index = i3
1378
+ r3 = nil
1379
+ end
1380
+ if r3
1381
+ r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
1382
+ r0 = r3
1383
+ else
1384
+ i6, s6 = index, []
1385
+ if (match_len = has_terminal?("\\u", false, index))
1386
+ r7 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1387
+ @index += match_len
1388
+ else
1389
+ terminal_parse_failure('"\\\\u"')
1390
+ r7 = nil
1391
+ end
1392
+ s6 << r7
1393
+ if r7
1394
+ i8, s8 = index, []
1395
+ if has_terminal?(@regexps[gr = '\A[dD]'] ||= Regexp.new(gr), :regexp, index)
1396
+ r9 = true
1397
+ @index += 1
1398
+ else
1399
+ terminal_parse_failure('[dD]')
1400
+ r9 = nil
1401
+ end
1402
+ s8 << r9
1403
+ if r9
1404
+ if has_terminal?(@regexps[gr = '\A[89abAB]'] ||= Regexp.new(gr), :regexp, index)
1405
+ r10 = true
1406
+ @index += 1
1407
+ else
1408
+ terminal_parse_failure('[89abAB]')
1409
+ r10 = nil
1410
+ end
1411
+ s8 << r10
1412
+ if r10
1413
+ s11, i11 = [], index
1414
+ loop do
1415
+ if has_terminal?(@regexps[gr = '\A[0-9a-fA-F]'] ||= Regexp.new(gr), :regexp, index)
1416
+ r12 = true
1417
+ @index += 1
1418
+ else
1419
+ terminal_parse_failure('[0-9a-fA-F]')
1420
+ r12 = nil
1421
+ end
1422
+ if r12
1423
+ s11 << r12
1424
+ else
1425
+ break
1426
+ end
1427
+ if s11.size == 2
1428
+ break
1429
+ end
1430
+ end
1431
+ if s11.size < 2
1432
+ @index = i11
1433
+ r11 = nil
1434
+ else
1435
+ if s11.size < 2
1436
+ terminal_failures.pop
1437
+ end
1438
+ r11 = instantiate_node(SyntaxNode,input, i11...index, s11)
1439
+ end
1440
+ s8 << r11
1441
+ end
1442
+ end
1443
+ if s8.last
1444
+ r8 = instantiate_node(SyntaxNode,input, i8...index, s8)
1445
+ r8.extend(StringPart13)
1446
+ else
1447
+ @index = i8
1448
+ r8 = nil
1449
+ end
1450
+ s6 << r8
1451
+ if r8
1452
+ if (match_len = has_terminal?("\\u", false, index))
1453
+ r13 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1454
+ @index += match_len
1455
+ else
1456
+ terminal_parse_failure('"\\\\u"')
1457
+ r13 = nil
1458
+ end
1459
+ s6 << r13
1460
+ if r13
1461
+ i14, s14 = index, []
1462
+ if has_terminal?(@regexps[gr = '\A[dD]'] ||= Regexp.new(gr), :regexp, index)
1463
+ r15 = true
1464
+ @index += 1
1465
+ else
1466
+ terminal_parse_failure('[dD]')
1467
+ r15 = nil
1468
+ end
1469
+ s14 << r15
1470
+ if r15
1471
+ if has_terminal?(@regexps[gr = '\A[cCdDeEfF]'] ||= Regexp.new(gr), :regexp, index)
1472
+ r16 = true
1473
+ @index += 1
1474
+ else
1475
+ terminal_parse_failure('[cCdDeEfF]')
1476
+ r16 = nil
1477
+ end
1478
+ s14 << r16
1479
+ if r16
1480
+ s17, i17 = [], index
1481
+ loop do
1482
+ if has_terminal?(@regexps[gr = '\A[0-9a-fA-F]'] ||= Regexp.new(gr), :regexp, index)
1483
+ r18 = true
1484
+ @index += 1
1485
+ else
1486
+ terminal_parse_failure('[0-9a-fA-F]')
1487
+ r18 = nil
1488
+ end
1489
+ if r18
1490
+ s17 << r18
1491
+ else
1492
+ break
1493
+ end
1494
+ if s17.size == 2
1495
+ break
1496
+ end
1497
+ end
1498
+ if s17.size < 2
1499
+ @index = i17
1500
+ r17 = nil
1501
+ else
1502
+ if s17.size < 2
1503
+ terminal_failures.pop
1504
+ end
1505
+ r17 = instantiate_node(SyntaxNode,input, i17...index, s17)
1506
+ end
1507
+ s14 << r17
1508
+ end
1509
+ end
1510
+ if s14.last
1511
+ r14 = instantiate_node(SyntaxNode,input, i14...index, s14)
1512
+ r14.extend(StringPart14)
1513
+ else
1514
+ @index = i14
1515
+ r14 = nil
1516
+ end
1517
+ s6 << r14
1518
+ end
1519
+ end
1520
+ end
1521
+ if s6.last
1522
+ r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
1523
+ r6.extend(StringPart15)
1524
+ r6.extend(StringPart16)
1525
+ else
1526
+ @index = i6
1527
+ r6 = nil
1528
+ end
1529
+ if r6
1530
+ r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true
1531
+ r0 = r6
1532
+ else
1533
+ i19, s19 = index, []
1534
+ if (match_len = has_terminal?("\\u", false, index))
1535
+ r20 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1536
+ @index += match_len
1537
+ else
1538
+ terminal_parse_failure('"\\\\u"')
1539
+ r20 = nil
1540
+ end
1541
+ s19 << r20
1542
+ if r20
1543
+ i21 = index
1544
+ i22, s22 = index, []
1545
+ if has_terminal?(@regexps[gr = '\A[0-9abcefABCEF]'] ||= Regexp.new(gr), :regexp, index)
1546
+ r23 = true
1547
+ @index += 1
1548
+ else
1549
+ terminal_parse_failure('[0-9abcefABCEF]')
1550
+ r23 = nil
1551
+ end
1552
+ s22 << r23
1553
+ if r23
1554
+ s24, i24 = [], index
1555
+ loop do
1556
+ if has_terminal?(@regexps[gr = '\A[0-9a-fA-F]'] ||= Regexp.new(gr), :regexp, index)
1557
+ r25 = true
1558
+ @index += 1
1559
+ else
1560
+ terminal_parse_failure('[0-9a-fA-F]')
1561
+ r25 = nil
1562
+ end
1563
+ if r25
1564
+ s24 << r25
1565
+ else
1566
+ break
1567
+ end
1568
+ if s24.size == 3
1569
+ break
1570
+ end
1571
+ end
1572
+ if s24.size < 3
1573
+ @index = i24
1574
+ r24 = nil
1575
+ else
1576
+ if s24.size < 3
1577
+ terminal_failures.pop
1578
+ end
1579
+ r24 = instantiate_node(SyntaxNode,input, i24...index, s24)
1580
+ end
1581
+ s22 << r24
1582
+ end
1583
+ if s22.last
1584
+ r22 = instantiate_node(SyntaxNode,input, i22...index, s22)
1585
+ r22.extend(StringPart17)
1586
+ else
1587
+ @index = i22
1588
+ r22 = nil
1589
+ end
1590
+ if r22
1591
+ r22 = SyntaxNode.new(input, (index-1)...index) if r22 == true
1592
+ r21 = r22
1593
+ else
1594
+ i26, s26 = index, []
1595
+ if has_terminal?(@regexps[gr = '\A[dD]'] ||= Regexp.new(gr), :regexp, index)
1596
+ r27 = true
1597
+ @index += 1
1598
+ else
1599
+ terminal_parse_failure('[dD]')
1600
+ r27 = nil
1601
+ end
1602
+ s26 << r27
1603
+ if r27
1604
+ if has_terminal?(@regexps[gr = '\A[0-7]'] ||= Regexp.new(gr), :regexp, index)
1605
+ r28 = true
1606
+ @index += 1
1607
+ else
1608
+ terminal_parse_failure('[0-7]')
1609
+ r28 = nil
1610
+ end
1611
+ s26 << r28
1612
+ if r28
1613
+ s29, i29 = [], index
1614
+ loop do
1615
+ if has_terminal?(@regexps[gr = '\A[0-9a-fA-F]'] ||= Regexp.new(gr), :regexp, index)
1616
+ r30 = true
1617
+ @index += 1
1618
+ else
1619
+ terminal_parse_failure('[0-9a-fA-F]')
1620
+ r30 = nil
1621
+ end
1622
+ if r30
1623
+ s29 << r30
1624
+ else
1625
+ break
1626
+ end
1627
+ if s29.size == 2
1628
+ break
1629
+ end
1630
+ end
1631
+ if s29.size < 2
1632
+ @index = i29
1633
+ r29 = nil
1634
+ else
1635
+ if s29.size < 2
1636
+ terminal_failures.pop
1637
+ end
1638
+ r29 = instantiate_node(SyntaxNode,input, i29...index, s29)
1639
+ end
1640
+ s26 << r29
1641
+ end
1642
+ end
1643
+ if s26.last
1644
+ r26 = instantiate_node(SyntaxNode,input, i26...index, s26)
1645
+ r26.extend(StringPart18)
1646
+ else
1647
+ @index = i26
1648
+ r26 = nil
1649
+ end
1650
+ if r26
1651
+ r26 = SyntaxNode.new(input, (index-1)...index) if r26 == true
1652
+ r21 = r26
1653
+ else
1654
+ @index = i21
1655
+ r21 = nil
1656
+ end
1657
+ end
1658
+ s19 << r21
1659
+ end
1660
+ if s19.last
1661
+ r19 = instantiate_node(SyntaxNode,input, i19...index, s19)
1662
+ r19.extend(StringPart19)
1663
+ r19.extend(StringPart110)
1664
+ else
1665
+ @index = i19
1666
+ r19 = nil
1667
+ end
1668
+ if r19
1669
+ r19 = SyntaxNode.new(input, (index-1)...index) if r19 == true
1670
+ r0 = r19
1671
+ else
1672
+ @index = i0
1673
+ r0 = nil
1674
+ end
1675
+ end
1676
+ end
1677
+ end
1678
+
1679
+ node_cache[:string_part1][start_index] = r0
1680
+
1681
+ r0
1184
1682
  end
1185
1683
 
1186
- module Hstring1
1187
- def s
1684
+ module Hexdigit0
1685
+ def dig
1686
+ elements[0]
1687
+ end
1688
+ end
1689
+
1690
+ module Hexdigit1
1691
+ def sval; dig.text_value end
1692
+ end
1693
+
1694
+ def _nt_hexdigit
1695
+ start_index = index
1696
+ if node_cache[:hexdigit].has_key?(index)
1697
+ cached = node_cache[:hexdigit][index]
1698
+ if cached
1699
+ node_cache[:hexdigit][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1700
+ @index = cached.interval.end
1701
+ end
1702
+ return cached
1703
+ end
1704
+
1705
+ i0, s0 = index, []
1706
+ if has_terminal?(@regexps[gr = '\A[0-9a-fA-F]'] ||= Regexp.new(gr), :regexp, index)
1707
+ r1 = true
1708
+ @index += 1
1709
+ else
1710
+ terminal_parse_failure('[0-9a-fA-F]')
1711
+ r1 = nil
1712
+ end
1713
+ s0 << r1
1714
+ if s0.last
1715
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1716
+ r0.extend(Hexdigit0)
1717
+ r0.extend(Hexdigit1)
1718
+ else
1719
+ @index = i0
1720
+ r0 = nil
1721
+ end
1722
+
1723
+ node_cache[:hexdigit][start_index] = r0
1724
+
1725
+ r0
1726
+ end
1727
+
1728
+ module Twohex0
1729
+ def s1
1730
+ elements[0]
1731
+ end
1732
+
1733
+ def ows1
1734
+ elements[1]
1735
+ end
1736
+
1737
+ def s2
1738
+ elements[2]
1739
+ end
1740
+
1741
+ def ows2
1742
+ elements[3]
1743
+ end
1744
+ end
1745
+
1746
+ module Twohex1
1747
+ def bval; (s1.sval << s2.sval).to_i(16).chr(Encoding::BINARY) end
1748
+ end
1749
+
1750
+ def _nt_twohex
1751
+ start_index = index
1752
+ if node_cache[:twohex].has_key?(index)
1753
+ cached = node_cache[:twohex][index]
1754
+ if cached
1755
+ node_cache[:twohex][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1756
+ @index = cached.interval.end
1757
+ end
1758
+ return cached
1759
+ end
1760
+
1761
+ i0, s0 = index, []
1762
+ r1 = _nt_hexdigit
1763
+ s0 << r1
1764
+ if r1
1765
+ r2 = _nt_ows
1766
+ s0 << r2
1767
+ if r2
1768
+ r3 = _nt_hexdigit
1769
+ s0 << r3
1770
+ if r3
1771
+ r4 = _nt_ows
1772
+ s0 << r4
1773
+ end
1774
+ end
1775
+ end
1776
+ if s0.last
1777
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1778
+ r0.extend(Twohex0)
1779
+ r0.extend(Twohex1)
1780
+ else
1781
+ @index = i0
1782
+ r0 = nil
1783
+ end
1784
+
1785
+ node_cache[:twohex][start_index] = r0
1786
+
1787
+ r0
1788
+ end
1789
+
1790
+ module Hstring0
1791
+ def ows
1188
1792
  elements[1]
1189
1793
  end
1190
1794
 
1795
+ def s
1796
+ elements[2]
1797
+ end
1798
+
1191
1799
  end
1192
1800
 
1193
- module Hstring2
1801
+ module Hstring1
1194
1802
  #"
1195
1803
  def to_rb;
1196
- s.text_value.chars.each_slice(2).map{|a| a.join.to_i(16).chr(Encoding::BINARY)}.join.b
1804
+ s.elements.map(&:bval).join.b
1197
1805
  end
1198
1806
  end
1199
1807
 
@@ -1218,57 +1826,36 @@ module CBOR_DIAG
1218
1826
  end
1219
1827
  s0 << r1
1220
1828
  if r1
1221
- s2, i2 = [], index
1222
- loop do
1223
- i3, s3 = index, []
1224
- if has_terminal?(@regexps[gr = '\A[0-9a-fA-F]'] ||= Regexp.new(gr), :regexp, index)
1225
- r4 = true
1226
- @index += 1
1227
- else
1228
- terminal_parse_failure('[0-9a-fA-F]')
1229
- r4 = nil
1829
+ r2 = _nt_ows
1830
+ s0 << r2
1831
+ if r2
1832
+ s3, i3 = [], index
1833
+ loop do
1834
+ r4 = _nt_twohex
1835
+ if r4
1836
+ s3 << r4
1837
+ else
1838
+ break
1839
+ end
1230
1840
  end
1231
- s3 << r4
1232
- if r4
1233
- if has_terminal?(@regexps[gr = '\A[0-9a-fA-F]'] ||= Regexp.new(gr), :regexp, index)
1841
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
1842
+ s0 << r3
1843
+ if r3
1844
+ if (match_len = has_terminal?("'", false, index))
1234
1845
  r5 = true
1235
- @index += 1
1846
+ @index += match_len
1236
1847
  else
1237
- terminal_parse_failure('[0-9a-fA-F]')
1848
+ terminal_parse_failure('"\'"')
1238
1849
  r5 = nil
1239
1850
  end
1240
- s3 << r5
1241
- end
1242
- if s3.last
1243
- r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
1244
- r3.extend(Hstring0)
1245
- else
1246
- @index = i3
1247
- r3 = nil
1248
- end
1249
- if r3
1250
- s2 << r3
1251
- else
1252
- break
1253
- end
1254
- end
1255
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1256
- s0 << r2
1257
- if r2
1258
- if (match_len = has_terminal?("'", false, index))
1259
- r6 = true
1260
- @index += match_len
1261
- else
1262
- terminal_parse_failure('"\'"')
1263
- r6 = nil
1851
+ s0 << r5
1264
1852
  end
1265
- s0 << r6
1266
1853
  end
1267
1854
  end
1268
1855
  if s0.last
1269
1856
  r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1857
+ r0.extend(Hstring0)
1270
1858
  r0.extend(Hstring1)
1271
- r0.extend(Hstring2)
1272
1859
  else
1273
1860
  @index = i0
1274
1861
  r0 = nil
@@ -1807,6 +2394,16 @@ module CBOR_DIAG
1807
2394
  r0
1808
2395
  end
1809
2396
 
2397
+ module Ows0
2398
+ end
2399
+
2400
+ module Ows1
2401
+ end
2402
+
2403
+ module Ows2
2404
+ def sval; "" end
2405
+ end
2406
+
1810
2407
  def _nt_ows
1811
2408
  start_index = index
1812
2409
  if node_cache[:ows].has_key?(index)
@@ -1818,22 +2415,108 @@ module CBOR_DIAG
1818
2415
  return cached
1819
2416
  end
1820
2417
 
1821
- s0, i0 = [], index
2418
+ i0, s0 = index, []
2419
+ s1, i1 = [], index
1822
2420
  loop do
1823
2421
  if has_terminal?(@regexps[gr = '\A[ \\t\\n\\r]'] ||= Regexp.new(gr), :regexp, index)
1824
- r1 = true
2422
+ r2 = true
1825
2423
  @index += 1
1826
2424
  else
1827
2425
  terminal_parse_failure('[ \\t\\n\\r]')
1828
- r1 = nil
2426
+ r2 = nil
1829
2427
  end
1830
- if r1
1831
- s0 << r1
2428
+ if r2
2429
+ s1 << r2
1832
2430
  else
1833
2431
  break
1834
2432
  end
1835
2433
  end
1836
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2434
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
2435
+ s0 << r1
2436
+ if r1
2437
+ s3, i3 = [], index
2438
+ loop do
2439
+ i4, s4 = index, []
2440
+ if (match_len = has_terminal?("/", false, index))
2441
+ r5 = true
2442
+ @index += match_len
2443
+ else
2444
+ terminal_parse_failure('"/"')
2445
+ r5 = nil
2446
+ end
2447
+ s4 << r5
2448
+ if r5
2449
+ s6, i6 = [], index
2450
+ loop do
2451
+ if has_terminal?(@regexps[gr = '\A[^/]'] ||= Regexp.new(gr), :regexp, index)
2452
+ r7 = true
2453
+ @index += 1
2454
+ else
2455
+ terminal_parse_failure('[^/]')
2456
+ r7 = nil
2457
+ end
2458
+ if r7
2459
+ s6 << r7
2460
+ else
2461
+ break
2462
+ end
2463
+ end
2464
+ r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
2465
+ s4 << r6
2466
+ if r6
2467
+ if (match_len = has_terminal?("/", false, index))
2468
+ r8 = true
2469
+ @index += match_len
2470
+ else
2471
+ terminal_parse_failure('"/"')
2472
+ r8 = nil
2473
+ end
2474
+ s4 << r8
2475
+ if r8
2476
+ s9, i9 = [], index
2477
+ loop do
2478
+ if has_terminal?(@regexps[gr = '\A[ \\t\\n\\r]'] ||= Regexp.new(gr), :regexp, index)
2479
+ r10 = true
2480
+ @index += 1
2481
+ else
2482
+ terminal_parse_failure('[ \\t\\n\\r]')
2483
+ r10 = nil
2484
+ end
2485
+ if r10
2486
+ s9 << r10
2487
+ else
2488
+ break
2489
+ end
2490
+ end
2491
+ r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
2492
+ s4 << r9
2493
+ end
2494
+ end
2495
+ end
2496
+ if s4.last
2497
+ r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
2498
+ r4.extend(Ows0)
2499
+ else
2500
+ @index = i4
2501
+ r4 = nil
2502
+ end
2503
+ if r4
2504
+ s3 << r4
2505
+ else
2506
+ break
2507
+ end
2508
+ end
2509
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
2510
+ s0 << r3
2511
+ end
2512
+ if s0.last
2513
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2514
+ r0.extend(Ows1)
2515
+ r0.extend(Ows2)
2516
+ else
2517
+ @index = i0
2518
+ r0 = nil
2519
+ end
1837
2520
 
1838
2521
  node_cache[:ows][start_index] = r0
1839
2522
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cbor-diag
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carsten Bormann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-03 00:00:00.000000000 Z
11
+ date: 2015-12-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler