allow conditionals at statement-level
This commit is contained in:
parent
34305b473e
commit
0dbba4d847
|
|
@ -55,6 +55,7 @@ consumeToTerminator {
|
||||||
FunctionDef |
|
FunctionDef |
|
||||||
Assign |
|
Assign |
|
||||||
BinOp |
|
BinOp |
|
||||||
|
ConditionalOp |
|
||||||
expressionWithoutIdentifier
|
expressionWithoutIdentifier
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,9 +7,9 @@ import {highlighting} from "./highlight"
|
||||||
const spec_Identifier = {__proto__:null,end:80, null:86, if:96, elseif:104, else:108}
|
const spec_Identifier = {__proto__:null,end:80, null:86, if:96, elseif:104, else:108}
|
||||||
export const parser = LRParser.deserialize({
|
export const parser = LRParser.deserialize({
|
||||||
version: 14,
|
version: 14,
|
||||||
states: "3UQYQbOOO!ZOpO'#CsO#mQcO'#CvO$jOSO'#CxO$xQbO'#EVOOQ`'#DR'#DROOQa'#DO'#DOO%{QbO'#DWO'QQcO'#DzOOQa'#Dz'#DzO(lQcO'#DyO(yQRO'#CwO)[QcO'#DuO)sQbO'#CuOOQ`'#Dv'#DvO*kQbO'#DuO*yQbO'#E]OOQ`'#D]'#D]O+nQRO'#DeOOQ`'#Du'#DuO+sQQO'#DtOOQ`'#Dt'#DtOOQ`'#Df'#DfQYQbOOO+{ObO,59_O,TQbO'#DPOOQa'#Dy'#DyOOQ`'#DZ'#DZOOQ`'#E['#E[OOQ`'#Dm'#DmO,_QbO,59^O,rQbO'#CzO,zQWO'#C{OOOO'#D|'#D|OOOO'#Dg'#DgO-`OSO,59dOOQa,59d,59dOOQ`'#Di'#DiO-nQbO'#DSO-vQQO,5:qOOQ`'#Dh'#DhO-{QbO,59rO.SQQO,59jOOQa,59r,59rO._QbO,59rO*yQbO,59cO*yQbO,59cO*yQbO,59cO.iQRO,59aO/YQRO'#CwO/vQRO,59aO0XQRO,59aO0SQQO,59aO0dQQO,59aO0lQbO'#DnO0wQbO,59]O1tQRO,5:wO1{QRO,5:wO2WQbO,5:POOQ`,5:`,5:`OOQ`-E7d-E7dOOQa1G.y1G.yOOQ`,59k,59kOOQ`-E7k-E7kOOOO,59f,59fOOOO,59g,59gOOOO-E7e-E7eOOQa1G/O1G/OOOQ`-E7g-E7gO2bQbO1G0]OOQ`-E7f-E7fO2oQQO1G/UOOQa1G/^1G/^O2zQbO1G/^OOQO'#Dk'#DkO2oQQO1G/UOOQa1G/U1G/UOOQ`'#Dl'#DlO2zQbO1G/^OOQa1G.}1G.}O3mQcO1G.}O3wQcO1G.}O4RQcO1G.}OOQa1G.{1G.{O*yQbO,59tO*yQbO,59tO*yQbO,59tO!`QbO'#CvO&SQbO'#CrOOQ`,5:Y,5:YOOQ`-E7l-E7lO4mQbO1G0cOOQ`1G/k1G/kO4zQbO7+%wO5PQbO7+%xO5aQQO7+$pOOQa7+$p7+$pO5lQbO7+$xOOQa7+$x7+$xOOQO-E7i-E7iOOQ`-E7j-E7jOOQP1G/`1G/`O6eQRO1G/`O6lQRO1G/`O6zQRO1G/`OOQ`'#D_'#D_O7RQbO7+%}O7WQbO7+&OOOQ`<<Ic<<IcOOQ`'#Dj'#DjO7nQQO'#DjO7sQbO'#EXO8ZQbO<<IdOOQa<<H[<<H[OOQa<<Hd<<HdOOQ`<<Ii<<IiOOQ`'#D`'#D`O8`QbO<<IjOOQ`,5:U,5:UOOQ`-E7h-E7hOOQ`AN?OAN?OO*yQbO'#DaOOQ`'#Do'#DoO8kQbOAN?UO8vQQO'#DcOOQ`AN?UAN?UO8{QbOAN?UO9QQRO,59{O9XQRO,59{OOQ`-E7m-E7mOOQ`G24pG24pO9dQbOG24pO9iQQO,59}O9nQQO1G/gOOQ`LD*[LD*[O5PQbO1G/iO7WQbO7+%ROOQ`7+%T7+%TOOQ`<<Hm<<Hm",
|
states: "3UQYQbOOO!ZOpO'#CsO#mQcO'#CvO$jOSO'#CxO$xQbO'#EVOOQ`'#DR'#DROOQa'#DO'#DOO%{QbO'#DWO'QQcO'#DzOOQa'#Dz'#DzO)UQcO'#DyO)}QRO'#CwO*bQcO'#DuO*yQcO'#DuO+[QbO'#CuOOQ`'#Dv'#DvO,SQbO'#DuO,bQbO'#E]OOQ`'#D]'#D]O-VQRO'#DeOOQ`'#Du'#DuO-[QQO'#DtOOQ`'#Dt'#DtOOQ`'#Df'#DfQYQbOOO-dObO,59_O-lQbO'#DPOOQa'#Dy'#DyOOQ`'#DZ'#DZOOQ`'#E['#E[OOQ`'#Dm'#DmO-vQbO,59^O.ZQbO'#CzO.cQWO'#C{OOOO'#D|'#D|OOOO'#Dg'#DgO.wOSO,59dOOQa,59d,59dOOQ`'#Di'#DiO/VQbO'#DSO/_QQO,5:qOOQ`'#Dh'#DhO/dQbO,59rO/kQQO,59jOOQa,59r,59rO/vQbO,59rO,bQbO,59cO,bQbO,59cO,bQbO,59cO,bQbO,59tO,bQbO,59tO,bQbO,59tO0QQRO,59aO0XQRO,59aO0jQRO,59aO0eQQO,59aO0uQQO,59aO0}QbO'#DnO1YQbO,59]O1kQRO,5:wO1rQRO,5:wO1}QbO,5:POOQ`,5:`,5:`OOQ`-E7d-E7dOOQa1G.y1G.yOOQ`,59k,59kOOQ`-E7k-E7kOOOO,59f,59fOOOO,59g,59gOOOO-E7e-E7eOOQa1G/O1G/OOOQ`-E7g-E7gO2XQbO1G0]OOQ`-E7f-E7fO2fQQO1G/UOOQa1G/^1G/^O2qQbO1G/^OOQO'#Dk'#DkO2fQQO1G/UOOQa1G/U1G/UOOQ`'#Dl'#DlO2qQbO1G/^OOQa1G.}1G.}O3dQcO1G.}O3nQcO1G.}O3xQcO1G.}OOQa1G/`1G/`O5[QcO1G/`O5cQcO1G/`O5jQcO1G/`OOQa1G.{1G.{O!`QbO'#CvO&SQbO'#CrOOQ`,5:Y,5:YOOQ`-E7l-E7lO5qQbO1G0cOOQ`1G/k1G/kO6OQbO7+%wO6TQbO7+%xO6eQQO7+$pOOQa7+$p7+$pO6pQbO7+$xOOQa7+$x7+$xOOQO-E7i-E7iOOQ`-E7j-E7jOOQ`'#D_'#D_O6zQbO7+%}O7PQbO7+&OOOQ`<<Ic<<IcOOQ`'#Dj'#DjO7gQQO'#DjO7lQbO'#EXO8SQbO<<IdOOQa<<H[<<H[OOQa<<Hd<<HdOOQ`<<Ii<<IiOOQ`'#D`'#D`O8XQbO<<IjOOQ`,5:U,5:UOOQ`-E7h-E7hOOQ`AN?OAN?OO,bQbO'#DaOOQ`'#Do'#DoO8dQbOAN?UO8oQQO'#DcOOQ`AN?UAN?UO8tQbOAN?UO8yQRO,59{O9QQRO,59{OOQ`-E7m-E7mOOQ`G24pG24pO9]QbOG24pO9bQQO,59}O9gQQO1G/gOOQ`LD*[LD*[O6TQbO1G/iO7PQbO7+%ROOQ`7+%T7+%TOOQ`<<Hm<<Hm",
|
||||||
stateData: "9v~O!fOS!gOS~O_QO`bOaXObPOcSOhXOpXOqXO{XO!Q`O!l]O!oRO!vUO!wVO!xeO~O!khO~O_jOaXObPOcSOhXOpXOqXOtiOykO{XO!l]O!oRO!vUO!wVO!OjX!xjX#RjX!}jXxjX~OP!mXQ!mXR!mXS!mX^!mXT!mXU!mXW!mXX!mXY!mXZ!mX[!mX]!mX~P!`OmqO!otO!qoO!rpO~O_uOwvP~O_jOaXObPOhXOpXOqXOtiO{XO!l]O!oRO!vUO!wVO!xxO~O!|{O~P%QO_jOaXObPOcSOhXOpXOqXOtiOykO{XO!l]O!oRO!vUO!wVO~OP!nXQ!nXR!nXS!nX^!nX!x!nX#R!nXT!nXU!nXW!nXX!nXY!nXZ!nX[!nX]!nX!}!nXx!nX~P&SOP!mXQ!mXR!mXS!mX^!mX~O!x!iX#R!iXx!iX~P(ZOP!OOQ!OOR!POS!PO^}O~OP!OOQ!OOR!POS!PO!x!iX#R!iXx!iX~O_QOaXObPOcSOhXOpXOqXO{XO!l]O!oRO!vUO!wVO~O!O!WO!x!iX#R!iXx!iX~O_jOaXObPOhXOpXOqXO{XO!l]O!oRO!vUO!wVO~OV![O~O!x!]O#R!]O~O_!_Oh!_O~OcSOy!`O~P*yO!Ofa!xfa#Rfa!}faxfa~P&SO_!bO!l]O~O!o!cO!q!cO!r!cO!s!cO!t!cO!u!cO~OmqO!o!eO!qoO!rpO~O_uOwvX~Ow!gO~O!|!jO~P%QOtiO!x!lO!|!nO~O!x!oO!|!jO~P*yO!}!uOT!mXU!mXW!mXX!mXY!mXZ!mX[!mX]!mX~P(ZOT!wOU!xOW!vOX!vOY!vOZ!vO[!vO]!vO~P(yOP!OOQ!OOR!POS!PO!}!uO~OT!wOU!xO!}!uO~O!O!WO!}!uO~O_!yObPO!l]O~O!O!WO!xea#Rea!}eaxea~OT!wOU!xOW!vOX!vOY!vOZ!vO[!vO]!vO~Ow!}O~P1YOT!wOU!xOw!}O~O`bO!Q`O~P)sO`bO!Q`O!x#QO~P)sOtiO!x!lO!|#SO~O!x!oO!|#UO~P*yO^}ORkiSki!xki#Rki!}kixki~OPkiQki~P3UOP!OOQ!OO~P3UOP!OOQ!OORkiSki!xki#Rki!}kixki~O`bO!Q`O!x#_O~P)sOx#`O~O`bO!Q`O!x#aOx!{P~P)sOtiO!x!lO!|#eO~O!x!oO!|#fO~P*yOW!vOX!vOY!vOZ!vO[!vO]!vOT|i!}|iw|i~OU!xO~P5vOU!xOT|i!}|iw|i~OU|i~P5vOx#gO~O`bO!Q`O!x#aOx!{P!U!{P!W!{P~P)sO!x#jO~O`bO!Q`O!x#aOx!{X!U!{X!W!{X~P)sOx#lO~Ox#qO!U#mO!W#pO~Ox#vO!U#mO!W#pO~Ow#xO~Ox#vO~Ow#yO~P1YOT!wOU!xOw#yO~Ox#zO~O!x#{O~O!x#|O~Ohq~",
|
stateData: "9o~O!fOS!gOS~O_QO`cOaXObPOcSOhXOpXOqXO{XO!QaO!l^O!oRO!vUO!wVO!xfO~O!kiO~O_kOaXObPOcSOhXOpXOqXOtjOylO{XO!l^O!oRO!vUO!wVO!OjX!xjX#RjX!}jXxjX~OP!mXQ!mXR!mXS!mXT!mXU!mXW!mXX!mXY!mXZ!mX[!mX]!mX^!mX~P!`OmrO!ouO!qpO!rqO~O_vOwvP~O_kOaXObPOhXOpXOqXOtjO{XO!l^O!oRO!vUO!wVO!xyO~O!||O~P%QO_kOaXObPOcSOhXOpXOqXOtjOylO{XO!l^O!oRO!vUO!wVO~OP!nXQ!nXR!nXS!nXT!nXU!nXW!nXX!nXY!nXZ!nX[!nX]!nX^!nX!x!nX#R!nX!}!nXx!nX~P&SOP!mXQ!mXR!mXS!mXT!mXU!mXW!mXX!mXY!mXZ!mX[!mX]!mX^!mX~O!x!iX#R!iXx!iX~P(ZOT!SOU!TOW!ROX!ROY!ROZ!RO[!RO]!RO~OP!POQ!POR!QOS!QO^!OO~P)cOP!POQ!POR!QOS!QO!x!iX#R!iXx!iX~OT!SOU!TO!x!iX#R!iXx!iX~O_QOaXObPOcSOhXOpXOqXO{XO!l^O!oRO!vUO!wVO~O!O!ZO!x!iX#R!iXx!iX~O_kOaXObPOhXOpXOqXO{XO!l^O!oRO!vUO!wVO~OV!_O~O!x!`O#R!`O~O_!bOh!bO~OcSOy!cO~P,bO!Ofa!xfa#Rfa!}faxfa~P&SO_!eO!l^O~O!o!fO!q!fO!r!fO!s!fO!t!fO!u!fO~OmrO!o!hO!qpO!rqO~O_vOwvX~Ow!jO~O!|!mO~P%QOtjO!x!oO!|!qO~O!x!rO!|!mO~P,bO!}!|O~P(ZOP!POQ!POR!QOS!QO!}!|O~OT!SOU!TO!}!|O~O!O!ZO!}!|O~O_!}ObPO!l^O~O!O!ZO!xea#Rea!}eaxea~Ow#RO~P)cOT!SOU!TOw#RO~O`cO!QaO~P+[O`cO!QaO!x#UO~P+[OtjO!x!oO!|#WO~O!x!rO!|#YO~P,bO^!OORkiSki!xki#Rki!}kixki~OPkiQki~P2{OP!POQ!PO~P2{OP!POQ!PORkiSki!xki#Rki!}kixki~OW!ROX!ROY!ROZ!RO[!RO]!ROT|i!x|i#R|i!}|iw|ix|i~OU!TO~P4dOU!TO~P4vOU|i~P4dO`cO!QaO!x#_O~P+[Ox#`O~O`cO!QaO!x#aOx!{P~P+[OtjO!x!oO!|#eO~O!x!rO!|#fO~P,bOx#gO~O`cO!QaO!x#aOx!{P!U!{P!W!{P~P+[O!x#jO~O`cO!QaO!x#aOx!{X!U!{X!W!{X~P+[Ox#lO~Ox#qO!U#mO!W#pO~Ox#vO!U#mO!W#pO~Ow#xO~Ox#vO~Ow#yO~P)cOT!SOU!TOw#yO~Ox#zO~O!x#{O~O!x#|O~Ohq~",
|
||||||
goto: ".p#RPPPPPPPPPPPPPPPPPPPPP#S#c#qP$i#c%d%yP&l&lPP%y&pP'T'nPPP%yP'q(QP(XP(e(h(qP(uP(X({)R)X)_)e)n)x*S*]*dPPPP*j*n+SPP+f,uP-lPPPPPPPP-p-p.TPP.].d.ddcOg![!g!}#Q#_#c#{#|R!U]i^O]g!W![!g!}#Q#_#c#{#|fQO]g![!g!}#Q#_#c#{#|xjQVW`iny|}!O!P!k!p!v!w!x!y!z#T#mR!y!WfWO]g![!g!}#Q#_#c#{#|xXQVW`iny|}!O!P!k!p!v!w!x!y!z#T#mQ!boR!z!Wd[Og![!g!}#Q#_#c#{#|Q!S]Q!q!OR!t!P!aXOQVW]`giny|}!O!P![!g!k!p!v!w!x!y!z!}#Q#T#_#c#m#{#|TqRsYlQWn!y!zQzVQ!iyX!lz!i!m#RdcOg![!g!}#Q#_#c#{#|YkQWn!y!zQ!U]R!`iRwSQ!T]Q!Z`Q#X!xQ#Z!wR#t#mZlQWn!y!zecOg![!g!}#Q#_#c#{#|R#^!}Q#i#_Q#}#{R$O#|T#n#i#oQ#r#iR#w#oQgOR!^gQsRR!dsQyVR!hyQvSR!fvW#c#Q#_#{#|R#k#cQ!mzQ#R!iT#V!m#RQ!p|Q#T!kT#W!p#TWnQW!y!zR!anS!X_!VR!|!XQ#o#iR#u#oTfOgSdOgQ#O![Q#P!gQ#]!}Z#b#Q#_#c#{#|d_Og![!g!}#Q#_#c#{#|Q!V]R!{!WdZOg![!g!}#Q#_#c#{#|YkQWn!y!zQ|VQ!R]Q!Y`Q!`iQ!kyW!o|!k!p#TQ!q}Q!r!OQ!s!PQ#X!vQ#Y!wQ#[!xR#s#mdYOg![!g!}#Q#_#c#{#|xjQVW`iny|}!O!P!k!p!v!w!x!y!z#T#mR!Q]TrRssTOQW]gin![!g!y!z!}#Q#_#c#{#|Q#d#QV#h#_#{#|ZmQWn!y!zeaOg![!g!}#Q#_#c#{#|",
|
goto: ".z#RPPPPPPPPPPPPPPPPPPPPP#S#c#qP$i#c%d%yP&l&lPP%y&pP'T'nPPP%yP'q(^P(eP(q(t(}P)RP(e)X)_)e)k)q)z*U*`*i*pPPPP*v*z+`PP+r-PP-vPPPPPPPP-z-z._PP.g.n.nddOh!_!j#R#U#_#c#{#|R!X^i_O^h!Z!_!j#R#U#_#c#{#|fQO^h!_!j#R#U#_#c#{#|xkQVWajoz}!O!P!Q!R!S!T!n!s!}#O#X#mR!}!ZfWO^h!_!j#R#U#_#c#{#|xXQVWajoz}!O!P!Q!R!S!T!n!s!}#O#X#mQ!epR#O!Zd[Oh!_!j#R#U#_#c#{#|Q!V^Q!t!PR!w!Q!aXOQVW^ahjoz}!O!P!Q!R!S!T!_!j!n!s!}#O#R#U#X#_#c#m#{#|TrRtYmQWo!}#OQ{VQ!lzX!o{!l!p#VddOh!_!j#R#U#_#c#{#|YlQWo!}#OQ!X^R!cjRxSd]Oh!_!j#R#U#_#c#{#|Q!W^Q!^aQ!x!TQ!z!SR#t#mZmQWo!}#OedOh!_!j#R#U#_#c#{#|R#^#RQ#i#_Q#}#{R$O#|T#n#i#oQ#r#iR#w#oQhOR!ahQtRR!gtQzVR!kzQwSR!iwW#c#U#_#{#|R#k#cQ!p{Q#V!lT#Z!p#VQ!s}Q#X!nT#[!s#XWoQW!}#OR!doS![`!YR#Q![Q#o#iR#u#oTgOhSeOhQ#S!_Q#T!jQ#]#RZ#b#U#_#c#{#|d`Oh!_!j#R#U#_#c#{#|Q!Y^R#P!ZfZO^h!_!j#R#U#_#c#{#|YlQWo!}#OQ}VQ!]aQ!cjQ!nzW!r}!n!s#XQ!t!OQ!u!PQ!v!QQ!x!RQ!y!SQ!{!TR#s#mdYOh!_!j#R#U#_#c#{#|xkQVWajoz}!O!P!Q!R!S!T!n!s!}#O#X#mR!U^TsRtsTOQW^hjo!_!j!}#O#R#U#_#c#{#|Q#d#UV#h#_#{#|ZnQWo!}#OebOh!_!j#R#U#_#c#{#|",
|
||||||
nodeNames: "⚠ Star Slash Plus Minus And Or Eq EqEq Neq Lt Lte Gt Gte Modulo Identifier AssignableIdentifier Word IdentifierBeforeDot Do Program PipeExpr FunctionCall DotGet Number ParenExpr FunctionCallOrIdentifier BinOp String StringFragment Interpolation EscapeSeq Boolean Regex Dict NamedArg NamedArgPrefix FunctionDef Params colon keyword Underscore Array Null ConditionalOp PositionalArg operator IfExpr keyword SingleLineThenBlock ThenBlock ElseIfExpr keyword ElseExpr keyword Assign",
|
nodeNames: "⚠ Star Slash Plus Minus And Or Eq EqEq Neq Lt Lte Gt Gte Modulo Identifier AssignableIdentifier Word IdentifierBeforeDot Do Program PipeExpr FunctionCall DotGet Number ParenExpr FunctionCallOrIdentifier BinOp String StringFragment Interpolation EscapeSeq Boolean Regex Dict NamedArg NamedArgPrefix FunctionDef Params colon keyword Underscore Array Null ConditionalOp PositionalArg operator IfExpr keyword SingleLineThenBlock ThenBlock ElseIfExpr keyword ElseExpr keyword Assign",
|
||||||
maxTerm: 95,
|
maxTerm: 95,
|
||||||
context: trackScope,
|
context: trackScope,
|
||||||
|
|
@ -23,5 +23,5 @@ export const parser = LRParser.deserialize({
|
||||||
tokenizers: [operatorTokenizer, 1, 2, 3, tokenizer, new LocalTokenGroup("[~RP!O!PU~ZO!k~~", 11)],
|
tokenizers: [operatorTokenizer, 1, 2, 3, tokenizer, new LocalTokenGroup("[~RP!O!PU~ZO!k~~", 11)],
|
||||||
topRules: {"Program":[0,20]},
|
topRules: {"Program":[0,20]},
|
||||||
specialized: [{term: 15, get: (value: any, stack: any) => (specializeKeyword(value, stack) << 1), external: specializeKeyword},{term: 15, get: (value: keyof typeof spec_Identifier) => spec_Identifier[value] || -1}],
|
specialized: [{term: 15, get: (value: any, stack: any) => (specializeKeyword(value, stack) << 1), external: specializeKeyword},{term: 15, get: (value: keyof typeof spec_Identifier) => spec_Identifier[value] || -1}],
|
||||||
tokenPrec: 1139
|
tokenPrec: 1132
|
||||||
})
|
})
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user