edn-abnf 0.3.6 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5fb3a21c21375974f9e6c3b1f708f002b00aaeaff85e72d430a836ce3e0fd2f7
4
- data.tar.gz: fcfc55d388ed1b62ab3ecb4503764cc7eb87c6f984d8082c746705091ad38569
3
+ metadata.gz: ac4a0b1911b37bbabef257681aaeec94716aaac6b34f2719b3a33672bbeaef86
4
+ data.tar.gz: 6fd059837eac37459f8e18f5bfc921ef6ff10fc68a9dddc0e2d481b2a447b11b
5
5
  SHA512:
6
- metadata.gz: 329bf4e226c07a53b9103a3f9ef58a70d9c2c539ceb5f50a47c80427362dd7d6b4877c4bb53d11da1c0ce811cdd3fda7296e5994e05822b4a706869760819c34
7
- data.tar.gz: 659cc80dc2d1013c6f2176982205c159e0359036888b50152228c52e0e10148109288f88e716191e6a9eeb104e98ec1a610b00f53d7f1546b64d0a6919f56674
6
+ metadata.gz: e9c24d903f4b5e1bb7dfdef58f63c526d3f1c1ce445d27401e0db6b34829141b79b418f8ef769237b454d7e72d01dd0f931f895d229fdb59e5a9d8d808029200
7
+ data.tar.gz: 0cae09501f16449694856f6f152611b44c6d7b6153cb17a7f807f68f46b95658a0372031c10bb80aff0e9878bfe1d9d18bebec26873f24716635051e9c61ccb0
data/bin/edn-abnf CHANGED
@@ -141,6 +141,7 @@ when :yaml
141
141
  when :edn, :diag, nil
142
142
  puts result.cbor_diagnostic
143
143
  when :pretty
144
+ # XXX can't do Box yet
144
145
  enc = if CBOR::Sequence === result
145
146
  result.to_cborseq
146
147
  else
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.3.6"
3
+ s.version = "0.4.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"
@@ -10,17 +10,13 @@ module EDNGRAMMAR
10
10
  end
11
11
 
12
12
  module Seq0
13
- def OC
13
+ def MSC
14
14
  elements[0]
15
15
  end
16
16
 
17
17
  def item
18
18
  elements[1]
19
19
  end
20
-
21
- def S
22
- elements[2]
23
- end
24
20
  end
25
21
 
26
22
  module Seq1
@@ -28,12 +24,8 @@ module EDNGRAMMAR
28
24
  elements[0]
29
25
  end
30
26
 
31
- def S
32
- elements[1]
33
- end
34
-
35
- def OC
36
- elements[3]
27
+ def SOC
28
+ elements[2]
37
29
  end
38
30
  end
39
31
 
@@ -47,7 +39,7 @@ module EDNGRAMMAR
47
39
  module Seq3
48
40
  def ast
49
41
  r = if e = elements[1].elements
50
- [e[0].ast] + e[2].elements.map {|x| x.item.ast }
42
+ [e[0].ast] + e[1].elements.map {|x| x.item.ast }
51
43
  else
52
44
  []
53
45
  end
@@ -78,42 +70,34 @@ module EDNGRAMMAR
78
70
  r4 = _nt_item
79
71
  s3 << r4
80
72
  if r4
81
- r5 = _nt_S
82
- s3 << r5
83
- if r5
84
- s6, i6 = [], index
85
- loop do
86
- i7, s7 = index, []
87
- r8 = _nt_OC
88
- s7 << r8
89
- if r8
90
- r9 = _nt_item
91
- s7 << r9
92
- if r9
93
- r10 = _nt_S
94
- s7 << r10
95
- end
96
- end
97
- if s7.last
98
- r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
99
- r7.extend(Seq0)
100
- else
101
- @index = i7
102
- r7 = nil
103
- end
104
- if r7
105
- s6 << r7
106
- else
107
- break
108
- end
73
+ s5, i5 = [], index
74
+ loop do
75
+ i6, s6 = index, []
76
+ r7 = _nt_MSC
77
+ s6 << r7
78
+ if r7
79
+ r8 = _nt_item
80
+ s6 << r8
81
+ end
82
+ if s6.last
83
+ r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
84
+ r6.extend(Seq0)
85
+ else
86
+ @index = i6
87
+ r6 = nil
109
88
  end
110
- r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
111
- s3 << r6
112
89
  if r6
113
- r11 = _nt_OC
114
- s3 << r11
90
+ s5 << r6
91
+ else
92
+ break
115
93
  end
116
94
  end
95
+ r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
96
+ s3 << r5
97
+ if r5
98
+ r9 = _nt_SOC
99
+ s3 << r9
100
+ end
117
101
  end
118
102
  if s3.last
119
103
  r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
@@ -1983,21 +1967,17 @@ module EDNGRAMMAR
1983
1967
  end
1984
1968
 
1985
1969
  module Array0
1986
- def OC
1970
+ def MSC
1987
1971
  elements[0]
1988
1972
  end
1989
1973
 
1990
1974
  def item
1991
1975
  elements[1]
1992
1976
  end
1993
-
1994
- def S
1995
- elements[2]
1996
- end
1997
1977
  end
1998
1978
 
1999
1979
  module Array1
2000
- def item
1980
+ def specms
2001
1981
  elements[0]
2002
1982
  end
2003
1983
 
@@ -2005,36 +1985,47 @@ module EDNGRAMMAR
2005
1985
  elements[1]
2006
1986
  end
2007
1987
 
2008
- def OC
2009
- elements[3]
1988
+ def item
1989
+ elements[2]
1990
+ end
1991
+
1992
+ def SOC
1993
+ elements[4]
2010
1994
  end
2011
1995
  end
2012
1996
 
2013
1997
  module Array2
2014
1998
  def spec
2015
- elements[1]
1999
+ elements[0]
2016
2000
  end
2017
2001
 
2018
2002
  def S
2019
- elements[2]
2003
+ elements[1]
2020
2004
  end
2021
-
2022
2005
  end
2023
2006
 
2024
2007
  module Array3
2008
+ end
2009
+
2010
+ module Array4
2025
2011
  def ast
2026
- r = if e = elements[3].elements
2027
- [e[0].ast] + e[2].elements.map {|x| x.item.ast }
2028
- else
2029
- []
2030
- end
2031
- if ei = spec.text_value[1..-1]
2032
- # warn "** ei #{ei.inspect}"
2033
- if ei == ""
2034
- r.cbor_stream!
2035
- else
2036
- warn "*** ignoring unimplemented encoding indicator #{ei.inspect} after ["
2037
- end
2012
+ e = elements[1] # alternative
2013
+ ei = nil
2014
+ if e.respond_to?(:specms)
2015
+ if e.specms && e.specms.elements
2016
+ ei = e.specms.elements[1].text_value
2017
+ end
2018
+ r = [e.item.ast] + e.elements[3].elements.map {|x| x.item.ast}
2019
+ else
2020
+ if e.spec && e.spec.elements
2021
+ ei = e.spec.elements[1].text_value
2022
+ end
2023
+ r = []
2024
+ end
2025
+ if ei == ""
2026
+ r.cbor_stream!
2027
+ elsif ei
2028
+ warn "*** ignoring unimplemented encoding indicator #{ei.inspect} after ["
2038
2029
  end
2039
2030
  r
2040
2031
  end
@@ -2061,83 +2052,97 @@ module EDNGRAMMAR
2061
2052
  end
2062
2053
  s0 << r1
2063
2054
  if r1
2064
- r2 = _nt_spec
2065
- s0 << r2
2066
- if r2
2067
- r3 = _nt_S
2068
- s0 << r3
2069
- if r3
2070
- i5, s5 = index, []
2055
+ i2 = index
2056
+ i3, s3 = index, []
2057
+ r4 = _nt_specms
2058
+ s3 << r4
2059
+ if r4
2060
+ r5 = _nt_S
2061
+ s3 << r5
2062
+ if r5
2071
2063
  r6 = _nt_item
2072
- s5 << r6
2064
+ s3 << r6
2073
2065
  if r6
2074
- r7 = _nt_S
2075
- s5 << r7
2076
- if r7
2077
- s8, i8 = [], index
2078
- loop do
2079
- i9, s9 = index, []
2080
- r10 = _nt_OC
2081
- s9 << r10
2082
- if r10
2083
- r11 = _nt_item
2084
- s9 << r11
2085
- if r11
2086
- r12 = _nt_S
2087
- s9 << r12
2088
- end
2089
- end
2090
- if s9.last
2091
- r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
2092
- r9.extend(Array0)
2093
- else
2094
- @index = i9
2095
- r9 = nil
2096
- end
2097
- if r9
2098
- s8 << r9
2099
- else
2100
- break
2101
- end
2066
+ s7, i7 = [], index
2067
+ loop do
2068
+ i8, s8 = index, []
2069
+ r9 = _nt_MSC
2070
+ s8 << r9
2071
+ if r9
2072
+ r10 = _nt_item
2073
+ s8 << r10
2074
+ end
2075
+ if s8.last
2076
+ r8 = instantiate_node(SyntaxNode,input, i8...index, s8)
2077
+ r8.extend(Array0)
2078
+ else
2079
+ @index = i8
2080
+ r8 = nil
2102
2081
  end
2103
- r8 = instantiate_node(SyntaxNode,input, i8...index, s8)
2104
- s5 << r8
2105
2082
  if r8
2106
- r13 = _nt_OC
2107
- s5 << r13
2083
+ s7 << r8
2084
+ else
2085
+ break
2108
2086
  end
2109
2087
  end
2110
- end
2111
- if s5.last
2112
- r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
2113
- r5.extend(Array1)
2114
- else
2115
- @index = i5
2116
- r5 = nil
2117
- end
2118
- if r5
2119
- r4 = r5
2120
- else
2121
- r4 = instantiate_node(SyntaxNode,input, index...index)
2122
- end
2123
- s0 << r4
2124
- if r4
2125
- if (match_len = has_terminal?("]", false, index))
2126
- r14 = true
2127
- @index += match_len
2128
- else
2129
- terminal_parse_failure('"]"')
2130
- r14 = nil
2088
+ r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
2089
+ s3 << r7
2090
+ if r7
2091
+ r11 = _nt_SOC
2092
+ s3 << r11
2131
2093
  end
2132
- s0 << r14
2133
2094
  end
2134
2095
  end
2135
2096
  end
2097
+ if s3.last
2098
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
2099
+ r3.extend(Array1)
2100
+ else
2101
+ @index = i3
2102
+ r3 = nil
2103
+ end
2104
+ if r3
2105
+ r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
2106
+ r2 = r3
2107
+ else
2108
+ i12, s12 = index, []
2109
+ r13 = _nt_spec
2110
+ s12 << r13
2111
+ if r13
2112
+ r14 = _nt_S
2113
+ s12 << r14
2114
+ end
2115
+ if s12.last
2116
+ r12 = instantiate_node(SyntaxNode,input, i12...index, s12)
2117
+ r12.extend(Array2)
2118
+ else
2119
+ @index = i12
2120
+ r12 = nil
2121
+ end
2122
+ if r12
2123
+ r12 = SyntaxNode.new(input, (index-1)...index) if r12 == true
2124
+ r2 = r12
2125
+ else
2126
+ @index = i2
2127
+ r2 = nil
2128
+ end
2129
+ end
2130
+ s0 << r2
2131
+ if r2
2132
+ if (match_len = has_terminal?("]", false, index))
2133
+ r15 = true
2134
+ @index += match_len
2135
+ else
2136
+ terminal_parse_failure('"]"')
2137
+ r15 = nil
2138
+ end
2139
+ s0 << r15
2140
+ end
2136
2141
  end
2137
2142
  if s0.last
2138
2143
  r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2139
- r0.extend(Array2)
2140
2144
  r0.extend(Array3)
2145
+ r0.extend(Array4)
2141
2146
  else
2142
2147
  @index = i0
2143
2148
  r0 = nil
@@ -2149,21 +2154,17 @@ module EDNGRAMMAR
2149
2154
  end
2150
2155
 
2151
2156
  module Map0
2152
- def OC
2157
+ def MSC
2153
2158
  elements[0]
2154
2159
  end
2155
2160
 
2156
- def kp
2161
+ def keyp
2157
2162
  elements[1]
2158
2163
  end
2159
-
2160
- def S
2161
- elements[2]
2162
- end
2163
2164
  end
2164
2165
 
2165
2166
  module Map1
2166
- def kp
2167
+ def specms
2167
2168
  elements[0]
2168
2169
  end
2169
2170
 
@@ -2171,35 +2172,47 @@ module EDNGRAMMAR
2171
2172
  elements[1]
2172
2173
  end
2173
2174
 
2174
- def OC
2175
- elements[3]
2175
+ def keyp
2176
+ elements[2]
2177
+ end
2178
+
2179
+ def SOC
2180
+ elements[4]
2176
2181
  end
2177
2182
  end
2178
2183
 
2179
2184
  module Map2
2180
2185
  def spec
2181
- elements[1]
2186
+ elements[0]
2182
2187
  end
2183
2188
 
2184
2189
  def S
2185
- elements[2]
2190
+ elements[1]
2186
2191
  end
2187
-
2188
2192
  end
2189
2193
 
2190
2194
  module Map3
2195
+ end
2196
+
2197
+ module Map4
2191
2198
  def ast
2192
- r = if e = elements[3].elements
2193
- Hash[ [e[0].ast] + e[2].elements.map {|x| x.kp.ast } ]
2194
- else
2195
- {}
2196
- end
2197
- if ei = spec.text_value[1..-1]
2198
- if ei == ""
2199
- r.cbor_stream!
2200
- else
2201
- warn "*** ignoring unimplemented encoding indicator #{ei.inspect} after \x7b"
2202
- end
2199
+ e = elements[1] # alternative
2200
+ ei = nil
2201
+ if e.respond_to?(:specms)
2202
+ if e.specms && e.specms.elements
2203
+ ei = e.specms.elements[1].text_value
2204
+ end
2205
+ r = Hash[ [e.keyp.ast] + e.elements[3].elements.map {|x| x.keyp.ast } ]
2206
+ else
2207
+ if e.spec && e.spec.elements
2208
+ ei = e.spec.elements[1].text_value
2209
+ end
2210
+ r = {}
2211
+ end
2212
+ if ei == ""
2213
+ r.cbor_stream!
2214
+ elsif ei
2215
+ warn "*** ignoring unimplemented encoding indicator #{ei.inspect} after ["
2203
2216
  end
2204
2217
  r
2205
2218
  end
@@ -2226,83 +2239,97 @@ module EDNGRAMMAR
2226
2239
  end
2227
2240
  s0 << r1
2228
2241
  if r1
2229
- r2 = _nt_spec
2230
- s0 << r2
2231
- if r2
2232
- r3 = _nt_S
2233
- s0 << r3
2234
- if r3
2235
- i5, s5 = index, []
2236
- r6 = _nt_kp
2237
- s5 << r6
2242
+ i2 = index
2243
+ i3, s3 = index, []
2244
+ r4 = _nt_specms
2245
+ s3 << r4
2246
+ if r4
2247
+ r5 = _nt_S
2248
+ s3 << r5
2249
+ if r5
2250
+ r6 = _nt_keyp
2251
+ s3 << r6
2238
2252
  if r6
2239
- r7 = _nt_S
2240
- s5 << r7
2241
- if r7
2242
- s8, i8 = [], index
2243
- loop do
2244
- i9, s9 = index, []
2245
- r10 = _nt_OC
2246
- s9 << r10
2247
- if r10
2248
- r11 = _nt_kp
2249
- s9 << r11
2250
- if r11
2251
- r12 = _nt_S
2252
- s9 << r12
2253
- end
2254
- end
2255
- if s9.last
2256
- r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
2257
- r9.extend(Map0)
2258
- else
2259
- @index = i9
2260
- r9 = nil
2261
- end
2262
- if r9
2263
- s8 << r9
2264
- else
2265
- break
2266
- end
2253
+ s7, i7 = [], index
2254
+ loop do
2255
+ i8, s8 = index, []
2256
+ r9 = _nt_MSC
2257
+ s8 << r9
2258
+ if r9
2259
+ r10 = _nt_keyp
2260
+ s8 << r10
2261
+ end
2262
+ if s8.last
2263
+ r8 = instantiate_node(SyntaxNode,input, i8...index, s8)
2264
+ r8.extend(Map0)
2265
+ else
2266
+ @index = i8
2267
+ r8 = nil
2267
2268
  end
2268
- r8 = instantiate_node(SyntaxNode,input, i8...index, s8)
2269
- s5 << r8
2270
2269
  if r8
2271
- r13 = _nt_OC
2272
- s5 << r13
2270
+ s7 << r8
2271
+ else
2272
+ break
2273
2273
  end
2274
2274
  end
2275
- end
2276
- if s5.last
2277
- r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
2278
- r5.extend(Map1)
2279
- else
2280
- @index = i5
2281
- r5 = nil
2282
- end
2283
- if r5
2284
- r4 = r5
2285
- else
2286
- r4 = instantiate_node(SyntaxNode,input, index...index)
2287
- end
2288
- s0 << r4
2289
- if r4
2290
- if (match_len = has_terminal?("}", false, index))
2291
- r14 = true
2292
- @index += match_len
2293
- else
2294
- terminal_parse_failure('"}"')
2295
- r14 = nil
2275
+ r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
2276
+ s3 << r7
2277
+ if r7
2278
+ r11 = _nt_SOC
2279
+ s3 << r11
2296
2280
  end
2297
- s0 << r14
2298
2281
  end
2299
2282
  end
2300
2283
  end
2284
+ if s3.last
2285
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
2286
+ r3.extend(Map1)
2287
+ else
2288
+ @index = i3
2289
+ r3 = nil
2290
+ end
2291
+ if r3
2292
+ r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
2293
+ r2 = r3
2294
+ else
2295
+ i12, s12 = index, []
2296
+ r13 = _nt_spec
2297
+ s12 << r13
2298
+ if r13
2299
+ r14 = _nt_S
2300
+ s12 << r14
2301
+ end
2302
+ if s12.last
2303
+ r12 = instantiate_node(SyntaxNode,input, i12...index, s12)
2304
+ r12.extend(Map2)
2305
+ else
2306
+ @index = i12
2307
+ r12 = nil
2308
+ end
2309
+ if r12
2310
+ r12 = SyntaxNode.new(input, (index-1)...index) if r12 == true
2311
+ r2 = r12
2312
+ else
2313
+ @index = i2
2314
+ r2 = nil
2315
+ end
2316
+ end
2317
+ s0 << r2
2318
+ if r2
2319
+ if (match_len = has_terminal?("}", false, index))
2320
+ r15 = true
2321
+ @index += match_len
2322
+ else
2323
+ terminal_parse_failure('"}"')
2324
+ r15 = nil
2325
+ end
2326
+ s0 << r15
2327
+ end
2301
2328
  end
2302
2329
  if s0.last
2303
2330
  r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2304
- r0.extend(Map2)
2305
2331
  r0.extend(Map3)
2332
+ r0.extend(Map4)
2306
2333
  else
2307
2334
  @index = i0
2308
2335
  r0 = nil
@@ -2313,7 +2340,7 @@ module EDNGRAMMAR
2313
2340
  r0
2314
2341
  end
2315
2342
 
2316
- module Kp0
2343
+ module Keyp0
2317
2344
  def item1
2318
2345
  elements[0]
2319
2346
  end
@@ -2331,18 +2358,18 @@ module EDNGRAMMAR
2331
2358
  end
2332
2359
  end
2333
2360
 
2334
- module Kp1
2361
+ module Keyp1
2335
2362
  def ast
2336
2363
  [elements[0].ast, elements[4].ast]
2337
2364
  end
2338
2365
  end
2339
2366
 
2340
- def _nt_kp
2367
+ def _nt_keyp
2341
2368
  start_index = index
2342
- if node_cache[:kp].has_key?(index)
2343
- cached = node_cache[:kp][index]
2369
+ if node_cache[:keyp].has_key?(index)
2370
+ cached = node_cache[:keyp][index]
2344
2371
  if cached
2345
- node_cache[:kp][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2372
+ node_cache[:keyp][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2346
2373
  @index = cached.interval.end
2347
2374
  end
2348
2375
  return cached
@@ -2375,14 +2402,14 @@ module EDNGRAMMAR
2375
2402
  end
2376
2403
  if s0.last
2377
2404
  r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2378
- r0.extend(Kp0)
2379
- r0.extend(Kp1)
2405
+ r0.extend(Keyp0)
2406
+ r0.extend(Keyp1)
2380
2407
  else
2381
2408
  @index = i0
2382
2409
  r0 = nil
2383
2410
  end
2384
2411
 
2385
- node_cache[:kp][start_index] = r0
2412
+ node_cache[:keyp][start_index] = r0
2386
2413
 
2387
2414
  r0
2388
2415
  end
@@ -2585,91 +2612,10 @@ module EDNGRAMMAR
2585
2612
  r0
2586
2613
  end
2587
2614
 
2588
- module S0
2589
- def comment
2590
- elements[0]
2591
- end
2615
+ module Comment0
2616
+ end
2592
2617
 
2593
- end
2594
-
2595
- module S1
2596
- end
2597
-
2598
- def _nt_S
2599
- start_index = index
2600
- if node_cache[:S].has_key?(index)
2601
- cached = node_cache[:S][index]
2602
- if cached
2603
- node_cache[:S][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2604
- @index = cached.interval.end
2605
- end
2606
- return cached
2607
- end
2608
-
2609
- i0, s0 = index, []
2610
- s1, i1 = [], index
2611
- loop do
2612
- r2 = _nt_blank
2613
- if r2
2614
- s1 << r2
2615
- else
2616
- break
2617
- end
2618
- end
2619
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
2620
- s0 << r1
2621
- if r1
2622
- s3, i3 = [], index
2623
- loop do
2624
- i4, s4 = index, []
2625
- r5 = _nt_comment
2626
- s4 << r5
2627
- if r5
2628
- s6, i6 = [], index
2629
- loop do
2630
- r7 = _nt_blank
2631
- if r7
2632
- s6 << r7
2633
- else
2634
- break
2635
- end
2636
- end
2637
- r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
2638
- s4 << r6
2639
- end
2640
- if s4.last
2641
- r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
2642
- r4.extend(S0)
2643
- else
2644
- @index = i4
2645
- r4 = nil
2646
- end
2647
- if r4
2648
- s3 << r4
2649
- else
2650
- break
2651
- end
2652
- end
2653
- r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
2654
- s0 << r3
2655
- end
2656
- if s0.last
2657
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2658
- r0.extend(S1)
2659
- else
2660
- @index = i0
2661
- r0 = nil
2662
- end
2663
-
2664
- node_cache[:S][start_index] = r0
2665
-
2666
- r0
2667
- end
2668
-
2669
- module Comment0
2670
- end
2671
-
2672
- module Comment1
2618
+ module Comment1
2673
2619
  end
2674
2620
 
2675
2621
  def _nt_comment
@@ -2780,23 +2726,169 @@ module EDNGRAMMAR
2780
2726
  r0
2781
2727
  end
2782
2728
 
2783
- module OC0
2729
+ module S0
2730
+ def comment
2731
+ elements[0]
2732
+ end
2733
+
2734
+ end
2735
+
2736
+ module S1
2737
+ end
2738
+
2739
+ def _nt_S
2740
+ start_index = index
2741
+ if node_cache[:S].has_key?(index)
2742
+ cached = node_cache[:S][index]
2743
+ if cached
2744
+ node_cache[:S][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2745
+ @index = cached.interval.end
2746
+ end
2747
+ return cached
2748
+ end
2749
+
2750
+ i0, s0 = index, []
2751
+ s1, i1 = [], index
2752
+ loop do
2753
+ r2 = _nt_blank
2754
+ if r2
2755
+ s1 << r2
2756
+ else
2757
+ break
2758
+ end
2759
+ end
2760
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
2761
+ s0 << r1
2762
+ if r1
2763
+ s3, i3 = [], index
2764
+ loop do
2765
+ i4, s4 = index, []
2766
+ r5 = _nt_comment
2767
+ s4 << r5
2768
+ if r5
2769
+ s6, i6 = [], index
2770
+ loop do
2771
+ r7 = _nt_blank
2772
+ if r7
2773
+ s6 << r7
2774
+ else
2775
+ break
2776
+ end
2777
+ end
2778
+ r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
2779
+ s4 << r6
2780
+ end
2781
+ if s4.last
2782
+ r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
2783
+ r4.extend(S0)
2784
+ else
2785
+ @index = i4
2786
+ r4 = nil
2787
+ end
2788
+ if r4
2789
+ s3 << r4
2790
+ else
2791
+ break
2792
+ end
2793
+ end
2794
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
2795
+ s0 << r3
2796
+ end
2797
+ if s0.last
2798
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2799
+ r0.extend(S1)
2800
+ else
2801
+ @index = i0
2802
+ r0 = nil
2803
+ end
2804
+
2805
+ node_cache[:S][start_index] = r0
2806
+
2807
+ r0
2808
+ end
2809
+
2810
+ module MS0
2811
+ def S
2812
+ elements[1]
2813
+ end
2814
+ end
2815
+
2816
+ def _nt_MS
2817
+ start_index = index
2818
+ if node_cache[:MS].has_key?(index)
2819
+ cached = node_cache[:MS][index]
2820
+ if cached
2821
+ node_cache[:MS][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2822
+ @index = cached.interval.end
2823
+ end
2824
+ return cached
2825
+ end
2826
+
2827
+ i0, s0 = index, []
2828
+ i1 = index
2829
+ r2 = _nt_blank
2830
+ if r2
2831
+ r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
2832
+ r1 = r2
2833
+ else
2834
+ r3 = _nt_comment
2835
+ if r3
2836
+ r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
2837
+ r1 = r3
2838
+ else
2839
+ @index = i1
2840
+ r1 = nil
2841
+ end
2842
+ end
2843
+ s0 << r1
2844
+ if r1
2845
+ r4 = _nt_S
2846
+ s0 << r4
2847
+ end
2848
+ if s0.last
2849
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2850
+ r0.extend(MS0)
2851
+ else
2852
+ @index = i0
2853
+ r0 = nil
2854
+ end
2855
+
2856
+ node_cache[:MS][start_index] = r0
2857
+
2858
+ r0
2859
+ end
2860
+
2861
+ module MSC0
2862
+ def S
2863
+ elements[1]
2864
+ end
2865
+ end
2866
+
2867
+ module MSC1
2784
2868
  def S
2785
2869
  elements[1]
2786
2870
  end
2787
2871
  end
2788
2872
 
2789
- def _nt_OC
2873
+ module MSC2
2874
+ def MS
2875
+ elements[0]
2876
+ end
2877
+
2878
+ end
2879
+
2880
+ def _nt_MSC
2790
2881
  start_index = index
2791
- if node_cache[:OC].has_key?(index)
2792
- cached = node_cache[:OC][index]
2882
+ if node_cache[:MSC].has_key?(index)
2883
+ cached = node_cache[:MSC][index]
2793
2884
  if cached
2794
- node_cache[:OC][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2885
+ node_cache[:MSC][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2795
2886
  @index = cached.interval.end
2796
2887
  end
2797
2888
  return cached
2798
2889
  end
2799
2890
 
2891
+ i0 = index
2800
2892
  i1, s1 = index, []
2801
2893
  if (match_len = has_terminal?(",", false, index))
2802
2894
  r2 = true
@@ -2812,38 +2904,147 @@ module EDNGRAMMAR
2812
2904
  end
2813
2905
  if s1.last
2814
2906
  r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
2815
- r1.extend(OC0)
2907
+ r1.extend(MSC0)
2816
2908
  else
2817
2909
  @index = i1
2818
2910
  r1 = nil
2819
2911
  end
2820
2912
  if r1
2913
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
2821
2914
  r0 = r1
2822
2915
  else
2823
- r0 = instantiate_node(SyntaxNode,input, index...index)
2916
+ i4, s4 = index, []
2917
+ r5 = _nt_MS
2918
+ s4 << r5
2919
+ if r5
2920
+ i7, s7 = index, []
2921
+ if (match_len = has_terminal?(",", false, index))
2922
+ r8 = true
2923
+ @index += match_len
2924
+ else
2925
+ terminal_parse_failure('","')
2926
+ r8 = nil
2927
+ end
2928
+ s7 << r8
2929
+ if r8
2930
+ r9 = _nt_S
2931
+ s7 << r9
2932
+ end
2933
+ if s7.last
2934
+ r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
2935
+ r7.extend(MSC1)
2936
+ else
2937
+ @index = i7
2938
+ r7 = nil
2939
+ end
2940
+ if r7
2941
+ r6 = r7
2942
+ else
2943
+ r6 = instantiate_node(SyntaxNode,input, index...index)
2944
+ end
2945
+ s4 << r6
2946
+ end
2947
+ if s4.last
2948
+ r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
2949
+ r4.extend(MSC2)
2950
+ else
2951
+ @index = i4
2952
+ r4 = nil
2953
+ end
2954
+ if r4
2955
+ r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
2956
+ r0 = r4
2957
+ else
2958
+ @index = i0
2959
+ r0 = nil
2960
+ end
2824
2961
  end
2825
2962
 
2826
- node_cache[:OC][start_index] = r0
2963
+ node_cache[:MSC][start_index] = r0
2964
+
2965
+ r0
2966
+ end
2967
+
2968
+ module SOC0
2969
+ def S
2970
+ elements[1]
2971
+ end
2972
+ end
2973
+
2974
+ module SOC1
2975
+ def S
2976
+ elements[0]
2977
+ end
2978
+
2979
+ end
2980
+
2981
+ def _nt_SOC
2982
+ start_index = index
2983
+ if node_cache[:SOC].has_key?(index)
2984
+ cached = node_cache[:SOC][index]
2985
+ if cached
2986
+ node_cache[:SOC][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2987
+ @index = cached.interval.end
2988
+ end
2989
+ return cached
2990
+ end
2991
+
2992
+ i0, s0 = index, []
2993
+ r1 = _nt_S
2994
+ s0 << r1
2995
+ if r1
2996
+ i3, s3 = index, []
2997
+ if (match_len = has_terminal?(",", false, index))
2998
+ r4 = true
2999
+ @index += match_len
3000
+ else
3001
+ terminal_parse_failure('","')
3002
+ r4 = nil
3003
+ end
3004
+ s3 << r4
3005
+ if r4
3006
+ r5 = _nt_S
3007
+ s3 << r5
3008
+ end
3009
+ if s3.last
3010
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
3011
+ r3.extend(SOC0)
3012
+ else
3013
+ @index = i3
3014
+ r3 = nil
3015
+ end
3016
+ if r3
3017
+ r2 = r3
3018
+ else
3019
+ r2 = instantiate_node(SyntaxNode,input, index...index)
3020
+ end
3021
+ s0 << r2
3022
+ end
3023
+ if s0.last
3024
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3025
+ r0.extend(SOC1)
3026
+ else
3027
+ @index = i0
3028
+ r0 = nil
3029
+ end
3030
+
3031
+ node_cache[:SOC][start_index] = r0
2827
3032
 
2828
3033
  r0
2829
3034
  end
2830
3035
 
2831
3036
  module Streamstring0
2832
- def OC
3037
+ def MSC
2833
3038
  elements[0]
2834
3039
  end
2835
3040
 
2836
3041
  def string
2837
3042
  elements[1]
2838
3043
  end
2839
-
2840
- def S
2841
- elements[2]
2842
- end
2843
3044
  end
2844
3045
 
2845
3046
  module Streamstring1
2846
- def S1
3047
+ def MS
2847
3048
  elements[1]
2848
3049
  end
2849
3050
 
@@ -2851,19 +3052,15 @@ module EDNGRAMMAR
2851
3052
  elements[2]
2852
3053
  end
2853
3054
 
2854
- def S2
2855
- elements[3]
2856
- end
2857
-
2858
- def OC
2859
- elements[5]
3055
+ def SOC
3056
+ elements[4]
2860
3057
  end
2861
3058
 
2862
3059
  end
2863
3060
 
2864
3061
  module Streamstring2
2865
3062
  def ast
2866
- strings = [elements[2].ast] + elements[4].elements.map {|x| x.string.ast }
3063
+ strings = [elements[2].ast] + elements[3].elements.map {|x| x.string.ast }
2867
3064
  unless Set[*strings.map(&:encoding)].size == 1
2868
3065
  warn "*** mixed streamstring #{strings.cbor_diagnostic}"
2869
3066
  end
@@ -2892,56 +3089,48 @@ module EDNGRAMMAR
2892
3089
  end
2893
3090
  s0 << r1
2894
3091
  if r1
2895
- r2 = _nt_S
3092
+ r2 = _nt_MS
2896
3093
  s0 << r2
2897
3094
  if r2
2898
3095
  r3 = _nt_string
2899
3096
  s0 << r3
2900
3097
  if r3
2901
- r4 = _nt_S
3098
+ s4, i4 = [], index
3099
+ loop do
3100
+ i5, s5 = index, []
3101
+ r6 = _nt_MSC
3102
+ s5 << r6
3103
+ if r6
3104
+ r7 = _nt_string
3105
+ s5 << r7
3106
+ end
3107
+ if s5.last
3108
+ r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
3109
+ r5.extend(Streamstring0)
3110
+ else
3111
+ @index = i5
3112
+ r5 = nil
3113
+ end
3114
+ if r5
3115
+ s4 << r5
3116
+ else
3117
+ break
3118
+ end
3119
+ end
3120
+ r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
2902
3121
  s0 << r4
2903
3122
  if r4
2904
- s5, i5 = [], index
2905
- loop do
2906
- i6, s6 = index, []
2907
- r7 = _nt_OC
2908
- s6 << r7
2909
- if r7
2910
- r8 = _nt_string
2911
- s6 << r8
2912
- if r8
2913
- r9 = _nt_S
2914
- s6 << r9
2915
- end
2916
- end
2917
- if s6.last
2918
- r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
2919
- r6.extend(Streamstring0)
2920
- else
2921
- @index = i6
2922
- r6 = nil
2923
- end
2924
- if r6
2925
- s5 << r6
3123
+ r8 = _nt_SOC
3124
+ s0 << r8
3125
+ if r8
3126
+ if (match_len = has_terminal?(")", false, index))
3127
+ r9 = true
3128
+ @index += match_len
2926
3129
  else
2927
- break
2928
- end
2929
- end
2930
- r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
2931
- s0 << r5
2932
- if r5
2933
- r10 = _nt_OC
2934
- s0 << r10
2935
- if r10
2936
- if (match_len = has_terminal?(")", false, index))
2937
- r11 = true
2938
- @index += match_len
2939
- else
2940
- terminal_parse_failure('")"')
2941
- r11 = nil
2942
- end
2943
- s0 << r11
3130
+ terminal_parse_failure('")"')
3131
+ r9 = nil
2944
3132
  end
3133
+ s0 << r9
2945
3134
  end
2946
3135
  end
2947
3136
  end
@@ -2964,6 +3153,10 @@ module EDNGRAMMAR
2964
3153
  module Spec0
2965
3154
  end
2966
3155
 
3156
+ module Spec1
3157
+ def ast; elements[0].elements[1].text_value end
3158
+ end
3159
+
2967
3160
  def _nt_spec
2968
3161
  start_index = index
2969
3162
  if node_cache[:spec].has_key?(index)
@@ -3015,6 +3208,71 @@ module EDNGRAMMAR
3015
3208
  r0
3016
3209
  end
3017
3210
 
3211
+ module Specms0
3212
+ def MS
3213
+ elements[2]
3214
+ end
3215
+ end
3216
+
3217
+ module Specms1
3218
+ def ast; elements[0].elements[1].text_value end
3219
+ end
3220
+
3221
+ def _nt_specms
3222
+ start_index = index
3223
+ if node_cache[:specms].has_key?(index)
3224
+ cached = node_cache[:specms][index]
3225
+ if cached
3226
+ node_cache[:specms][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3227
+ @index = cached.interval.end
3228
+ end
3229
+ return cached
3230
+ end
3231
+
3232
+ i1, s1 = index, []
3233
+ if (match_len = has_terminal?("_", false, index))
3234
+ r2 = true
3235
+ @index += match_len
3236
+ else
3237
+ terminal_parse_failure('"_"')
3238
+ r2 = nil
3239
+ end
3240
+ s1 << r2
3241
+ if r2
3242
+ s3, i3 = [], index
3243
+ loop do
3244
+ r4 = _nt_wordchar
3245
+ if r4
3246
+ s3 << r4
3247
+ else
3248
+ break
3249
+ end
3250
+ end
3251
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
3252
+ s1 << r3
3253
+ if r3
3254
+ r5 = _nt_MS
3255
+ s1 << r5
3256
+ end
3257
+ end
3258
+ if s1.last
3259
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3260
+ r1.extend(Specms0)
3261
+ else
3262
+ @index = i1
3263
+ r1 = nil
3264
+ end
3265
+ if r1
3266
+ r0 = r1
3267
+ else
3268
+ r0 = instantiate_node(SyntaxNode,input, index...index)
3269
+ end
3270
+
3271
+ node_cache[:specms][start_index] = r0
3272
+
3273
+ r0
3274
+ end
3275
+
3018
3276
  module DoubleQuoted0
3019
3277
  def ast; text_value.gsub("\r", "") end
3020
3278
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: edn-abnf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.6
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carsten Bormann