diff --git a/ludus.grammar b/ludus.grammar index 8388ba6..a29b29e 100644 --- a/ludus.grammar +++ b/ludus.grammar @@ -255,7 +255,7 @@ Boolean { reserved<"true"> | reserved<"false"> } Nil { silent<"nil"> } @tokens { - Word { $[a-z] $[a-zA-Z_\-?/!]* } + Word { $[a-z] $[a-zA-Z0-9_\-?/!]* } Keyword { ":" Word } Comment { "&" ![\n]* } String { '"' (!["\\] | "\\" _)* '"' } diff --git a/parser.js b/parser.js index 88dd2a7..dfce38b 100644 --- a/parser.js +++ b/parser.js @@ -10,7 +10,7 @@ export const parser = LRParser.deserialize({ maxTerm: 122, skippedNodes: [0,1], repeatNodeCount: 18, - tokenData: ",d~RkXY!vYZ#U]^!vpq!vrs#Zst$wtu%Svw%_xy%vyz%{|}&Q}!O&V!O!P'Z!Q!R&c!R![&y![!]'l!]!^(^!_!`(c!`!a(h!}#O(m#P#Q(r#R#S(w#T#k(|#k#l)h#l#o(|#o#p,Y#q#r,_~!{R!g~XY!v]^!vpq!v~#ZO!h~~#^VOr#Zrs#ss#O#Z#O#P#x#P;'S#Z;'S;=`$q<%lO#Z~#xOW~~#{RO;'S#Z;'S;=`$U;=`O#Z~$XWOr#Zrs#ss#O#Z#O#P#x#P;'S#Z;'S;=`$q;=`<%l#Z<%lO#Z~$tP;=`<%l#Z~$zP#o#p$}~%SO!z~~%VP#o#p%Y~%_O!x~~%dSP~OY%_Z;'S%_;'S;=`%p<%lO%_~%sP;=`<%l%_~%{O!q~~&QO!s~~&VO!r~~&YR!Q!R&c!R![&y!`!a'U~&hPX~!O!P&k~&nP!Q![&q~&vPX~!Q![&q~'OQX~!O!P&k!Q![&y~'ZO#S~~'^P!O!P'a~'dP!O!P'g~'lO!v~~'oP#T#o'r~'wVY~qr'r}!O'r!P!Q'r!a!b'r!c!}'r#R#S'r#T#o'r~(cO!i~~(hO#[~~(mO#b~~(rO!t~~(wO!w~~(|O#Q~P)RVSPqr(|}!O(|!P!Q(|!a!b(|!c!}(|#R#S(|#T#o(|R)mXSPqr(|}!O(|!P!Q(|!a!b(|!c!}(|#R#S(|#T#](|#]#^*Y#^#o(|R*_XSPqr(|}!O(|!P!Q(|!a!b(|!c!}(|#R#S(|#T#h(|#h#i*z#i#o(|R+PXSPqr(|}!O(|!P!Q(|!a!b(|!c!}(|#R#S(|#T#[(|#[#]+l#]#o(|R+sV#eQSPqr(|}!O(|!P!Q(|!a!b(|!c!}(|#R#S(|#T#o(|~,_O#V~~,dO!y~", + tokenData: ",v~RkXY!vYZ#U]^!vpq!vrs#Zst$wtu%Svw%_xy%vyz%{|}&Q}!O&V!O!P'Z!Q!R&c!R![&y![!]'l!]!^(a!_!`(f!`!a(k!}#O(p#P#Q(u#R#S(z#T#k)P#k#l)n#l#o)P#o#p,l#q#r,q~!{R!g~XY!v]^!vpq!v~#ZO!h~~#^VOr#Zrs#ss#O#Z#O#P#x#P;'S#Z;'S;=`$q<%lO#Z~#xOW~~#{RO;'S#Z;'S;=`$U;=`O#Z~$XWOr#Zrs#ss#O#Z#O#P#x#P;'S#Z;'S;=`$q;=`<%l#Z<%lO#Z~$tP;=`<%l#Z~$zP#o#p$}~%SO!z~~%VP#o#p%Y~%_O!x~~%dSP~OY%_Z;'S%_;'S;=`%p<%lO%_~%sP;=`<%l%_~%{O!q~~&QO!s~~&VO!r~~&YR!Q!R&c!R![&y!`!a'U~&hPX~!O!P&k~&nP!Q![&q~&vPX~!Q![&q~'OQX~!O!P&k!Q![&y~'ZO#S~~'^P!O!P'a~'dP!O!P'g~'lO!v~~'oP#T#o'r~'wWY~qr'r}!O'r!P!Q'r!Q!['r!a!b'r!c!}'r#R#S'r#T#o'r~(fO!i~~(kO#[~~(pO#b~~(uO!t~~(zO!w~~)PO#Q~P)UWSPqr)P}!O)P!P!Q)P!Q![)P!a!b)P!c!})P#R#S)P#T#o)PR)sYSPqr)P}!O)P!P!Q)P!Q![)P!a!b)P!c!})P#R#S)P#T#])P#]#^*c#^#o)PR*hYSPqr)P}!O)P!P!Q)P!Q![)P!a!b)P!c!})P#R#S)P#T#h)P#h#i+W#i#o)PR+]YSPqr)P}!O)P!P!Q)P!Q![)P!a!b)P!c!})P#R#S)P#T#[)P#[#]+{#]#o)PR,SW#eQSPqr)P}!O)P!P!Q)P!Q![)P!a!b)P!c!})P#R#S)P#T#o)P~,qO#V~~,vO!y~", tokenizers: [0, 1], topRules: {"Script":[0,2]}, specialized: [{term: 4, get: (value) => spec_Word[value] || -1}],