codemirror-lang-knight
Version:
CodeMirror Syntax Highlighting for the Knight programming language (https://github.com/knight-lang/knight-lang/)
60 lines (54 loc) • 3.78 kB
JavaScript
'use strict';
var lr = require('@lezer/lr');
var highlight = require('@lezer/highlight');
var language = require('@codemirror/language');
const knightHighlighting = highlight.styleTags({
Comment: highlight.tags.comment,
Number: highlight.tags.number,
String: highlight.tags.string,
List: highlight.tags.constant(highlight.tags.name),
Boolean: highlight.tags.atom,
Null: highlight.tags.null,
Identifier: highlight.tags.variableName,
Variable: highlight.tags.definition(highlight.tags.variableName),
Function: highlight.tags.function(highlight.tags.variableName),
"_": highlight.tags.standard(highlight.tags.name),
"Noop Expr": highlight.tags.meta,
"( ) { }": highlight.tags.comment,
"Unary_Operator Binary_Operator =": highlight.tags.operator,
"Call_Op Nullary Unary_Op Binary_Op Ternary_Op Quaternary_Op": highlight.tags.keyword,
});
// This file was generated by lezer-generator. You probably shouldn't edit it.
const spec_identifier = {__proto__:null,_:138};
const parser = lr.LRParser.deserialize({
version: 14,
states: "'UOfQPOOP#lOPOOOOQO'#Ce'#CeOOQO'#Cg'#CgOOQO'#Ch'#ChOOQO'#Ci'#CiOOQO'#Ck'#CkO#qQPO'#CjOfQPO'#CfOOQO'#Cf'#CfOOQO'#Cn'#CnOOQO'#Co'#CoOOQO'#Cp'#CpO#vQPO'#CqOfQPO'#CmOOQO'#Cm'#CmOOQO'#Cu'#CuOfQPO'#CtOOQO'#Cw'#CwOfQPO'#CvOOQO'#Cd'#CdOOQO'#Cx'#CxOOQO'#Cy'#CyOOQO'#Cz'#CzOOQO'#C{'#C{OOQO'#C|'#C|OOQO'#C}'#C}OOQO'#DO'#DOOOQO'#Cc'#CcQOQPOOPOOO'#Ca'#CaPOOO)C>v)C>vOOQO'#Cl'#ClOOQO,59U,59UOOQO,59Q,59QOOQO'#Cs'#CsOfQPO,59]OfQPO,59XOfQPO,59`OfQPO,59bOOQO1G.w1G.wOOQO1G.s1G.sOfQPO1G.zOfQPO1G.|OOQO7+$f7+$fOfQPO7+$hOOQO<<HS<<HS",
stateData: "#{~OuOSPOSQOSROSSOSvPQ~Of]OwQOxROySOzTO{TO|TO}TO!OTO!PUO!QkO!RYO!SZO!T[O!U[O!V[O!W[O!X[O!Y[O!Z[O![[O!][O!^[O!_[O!``O!abO!beO!cfO!dgO!ehO!fiO!gjO~OvnO~O!QpO~O!QsO~O",
goto: "%gsPPPPPtPw!m!{!{#Z#Z#Z#i#w$V!{$Y$Y$Y$hP$v!{$y!{%X!m!m!m!m!m!m!mRoPQmOQrWQu^QvaQwcQxtQyuQzvQ{wQ|zQ}{R!O}ilOW^actuvwz{}idOW^actuvwz{}iWOW^actuvwz{}iXOW^actuvwz{}iVOW^actuvwz{}RqVi^OW^actuvwz{}i_OW^actuvwz{}Rt]iaOW^actuvwz{}icOW^actuvwz{}",
nodeNames: "⚠ ( ) { } Comment Program Statement Operation Nullary Unary Unary_Op Noop Unary_Operator Call Call_Op Function Binary Binary_Op Expr Binary_Operator Assign = Variable Ternary Ternary_Op Quaternary Quaternary_Op Null Boolean List String Number Args Identifier",
maxTerm: 69,
propSources: [knightHighlighting],
skippedNodes: [0,1,2,3,4,5],
repeatNodeCount: 0,
tokenData: "+f~R!YX^$qpq$qqr$vrs${st%juv&Rvw&Wwx&]xy&uyz&zz{'P{|'U|}'Z}!O'`!P!Q'e!Q!['j![!]'r!]!^'w!^!_'|!_!`(R!`!a(W!a!b(]!b!c(b!c!d(g!d!e(g!e!f(r!f!g(g!h!i(}!i!j)Y!k!l)Y!n!o(g!p!q)e!q!r(g!r!s)p!s!t(g!t!u)p!u!v){!v!w(}!y!z*W!}#O*c#P#Q*h#Q#R*m#R#S*r#T#o*r#o#p+Q#p#q+V#q#r+[#r#s+a#y#z$q$f$g$q#BY#BZ$q$IS$I_$q$I|$JO$q$JT$JU$q$KV$KW$q&FU&FV$q~$vOu~~${O}~~%OTOr${rs%_s;'S${;'S;=`%d<%lO${~%dO!e~~%gP;=`<%l${~%oSv~OY%jZ;'S%j;'S;=`%{<%lO%j~&OP;=`<%l%j~&WO!X~~&]O!^~~&`TOw&]wx%_x;'S&];'S;=`&o<%lO&]~&rP;=`<%l&]~&zOP~~'POQ~~'UO!V~~'ZO!T~~'`Oz~~'eO!U~~'jO!W~~'oP!f~!Q!['j~'wOy~~'|O!S~~(RO!Z~~(WOf~~(]O![~~(bO!]~~(gO!d~~(lQx~!c!}(g#R#S(g~(wQ!P~!c!}(r#R#S(r~)SQ!c~!c!}(}#R#S(}~)_Q!`~!c!})Y#R#S)Y~)jQ!b~!c!})e#R#S)e~)uQw~!c!})p#R#S)p~*QQ!a~!c!}){#R#S){~*]Q!R~!c!}*W#R#S*W~*hO{~~*mO|~~*rO!Y~~*wR!Q~!Q![*r#R#S*r#T#o*r~+VOR~~+[O!_~~+aOS~~+fO!O~",
tokenizers: [0],
topRules: {"Program":[0,6]},
specialized: [{term: 48, get: (value) => spec_identifier[value] || -1}],
tokenPrec: 0
});
const knightLanguage = language.LRLanguage.define({
name: "knight",
parser: parser.configure({
props: [],
}),
languageData: {
commentTokens: { line: "#" },
closeBrackets: { brackets: ["(", '"', "'"] },
wordChars: "$",
},
});
function knight() {
return knightLanguage;
}
exports.knight = knight;
exports.knightLanguage = knightLanguage;