edn-abnf 0.1.1 → 0.1.2

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: 7c6889b9d7aa6148fe54cb74e2594c0235b0fe1b6d07192b942d5690aa2b4e55
4
- data.tar.gz: 40a8707339bb46f5c984b292eff1ece51d0fcdb614feae79c224b83d4d9ffa1e
3
+ metadata.gz: e8a0d869d43bdd2c5db0cb07f07e425f6cd1aafd83b22e6bca5620676b8b83c7
4
+ data.tar.gz: b97edeff8726594b0502e67da2b0a5c57c32addfef0aa1a960fec35b8e939b93
5
5
  SHA512:
6
- metadata.gz: 9e1461595213030be64e5e778bceaf998cd105772948b51a9b3340feba463e3e6c2da6a68de1388eb9fab487b7f6d8b5d3b092b00704d67b77d15829f681266b
7
- data.tar.gz: 8485df1945d7989b762a6d9a94e1395a4228f4fc2126af2c0136af749c3d273d1e72af3d160f3862f8747c33e24411eb084f5fc852138f890f1afa34a2bc4171
6
+ metadata.gz: e773170c39923fdad052d371804f2074664f42e66d17c193bc1d312aa78d12d889c509268c1c9e978407e1076ee1d28e539b7c85a135f162bb75f854b668b016
7
+ data.tar.gz: 00a5c49dd6af1b9f1726d84f63d3b625b6d6ad5663ad80d51c3ef8f86151a559f47a7e694f8970eb585b351d3c728c76171fee0027b08d7a357f7af3b57fb711
data/bin/edn-abnf CHANGED
@@ -58,7 +58,7 @@ edn_file = $options.edn
58
58
  if $options.lines
59
59
  CSV.parse(edn_file) do |ok, edn, out|
60
60
  if ok[0] == "#"
61
- puts "# #{ok}, #{edn}, #{out}" if $options.verbose
61
+ puts "# #{ok}, #{edn.inspect}, #{out}" if $options.verbose
62
62
  next
63
63
  end
64
64
  begin
data/edn-abnf.gemspec CHANGED
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "edn-abnf"
3
- s.version = "0.1.1"
4
- s.summary = "CBOR Extended Diagnostic Notation implemented in ABNF"
3
+ s.version = "0.1.2"
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"
7
7
  s.email = "cabo@tzi.org"
@@ -8,7 +8,7 @@ class CBOR_DIAG::App_b64
8
8
  raise ArgumentError, "cbor-diagnostic: Parse Error in b64'#{s}':\n" << EDN.reason(parser, s)
9
9
  end
10
10
  # lazy -- not using parse tree...:
11
- t = s.gsub(/\s/, '').chars.each_slice(4).map(&:join)
11
+ t = s.gsub(/\s|#[^\n]*(?:\n|\z)/, '').chars.each_slice(4).map(&:join)
12
12
  if last = t[-1]
13
13
  last << "=" * (4 - last.size)
14
14
  end
@@ -60,6 +60,9 @@ module B64GRAMMAR
60
60
  end
61
61
 
62
62
  module AppStringB644
63
+ end
64
+
65
+ module AppStringB645
63
66
  def B
64
67
  elements[0]
65
68
  end
@@ -238,11 +241,48 @@ module B64GRAMMAR
238
241
  r7 = instantiate_node(SyntaxNode,input, index...index)
239
242
  end
240
243
  s0 << r7
244
+ if r7
245
+ i26, s26 = index, []
246
+ if (match_len = has_terminal?("#", false, index))
247
+ r27 = true
248
+ @index += match_len
249
+ else
250
+ terminal_parse_failure('"#"')
251
+ r27 = nil
252
+ end
253
+ s26 << r27
254
+ if r27
255
+ s28, i28 = [], index
256
+ loop do
257
+ r29 = _nt_inon_lf
258
+ if r29
259
+ s28 << r29
260
+ else
261
+ break
262
+ end
263
+ end
264
+ r28 = instantiate_node(SyntaxNode,input, i28...index, s28)
265
+ s26 << r28
266
+ end
267
+ if s26.last
268
+ r26 = instantiate_node(SyntaxNode,input, i26...index, s26)
269
+ r26.extend(AppStringB644)
270
+ else
271
+ @index = i26
272
+ r26 = nil
273
+ end
274
+ if r26
275
+ r25 = r26
276
+ else
277
+ r25 = instantiate_node(SyntaxNode,input, index...index)
278
+ end
279
+ s0 << r25
280
+ end
241
281
  end
242
282
  end
243
283
  if s0.last
244
284
  r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
245
- r0.extend(AppStringB644)
285
+ r0.extend(AppStringB645)
246
286
  else
247
287
  @index = i0
248
288
  r0 = nil
@@ -333,6 +373,16 @@ module B64GRAMMAR
333
373
  r0
334
374
  end
335
375
 
376
+ module B0
377
+ def icomment
378
+ elements[0]
379
+ end
380
+
381
+ end
382
+
383
+ module B1
384
+ end
385
+
336
386
  def _nt_B
337
387
  start_index = index
338
388
  if node_cache[:B].has_key?(index)
@@ -344,16 +394,60 @@ module B64GRAMMAR
344
394
  return cached
345
395
  end
346
396
 
347
- s0, i0 = [], index
397
+ i0, s0 = index, []
398
+ s1, i1 = [], index
348
399
  loop do
349
- r1 = _nt_iblank
350
- if r1
351
- s0 << r1
400
+ r2 = _nt_iblank
401
+ if r2
402
+ s1 << r2
352
403
  else
353
404
  break
354
405
  end
355
406
  end
356
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
407
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
408
+ s0 << r1
409
+ if r1
410
+ s3, i3 = [], index
411
+ loop do
412
+ i4, s4 = index, []
413
+ r5 = _nt_icomment
414
+ s4 << r5
415
+ if r5
416
+ s6, i6 = [], index
417
+ loop do
418
+ r7 = _nt_iblank
419
+ if r7
420
+ s6 << r7
421
+ else
422
+ break
423
+ end
424
+ end
425
+ r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
426
+ s4 << r6
427
+ end
428
+ if s4.last
429
+ r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
430
+ r4.extend(B0)
431
+ else
432
+ @index = i4
433
+ r4 = nil
434
+ end
435
+ if r4
436
+ s3 << r4
437
+ else
438
+ break
439
+ end
440
+ end
441
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
442
+ s0 << r3
443
+ end
444
+ if s0.last
445
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
446
+ r0.extend(B1)
447
+ else
448
+ @index = i0
449
+ r0 = nil
450
+ end
357
451
 
358
452
  node_cache[:B][start_index] = r0
359
453
 
@@ -404,26 +498,105 @@ module B64GRAMMAR
404
498
  r0
405
499
  end
406
500
 
407
- def _nt_lcalpha
501
+ module Icomment0
502
+ end
503
+
504
+ def _nt_icomment
408
505
  start_index = index
409
- if node_cache[:lcalpha].has_key?(index)
410
- cached = node_cache[:lcalpha][index]
506
+ if node_cache[:icomment].has_key?(index)
507
+ cached = node_cache[:icomment][index]
411
508
  if cached
412
- node_cache[:lcalpha][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
509
+ node_cache[:icomment][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
413
510
  @index = cached.interval.end
414
511
  end
415
512
  return cached
416
513
  end
417
514
 
418
- if has_terminal?(@regexps[gr = '\A[a-z]'] ||= Regexp.new(gr), :regexp, index)
419
- r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
420
- @index += 1
515
+ i0, s0 = index, []
516
+ if (match_len = has_terminal?("#", false, index))
517
+ r1 = true
518
+ @index += match_len
519
+ else
520
+ terminal_parse_failure('"#"')
521
+ r1 = nil
522
+ end
523
+ s0 << r1
524
+ if r1
525
+ s2, i2 = [], index
526
+ loop do
527
+ r3 = _nt_inon_lf
528
+ if r3
529
+ s2 << r3
530
+ else
531
+ break
532
+ end
533
+ end
534
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
535
+ s0 << r2
536
+ if r2
537
+ if (match_len = has_terminal?("\n", false, index))
538
+ r4 = true
539
+ @index += match_len
540
+ else
541
+ terminal_parse_failure('"\\n"')
542
+ r4 = nil
543
+ end
544
+ s0 << r4
545
+ end
546
+ end
547
+ if s0.last
548
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
549
+ r0.extend(Icomment0)
421
550
  else
422
- terminal_parse_failure('[a-z]')
551
+ @index = i0
423
552
  r0 = nil
424
553
  end
425
554
 
426
- node_cache[:lcalpha][start_index] = r0
555
+ node_cache[:icomment][start_index] = r0
556
+
557
+ r0
558
+ end
559
+
560
+ def _nt_inon_lf
561
+ start_index = index
562
+ if node_cache[:inon_lf].has_key?(index)
563
+ cached = node_cache[:inon_lf][index]
564
+ if cached
565
+ node_cache[:inon_lf][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
566
+ @index = cached.interval.end
567
+ end
568
+ return cached
569
+ end
570
+
571
+ i0 = index
572
+ if has_terminal?(@regexps[gr = '\A[\\ -퟿]'] ||= Regexp.new(gr), :regexp, index)
573
+ r1 = true
574
+ @index += 1
575
+ else
576
+ terminal_parse_failure('[\\ -퟿]')
577
+ r1 = nil
578
+ end
579
+ if r1
580
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
581
+ r0 = r1
582
+ else
583
+ if has_terminal?(@regexps[gr = '\A[-􏿿]'] ||= Regexp.new(gr), :regexp, index)
584
+ r2 = true
585
+ @index += 1
586
+ else
587
+ terminal_parse_failure('[-􏿿]')
588
+ r2 = nil
589
+ end
590
+ if r2
591
+ r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
592
+ r0 = r2
593
+ else
594
+ @index = i0
595
+ r0 = nil
596
+ end
597
+ end
598
+
599
+ node_cache[:inon_lf][start_index] = r0
427
600
 
428
601
  r0
429
602
  end
@@ -451,7 +624,13 @@ module B64GRAMMAR
451
624
  r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
452
625
  r0 = r1
453
626
  else
454
- r2 = _nt_lcalpha
627
+ if has_terminal?(@regexps[gr = '\A[a-z]'] ||= Regexp.new(gr), :regexp, index)
628
+ r2 = true
629
+ @index += 1
630
+ else
631
+ terminal_parse_failure('[a-z]')
632
+ r2 = nil
633
+ end
455
634
  if r2
456
635
  r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
457
636
  r0 = r2
@@ -48,13 +48,16 @@ module HGRAMMAR
48
48
  end
49
49
 
50
50
  module AppStringH4
51
+ end
52
+
53
+ module AppStringH5
51
54
  def S
52
55
  elements[0]
53
56
  end
54
57
 
55
58
  end
56
59
 
57
- module AppStringH5
60
+ module AppStringH6
58
61
  def unpack_thread(s)
59
62
  case s[0]
60
63
  when CBOR::Tagged
@@ -161,11 +164,48 @@ module HGRAMMAR
161
164
  end
162
165
  r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
163
166
  s0 << r2
167
+ if r2
168
+ i13, s13 = index, []
169
+ if (match_len = has_terminal?("#", false, index))
170
+ r14 = true
171
+ @index += match_len
172
+ else
173
+ terminal_parse_failure('"#"')
174
+ r14 = nil
175
+ end
176
+ s13 << r14
177
+ if r14
178
+ s15, i15 = [], index
179
+ loop do
180
+ r16 = _nt_non_lf
181
+ if r16
182
+ s15 << r16
183
+ else
184
+ break
185
+ end
186
+ end
187
+ r15 = instantiate_node(SyntaxNode,input, i15...index, s15)
188
+ s13 << r15
189
+ end
190
+ if s13.last
191
+ r13 = instantiate_node(SyntaxNode,input, i13...index, s13)
192
+ r13.extend(AppStringH4)
193
+ else
194
+ @index = i13
195
+ r13 = nil
196
+ end
197
+ if r13
198
+ r12 = r13
199
+ else
200
+ r12 = instantiate_node(SyntaxNode,input, index...index)
201
+ end
202
+ s0 << r12
203
+ end
164
204
  end
165
205
  if s0.last
166
206
  r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
167
- r0.extend(AppStringH4)
168
207
  r0.extend(AppStringH5)
208
+ r0.extend(AppStringH6)
169
209
  else
170
210
  @index = i0
171
211
  r0 = nil
@@ -222,73 +222,6 @@ module EDNGRAMMAR
222
222
  r0
223
223
  end
224
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
225
  module String10
293
226
  def spec
294
227
  elements[1]
@@ -522,6 +455,73 @@ module EDNGRAMMAR
522
455
  r0
523
456
  end
524
457
 
458
+ module Number0
459
+ def spec
460
+ elements[1]
461
+ end
462
+ end
463
+
464
+ module Number1
465
+ def ast
466
+ if ei = spec.text_value[1..-1]
467
+ warn "*** ignoring unimplemented encoding indicator #{ei.inspect} for #{elements[0].text_value}"
468
+ end
469
+ elements[0].ast
470
+ end
471
+ end
472
+
473
+ def _nt_number
474
+ start_index = index
475
+ if node_cache[:number].has_key?(index)
476
+ cached = node_cache[:number][index]
477
+ if cached
478
+ node_cache[:number][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
479
+ @index = cached.interval.end
480
+ end
481
+ return cached
482
+ end
483
+
484
+ i0, s0 = index, []
485
+ i1 = index
486
+ r2 = _nt_basenumber
487
+ if r2
488
+ r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
489
+ r1 = r2
490
+ else
491
+ r3 = _nt_decnumber
492
+ if r3
493
+ r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
494
+ r1 = r3
495
+ else
496
+ r4 = _nt_infin
497
+ if r4
498
+ r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
499
+ r1 = r4
500
+ else
501
+ @index = i1
502
+ r1 = nil
503
+ end
504
+ end
505
+ end
506
+ s0 << r1
507
+ if r1
508
+ r5 = _nt_spec
509
+ s0 << r5
510
+ end
511
+ if s0.last
512
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
513
+ r0.extend(Number0)
514
+ r0.extend(Number1)
515
+ else
516
+ @index = i0
517
+ r0 = nil
518
+ end
519
+
520
+ node_cache[:number][start_index] = r0
521
+
522
+ r0
523
+ end
524
+
525
525
  def _nt_sign
526
526
  start_index = index
527
527
  if node_cache[:sign].has_key?(index)
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.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carsten Bormann
@@ -125,5 +125,5 @@ requirements: []
125
125
  rubygems_version: 3.4.10
126
126
  signing_key:
127
127
  specification_version: 4
128
- summary: CBOR Extended Diagnostic Notation implemented in ABNF
128
+ summary: CBOR Extended Diagnostic Notation (EDN) implemented in ABNF
129
129
  test_files: []