Repository navigation
feat: parse ISC through the shipped .parg artifact - #790
Merged
Merged
Conversation
parsanol 1.3.61 ships Parsanol::PARG; the runtime now parses ISC sources through the compiled grammar artifact (lib/interscript/isc/ grammar/isc.artifact.json, compiled from isc.parg with the released CLI) and falls back to the Ruby-DSL grammar when parsanol predates PARG — no version floor is forced on the gemspec constraint. The artifact ships via the existing lib/**/* files glob; a genuine ParseFailed from the artifact surfaces as a ParseError like the DSL path, only load failures fall back. The Normalizer folds a comment-only or empty tests block — which the artifact captures as raw text — the same way the DSL grammar does. New differential gate: spec/interscript/isc/parg_artifact_spec.rb parses every corpus map through both paths and requires byte- identical normalized trees — 289/289.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
parsanol 1.3.61 ships
Parsanol::PARG, clearing the blocker recorded when 1.3.56 lacked it. This wires the compiled grammar artifact into the runtime:lib/interscript/isc/grammar/isc.artifact.json, compiled fromisc.pargwith the released CLI, ships via the existinglib/**/*files glob.Isc::Parser.parseparses through the artifact (Parsanol::PARG::Artifact.load, memoized) and falls back to the Ruby-DSL grammar when parsanol predates PARG — load failures only; a genuineParseFailedsurfaces asParseErrorlike the DSL path. No gemspec version floor is forced (~> 1.3stands); raise it if you prefer requiring PARG outright.testsblock — captured as raw text by the artifact, folded by the DSL grammar — the same way fix: capture-free blocks normalize to empty — .parg tree gate 289/289 #788 folded parallel/sequence blocks.spec/interscript/isc/parg_artifact_spec.rb): every corpus map parses byte-identically through both paths — 289/289, now enforced in the suite rather than run ad hoc.Verified locally: full three-compiler suite through the artifact runtime — 25,935 examples, 1 failure, the sole failure being the pre-existing secryst spec (fails identically on clean
origin/main; local bundle includes the secryst gem, violating that spec's precondition).