Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 Tree

The 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 test

The 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.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages