parsanol 1.3.56-arm-linux → 1.3.57-arm-linux

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.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/exe/parsanol +7 -0
  3. data/lib/parsanol/3.2/parsanol_native.so +0 -0
  4. data/lib/parsanol/3.3/parsanol_native.so +0 -0
  5. data/lib/parsanol/3.4/parsanol_native.so +0 -0
  6. data/lib/parsanol/4.0/parsanol_native.so +0 -0
  7. data/lib/parsanol/native/libparsanol.so +0 -0
  8. data/lib/parsanol/native/serializer.rb +5 -2
  9. data/lib/parsanol/parg/artifact.rb +213 -0
  10. data/lib/parsanol/parg/authoring.rb +110 -0
  11. data/lib/parsanol/parg/bindings.rb +129 -0
  12. data/lib/parsanol/parg/cli.rb +251 -0
  13. data/lib/parsanol/parg/compiler.rb +465 -0
  14. data/lib/parsanol/parg/derive.rb +28 -0
  15. data/lib/parsanol/parg/document.rb +69 -0
  16. data/lib/parsanol/parg/error.rb +18 -0
  17. data/lib/parsanol/parg/frontend.rb +173 -0
  18. data/lib/parsanol/parg/import.rb +34 -0
  19. data/lib/parsanol/parg/importers/abnf.rb +299 -0
  20. data/lib/parsanol/parg/importers/ebnf.rb +201 -0
  21. data/lib/parsanol/parg/importers/pest.rb +314 -0
  22. data/lib/parsanol/parg/imports.rb +87 -0
  23. data/lib/parsanol/parg/lexer.rb +72 -0
  24. data/lib/parsanol/parg/lints.rb +171 -0
  25. data/lib/parsanol/parg/lsp.rb +208 -0
  26. data/lib/parsanol/parg/lutaml.rb +67 -0
  27. data/lib/parsanol/parg/node.rb +20 -0
  28. data/lib/parsanol/parg/parser.rb +458 -0
  29. data/lib/parsanol/parg/preprocess.rb +36 -0
  30. data/lib/parsanol/parg/render.rb +44 -0
  31. data/lib/parsanol/parg/selfhost.rb +49 -0
  32. data/lib/parsanol/parg/visitor.rb +64 -0
  33. data/lib/parsanol/parg.rb +38 -0
  34. data/lib/parsanol/version.rb +1 -1
  35. data/lib/parsanol/vm.rb +7 -5
  36. data/lib/parsanol.rb +3 -0
  37. data/parsanol.gemspec +3 -1
  38. metadata +31 -4
data/lib/parsanol/vm.rb CHANGED
@@ -168,7 +168,7 @@ module Parsanol
168
168
  # included — the seed is recomputed at every compile), so the
169
169
  # cold-start never pays the doomed unmemoized exploration.
170
170
  if compiler.backtracking_prone
171
- # rubocop:disable-next Lint/HashCompareByIdentity -- object_id keys match run_for's heavy flag; would otherwise pin every grammar alive
171
+ # rubocop:disable-next Lint/HashCompareByIdentity -- object_id keys mirror run_for's heavy flag
172
172
  (@heavy ||= {})[root.object_id] = true
173
173
  end
174
174
 
@@ -456,8 +456,7 @@ module Parsanol
456
456
  end
457
457
  end
458
458
 
459
- # Wrapper branches (Entity/Scope) share body shapes by design.
460
- # rubocop:disable-next Lint/DuplicateBranch
459
+ # rubocop:disable Lint/DuplicateBranch -- Wrapper branches (Entity/Scope) share body shapes by design
461
460
  def nullable?(atom, depth = 0)
462
461
  return false if depth > 10
463
462
 
@@ -473,12 +472,14 @@ module Parsanol
473
472
  when Parsanol::Atoms::Ignored then nullable?(atom.wrapped_atom, depth + 1)
474
473
  when Parsanol::Atoms::Lookahead then true
475
474
  when Parsanol::Atoms::Entity, Parsanol::Atoms::Scope
476
- nullable_wrapped?( # rubocop:disable Lint/DuplicateBranch -- Entity/Scope differ only in accessor
475
+ # rubocop:disable Lint/DuplicateBranch -- Entity/Scope differ only in accessor
476
+ nullable_wrapped?(
477
477
  -> { atom.is_a?(Parsanol::Atoms::Entity) ? atom.parslet : atom.block.call }, depth
478
478
  )
479
479
  else false
480
480
  end
481
481
  end
482
+ # rubocop:enable Lint/DuplicateBranch
482
483
 
483
484
  # Entity and Scope wrap lazily-resolvable inners through different
484
485
  # accessors; the nullability logic is shared.
@@ -866,7 +867,7 @@ module Parsanol
866
867
  memo_stack = []
867
868
  trace = ENV["VM_TRACE"] ? [] : nil
868
869
 
869
- # rubocop:disable-next Metrics/BlockLength -- the dispatch loop IS execute
870
+ # rubocop:disable Metrics/BlockLength -- the dispatch loop IS execute
870
871
  loop do
871
872
  steps += 1
872
873
  if steps > budget
@@ -1340,6 +1341,7 @@ module Parsanol
1340
1341
  else
1341
1342
  return BAIL
1342
1343
  end
1344
+ # rubocop:enable Metrics/BlockLength
1343
1345
  end
1344
1346
  end
1345
1347
 
data/lib/parsanol.rb CHANGED
@@ -39,6 +39,9 @@
39
39
  # Inspired by Parslet (MIT License).
40
40
 
41
41
  module Parsanol
42
+ # The PARG grammar language (text source -> checksummed artifact).
43
+ autoload :PARG, "parsanol/parg"
44
+
42
45
  # Hook to extend including classes with ClassMethods.
43
46
  def self.included(base)
44
47
  base.extend(ClassMethods)
data/parsanol.gemspec CHANGED
@@ -29,7 +29,9 @@ Gem::Specification.new do |spec|
29
29
  # Rust extension
30
30
  spec.extensions = ["ext/parsanol_native/extconf.rb"]
31
31
 
32
- spec.files = Dir.glob("{lib,ext}/**/*") + %w[
32
+ spec.executables = %w[parsanol]
33
+ spec.bindir = "exe"
34
+ spec.files = Dir.glob("{lib,ext,exe}/**/*") + %w[
33
35
  HISTORY.txt
34
36
  LICENSE
35
37
  Rakefile
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parsanol
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.56
4
+ version: 1.3.57
5
5
  platform: arm-linux
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
- bindir: bin
9
+ bindir: exe
10
10
  cert_chain: []
11
- date: 2026-09-24 00:00:00.000000000 Z
11
+ date: 2026-09-30 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A small Ruby library for constructing parsers in the PEG (Parsing Expression
14
14
  Grammar) fashion. Parsanol provides Parslet-compatible API with additional features
@@ -16,7 +16,8 @@ description: A small Ruby library for constructing parsers in the PEG (Parsing E
16
16
  for improved performance.
17
17
  email:
18
18
  - open.source@ribose.com
19
- executables: []
19
+ executables:
20
+ - parsanol
20
21
  extensions: []
21
22
  extra_rdoc_files: []
22
23
  files:
@@ -24,6 +25,7 @@ files:
24
25
  - LICENSE
25
26
  - README.adoc
26
27
  - Rakefile
28
+ - exe/parsanol
27
29
  - lib/parsanol.rb
28
30
  - lib/parsanol/3.2/parsanol_native.so
29
31
  - lib/parsanol/3.3/parsanol_native.so
@@ -91,6 +93,31 @@ files:
91
93
  - lib/parsanol/options.rb
92
94
  - lib/parsanol/options/zero_copy.rb
93
95
  - lib/parsanol/parallel.rb
96
+ - lib/parsanol/parg.rb
97
+ - lib/parsanol/parg/artifact.rb
98
+ - lib/parsanol/parg/authoring.rb
99
+ - lib/parsanol/parg/bindings.rb
100
+ - lib/parsanol/parg/cli.rb
101
+ - lib/parsanol/parg/compiler.rb
102
+ - lib/parsanol/parg/derive.rb
103
+ - lib/parsanol/parg/document.rb
104
+ - lib/parsanol/parg/error.rb
105
+ - lib/parsanol/parg/frontend.rb
106
+ - lib/parsanol/parg/import.rb
107
+ - lib/parsanol/parg/importers/abnf.rb
108
+ - lib/parsanol/parg/importers/ebnf.rb
109
+ - lib/parsanol/parg/importers/pest.rb
110
+ - lib/parsanol/parg/imports.rb
111
+ - lib/parsanol/parg/lexer.rb
112
+ - lib/parsanol/parg/lints.rb
113
+ - lib/parsanol/parg/lsp.rb
114
+ - lib/parsanol/parg/lutaml.rb
115
+ - lib/parsanol/parg/node.rb
116
+ - lib/parsanol/parg/parser.rb
117
+ - lib/parsanol/parg/preprocess.rb
118
+ - lib/parsanol/parg/render.rb
119
+ - lib/parsanol/parg/selfhost.rb
120
+ - lib/parsanol/parg/visitor.rb
94
121
  - lib/parsanol/parser.rb
95
122
  - lib/parsanol/parslet.rb
96
123
  - lib/parsanol/pattern.rb