cddlc 0.1.5 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: aa1feed69996a1e91c43877cfbe3e68c6b935039976ae95db312fef99a0e8bbd
4
- data.tar.gz: 746c4b175cb78c502ab731e43672841663cfb4a4159bcf387f8f69c9f34e347a
3
+ metadata.gz: 30602affec27761888bf5f3094ac596e21cbf80fa9726f2476210ed8b419b981
4
+ data.tar.gz: 4742739b320591da0f59be4732d4c0957acbfc80a1ca699caeda5943007b3d0a
5
5
  SHA512:
6
- metadata.gz: c9b58614695995f0336496734a3684992ddd6f7a1be0dfcbc0451f45afde7e78eb2a2f89ce60e9c5e0c09a1c0e7e8856cc5e5658fe3fe78bc22bc08c4897c4d4
7
- data.tar.gz: d19ca545ca39eb87af227651438755c13475dd75bd29ef11a6a6327aac42e9c4a69fe0e5322a291e7819903d89c4de1296e1605934bce9b154dcb7ef6563c151
6
+ metadata.gz: 9a726e557db0da91370c0c3f22ab31fc7f494d0c6902874b8129c3afb40bffd95855d7785be15f105a3cdc62831a79048daa919f714267e83bd372cf3c455bd1
7
+ data.tar.gz: a1b74234c1195480fa40eb2e298dcbb2450c07e12e282fbb0606733cf60c716f280a224f33ba5f9baa9e80d0cb1829dff526bbe78f492ae9e7f30a1bff8cc68b
data/cddlc.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "cddlc"
3
- s.version = "0.1.5"
3
+ s.version = "0.1.6"
4
4
  s.summary = "CDDL (Concise Data Definition Language) converters and miscellaneous tools"
5
5
  s.description = %q{cddlc implements converters and miscellaneous tools for CDDL, RFC 8610}
6
6
  s.author = "Carsten Bormann"
data/lib/cddlc.rb CHANGED
@@ -98,9 +98,9 @@ class CDDL
98
98
  end
99
99
  end.compact
100
100
  end
101
- puts "FROM #{from.inspect}" if $options.verbose
102
- puts "PREFERRED_TAG #{preferred_tag.inspect}" if $options.verbose
103
- puts "DOCREF #{docref.inspect}" if $options.verbose
101
+ warn "FROM #{from.inspect}" if $options.verbose
102
+ warn "PREFERRED_TAG #{preferred_tag.inspect}" if $options.verbose
103
+ warn "DOCREF #{docref.inspect}" if $options.verbose
104
104
 
105
105
  fn = docref.downcase << ".cddl"
106
106
  io = CDDL.read_from_include_path(fn)
@@ -162,6 +162,7 @@ class CDDL
162
162
  end
163
163
  break unless got_more
164
164
  to_be_imported = cddl_undefined # XXX square...
165
+ warn "TO IMPORT #{to_be_imported.inspect}" if $options.verbose
165
166
  must_be_found = false
166
167
  end
167
168
  if preferred_tag
@@ -947,7 +947,7 @@ module CDDLGRAMMAR
947
947
  end
948
948
 
949
949
  module Type214
950
- def uint
950
+ def tag_number
951
951
  elements[1]
952
952
  end
953
953
  end
@@ -970,7 +970,7 @@ module CDDLGRAMMAR
970
970
  module Type216
971
971
  def ast
972
972
  el = elements[2].elements
973
- ["prim", 6, el && el[1].text_value.to_i, elements[5].ast]
973
+ ["prim", 6, el && el[1].ast, elements[5].ast]
974
974
  end
975
975
  end
976
976
 
@@ -1330,7 +1330,7 @@ module CDDLGRAMMAR
1330
1330
  end
1331
1331
  s48 << r49
1332
1332
  if r49
1333
- r50 = _nt_uint
1333
+ r50 = _nt_tag_number
1334
1334
  s48 << r50
1335
1335
  end
1336
1336
  if s48.last
@@ -1476,6 +1476,85 @@ module CDDLGRAMMAR
1476
1476
  r0
1477
1477
  end
1478
1478
 
1479
+ module TagNumber0
1480
+ def ast() text_value.to_i end
1481
+ end
1482
+
1483
+ module TagNumber1
1484
+ def type
1485
+ elements[1]
1486
+ end
1487
+
1488
+ end
1489
+
1490
+ module TagNumber2
1491
+ def ast() elements[1].ast end
1492
+ end
1493
+
1494
+ def _nt_tag_number
1495
+ start_index = index
1496
+ if node_cache[:tag_number].has_key?(index)
1497
+ cached = node_cache[:tag_number][index]
1498
+ if cached
1499
+ node_cache[:tag_number][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1500
+ @index = cached.interval.end
1501
+ end
1502
+ return cached
1503
+ end
1504
+
1505
+ i0 = index
1506
+ r1 = _nt_uint
1507
+ r1.extend(TagNumber0)
1508
+ r1.extend(TagNumber0)
1509
+ if r1
1510
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
1511
+ r0 = r1
1512
+ else
1513
+ i2, s2 = index, []
1514
+ if (match_len = has_terminal?("<", false, index))
1515
+ r3 = true
1516
+ @index += match_len
1517
+ else
1518
+ terminal_parse_failure('"<"')
1519
+ r3 = nil
1520
+ end
1521
+ s2 << r3
1522
+ if r3
1523
+ r4 = _nt_type
1524
+ s2 << r4
1525
+ if r4
1526
+ if (match_len = has_terminal?(">", false, index))
1527
+ r5 = true
1528
+ @index += match_len
1529
+ else
1530
+ terminal_parse_failure('">"')
1531
+ r5 = nil
1532
+ end
1533
+ s2 << r5
1534
+ end
1535
+ end
1536
+ if s2.last
1537
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1538
+ r2.extend(TagNumber1)
1539
+ r2.extend(TagNumber2)
1540
+ else
1541
+ @index = i2
1542
+ r2 = nil
1543
+ end
1544
+ if r2
1545
+ r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
1546
+ r0 = r2
1547
+ else
1548
+ @index = i0
1549
+ r0 = nil
1550
+ end
1551
+ end
1552
+
1553
+ node_cache[:tag_number][start_index] = r0
1554
+
1555
+ r0
1556
+ end
1557
+
1479
1558
  def _nt_rangeop
1480
1559
  start_index = index
1481
1560
  if node_cache[:rangeop].has_key?(index)
@@ -42,7 +42,7 @@ class CDDL
42
42
  else
43
43
  end
44
44
  end
45
- p @gen if $options.verbose
45
+ warn "@gen = #{@gen.inspect}" if $options.verbose
46
46
  @gen.each do |k, v|
47
47
  parmnames = v[0]
48
48
  fail unless rules[k] == ["parm", parmnames, v[1]]
@@ -53,7 +53,7 @@ class CDDL
53
53
  fail if Array === name
54
54
  @new_rules[name] = expand_prod(prod)
55
55
  end
56
- p @new_rules if $options.verbose
56
+ warn "@new_rules = #{@new_rules.inspect}" if $options.verbose
57
57
  @rules = @new_rules
58
58
  end
59
59
  end
@@ -31,7 +31,7 @@ class CDDL
31
31
  ["enum", visit(prod, &block)]
32
32
  in ["unwrap", prod]
33
33
  ["unwrap", visit(prod, &block)] # XXX, this may need to be bottled in a rule
34
- in ["prim", Array => prod, *prods]
34
+ in ["prim", prod, *prods]
35
35
  ["prim", visit(prod, &block), *visit_all(prods, &block)]
36
36
  in ["mem", *prods]
37
37
  ["mem", *visit_all(prods, &block)]
@@ -68,6 +68,8 @@ class CDDL
68
68
  [4, "##{maj}.#{min}"]
69
69
  in ["prim", 6, Integer => tag, type]
70
70
  [4, "#6.#{tag}(#{write_rhs(type, 0, indent, pn)})"]
71
+ in ["prim", 6, Array => tag, type]
72
+ [4, "#6.<#{write_rhs(tag, 0, indent, pn)}>(#{write_rhs(type, 0, indent, pn)})"]
71
73
  in ["prim", 6, nil, type]
72
74
  [4, "#6(#{write_rhs(type, 0, indent, pn)})"]
73
75
  # prim: extension for #6.<i>(t)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cddlc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
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-03-05 00:00:00.000000000 Z
11
+ date: 2023-03-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler