edn-abnf 0.1.7 → 0.2.1
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 +74 -96
- metadata +3 -5
- data/bin/edn-abnf~ +0 -57
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 53d9d76f5b3a4ac6e05c39d9050d8638ee9c7a7ab40b85e63d76f5deaf908343
|
4
|
+
data.tar.gz: 026a649f7b15be50650baa42b81975ddd6ca791458010dfc5f9a11a0e947bb69
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 50342e06dcd4acd09737a50f0f9ee52f52b997368339e98049dd59816cd137f937605514167c3bd9225b73262219ea7797855bc0d7716732c80e6e8f5fca7f99
|
7
|
+
data.tar.gz: bc2286703fc79b9a182019ff2a30b56953b829f63e22b9bf7df738928ad3379b01c1344e4bf561c6b4de1af0177efe8a747e40a4d15026950877296a76c7c8a9
|
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.1
|
3
|
+
s.version = "0.2.1"
|
4
4
|
s.summary = "CBOR Extended Diagnostic Notation (EDN) implemented in ABNF"
|
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
@@ -10,16 +10,16 @@ module EDNGRAMMAR
|
|
10
10
|
end
|
11
11
|
|
12
12
|
module Seq0
|
13
|
-
def
|
14
|
-
elements[
|
13
|
+
def OC
|
14
|
+
elements[0]
|
15
15
|
end
|
16
16
|
|
17
17
|
def item
|
18
|
-
elements[
|
18
|
+
elements[1]
|
19
19
|
end
|
20
20
|
|
21
|
-
def
|
22
|
-
elements[
|
21
|
+
def S
|
22
|
+
elements[2]
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
@@ -84,24 +84,14 @@ module EDNGRAMMAR
|
|
84
84
|
s6, i6 = [], index
|
85
85
|
loop do
|
86
86
|
i7, s7 = index, []
|
87
|
-
|
88
|
-
r8 = true
|
89
|
-
@index += match_len
|
90
|
-
else
|
91
|
-
terminal_parse_failure('","')
|
92
|
-
r8 = nil
|
93
|
-
end
|
87
|
+
r8 = _nt_OC
|
94
88
|
s7 << r8
|
95
89
|
if r8
|
96
|
-
r9 =
|
90
|
+
r9 = _nt_item
|
97
91
|
s7 << r9
|
98
92
|
if r9
|
99
|
-
r10 =
|
93
|
+
r10 = _nt_S
|
100
94
|
s7 << r10
|
101
|
-
if r10
|
102
|
-
r11 = _nt_S
|
103
|
-
s7 << r11
|
104
|
-
end
|
105
95
|
end
|
106
96
|
end
|
107
97
|
if s7.last
|
@@ -120,8 +110,8 @@ module EDNGRAMMAR
|
|
120
110
|
r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
|
121
111
|
s3 << r6
|
122
112
|
if r6
|
123
|
-
|
124
|
-
s3 <<
|
113
|
+
r11 = _nt_OC
|
114
|
+
s3 << r11
|
125
115
|
end
|
126
116
|
end
|
127
117
|
end
|
@@ -353,12 +343,16 @@ module EDNGRAMMAR
|
|
353
343
|
end
|
354
344
|
|
355
345
|
module String0
|
356
|
-
def
|
346
|
+
def S1
|
357
347
|
elements[0]
|
358
348
|
end
|
359
349
|
|
350
|
+
def S2
|
351
|
+
elements[2]
|
352
|
+
end
|
353
|
+
|
360
354
|
def string1e
|
361
|
-
elements[
|
355
|
+
elements[3]
|
362
356
|
end
|
363
357
|
end
|
364
358
|
|
@@ -384,7 +378,7 @@ module EDNGRAMMAR
|
|
384
378
|
end
|
385
379
|
end
|
386
380
|
def ast
|
387
|
-
arr = [elements[0].ast] + elements[1].elements.map {|x| x.elements[
|
381
|
+
arr = [elements[0].ast] + elements[1].elements.map {|x| x.elements[3].ast}
|
388
382
|
charr = arr.chunk(&:class).to_a
|
389
383
|
if charr.size == 1
|
390
384
|
unpack_chunk(*charr.first)
|
@@ -415,8 +409,22 @@ module EDNGRAMMAR
|
|
415
409
|
r4 = _nt_S
|
416
410
|
s3 << r4
|
417
411
|
if r4
|
418
|
-
|
412
|
+
if (match_len = has_terminal?("+", false, index))
|
413
|
+
r5 = true
|
414
|
+
@index += match_len
|
415
|
+
else
|
416
|
+
terminal_parse_failure('"+"')
|
417
|
+
r5 = nil
|
418
|
+
end
|
419
419
|
s3 << r5
|
420
|
+
if r5
|
421
|
+
r6 = _nt_S
|
422
|
+
s3 << r6
|
423
|
+
if r6
|
424
|
+
r7 = _nt_string1e
|
425
|
+
s3 << r7
|
426
|
+
end
|
427
|
+
end
|
420
428
|
end
|
421
429
|
if s3.last
|
422
430
|
r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
|
@@ -1913,16 +1921,16 @@ module EDNGRAMMAR
|
|
1913
1921
|
end
|
1914
1922
|
|
1915
1923
|
module Array0
|
1916
|
-
def
|
1917
|
-
elements[
|
1924
|
+
def OC
|
1925
|
+
elements[0]
|
1918
1926
|
end
|
1919
1927
|
|
1920
1928
|
def item
|
1921
|
-
elements[
|
1929
|
+
elements[1]
|
1922
1930
|
end
|
1923
1931
|
|
1924
|
-
def
|
1925
|
-
elements[
|
1932
|
+
def S
|
1933
|
+
elements[2]
|
1926
1934
|
end
|
1927
1935
|
end
|
1928
1936
|
|
@@ -2007,24 +2015,14 @@ module EDNGRAMMAR
|
|
2007
2015
|
s8, i8 = [], index
|
2008
2016
|
loop do
|
2009
2017
|
i9, s9 = index, []
|
2010
|
-
|
2011
|
-
r10 = true
|
2012
|
-
@index += match_len
|
2013
|
-
else
|
2014
|
-
terminal_parse_failure('","')
|
2015
|
-
r10 = nil
|
2016
|
-
end
|
2018
|
+
r10 = _nt_OC
|
2017
2019
|
s9 << r10
|
2018
2020
|
if r10
|
2019
|
-
r11 =
|
2021
|
+
r11 = _nt_item
|
2020
2022
|
s9 << r11
|
2021
2023
|
if r11
|
2022
|
-
r12 =
|
2024
|
+
r12 = _nt_S
|
2023
2025
|
s9 << r12
|
2024
|
-
if r12
|
2025
|
-
r13 = _nt_S
|
2026
|
-
s9 << r13
|
2027
|
-
end
|
2028
2026
|
end
|
2029
2027
|
end
|
2030
2028
|
if s9.last
|
@@ -2043,8 +2041,8 @@ module EDNGRAMMAR
|
|
2043
2041
|
r8 = instantiate_node(SyntaxNode,input, i8...index, s8)
|
2044
2042
|
s5 << r8
|
2045
2043
|
if r8
|
2046
|
-
|
2047
|
-
s5 <<
|
2044
|
+
r13 = _nt_OC
|
2045
|
+
s5 << r13
|
2048
2046
|
end
|
2049
2047
|
end
|
2050
2048
|
end
|
@@ -2063,13 +2061,13 @@ module EDNGRAMMAR
|
|
2063
2061
|
s0 << r4
|
2064
2062
|
if r4
|
2065
2063
|
if (match_len = has_terminal?("]", false, index))
|
2066
|
-
|
2064
|
+
r14 = true
|
2067
2065
|
@index += match_len
|
2068
2066
|
else
|
2069
2067
|
terminal_parse_failure('"]"')
|
2070
|
-
|
2068
|
+
r14 = nil
|
2071
2069
|
end
|
2072
|
-
s0 <<
|
2070
|
+
s0 << r14
|
2073
2071
|
end
|
2074
2072
|
end
|
2075
2073
|
end
|
@@ -2089,16 +2087,16 @@ module EDNGRAMMAR
|
|
2089
2087
|
end
|
2090
2088
|
|
2091
2089
|
module Map0
|
2092
|
-
def
|
2093
|
-
elements[
|
2090
|
+
def OC
|
2091
|
+
elements[0]
|
2094
2092
|
end
|
2095
2093
|
|
2096
2094
|
def kp
|
2097
|
-
elements[
|
2095
|
+
elements[1]
|
2098
2096
|
end
|
2099
2097
|
|
2100
|
-
def
|
2101
|
-
elements[
|
2098
|
+
def S
|
2099
|
+
elements[2]
|
2102
2100
|
end
|
2103
2101
|
end
|
2104
2102
|
|
@@ -2182,24 +2180,14 @@ module EDNGRAMMAR
|
|
2182
2180
|
s8, i8 = [], index
|
2183
2181
|
loop do
|
2184
2182
|
i9, s9 = index, []
|
2185
|
-
|
2186
|
-
r10 = true
|
2187
|
-
@index += match_len
|
2188
|
-
else
|
2189
|
-
terminal_parse_failure('","')
|
2190
|
-
r10 = nil
|
2191
|
-
end
|
2183
|
+
r10 = _nt_OC
|
2192
2184
|
s9 << r10
|
2193
2185
|
if r10
|
2194
|
-
r11 =
|
2186
|
+
r11 = _nt_kp
|
2195
2187
|
s9 << r11
|
2196
2188
|
if r11
|
2197
|
-
r12 =
|
2189
|
+
r12 = _nt_S
|
2198
2190
|
s9 << r12
|
2199
|
-
if r12
|
2200
|
-
r13 = _nt_S
|
2201
|
-
s9 << r13
|
2202
|
-
end
|
2203
2191
|
end
|
2204
2192
|
end
|
2205
2193
|
if s9.last
|
@@ -2218,8 +2206,8 @@ module EDNGRAMMAR
|
|
2218
2206
|
r8 = instantiate_node(SyntaxNode,input, i8...index, s8)
|
2219
2207
|
s5 << r8
|
2220
2208
|
if r8
|
2221
|
-
|
2222
|
-
s5 <<
|
2209
|
+
r13 = _nt_OC
|
2210
|
+
s5 << r13
|
2223
2211
|
end
|
2224
2212
|
end
|
2225
2213
|
end
|
@@ -2238,13 +2226,13 @@ module EDNGRAMMAR
|
|
2238
2226
|
s0 << r4
|
2239
2227
|
if r4
|
2240
2228
|
if (match_len = has_terminal?("}", false, index))
|
2241
|
-
|
2229
|
+
r14 = true
|
2242
2230
|
@index += match_len
|
2243
2231
|
else
|
2244
2232
|
terminal_parse_failure('"}"')
|
2245
|
-
|
2233
|
+
r14 = nil
|
2246
2234
|
end
|
2247
|
-
s0 <<
|
2235
|
+
s0 << r14
|
2248
2236
|
end
|
2249
2237
|
end
|
2250
2238
|
end
|
@@ -2779,16 +2767,16 @@ module EDNGRAMMAR
|
|
2779
2767
|
end
|
2780
2768
|
|
2781
2769
|
module Streamstring0
|
2782
|
-
def
|
2783
|
-
elements[
|
2770
|
+
def OC
|
2771
|
+
elements[0]
|
2784
2772
|
end
|
2785
2773
|
|
2786
2774
|
def string
|
2787
|
-
elements[
|
2775
|
+
elements[1]
|
2788
2776
|
end
|
2789
2777
|
|
2790
|
-
def
|
2791
|
-
elements[
|
2778
|
+
def S
|
2779
|
+
elements[2]
|
2792
2780
|
end
|
2793
2781
|
end
|
2794
2782
|
|
@@ -2854,24 +2842,14 @@ module EDNGRAMMAR
|
|
2854
2842
|
s5, i5 = [], index
|
2855
2843
|
loop do
|
2856
2844
|
i6, s6 = index, []
|
2857
|
-
|
2858
|
-
r7 = true
|
2859
|
-
@index += match_len
|
2860
|
-
else
|
2861
|
-
terminal_parse_failure('","')
|
2862
|
-
r7 = nil
|
2863
|
-
end
|
2845
|
+
r7 = _nt_OC
|
2864
2846
|
s6 << r7
|
2865
2847
|
if r7
|
2866
|
-
r8 =
|
2848
|
+
r8 = _nt_string
|
2867
2849
|
s6 << r8
|
2868
2850
|
if r8
|
2869
|
-
r9 =
|
2851
|
+
r9 = _nt_S
|
2870
2852
|
s6 << r9
|
2871
|
-
if r9
|
2872
|
-
r10 = _nt_S
|
2873
|
-
s6 << r10
|
2874
|
-
end
|
2875
2853
|
end
|
2876
2854
|
end
|
2877
2855
|
if s6.last
|
@@ -2890,17 +2868,17 @@ module EDNGRAMMAR
|
|
2890
2868
|
r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
|
2891
2869
|
s0 << r5
|
2892
2870
|
if r5
|
2893
|
-
|
2894
|
-
s0 <<
|
2895
|
-
if
|
2871
|
+
r10 = _nt_OC
|
2872
|
+
s0 << r10
|
2873
|
+
if r10
|
2896
2874
|
if (match_len = has_terminal?(")", false, index))
|
2897
|
-
|
2875
|
+
r11 = true
|
2898
2876
|
@index += match_len
|
2899
2877
|
else
|
2900
2878
|
terminal_parse_failure('")"')
|
2901
|
-
|
2879
|
+
r11 = nil
|
2902
2880
|
end
|
2903
|
-
s0 <<
|
2881
|
+
s0 << r11
|
2904
2882
|
end
|
2905
2883
|
end
|
2906
2884
|
end
|
@@ -2976,7 +2954,7 @@ module EDNGRAMMAR
|
|
2976
2954
|
end
|
2977
2955
|
|
2978
2956
|
module DoubleQuoted0
|
2979
|
-
def ast; text_value end
|
2957
|
+
def ast; text_value.gsub("\r", "") end
|
2980
2958
|
end
|
2981
2959
|
|
2982
2960
|
module DoubleQuoted1
|
@@ -3097,7 +3075,7 @@ module EDNGRAMMAR
|
|
3097
3075
|
end
|
3098
3076
|
|
3099
3077
|
module SingleQuoted0
|
3100
|
-
def ast; text_value end
|
3078
|
+
def ast; text_value.gsub("\r", "") end
|
3101
3079
|
end
|
3102
3080
|
|
3103
3081
|
module SingleQuoted1
|
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.1
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Carsten Bormann
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-08-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -85,12 +85,10 @@ description: edn-abnf implements converters and miscellaneous tools for CBOR EDN
|
|
85
85
|
email: cabo@tzi.org
|
86
86
|
executables:
|
87
87
|
- edn-abnf
|
88
|
-
- edn-abnf~
|
89
88
|
extensions: []
|
90
89
|
extra_rdoc_files: []
|
91
90
|
files:
|
92
91
|
- bin/edn-abnf
|
93
|
-
- bin/edn-abnf~
|
94
92
|
- edn-abnf.gemspec
|
95
93
|
- lib/cbor-diagnostic-app/b64.rb
|
96
94
|
- lib/cbor-diagnostic-app/b64grammar.rb
|
@@ -122,7 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
122
120
|
- !ruby/object:Gem::Version
|
123
121
|
version: '0'
|
124
122
|
requirements: []
|
125
|
-
rubygems_version: 3.5.
|
123
|
+
rubygems_version: 3.5.14
|
126
124
|
signing_key:
|
127
125
|
specification_version: 4
|
128
126
|
summary: CBOR Extended Diagnostic Notation (EDN) implemented in ABNF
|
data/bin/edn-abnf~
DELETED
@@ -1,57 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
require 'pp'
|
3
|
-
require 'yaml'
|
4
|
-
require 'treetop'
|
5
|
-
require 'json'
|
6
|
-
|
7
|
-
require_relative '../lib/edn-abnf.rb'
|
8
|
-
|
9
|
-
def snaky(name)
|
10
|
-
name.gsub(/-/, "_")
|
11
|
-
end
|
12
|
-
|
13
|
-
Encoding.default_external = Encoding::UTF_8
|
14
|
-
require 'optparse'
|
15
|
-
require 'ostruct'
|
16
|
-
|
17
|
-
$options = OpenStruct.new
|
18
|
-
begin
|
19
|
-
op = OptionParser.new do |opts|
|
20
|
-
opts.banner = "Usage: edn-abnf.rb [options] [file.edn... | -]"
|
21
|
-
|
22
|
-
opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
|
23
|
-
$options.verbose = v
|
24
|
-
end
|
25
|
-
opts.on("-tFMT", "--to=FMT", [:basic, :neat, :json, :yaml, :edn, :diag], "Target format") do |v|
|
26
|
-
$options.target = v
|
27
|
-
end
|
28
|
-
end
|
29
|
-
op.parse!
|
30
|
-
rescue Exception => e
|
31
|
-
warn e
|
32
|
-
exit 1
|
33
|
-
end
|
34
|
-
|
35
|
-
if ARGV == []
|
36
|
-
puts op
|
37
|
-
exit 1
|
38
|
-
end
|
39
|
-
|
40
|
-
edn_file = ARGF.read
|
41
|
-
|
42
|
-
edn = EDN.from_edn(edn_file)
|
43
|
-
result = edn.tree # XXX .tree?
|
44
|
-
|
45
|
-
case $options.target
|
46
|
-
when :basic, nil
|
47
|
-
pp result
|
48
|
-
when :neat, :json
|
49
|
-
require 'neatjson'
|
50
|
-
puts JSON.neat_generate(result, after_comma: 1, after_colon: 1)
|
51
|
-
when :yaml
|
52
|
-
puts result.to_yaml
|
53
|
-
when :edn, :diag
|
54
|
-
puts result.cbor_diagnostic
|
55
|
-
else
|
56
|
-
warn ["Unknown target format: ", $options.target].inspect
|
57
|
-
end
|