lezer-shexc
v0.1.0
Published
Incremental, error-tolerant Lezer grammar for ShEx Compact Syntax (ShExC), with CodeMirror highlighting tags
Maintainers
Readme
lezer-shexc
An incremental, error-tolerant Lezer grammar for ShEx Compact Syntax (ShExC), with highlighting tags for CodeMirror 6.
import {parser} from "lezer-shexc";
const tree = parser.parse(schemaText); // a @lezer/common TreeThe grammar follows the ShExC grammar in the ShEx specification, in the LALR shape shex.js's own parser gives it, so what parses here is what the validator accepts: every schema in the ShEx test suite parses without an error node, and a schema the validator refuses shows where. Being Lezer, a half-typed schema still parses around the error, and an edit re-parses only what it touched.
This is the editor's parse -- colour, folding, bracket matching, the
structure under the cursor. The schema itself still comes from
@shexjs/parser; @shexjs/editor-services uses both.
src/parser.js is generated from src/shexc.grammar by npm run build
(@lezer/generator).
Development
git clone https://github.com/shexjs/lezer-shexc.git
cd lezer-shexc
npm install # also runs `prepare`, i.e. `npm run build`
npm testThe tests run the grammar over the ShEx test suite
(schemas/ must parse clean, negativeSyntax/ must not), which npm install
fetches as the shex-test devDependency. To test against a checkout instead,
name it: SHEX_TEST=../shexTest npm test.
src/parser.js and src/parser.terms.js are committed so that the package
installs from git without a build step; regenerate them (npm run build)
in the same commit as a change to src/shexc.grammar -- CI checks that
they match.
Maintained alongside shex.js by the same people; issues and pull requests about the grammar belong here.
