edn-abnf 0.0.11 → 0.0.12

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.
@@ -19,5 +19,6 @@ end
19
19
 
20
20
 
21
21
  require 'cbor-diagnostic-app/dt'
22
+ require 'cbor-diagnostic-app/ip'
22
23
  require 'cbor-diagnostic-app/h'
23
24
  require 'cbor-diagnostic-app/b64'
@@ -1400,6 +1400,13 @@ module EDNGRAMMAR
1400
1400
 
1401
1401
  end
1402
1402
 
1403
+ module AppPrefix1
1404
+ def ucalpha
1405
+ elements[0]
1406
+ end
1407
+
1408
+ end
1409
+
1403
1410
  def _nt_app_prefix
1404
1411
  start_index = index
1405
1412
  if node_cache[:app_prefix].has_key?(index)
@@ -1411,28 +1418,64 @@ module EDNGRAMMAR
1411
1418
  return cached
1412
1419
  end
1413
1420
 
1414
- i0, s0 = index, []
1415
- r1 = _nt_lcalpha
1416
- s0 << r1
1417
- if r1
1418
- s2, i2 = [], index
1421
+ i0 = index
1422
+ i1, s1 = index, []
1423
+ r2 = _nt_lcalpha
1424
+ s1 << r2
1425
+ if r2
1426
+ s3, i3 = [], index
1419
1427
  loop do
1420
- r3 = _nt_lcalnum
1421
- if r3
1422
- s2 << r3
1428
+ r4 = _nt_lcalnum
1429
+ if r4
1430
+ s3 << r4
1423
1431
  else
1424
1432
  break
1425
1433
  end
1426
1434
  end
1427
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1428
- s0 << r2
1435
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
1436
+ s1 << r3
1429
1437
  end
1430
- if s0.last
1431
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1432
- r0.extend(AppPrefix0)
1438
+ if s1.last
1439
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
1440
+ r1.extend(AppPrefix0)
1433
1441
  else
1434
- @index = i0
1435
- r0 = nil
1442
+ @index = i1
1443
+ r1 = nil
1444
+ end
1445
+ if r1
1446
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
1447
+ r0 = r1
1448
+ else
1449
+ i5, s5 = index, []
1450
+ r6 = _nt_ucalpha
1451
+ s5 << r6
1452
+ if r6
1453
+ s7, i7 = [], index
1454
+ loop do
1455
+ r8 = _nt_ucalnum
1456
+ if r8
1457
+ s7 << r8
1458
+ else
1459
+ break
1460
+ end
1461
+ end
1462
+ r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
1463
+ s5 << r7
1464
+ end
1465
+ if s5.last
1466
+ r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
1467
+ r5.extend(AppPrefix1)
1468
+ else
1469
+ @index = i5
1470
+ r5 = nil
1471
+ end
1472
+ if r5
1473
+ r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
1474
+ r0 = r5
1475
+ else
1476
+ @index = i0
1477
+ r0 = nil
1478
+ end
1436
1479
  end
1437
1480
 
1438
1481
  node_cache[:app_prefix][start_index] = r0
@@ -1456,7 +1499,8 @@ module EDNGRAMMAR
1456
1499
  app = app_prefix.text_value
1457
1500
  # Find a better place to put a default initialization
1458
1501
  EDNGRAMMAR.const_set(:APPS, Hash.new { |h, k|
1459
- h[k] = begin ::CBOR_DIAG.const_get("App_#{app}")
1502
+ h[k] = begin ::CBOR_DIAG.const_get("App_#{app.downcase}")
1503
+
1460
1504
  rescue NameError
1461
1505
  raise ArgumentError, "cbor-diagnostic: Unknown application-oriented extension '#{k}'", caller
1462
1506
  end
@@ -4096,6 +4140,62 @@ module EDNGRAMMAR
4096
4140
  r0
4097
4141
  end
4098
4142
 
4143
+ def _nt_ucalpha
4144
+ start_index = index
4145
+ if node_cache[:ucalpha].has_key?(index)
4146
+ cached = node_cache[:ucalpha][index]
4147
+ if cached
4148
+ node_cache[:ucalpha][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4149
+ @index = cached.interval.end
4150
+ end
4151
+ return cached
4152
+ end
4153
+
4154
+ if has_terminal?(@regexps[gr = '\A[A-Z]'] ||= Regexp.new(gr), :regexp, index)
4155
+ r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
4156
+ @index += 1
4157
+ else
4158
+ terminal_parse_failure('[A-Z]')
4159
+ r0 = nil
4160
+ end
4161
+
4162
+ node_cache[:ucalpha][start_index] = r0
4163
+
4164
+ r0
4165
+ end
4166
+
4167
+ def _nt_ucalnum
4168
+ start_index = index
4169
+ if node_cache[:ucalnum].has_key?(index)
4170
+ cached = node_cache[:ucalnum][index]
4171
+ if cached
4172
+ node_cache[:ucalnum][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4173
+ @index = cached.interval.end
4174
+ end
4175
+ return cached
4176
+ end
4177
+
4178
+ i0 = index
4179
+ r1 = _nt_ucalpha
4180
+ if r1
4181
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
4182
+ r0 = r1
4183
+ else
4184
+ r2 = _nt_DIGIT
4185
+ if r2
4186
+ r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
4187
+ r0 = r2
4188
+ else
4189
+ @index = i0
4190
+ r0 = nil
4191
+ end
4192
+ end
4193
+
4194
+ node_cache[:ucalnum][start_index] = r0
4195
+
4196
+ r0
4197
+ end
4198
+
4099
4199
  def _nt_wordchar
4100
4200
  start_index = index
4101
4201
  if node_cache[:wordchar].has_key?(index)
@@ -4124,13 +4224,7 @@ module EDNGRAMMAR
4124
4224
  r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
4125
4225
  r0 = r2
4126
4226
  else
4127
- if has_terminal?(@regexps[gr = '\A[A-Z]'] ||= Regexp.new(gr), :regexp, index)
4128
- r3 = true
4129
- @index += 1
4130
- else
4131
- terminal_parse_failure('[A-Z]')
4132
- r3 = nil
4133
- end
4227
+ r3 = _nt_ucalpha
4134
4228
  if r3
4135
4229
  r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
4136
4230
  r0 = r3
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.0.11
4
+ version: 0.0.12
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-10-12 00:00:00.000000000 Z
11
+ date: 2023-10-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -94,8 +94,12 @@ files:
94
94
  - edn-abnf.gemspec
95
95
  - lib/cbor-diagnostic-app/b64.rb
96
96
  - lib/cbor-diagnostic-app/b64grammar.rb
97
+ - lib/cbor-diagnostic-app/dt.rb
98
+ - lib/cbor-diagnostic-app/dtgrammar.rb
97
99
  - lib/cbor-diagnostic-app/h.rb
98
100
  - lib/cbor-diagnostic-app/hgrammar.rb
101
+ - lib/cbor-diagnostic-app/ip.rb
102
+ - lib/cbor-diagnostic-app/ipgrammar.rb
99
103
  - lib/edn-abnf.rb
100
104
  - lib/parser/edn-util.rb
101
105
  - lib/parser/edngrammar.rb