lang-simpleboolean v0.10.0
lang-simpleboolean
CodeMirror 6 Language Package
lang-simpleboolean
is a language package for CodeMirror 6. It is a simple boolean-based query language that allows for statements such as blue AND red
to be parsed to various components via @lezer/lr
.
The package comes with code highlighting (Operators are shaded cyan, while Identifiers are magenta, and so on) as per CodeMirror, to enable use a CodeMirror theme such as theme-simple-white.
Language Grammar
In order of precedence in the parse tree generated from @lezer/lr
.
expression
- any combination of the below grammarAND
- operator token for theAND
operationOR
- operator token for theOR
operationNOT
- operator token for theNOT
operation(
and)
- parenthesis for use inApplication
String
- anyIdentifers
in double quotes ("
)Boolean
-#t
or#f
are demarcated as true or falseSpace
- a" "
character is identified in the tree for whitespace-sensitive applicationsTab
- a\t
character is identified in the tree for whitespace-sensitive applicationsCarriageReturn
- a\n
character is identified in the tree for whitespace-sensitive applicationsApplication
- anexpression
that is enclosed automatically with(
and)
BooleanExpression
- anexpression
that contains anIdentifier
, an operator token (AND
/OR
/NOT
), and then anIdentifier
, can be nestedIdentifier
- any character that is not whitespace nor is already an operator token
Example Usage
The language package can be used by adding the following lines to your CodeMirror instance:
import { simpleBooleanCompletion, simpleBoolean } from 'lang-simpleboolean';
...
const state = EditorState.create({
...
extensions: [
...
simpleBoolean(),
simpleBooleanCompletion([
{ label: "example1", type: "constant" }, // these are example custom Completion objects
{ label: "example2", type: "constant" }, // they are autocompletion suggestions you can input
{ label: "example3", type: "constant" },
{ label: "example4", type: "keyword" },
]),
onUpdate,
],
});
Refer to the CodeMirror 6 Autocomplete Documentation on Completion objects for more information on what can be passed into simpleBooleanCompletion
.
API Reference
Language simpleBooleanLanguage
See Language class documentation.
function simpleBooleanCompletion(completeFromListParameter: Completion[]=[]) => Extension
See Extension class documentation and Code Mirror 6 autocomplete documentation.
function simpleBoolean() => LanguageSupport
See LanguageSupport class documentation.
License
MIT License © Shreyas Tallamraju