allow function calls in if/else if test expressions
This commit is contained in:
parent
f9b0aa2db5
commit
6112d7e5a2
|
|
@ -120,12 +120,16 @@ FunctionDef {
|
|||
Do Params colon (consumeToTerminator | newlineOrSemicolon block) CatchExpr? FinallyExpr? end
|
||||
}
|
||||
|
||||
ifTest {
|
||||
ConditionalOp | expression | FunctionCall
|
||||
}
|
||||
|
||||
IfExpr {
|
||||
if (ConditionalOp | expression) colon Block ElseIfExpr* ElseExpr? end
|
||||
if ifTest colon Block ElseIfExpr* ElseExpr? end
|
||||
}
|
||||
|
||||
ElseIfExpr {
|
||||
else if (ConditionalOp | expression) colon Block
|
||||
else if ifTest colon Block
|
||||
}
|
||||
|
||||
ElseExpr {
|
||||
|
|
|
|||
|
|
@ -7,11 +7,11 @@ import {highlighting} from "./highlight"
|
|||
const spec_Identifier = {__proto__:null,null:90, catch:96, finally:102, end:104, while:118, try:124, throw:128, if:132, else:136}
|
||||
export const parser = LRParser.deserialize({
|
||||
version: 14,
|
||||
states: "9OQYQbOOO#zQcO'#C{O$zOSO'#C}OOQa'#DT'#DTO&TQbO'#DdO'iQcO'#E]OOQa'#E]'#E]O(lQcO'#E]O)nQcO'#E[O*UQRO'#C|O+eQcO'#EWO+uQcO'#EWO,PQbO'#CzO,wOpO'#CxOOQ`'#EX'#EXO,|QbO'#EWO-WQRO'#DtOOQ`'#EW'#EWO-lQQO'#EVOOQ`'#EV'#EVOOQ`'#Dv'#DvQYQbOOO-tQbO'#DWO.PQbO'#DhO.tQQO'#DkO.PQbO'#DmO.PQbO'#DoO.yQbO'#DUOOQa'#E['#E[OOQ`'#Df'#DfOOQ`'#Ek'#EkOOQ`'#EO'#EOO/TQbO,59cO/}QbO'#DPO0VQWO'#DQOOOO'#E_'#E_OOOO'#Dw'#DwO0kOSO,59iOOQa,59i,59iOOQ`'#Dx'#DxO0yQbO,5:OO1QQQO,59oOOQa,5:O,5:OO1]QbO,5:OO1gQbO,5:aO.PQbO,59hO.PQbO,59hO.PQbO,59hO.PQbO,5:PO.PQbO,5:PO.PQbO,5:PO1zQRO,59fO2RQRO,59fO2dQRO,59fO2_QQO,59fO2oQQO,59fO2wObO,59dO3SQbO'#EPO3_QbO,59bO3yQbO,5:UO1gQbO,5:`OOQ`,5:q,5:qOOQ`-E7t-E7tOOQ`'#Dy'#DyO4aQbO'#DXO4lQbO'#DYOOQO'#Dz'#DzO4dQQO'#DXO4zQQO,59rO5kQRO,5:SO5rQRO,5:SO3yQbO,5:VO5}QcO,5:XO6yQcO,5:XO7ZQcO,5:XO7eQRO,5:ZO7lQRO,5:ZOOQ`,59p,59pOOQ`-E7|-E7|OOOO,59k,59kOOOO,59l,59lOOOO-E7u-E7uOOQa1G/T1G/TOOQ`-E7v-E7vO7wQQO1G/ZOOQa1G/j1G/jO8SQbO1G/jOOQO'#D|'#D|O7wQQO1G/ZOOQa1G/Z1G/ZOOQ`'#D}'#D}O8SQbO1G/jOOQ`1G/{1G/{OOQa1G/S1G/SO9OQcO1G/SO9YQcO1G/SO9dQcO1G/SOOQa1G/k1G/kO;YQcO1G/kO;aQcO1G/kO;hQcO1G/kOOQa1G/Q1G/QOOQa1G/O1G/OO!dQbO'#C{O;oQbO'#CwOOQ`,5:k,5:kOOQ`-E7}-E7}OOQ`'#D_'#D_O;|QbO'#D_O<pQbO1G/pOOQ`1G/z1G/zOOQ`-E7w-E7wO<{QQO,59sOOQO,59t,59tOOQO-E7x-E7xO=TQbO1G/^O3yQbO1G/nO=kQbO1G/qO3yQbO1G/uO=vQQO7+$uOOQa7+$u7+$uO>RQbO7+%UOOQa7+%U7+%UOOQO-E7z-E7zOOQ`-E7{-E7{OOQ`'#D{'#D{O>]QQO'#D{O>bQbO'#EhOOQ`,59y,59yO?UQbO'#D]O?ZQQO'#D`OOQ`7+%[7+%[O?`QbO7+%[O?eQbO7+%[O?mQbO7+$xO?xQbO7+$xO@iQbO7+%YOOQ`7+%]7+%]O@nQbO7+%]O@sQbO7+%]O@{QbO7+%aOOQa<<Ha<<HaOOQa<<Hp<<HpOOQ`,5:g,5:gOOQ`-E7y-E7yOATQQO,59wO3yQbO,59zOOQ`<<Hv<<HvOAYQbO<<HvOOQ`<<Hd<<HdOA_QbO<<HdOAdQbO<<HdOAlQbO<<HdOOQ`<<Ht<<HtOOQ`<<Hw<<HwOAwQbO<<HwOOQ`'#EQ'#EQOA|QbO<<H{OBUQbO'#DsOOQ`<<H{<<H{OB^QbO<<H{O3yQbO1G/cOOQ`1G/f1G/fOOQ`AN>bAN>bOOQ`AN>OAN>OOBcQbOAN>OOBhQbOAN>OOOQ`AN>cAN>cOOQ`-E8O-E8OOOQ`AN>gAN>gOBpQbOAN>gO.PQbO,5:]O3yQbO,5:_OOQ`7+$}7+$}OOQ`G23jG23jOBuQbOG23jPBXQbO'#DqOOQ`G24RG24ROBzQRO1G/wOCRQRO1G/wOOQ`1G/y1G/yOOQ`LD)ULD)UO3yQbO7+%cOOQ`<<H}<<H}",
|
||||
stateData: "Ca~O!wOS!xOS~OdPOe`OfUOg]OhfOmUOuUOvUO}UO!]gO!`hO!biO!djO!}[O#QQO#XRO#YSO#ZcO~OdlOfUOg]OhfOmUOuUOvUOykO}UO!VmO!}[O#QQO#XRO#YSO!ZoX#ZoX#`oX#^oX!QoX!ToX!UoX!foX~OP#OXQ#OXR#OXS#OXT#OXU#OXW#OXX#OXY#OXZ#OX[#OX]#OX^#OX!OoX~P!dOrsO#QvO#SqO#TrO~OdlOfUOg]OmUOuUOvUOykO}UO!}[O#QQO#XRO#YSO#ZwO~O#]zO~P%YOP#PXQ#PXR#PXS#PXT#PXU#PXW#PXX#PXY#PXZ#PX[#PX]#PX^#PX#Z#PX#`#PX!Q#PX!T#PX!U#PX!f#PX~OdlOfUOg]OhfOmUOuUOvUOykO}UO!VmO!}[O#QQO#XRO#YSO#^#PX~P&[OV|O~P&[OP#OXQ#OXR#OXS#OXT#OXU#OXW#OXX#OXY#OXZ#OX[#OX]#OX^#OX~O#Z!zX#`!zX!Q!zX!T!zX!U!zX!f!zX~P(sOP!OOQ!OOR!POS!POT!ROU!SOW!QOX!QOY!QOZ!QO[!QO]!QO^}O~O#Z!zX#`!zX!Q!zX!T!zX!U!zX!f!zX~OP!OOQ!OOR!POS!PO~P+POT!ROU!SO~P+POdPOfUOg]OhfOmUOuUOvUO}UO!}[O#QQO#XRO#YSO~O!|!YO~O!O!]O!Z!ZO~P+POV|O_!^O`!^Oa!^Ob!^Oc!^O~O#Z!_O#`!_O~Od!aOy!cO!O{P~OdlOfUOg]OmUOuUOvUO}UO!}[O#QQO#XRO#YSO~O!O!iO~OhfO!V!oO~P.POhfOykO!VmO!Oka!Zka#Zka#`ka#^ka!Qka!Tka!Uka!fka~P.POd!qO!}[O~O#Q!rO#S!rO#T!rO#U!rO#V!rO#W!rO~OrsO#Q!tO#SqO#TrO~O#]!wO~P%YOykO#Z!yO#]!{O~O#Z!|O#]!wO~P.POe`O!]gO!`hO!biO!djO~P,PO#^#XO~P(sOP!OOQ!OOR!POS!PO#^#XO~OT!ROU!SO#^#XO~O!Z!ZO#^#XO~Od#YOm#YO!}[O~Od#ZOg]O!}[O~O!Z!ZO#Zja#`ja#^ja!Qja!Tja!Uja!fja~Oe`O!]gO!`hO!biO!djO#Z#`O~P,POd!aOy!cO!O{X~Om#eOu#eO}#eO#QQO~O!O#gO~OT!ROU!SOW!QOX!QOY!QOZ!QO[!QO]!QO~O!O#hO~P5POT!ROU!SO!O#hO~O#Z!aa#`!aa!Q!aa!T!aa!U!aa!f!aa~P*UO#Z!aa#`!aa!Q!aa!T!aa!U!aa!f!aa~OP!OOQ!OOR!POS!PO~P6eOT!ROU!SO~P6eO!O#jO~P5POT!ROU!SO!O#jO~OykO#Z!yO#]#lO~O#Z!|O#]#nO~P.PO^}ORpiSpi#Zpi#`pi#^pi!Qpi!Tpi!Upi!fpi~OPpiQpi~P8^OP!OOQ!OO~P8^OP!OOQ!OORpiSpi#Zpi#`pi#^pi!Qpi!Tpi!Upi!fpi~OW!QOX!QOY!QOZ!QO[!QO]!QOT!Xi#Z!Xi#`!Xi#^!Xi!O!Xi!Q!Xi!T!Xi!U!Xi!f!Xi~OU!SO~P:XOU!SO~P:kOU!Xi~P:XOhfOykO!VmO~P.POe`O!]gO!`hO!biO!djO#Z#qO!Q#[P!T#[P!U#[P!f#[P~P,PO!Q#uO!T#vO!U#wO~Oy!cO!O{a~Oe`O!]gO!`hO!biO!djO#Z#{O~P,PO!Q#uO!T#vO!U#}O~OykO#Z!yO#]$RO~O#Z!|O#]$SO~P.PO#Z$TO~Oe`O!]gO!`hO!biO!djO#Z#qO!Q#[X!T#[X!U#[X!f#[X~P,POd$VO~O!O$WO~O!U$XO~O!T#vO!U$XO~O!Q#uO!T#vO!U$ZO~Oe`O!]gO!`hO!biO!djO#Z#qO!Q#[P!T#[P!U#[P~P,PO!U$_O~O!U$`O~O!T#vO!U$`O~O!U$eO!f$dO~O!O$gO~O!U$iO~O!U$jO~O!T#vO!U$jO~O!Q#uO!T#vO!U$jO~O!U$mO~O!U$oO!f$dO~O!O$rO!d$qO~O!U$oO~O!U$tO~O!T#vO!U$tO~O!U$wO~O!U${O~O!O$|O~P5POT!ROU!SO!O$|O~Omv~",
|
||||
goto: "3}#`PPPPPPPPPPPPPPPPPPPPPPPPPP#a#v$[P%[#v&b'QP(O(OPP(S(}P)b*R*UPP*[P*h+QPPP+h,e-^P-eP-e-eP-eP-eP-wP-{-e-e.R.X._.e.k.u.|/W/b/k/rPPPP/x/|0jPP1S2mP3lPPPPPPPP3pPP3vpaOe|!]!^!i#`#g#h#j#s#{$W$g$r$|R!W[u^O[e|!Z!]!^!i#`#g#h#j#s#{$W$g$r$|rPO[e|!]!^!i#`#g#h#j#s#{$W$g$r$||lPSTgijkpx{}!O!P!Q!R!S!x!}#Z#[#m$qR#Z!ZrTO[e|!]!^!i#`#g#h#j#s#{$W$g$r$||UPSTgijkpx{}!O!P!Q!R!S!x!}#Z#[#m$qQ!qqQ#Y!YR#[!ZpYOe|!]!^!i#`#g#h#j#s#{$W$g$r$|Q!U[Q!kiQ#P!OR#S!P!pUOPST[egijkpx{|}!O!P!Q!R!S!]!^!i!x!}#Z#[#`#g#h#j#m#s#{$W$g$q$r$|R#e!cTsQu!qUOPST[egijkpx{|}!O!P!Q!R!S!]!^!i!x!}#Z#[#`#g#h#j#m#s#{$W$g$q$r$|YnPTp#Z#[QySQ!vxX!yy!v!z#kpaOe|!]!^!i#`#g#h#j#s#{$W$g$r$|YmPTp#Z#[Q!W[R!okR!ffX!df!b!e#dQ#y#aQ$P#iQ$]#zR$l$^Q#a!]Q#i!iQ#|#hQ$Q#jQ$h$WQ$s$gQ$z$rR$}$|Q#x#aQ$O#iQ$Y#yQ$[#zQ$a$PS$k$]$^R$u$l!OUPST[gijkpx{}!O!P!Q!R!S!x!}#Z#[#m$qqVOe|!]!^!i#`#g#h#j#s#{$W$g$r$|pZOe|!]!^!i#`#g#h#j#s#{$W$g$r$|Q!V[Q!hgQ!liQ!njQ#T!SQ#V!RR$y$qZnPTp#Z#[qaOe|!]!^!i#`#g#h#j#s#{$W$g$r$|T$b$Q$cQ$f$QR$p$cQeOR!`eQuQR!suQxSR!uxQ!bfR#c!bQ!efQ#d!bT#f!e#dS#s#`#{R$U#sQ!zyQ#k!vT#o!z#kQ!}{Q#m!xT#p!}#mWpPT#Z#[R!ppS![_!XR#^![Q$c$QR$n$cTdOeSbOeQ#O|`#_!]!i#h#j$W$g$r$|Q#b!^U#r#`#s#{R#z#gp_Oe|!]!^!i#`#g#h#j#s#{$W$g$r$|Q!X[R#]!ZrXO[e|!]!^!i#`#g#h#j#s#{$W$g$r$|YmPTp#Z#[Q{SQ!ggQ!jiQ!mjQ!okQ!xxW!|{!x!}#mQ#P}Q#Q!OQ#R!PQ#T!QQ#U!RQ#W!SR$x$qpWOe|!]!^!i#`#g#h#j#s#{$W$g$r$||lPSTgijkpx{}!O!P!Q!R!S!x!}#Z#[#m$qR!T[TtQuQ#t#`R$^#{ZoPTp#Z#[",
|
||||
states: "9[QYQbOOO#zQcO'#C{O$zOSO'#C}OOQa'#DT'#DTO&TQbO'#DdO'iQcO'#E]OOQa'#E]'#E]O(oQcO'#E]O)qQcO'#E[O*XQRO'#C|O+hQcO'#EWO+xQcO'#EWO,SQbO'#CzO,zOpO'#CxOOQ`'#EX'#EXO-PQbO'#EWO-ZQRO'#DtOOQ`'#EW'#EWO-oQQO'#EVOOQ`'#EV'#EVOOQ`'#Dv'#DvQYQbOOO-wQbO'#DWO.SQbO'#DhO.wQQO'#DkO.SQbO'#DmO.|QbO'#DoO/qQbO'#DUOOQa'#E['#E[OOQ`'#Df'#DfOOQ`'#Ek'#EkOOQ`'#EO'#EOO/{QbO,59cO0uQbO'#DPO0}QWO'#DQOOOO'#E_'#E_OOOO'#Dw'#DwO1cOSO,59iOOQa,59i,59iOOQ`'#Dx'#DxO1qQbO,5:OO1xQQO,59oOOQa,5:O,5:OO2TQbO,5:OO2_QbO,5:aO.SQbO,59hO.SQbO,59hO.SQbO,59hO.SQbO,5:PO.SQbO,5:PO.SQbO,5:PO2rQRO,59fO2yQRO,59fO3[QRO,59fO3VQQO,59fO3gQQO,59fO3oObO,59dO3zQbO'#EPO4VQbO,59bO4qQbO,5:UO2_QbO,5:`OOQ`,5:q,5:qOOQ`-E7t-E7tOOQ`'#Dy'#DyO5XQbO'#DXO5dQbO'#DYOOQO'#Dz'#DzO5[QQO'#DXO5rQQO,59rO6cQRO,5:SO6jQRO,5:SO4qQbO,5:VO6uQcO,5:XO7qQcO,5:XO8RQcO,5:XO8]QcO'#E[O8dQRO'#ElO8kQRO'#ElOOQO'#El'#ElO8vQQO,5:ZOOQ`,59p,59pOOQ`-E7|-E7|OOOO,59k,59kOOOO,59l,59lOOOO-E7u-E7uOOQa1G/T1G/TOOQ`-E7v-E7vO8{QQO1G/ZOOQa1G/j1G/jO9WQbO1G/jOOQO'#D|'#D|O8{QQO1G/ZOOQa1G/Z1G/ZOOQ`'#D}'#D}O9WQbO1G/jOOQ`1G/{1G/{OOQa1G/S1G/SO:SQcO1G/SO:^QcO1G/SO:hQcO1G/SOOQa1G/k1G/kO<^QcO1G/kO<eQcO1G/kO<lQcO1G/kOOQa1G/Q1G/QOOQa1G/O1G/OO<sQbO'#C{O=jQbO'#CwOOQ`,5:k,5:kOOQ`-E7}-E7}OOQ`'#D_'#D_O=wQbO'#D_O>kQbO1G/pOOQ`1G/z1G/zOOQ`-E7w-E7wO>vQQO,59sOOQO,59t,59tOOQO-E7x-E7xO?OQbO1G/^O4qQbO1G/nO?fQbO1G/qO4qQbO1G/uO?qQQO7+$uOOQa7+$u7+$uO?|QbO7+%UOOQa7+%U7+%UOOQO-E7z-E7zOOQ`-E7{-E7{OOQ`'#D{'#D{O@WQQO'#D{O@]QbO'#EhOOQ`,59y,59yOAPQbO'#D]OAUQQO'#D`OOQ`7+%[7+%[OAZQbO7+%[OA`QbO7+%[OAhQbO7+$xOAsQbO7+$xOBdQbO7+%YOOQ`7+%]7+%]OBiQbO7+%]OBnQbO7+%]OBvQbO7+%aOOQa<<Ha<<HaOOQa<<Hp<<HpOOQ`,5:g,5:gOOQ`-E7y-E7yOCOQQO,59wO4qQbO,59zOOQ`<<Hv<<HvOCTQbO<<HvOOQ`<<Hd<<HdOCYQbO<<HdOC_QbO<<HdOCgQbO<<HdOOQ`<<Ht<<HtOOQ`<<Hw<<HwOCrQbO<<HwOOQ`'#EQ'#EQOCwQbO<<H{ODPQbO'#DsOOQ`<<H{<<H{ODXQbO<<H{O4qQbO1G/cOOQ`1G/f1G/fOOQ`AN>bAN>bOOQ`AN>OAN>OOD^QbOAN>OODcQbOAN>OOOQ`AN>cAN>cOOQ`-E8O-E8OOOQ`AN>gAN>gODkQbOAN>gO.|QbO,5:]O4qQbO,5:_OOQ`7+$}7+$}OOQ`G23jG23jODpQbOG23jPDSQbO'#DqOOQ`G24RG24RODuQQO1G/wOOQ`1G/y1G/yOOQ`LD)ULD)UO4qQbO7+%cOOQ`<<H}<<H}",
|
||||
stateData: "D}~O!wOS!xOS~OdPOe`OfUOg]OhfOmUOuUOvUO}UO!]gO!`hO!biO!djO!}[O#QQO#XRO#YSO#ZcO~OdlOfUOg]OhfOmUOuUOvUOykO}UO!VmO!}[O#QQO#XRO#YSOT#OXU#OXW#OXX#OXY#OXZ#OX[#OX]#OX~OP#OXQ#OXR#OXS#OX^#OX!OoX!ZoX#ZoX#aoX#^oX!QoX!ToX!UoX!foX~P!dOrsO#QvO#SqO#TrO~OdlOfUOg]OmUOuUOvUOykO}UO!}[O#QQO#XRO#YSO#ZwO~O#]zO~P%YOP#PXQ#PXR#PXS#PXT#PXU#PXW#PXX#PXY#PXZ#PX[#PX]#PX^#PX#Z#PX#a#PX!Q#PX!T#PX!U#PX!f#PX~OdlOfUOg]OhfOmUOuUOvUOykO}UO!VmO!}[O#QQO#XRO#YSO#^#PX!O#PX~P&[OV|O~P&[OP#OXQ#OXR#OXS#OXT#OXU#OXW#OXX#OXY#OXZ#OX[#OX]#OX^#OX~O#Z!zX#a!zX!Q!zX!T!zX!U!zX!f!zX~P(vOP!OOQ!OOR!POS!POT!ROU!SOW!QOX!QOY!QOZ!QO[!QO]!QO^}O~O#Z!zX#a!zX!Q!zX!T!zX!U!zX!f!zX~OP!OOQ!OOR!POS!PO~P+SOT!ROU!SO~P+SOdPOfUOg]OhfOmUOuUOvUO}UO!}[O#QQO#XRO#YSO~O!|!YO~O!O!]O!Z!ZO~P+SOV|O_!^O`!^Oa!^Ob!^Oc!^O~O#Z!_O#a!_O~Od!aOy!cO!O{P~OdlOfUOg]OmUOuUOvUO}UO!}[O#QQO#XRO#YSO~O!O!iO~Od!mOfUOg]OmUOuUOvUO}UO!}[O#QQO#XRO#YSO~OhfO!V!rO~P.SOhfOykO!VmO!Oka!Zka#Zka#aka#^ka!Qka!Tka!Uka!fka~P.SOd!tO!}[O~O#Q!uO#S!uO#T!uO#U!uO#V!uO#W!uO~OrsO#Q!wO#SqO#TrO~O#]!zO~P%YOykO#Z!|O#]#OO~O#Z#PO#]!zO~P.SOe`O!]gO!`hO!biO!djO~P,SO#^#[O~P(vOP!OOQ!OOR!POS!PO#^#[O~OT!ROU!SO#^#[O~O!Z!ZO#^#[O~Od#]Om#]O!}[O~Od#^Og]O!}[O~O!Z!ZO#Zja#aja#^ja!Qja!Tja!Uja!fja~Oe`O!]gO!`hO!biO!djO#Z#cO~P,SOd!aOy!cO!O{X~Om#hOu#hO}#hO#QQO~O!O#jO~OT!ROU!SOW!QOX!QOY!QOZ!QO[!QO]!QO~O!O#kO~P5wOT!ROU!SO!O#kO~O#Z!aa#a!aa!Q!aa!T!aa!U!aa!f!aa~P*XO#Z!aa#a!aa!Q!aa!T!aa!U!aa!f!aa~OP!OOQ!OOR!POS!PO~P7]OT!ROU!SO~P7]O!O#OX~P!dO!O#`X~P5wOT!ROU!SO!O#`X~O!O#mO~OykO#Z!|O#]#oO~O#Z#PO#]#qO~P.SO^}ORpiSpi#Zpi#api#^pi!Qpi!Tpi!Upi!fpi~OPpiQpi~P9bOP!OOQ!OO~P9bOP!OOQ!OORpiSpi#Zpi#api#^pi!Qpi!Tpi!Upi!fpi~OW!QOX!QOY!QOZ!QO[!QO]!QOT!Xi#Z!Xi#a!Xi#^!Xi!O!Xi!Q!Xi!T!Xi!U!Xi!f!Xi~OU!SO~P;]OU!SO~P;oOU!Xi~P;]OhfOykO!VmO!ZoX#ZoX#aoX#^oX!QoX!ToX!UoX!foX~P.SOhfOykO!VmO~P.SOe`O!]gO!`hO!biO!djO#Z#tO!Q#[P!T#[P!U#[P!f#[P~P,SO!Q#xO!T#yO!U#zO~Oy!cO!O{a~Oe`O!]gO!`hO!biO!djO#Z$OO~P,SO!Q#xO!T#yO!U$QO~OykO#Z!|O#]$UO~O#Z#PO#]$VO~P.SO#Z$WO~Oe`O!]gO!`hO!biO!djO#Z#tO!Q#[X!T#[X!U#[X!f#[X~P,SOd$YO~O!O$ZO~O!U$[O~O!T#yO!U$[O~O!Q#xO!T#yO!U$^O~Oe`O!]gO!`hO!biO!djO#Z#tO!Q#[P!T#[P!U#[P~P,SO!U$bO~O!U$cO~O!T#yO!U$cO~O!U$hO!f$gO~O!O$jO~O!U$lO~O!U$mO~O!T#yO!U$mO~O!Q#xO!T#yO!U$mO~O!U$pO~O!U$rO!f$gO~O!O$uO!d$tO~O!U$rO~O!U$wO~O!T#yO!U$wO~O!U$zO~O!U$}O~O!O%OO~Omv~",
|
||||
goto: "4x#aPPPPPPPPPPPPPPPPPPPPPPPPPP#b#w$aP%d&k'P'oP(n(nPP(r)nP*S*t*wPP*}P+Z+sPPP,Z-X.OP.WP.W.WP.WP.WP.jP.n.W.W.t.z/Q/W/^/h/o/y0T0_0fPPPP0l0p1^PP1v3`P4`PPPPPPPP4dPP4j4rpaOe|!]!^!i#c#j#k#m#v$O$Z$j$u%OR!W[t^O[e|!Z!]!^!i#c#j#k#m#v$O$Z$j$u%OT!pj$trPO[e|!]!^!i#c#j#k#m#v$O$Z$j$u%OzlPSTgikpx{}!O!P!Q!R!S!m!{#Q#^#_#pS!mj$tR#^!ZvTO[ej|!]!^!i#c#j#k#m#v$O$Z$j$t$u%OzUPSTgikpx{}!O!P!Q!R!S!m!{#Q#^#_#pQ!tqQ#]!YR#_!Zu^O[e|!Z!]!^!i#c#j#k#m#v$O$Z$j$u%OpYOe|!]!^!i#c#j#k#m#v$O$Z$j$u%OQ!U[Q!kiQ#S!OR#V!P!rUOPST[egijkpx{|}!O!P!Q!R!S!]!^!i!m!{#Q#^#_#c#j#k#m#p#v$O$Z$j$t$u%OR#h!cTsQu!sUOPST[egijkpx{|}!O!P!Q!R!S!]!^!i!m!{#Q#^#_#c#j#k#m#p#v$O$Z$j$t$u%O[nPTp!m#^#_QySQ!yxX!|y!y!}#npaOe|!]!^!i#c#j#k#m#v$O$Z$j$u%O[mPTp!m#^#_Q!W[R!rkR!ffX!df!b!e#gQ#|#dQ$S#lQ$`#}R$o$aQ#d!]Q#l!iQ$P#kQ$T#mQ$k$ZQ$v$jQ$|$uR%P%OQ#{#dQ$R#lQ$]#|Q$_#}Q$d$SS$n$`$aR$x$o!QUPST[gijkpx{}!O!P!Q!R!S!m!{#Q#^#_#p$tqVOe|!]!^!i#c#j#k#m#v$O$Z$j$u%OpZOe|!]!^!i#c#j#k#m#v$O$Z$j$u%OQ!V[Q!hgQ!liS!oj$tQ#W!SR#Y!R]nPTp!m#^#_qaOe|!]!^!i#c#j#k#m#v$O$Z$j$u%OT$e$T$fQ$i$TR$s$fQeOR!`eQuQR!vuQxSR!xxQ!bfR#f!bQ!efQ#g!bT#i!e#gS#v#c$OR$X#vQ!}yQ#n!yT#r!}#nQ#Q{Q#p!{T#s#Q#pYpPT!m#^#_R!spS![_!XR#a![Q$f$TR$q$fTdOeSbOeQ#R|`#b!]!i#k#m$Z$j$u%OQ#e!^U#u#c#v$OR#}#jp_Oe|!]!^!i#c#j#k#m#v$O$Z$j$u%OQ!X[R#`!ZrXO[e|!]!^!i#c#j#k#m#v$O$Z$j$u%O[mPTp!m#^#_Q{SQ!ggQ!jiS!nj$tQ!rkQ!{xW#P{!{#Q#pQ#S}Q#T!OQ#U!PQ#W!QQ#X!RR#Z!SpWOe|!]!^!i#c#j#k#m#v$O$Z$j$u%O!OlPSTgijkpx{}!O!P!Q!R!S!m!{#Q#^#_#p$tR!T[TtQuQ#w#cR$a$O]oPTp!m#^#_Q!qjR${$t",
|
||||
nodeNames: "⚠ Star Slash Plus Minus And Or Eq EqEq Neq Lt Lte Gt Gte Modulo PlusEq MinusEq StarEq SlashEq ModuloEq Identifier AssignableIdentifier Word IdentifierBeforeDot Do Program PipeExpr FunctionCall DotGet Number ParenExpr FunctionCallOrIdentifier BinOp String StringFragment Interpolation EscapeSeq Boolean Regex Dict NamedArg NamedArgPrefix FunctionDef Params NamedParam Null colon CatchExpr keyword Block FinallyExpr keyword keyword Underscore Array ConditionalOp PositionalArg operator WhileExpr keyword FunctionCallWithBlock TryExpr keyword Throw keyword IfExpr keyword ElseIfExpr keyword ElseExpr CompoundAssign Assign",
|
||||
maxTerm: 108,
|
||||
maxTerm: 109,
|
||||
context: trackScope,
|
||||
nodeProps: [
|
||||
["closedBy", 46,"end"]
|
||||
|
|
@ -19,9 +19,9 @@ export const parser = LRParser.deserialize({
|
|||
propSources: [highlighting],
|
||||
skippedNodes: [0],
|
||||
repeatNodeCount: 11,
|
||||
tokenData: "C_~R|OX#{XY$jYZ%TZp#{pq$jqs#{st%ntu'Vuw#{wx'[xy'ayz'zz{#{{|(e|}#{}!O+X!O!P#{!P!Q-n!Q![)S![!]6Z!]!^%T!^!}#{!}#O6t#O#P8j#P#Q8o#Q#R#{#R#S9Y#S#T#{#T#Y,Y#Y#Z9s#Z#b,Y#b#c>q#c#f,Y#f#g?n#g#h,Y#h#i@k#i#o,Y#o#p#{#p#qBo#q;'S#{;'S;=`$d<%l~#{~O#{~~CYS$QUrSOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{S$gP;=`<%l#{^$qUrS!wYOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{U%[UrS#ZQOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{^%uZrS!xYOY%nYZ#{Zt%ntu&huw%nwx&hx#O%n#O#P&h#P;'S%n;'S;=`'P<%lO%nY&mS!xYOY&hZ;'S&h;'S;=`&y<%lO&hY&|P;=`<%l&h^'SP;=`<%l%n~'[O#S~~'aO#Q~U'hUrS!}QOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{U(RUrS#^QOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{U(jWrSOt#{uw#{x!Q#{!Q![)S![#O#{#P;'S#{;'S;=`$d<%lO#{U)ZYrSmQOt#{uw#{x!O#{!O!P)y!P!Q#{!Q![)S![#O#{#P;'S#{;'S;=`$d<%lO#{U*OWrSOt#{uw#{x!Q#{!Q![*h![#O#{#P;'S#{;'S;=`$d<%lO#{U*oWrSmQOt#{uw#{x!Q#{!Q![*h![#O#{#P;'S#{;'S;=`$d<%lO#{U+^^rSOt#{uw#{x}#{}!O,Y!O!Q#{!Q![)S![!_#{!_!`-T!`#O#{#P#T#{#T#o,Y#o;'S#{;'S;=`$d<%lO#{U,_[rSOt#{uw#{x}#{}!O,Y!O!_#{!_!`-T!`#O#{#P#T#{#T#o,Y#o;'S#{;'S;=`$d<%lO#{U-[UyQrSOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{U-sWrSOt#{uw#{x!P#{!P!Q.]!Q#O#{#P;'S#{;'S;=`$d<%lO#{U.b^rSOY/^YZ#{Zt/^tu0auw/^wx0ax!P/^!P!Q#{!Q!}/^!}#O5S#O#P2o#P;'S/^;'S;=`6T<%lO/^U/e^rSvQOY/^YZ#{Zt/^tu0auw/^wx0ax!P/^!P!Q3U!Q!}/^!}#O5S#O#P2o#P;'S/^;'S;=`6T<%lO/^Q0fXvQOY0aZ!P0a!P!Q1R!Q!}0a!}#O1p#O#P2o#P;'S0a;'S;=`3O<%lO0aQ1UP!P!Q1XQ1^UvQ#Z#[1X#]#^1X#a#b1X#g#h1X#i#j1X#m#n1XQ1sVOY1pZ#O1p#O#P2Y#P#Q0a#Q;'S1p;'S;=`2i<%lO1pQ2]SOY1pZ;'S1p;'S;=`2i<%lO1pQ2lP;=`<%l1pQ2rSOY0aZ;'S0a;'S;=`3O<%lO0aQ3RP;=`<%l0aU3ZWrSOt#{uw#{x!P#{!P!Q3s!Q#O#{#P;'S#{;'S;=`$d<%lO#{U3zbrSvQOt#{uw#{x#O#{#P#Z#{#Z#[3s#[#]#{#]#^3s#^#a#{#a#b3s#b#g#{#g#h3s#h#i#{#i#j3s#j#m#{#m#n3s#n;'S#{;'S;=`$d<%lO#{U5X[rSOY5SYZ#{Zt5Stu1puw5Swx1px#O5S#O#P2Y#P#Q/^#Q;'S5S;'S;=`5}<%lO5SU6QP;=`<%l5SU6WP;=`<%l/^U6bUrS!OQOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{U6{W#YQrSOt#{uw#{x!_#{!_!`7e!`#O#{#P;'S#{;'S;=`$d<%lO#{U7jVrSOt#{uw#{x#O#{#P#Q8P#Q;'S#{;'S;=`$d<%lO#{U8WU#XQrSOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{~8oO#T~U8vU#]QrSOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{U9aUrS!VQOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{U9x]rSOt#{uw#{x}#{}!O,Y!O!_#{!_!`-T!`#O#{#P#T#{#T#U:q#U#o,Y#o;'S#{;'S;=`$d<%lO#{U:v^rSOt#{uw#{x}#{}!O,Y!O!_#{!_!`-T!`#O#{#P#T#{#T#`,Y#`#a;r#a#o,Y#o;'S#{;'S;=`$d<%lO#{U;w^rSOt#{uw#{x}#{}!O,Y!O!_#{!_!`-T!`#O#{#P#T#{#T#g,Y#g#h<s#h#o,Y#o;'S#{;'S;=`$d<%lO#{U<x^rSOt#{uw#{x}#{}!O,Y!O!_#{!_!`-T!`#O#{#P#T#{#T#X,Y#X#Y=t#Y#o,Y#o;'S#{;'S;=`$d<%lO#{U={[uQrSOt#{uw#{x}#{}!O,Y!O!_#{!_!`-T!`#O#{#P#T#{#T#o,Y#o;'S#{;'S;=`$d<%lO#{^>x[#UWrSOt#{uw#{x}#{}!O,Y!O!_#{!_!`-T!`#O#{#P#T#{#T#o,Y#o;'S#{;'S;=`$d<%lO#{^?u[#WWrSOt#{uw#{x}#{}!O,Y!O!_#{!_!`-T!`#O#{#P#T#{#T#o,Y#o;'S#{;'S;=`$d<%lO#{^@r^#VWrSOt#{uw#{x}#{}!O,Y!O!_#{!_!`-T!`#O#{#P#T#{#T#f,Y#f#gAn#g#o,Y#o;'S#{;'S;=`$d<%lO#{UAs^rSOt#{uw#{x}#{}!O,Y!O!_#{!_!`-T!`#O#{#P#T#{#T#i,Y#i#j<s#j#o,Y#o;'S#{;'S;=`$d<%lO#{UBvU!ZQrSOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{~C_O#`~",
|
||||
tokenData: "C_~R|OX#{XY$jYZ%TZp#{pq$jqs#{st%ntu'Vuw#{wx'[xy'ayz'zz{#{{|(e|}#{}!O+X!O!P#{!P!Q-n!Q![)S![!]6Z!]!^%T!^!}#{!}#O6t#O#P8j#P#Q8o#Q#R#{#R#S9Y#S#T#{#T#Y,Y#Y#Z9s#Z#b,Y#b#c>q#c#f,Y#f#g?n#g#h,Y#h#i@k#i#o,Y#o#p#{#p#qBo#q;'S#{;'S;=`$d<%l~#{~O#{~~CYS$QUrSOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{S$gP;=`<%l#{^$qUrS!wYOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{U%[UrS#ZQOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{^%uZrS!xYOY%nYZ#{Zt%ntu&huw%nwx&hx#O%n#O#P&h#P;'S%n;'S;=`'P<%lO%nY&mS!xYOY&hZ;'S&h;'S;=`&y<%lO&hY&|P;=`<%l&h^'SP;=`<%l%n~'[O#S~~'aO#Q~U'hUrS!}QOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{U(RUrS#^QOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{U(jWrSOt#{uw#{x!Q#{!Q![)S![#O#{#P;'S#{;'S;=`$d<%lO#{U)ZYrSmQOt#{uw#{x!O#{!O!P)y!P!Q#{!Q![)S![#O#{#P;'S#{;'S;=`$d<%lO#{U*OWrSOt#{uw#{x!Q#{!Q![*h![#O#{#P;'S#{;'S;=`$d<%lO#{U*oWrSmQOt#{uw#{x!Q#{!Q![*h![#O#{#P;'S#{;'S;=`$d<%lO#{U+^^rSOt#{uw#{x}#{}!O,Y!O!Q#{!Q![)S![!_#{!_!`-T!`#O#{#P#T#{#T#o,Y#o;'S#{;'S;=`$d<%lO#{U,_[rSOt#{uw#{x}#{}!O,Y!O!_#{!_!`-T!`#O#{#P#T#{#T#o,Y#o;'S#{;'S;=`$d<%lO#{U-[UyQrSOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{U-sWrSOt#{uw#{x!P#{!P!Q.]!Q#O#{#P;'S#{;'S;=`$d<%lO#{U.b^rSOY/^YZ#{Zt/^tu0auw/^wx0ax!P/^!P!Q#{!Q!}/^!}#O5S#O#P2o#P;'S/^;'S;=`6T<%lO/^U/e^rSvQOY/^YZ#{Zt/^tu0auw/^wx0ax!P/^!P!Q3U!Q!}/^!}#O5S#O#P2o#P;'S/^;'S;=`6T<%lO/^Q0fXvQOY0aZ!P0a!P!Q1R!Q!}0a!}#O1p#O#P2o#P;'S0a;'S;=`3O<%lO0aQ1UP!P!Q1XQ1^UvQ#Z#[1X#]#^1X#a#b1X#g#h1X#i#j1X#m#n1XQ1sVOY1pZ#O1p#O#P2Y#P#Q0a#Q;'S1p;'S;=`2i<%lO1pQ2]SOY1pZ;'S1p;'S;=`2i<%lO1pQ2lP;=`<%l1pQ2rSOY0aZ;'S0a;'S;=`3O<%lO0aQ3RP;=`<%l0aU3ZWrSOt#{uw#{x!P#{!P!Q3s!Q#O#{#P;'S#{;'S;=`$d<%lO#{U3zbrSvQOt#{uw#{x#O#{#P#Z#{#Z#[3s#[#]#{#]#^3s#^#a#{#a#b3s#b#g#{#g#h3s#h#i#{#i#j3s#j#m#{#m#n3s#n;'S#{;'S;=`$d<%lO#{U5X[rSOY5SYZ#{Zt5Stu1puw5Swx1px#O5S#O#P2Y#P#Q/^#Q;'S5S;'S;=`5}<%lO5SU6QP;=`<%l5SU6WP;=`<%l/^U6bUrS!OQOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{U6{W#YQrSOt#{uw#{x!_#{!_!`7e!`#O#{#P;'S#{;'S;=`$d<%lO#{U7jVrSOt#{uw#{x#O#{#P#Q8P#Q;'S#{;'S;=`$d<%lO#{U8WU#XQrSOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{~8oO#T~U8vU#]QrSOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{U9aUrS!VQOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{U9x]rSOt#{uw#{x}#{}!O,Y!O!_#{!_!`-T!`#O#{#P#T#{#T#U:q#U#o,Y#o;'S#{;'S;=`$d<%lO#{U:v^rSOt#{uw#{x}#{}!O,Y!O!_#{!_!`-T!`#O#{#P#T#{#T#`,Y#`#a;r#a#o,Y#o;'S#{;'S;=`$d<%lO#{U;w^rSOt#{uw#{x}#{}!O,Y!O!_#{!_!`-T!`#O#{#P#T#{#T#g,Y#g#h<s#h#o,Y#o;'S#{;'S;=`$d<%lO#{U<x^rSOt#{uw#{x}#{}!O,Y!O!_#{!_!`-T!`#O#{#P#T#{#T#X,Y#X#Y=t#Y#o,Y#o;'S#{;'S;=`$d<%lO#{U={[uQrSOt#{uw#{x}#{}!O,Y!O!_#{!_!`-T!`#O#{#P#T#{#T#o,Y#o;'S#{;'S;=`$d<%lO#{^>x[#UWrSOt#{uw#{x}#{}!O,Y!O!_#{!_!`-T!`#O#{#P#T#{#T#o,Y#o;'S#{;'S;=`$d<%lO#{^?u[#WWrSOt#{uw#{x}#{}!O,Y!O!_#{!_!`-T!`#O#{#P#T#{#T#o,Y#o;'S#{;'S;=`$d<%lO#{^@r^#VWrSOt#{uw#{x}#{}!O,Y!O!_#{!_!`-T!`#O#{#P#T#{#T#f,Y#f#gAn#g#o,Y#o;'S#{;'S;=`$d<%lO#{UAs^rSOt#{uw#{x}#{}!O,Y!O!_#{!_!`-T!`#O#{#P#T#{#T#i,Y#i#j<s#j#o,Y#o;'S#{;'S;=`$d<%lO#{UBvU!ZQrSOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{~C_O#a~",
|
||||
tokenizers: [operatorTokenizer, 1, 2, 3, tokenizer, new LocalTokenGroup("[~RP!O!PU~ZO!|~~", 11)],
|
||||
topRules: {"Program":[0,25]},
|
||||
specialized: [{term: 20, get: (value: any, stack: any) => (specializeKeyword(value, stack) << 1), external: specializeKeyword},{term: 20, get: (value: keyof typeof spec_Identifier) => spec_Identifier[value] || -1}],
|
||||
tokenPrec: 1578
|
||||
tokenPrec: 1652
|
||||
})
|
||||
|
|
|
|||
|
|
@ -156,6 +156,87 @@ describe('if/else if/else', () => {
|
|||
keyword end
|
||||
`)
|
||||
})
|
||||
|
||||
test('parses function calls in if tests', () => {
|
||||
expect(`if var? 'abc': true end`).toMatchTree(`
|
||||
IfExpr
|
||||
keyword if
|
||||
FunctionCall
|
||||
Identifier var?
|
||||
PositionalArg
|
||||
String
|
||||
StringFragment abc
|
||||
colon :
|
||||
Block
|
||||
Boolean true
|
||||
keyword end
|
||||
`)
|
||||
})
|
||||
|
||||
test('parses function calls in if tests', () => {
|
||||
expect(`if (var? 'abc'): true end`).toMatchTree(`
|
||||
IfExpr
|
||||
keyword if
|
||||
ParenExpr
|
||||
FunctionCall
|
||||
Identifier var?
|
||||
PositionalArg
|
||||
String
|
||||
StringFragment abc
|
||||
colon :
|
||||
Block
|
||||
Boolean true
|
||||
keyword end
|
||||
`)
|
||||
})
|
||||
|
||||
|
||||
test('parses function calls in else-if tests', () => {
|
||||
expect(`if false: true else if var? 'abc': true end`).toMatchTree(`
|
||||
IfExpr
|
||||
keyword if
|
||||
Boolean false
|
||||
colon :
|
||||
Block
|
||||
Boolean true
|
||||
ElseIfExpr
|
||||
keyword else
|
||||
keyword if
|
||||
FunctionCall
|
||||
Identifier var?
|
||||
PositionalArg
|
||||
String
|
||||
StringFragment abc
|
||||
colon :
|
||||
Block
|
||||
Boolean true
|
||||
keyword end
|
||||
`)
|
||||
})
|
||||
|
||||
test('parses function calls in else-if tests', () => {
|
||||
expect(`if false: true else if (var? 'abc'): true end`).toMatchTree(`
|
||||
IfExpr
|
||||
keyword if
|
||||
Boolean false
|
||||
colon :
|
||||
Block
|
||||
Boolean true
|
||||
ElseIfExpr
|
||||
keyword else
|
||||
keyword if
|
||||
ParenExpr
|
||||
FunctionCall
|
||||
Identifier var?
|
||||
PositionalArg
|
||||
String
|
||||
StringFragment abc
|
||||
colon :
|
||||
Block
|
||||
Boolean true
|
||||
keyword end
|
||||
`)
|
||||
})
|
||||
})
|
||||
|
||||
describe('while', () => {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user