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.
- checksums.yaml +4 -4
- data/exe/parsanol +7 -0
- data/lib/parsanol/3.2/parsanol_native.so +0 -0
- data/lib/parsanol/3.3/parsanol_native.so +0 -0
- data/lib/parsanol/3.4/parsanol_native.so +0 -0
- data/lib/parsanol/4.0/parsanol_native.so +0 -0
- data/lib/parsanol/native/libparsanol.so +0 -0
- data/lib/parsanol/native/serializer.rb +5 -2
- data/lib/parsanol/parg/artifact.rb +213 -0
- data/lib/parsanol/parg/authoring.rb +110 -0
- data/lib/parsanol/parg/bindings.rb +129 -0
- data/lib/parsanol/parg/cli.rb +251 -0
- data/lib/parsanol/parg/compiler.rb +465 -0
- data/lib/parsanol/parg/derive.rb +28 -0
- data/lib/parsanol/parg/document.rb +69 -0
- data/lib/parsanol/parg/error.rb +18 -0
- data/lib/parsanol/parg/frontend.rb +173 -0
- data/lib/parsanol/parg/import.rb +34 -0
- data/lib/parsanol/parg/importers/abnf.rb +299 -0
- data/lib/parsanol/parg/importers/ebnf.rb +201 -0
- data/lib/parsanol/parg/importers/pest.rb +314 -0
- data/lib/parsanol/parg/imports.rb +87 -0
- data/lib/parsanol/parg/lexer.rb +72 -0
- data/lib/parsanol/parg/lints.rb +171 -0
- data/lib/parsanol/parg/lsp.rb +208 -0
- data/lib/parsanol/parg/lutaml.rb +67 -0
- data/lib/parsanol/parg/node.rb +20 -0
- data/lib/parsanol/parg/parser.rb +458 -0
- data/lib/parsanol/parg/preprocess.rb +36 -0
- data/lib/parsanol/parg/render.rb +44 -0
- data/lib/parsanol/parg/selfhost.rb +49 -0
- data/lib/parsanol/parg/visitor.rb +64 -0
- data/lib/parsanol/parg.rb +38 -0
- data/lib/parsanol/version.rb +1 -1
- data/lib/parsanol/vm.rb +7 -5
- data/lib/parsanol.rb +3 -0
- data/parsanol.gemspec +3 -1
- 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
|
|
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
|
-
|
|
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
|
|
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.
|
|
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.
|
|
4
|
+
version: 1.3.57
|
|
5
5
|
platform: arm-linux
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
8
8
|
autorequire:
|
|
9
|
-
bindir:
|
|
9
|
+
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-09-
|
|
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
|