A CodeMirror extension that provides SPARQL syntax highlighting and language support.
import { basicSetup } from 'codemirror';
import { EditorView } from '@codemirror/view';
import { EditorState } from '@codemirror/state';
import { sparql } from 'codemirror-lang-sparql';
const doc = `
SELECT * WHERE { ?s ?p ?o }
`
new EditorView({
state: EditorState.create({
doc,
extensions: [
basicSetup,
sparql(),
],
}),
parent: document.querySelector('#editor'),
});
To develop and test the SPARQL grammar, you can use the Lezer Playground. The Lezer Playground is an online tool that allows you to write and test Lezer grammars interactively. Here's how you can use it:
-
Access the Playground: Open the Lezer Playground in your web browser.
-
Load the Grammar: Copy the contents of your
lezer-grammar.txt
file and paste it into the grammar editor section of the playground. -
Load JavaScript Code: Copy the contents of your
javascript-stuff.txt
file and paste it into the javascript-stuff section of the playground. -
Test with Input: Copy the contents of your
demo-text.txt
file and paste it into the demo-text section of the playground. -
Inspect the Parse Tree: As you type, the playground will automatically generate a parse tree for your input. You can inspect this tree to ensure that your grammar is correctly parsing the input.
-
Build the grammar: Once you are satisfied with the changes to the grammar, you can copy the grammar and paste it in the
src/syntax.grammar
of this repository. Runnpm run build
to build the grammar. Note: if it fails to build runnpm run build-debug
this will include terms in the output to help debugging. -
Write a Test Case: After making changes to the grammar, write a test case to ensure the new grammar rules work as expected. Add your test case to the appropriate test file in the repository.
-
Run Tests: Execute
npm run test
to run all test cases and verify that everything is functioning correctly. Ensure all tests pass before finalizing your changes.
The SPARQL grammar used in this CodeMirror extension is developed based on the official SPARQL 1.1 grammar definition provided by the W3C. You can find the detailed grammar specification in the SPARQL 1.1 Query Language document. This specification serves as the foundation for parsing and understanding SPARQL queries, ensuring that the language support provided by this extension aligns with the standards set by the W3C.
Need a ready to use editor with SPARQL support including: syntax highlighting, tooltips, search and more? Visit the sparql-editor