@jsonhero/codemirror-lang-jsonata
Version:
JSONata language support for CodeMirror
61 lines (57 loc) • 4.11 kB
JavaScript
import { LRParser } from '@lezer/lr';
import { LRLanguage, indentNodeProp, delimitedIndent, foldNodeProp, foldInside, LanguageSupport } from '@codemirror/language';
import { styleTags, tags } from '@lezer/highlight';
// This file was generated by lezer-generator. You probably shouldn't edit it.
const parser = LRParser.deserialize({
version: 14,
states: "#lQVQPOOOOQO'#Cb'#CbOOQO'#Ct'#CtOOQO'#Cd'#CdO}QPO'#ChO!UQPO'#CkO!]QPO'#CnOOQO'#Cs'#CsOOQO'#Co'#CoQVQPOOOOQO,59S,59SO!dQPO,59SOOQO,59V,59VO!kQPO,59VOOQO,59Y,59YO!rQPO,59YOOQO-E6m-E6mOOQO1G.n1G.nOOQO1G.q1G.qOOQO1G.t1G.t",
stateData: "!y~OfOS~OQQORQOSQOTQOVVOXVOZSO^TOaUOiPOjROkRO~OYYO~PVO][O~PVO`^O~PVOYaO~PVO]bO~PVO`cO~PVO",
goto: "!liPPPPPPjPtPPPtPPtPPt!OPPP!btaQOSTUXZ]_aVOSTUXZ]_QXOQZSQ]TQ_UX`XZ]_aWOSTUXZ]_",
nodeNames: "⚠ Program True False Null Number String Variable Identifier Operator ) ( Application } { Object ] [ Array",
maxTerm: 27,
nodeProps: [
["openedBy", 10,"(",13,"{",16,"["],
["closedBy", 11,")",14,"}",17,"]"]
],
skippedNodes: [0],
repeatNodeCount: 1,
tokenData: "9h~R!QXY$XYZ$X]^$Xpq$Xqr$^rs$kst$ftu&wuv$fvw$fxy'yyz(Oz{(T{|$f|}$f}!O(]!O!P-Z!P!Q$f!Q!R(y!R![,a![!]$^!]!^$f!^!_$^!_!`$f!`!a$^!a!b$f!b!c$f!c!}'b!}#O-c#P#Q-h#Q#R$f#R#S'b#S#T-m#T#U.X#U#Y'b#Y#Z0O#Z#]'b#]#^3O#^#b'b#b#c3m#c#d6R#d#h'b#h#i6p#i#o'b#o#p9U#p#q$f#q#r9Z#r#s9`~$^Of~~$cPX~!_!`$f~$kOX~~$nUpq$kqr$krs%Qs#O$k#O#P%V#P~$k~%VOi~~%YXrs$k!P!Q$k#O#P$k#U#V$k#Y#Z$k#b#c$k#f#g$k#h#i$k#i#j%u~%xR!Q![&R!c!i&R#T#Z&R~&UR!Q![&_!c!i&_#T#Z&_~&bR!Q![&k!c!i&k#T#Z&k~&nR!Q![$k!c!i$k#T#Z$k~'OUV~j~tu&w}!O'b!Q![&w!c!}&w#R#S&w#T#o&w~'gUj~tu'b}!O'b!Q!['b!c!}'b#R#S'b#T#o'b~(OOZ~~(TOY~~(YPX~z{$f~(dVX~j~tu'b}!O'b!Q!R(y!R![,a!c!}'b#R#S'b#T#o'b~)QZT~j~tu'b}!O'b!O!P)s!Q!['b!c!g'b!g!h*s!h!}'b#R#S'b#T#X'b#X#Y*s#Y#o'b~)vP!Q![)y~*ORT~!Q![)y!g!h*X#X#Y*X~*[R{|*e}!O*e!Q![*k~*hP!Q![*k~*pPT~!Q![*k~*xVj~tu'b{|*e}!O+_!Q![+v!c!}'b#R#S'b#T#o'b~+dUj~tu'b}!O'b!Q![+v!c!}'b#R#S'b#T#o'b~+}UT~j~tu'b}!O'b!Q![+v!c!}'b#R#S'b#T#o'b~,hZT~j~tu'b}!O'b!O!P)s!Q![,a!c!g'b!g!h*s!h!}'b#R#S'b#T#X'b#X#Y*s#Y#o'b~-`PX~!O!P$f~-hOa~~-mO`~~-pQO#S-v#T~-v~-yRO#S-v#S#T.S#T~-v~.XOk~~.^Wj~tu'b}!O'b!Q!['b!c!}'b#R#S'b#T#b'b#b#c.v#c#o'b~.{Wj~tu'b}!O'b!Q!['b!c!}'b#R#S'b#T#W'b#W#X/e#X#o'b~/lUX~j~tu'b}!O'b!Q!['b!c!}'b#R#S'b#T#o'b~0TVj~tu'b}!O'b!Q!['b!c!}'b#R#S'b#T#U0j#U#o'b~0oWj~tu'b}!O'b!Q!['b!c!}'b#R#S'b#T#`'b#`#a1X#a#o'b~1^Wj~tu'b}!O'b!Q!['b!c!}'b#R#S'b#T#g'b#g#h1v#h#o'b~1{Wj~tu'b}!O'b!Q!['b!c!}'b#R#S'b#T#X'b#X#Y2e#Y#o'b~2lUR~j~tu'b}!O'b!Q!['b!c!}'b#R#S'b#T#o'b~3TWj~tu'b}!O'b!Q!['b!c!}'b#R#S'b#T#b'b#b#c/e#c#o'b~3rWj~tu'b}!O'b!Q!['b!c!}'b#R#S'b#T#i'b#i#j4[#j#o'b~4aWj~tu'b}!O'b!Q!['b!c!}'b#R#S'b#T#`'b#`#a4y#a#o'b~5OWj~tu'b}!O'b!Q!['b!c!}'b#R#S'b#T#`'b#`#a5h#a#o'b~5oUS~j~tu'b}!O'b!Q!['b!c!}'b#R#S'b#T#o'b~6WWj~tu'b}!O'b!Q!['b!c!}'b#R#S'b#T#f'b#f#g/e#g#o'b~6uWj~tu'b}!O'b!Q!['b!c!}'b#R#S'b#T#f'b#f#g7_#g#o'b~7dWj~tu'b}!O'b!Q!['b!c!}'b#R#S'b#T#i'b#i#j7|#j#o'b~8RWj~tu'b}!O'b!Q!['b!c!}'b#R#S'b#T#X'b#X#Y8k#Y#o'b~8rUQ~j~tu'b}!O'b!Q!['b!c!}'b#R#S'b#T#o'b~9ZO^~~9`O]~~9ePX~!`!a$f",
tokenizers: [0],
topRules: {"Program":[0,1]},
tokenPrec: 0
});
const JSONataLanguage = LRLanguage.define({
parser: parser.configure({
props: [
indentNodeProp.add({
Application: delimitedIndent({ closing: ")", align: false }),
}),
foldNodeProp.add({
Application: foldInside,
}),
styleTags({
True: tags.bool,
False: tags.bool,
Null: tags.null,
Number: tags.number,
String: tags.string,
Operator: tags.operator,
Variable: tags.variableName,
Identifier: tags.name,
"[": tags.bracket,
"]": tags.bracket,
"{": tags.bracket,
"}": tags.bracket,
"(": tags.paren,
")": tags.paren,
}),
],
}),
languageData: {
commentTokens: { line: ";" },
},
});
function jsonata() {
return new LanguageSupport(JSONataLanguage);
}
export { JSONataLanguage, jsonata };