no more single vs multiline blocks
This commit is contained in:
parent
dc557deb40
commit
950eef0e69
|
|
@ -389,8 +389,7 @@ export class Compiler {
|
||||||
return instructions
|
return instructions
|
||||||
}
|
}
|
||||||
|
|
||||||
case terms.MultiLineBlock:
|
case terms.Block: {
|
||||||
case terms.SingleLineBlock: {
|
|
||||||
const children = getAllChildren(node)
|
const children = getAllChildren(node)
|
||||||
const instructions: ProgramItem[] = []
|
const instructions: ProgramItem[] = []
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -309,7 +309,7 @@ export const getDotGetParts = (node: SyntaxNode, input: string) => {
|
||||||
export const getTryExprParts = (node: SyntaxNode, input: string) => {
|
export const getTryExprParts = (node: SyntaxNode, input: string) => {
|
||||||
const children = getAllChildren(node)
|
const children = getAllChildren(node)
|
||||||
|
|
||||||
// First child is always 'try' keyword, second is colon, third is MultiLineBlock or statement
|
// First child is always 'try' keyword, second is colon, third is Block
|
||||||
const [tryKeyword, _colon, tryBlock, ...rest] = children
|
const [tryKeyword, _colon, tryBlock, ...rest] = children
|
||||||
|
|
||||||
if (!tryKeyword || !tryBlock) {
|
if (!tryKeyword || !tryBlock) {
|
||||||
|
|
|
||||||
|
|
@ -81,15 +81,11 @@ pipeOperand {
|
||||||
}
|
}
|
||||||
|
|
||||||
WhileExpr {
|
WhileExpr {
|
||||||
while (ConditionalOp | expression) colon (newlineOrSemicolon MultiLineBlock | SingleLineBlock) end
|
while (ConditionalOp | expression) colon Block end
|
||||||
}
|
}
|
||||||
|
|
||||||
SingleLineBlock {
|
Block {
|
||||||
consumeToTerminator
|
consumeToTerminator | newlineOrSemicolon block
|
||||||
}
|
|
||||||
|
|
||||||
MultiLineBlock {
|
|
||||||
block
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FunctionCallOrIdentifier {
|
FunctionCallOrIdentifier {
|
||||||
|
|
@ -121,43 +117,27 @@ FunctionDef {
|
||||||
}
|
}
|
||||||
|
|
||||||
IfExpr {
|
IfExpr {
|
||||||
singleLineIf | multilineIf
|
if (ConditionalOp | expression) colon Block ElseIfExpr* ElseExpr? end
|
||||||
}
|
|
||||||
|
|
||||||
singleLineIf {
|
|
||||||
if (ConditionalOp | expression) colon SingleLineBlock end
|
|
||||||
}
|
|
||||||
|
|
||||||
multilineIf {
|
|
||||||
if (ConditionalOp | expression) colon newlineOrSemicolon MultiLineBlock ElseIfExpr* ElseExpr? end
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ElseIfExpr {
|
ElseIfExpr {
|
||||||
elseif (ConditionalOp | expression) colon newlineOrSemicolon MultiLineBlock
|
elseif (ConditionalOp | expression) colon Block
|
||||||
}
|
}
|
||||||
|
|
||||||
ElseExpr {
|
ElseExpr {
|
||||||
else colon newlineOrSemicolon MultiLineBlock
|
else colon Block
|
||||||
}
|
}
|
||||||
|
|
||||||
TryExpr {
|
TryExpr {
|
||||||
singleLineTry | multilineTry
|
try colon Block CatchExpr? FinallyExpr? end
|
||||||
}
|
|
||||||
|
|
||||||
singleLineTry {
|
|
||||||
try colon consumeToTerminator CatchExpr? FinallyExpr? end
|
|
||||||
}
|
|
||||||
|
|
||||||
multilineTry {
|
|
||||||
try colon newlineOrSemicolon MultiLineBlock CatchExpr? FinallyExpr? end
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CatchExpr {
|
CatchExpr {
|
||||||
catch Identifier colon (newlineOrSemicolon MultiLineBlock | consumeToTerminator)
|
catch Identifier colon Block
|
||||||
}
|
}
|
||||||
|
|
||||||
FinallyExpr {
|
FinallyExpr {
|
||||||
finally colon (newlineOrSemicolon MultiLineBlock | consumeToTerminator)
|
finally colon Block
|
||||||
}
|
}
|
||||||
|
|
||||||
Throw {
|
Throw {
|
||||||
|
|
|
||||||
|
|
@ -47,19 +47,18 @@ export const
|
||||||
Null = 45,
|
Null = 45,
|
||||||
colon = 46,
|
colon = 46,
|
||||||
CatchExpr = 47,
|
CatchExpr = 47,
|
||||||
keyword = 70,
|
keyword = 69,
|
||||||
MultiLineBlock = 49,
|
Block = 49,
|
||||||
FinallyExpr = 50,
|
FinallyExpr = 50,
|
||||||
Underscore = 53,
|
Underscore = 53,
|
||||||
Array = 54,
|
Array = 54,
|
||||||
ConditionalOp = 55,
|
ConditionalOp = 55,
|
||||||
PositionalArg = 56,
|
PositionalArg = 56,
|
||||||
WhileExpr = 58,
|
WhileExpr = 58,
|
||||||
SingleLineBlock = 60,
|
TryExpr = 60,
|
||||||
TryExpr = 61,
|
Throw = 62,
|
||||||
Throw = 63,
|
IfExpr = 64,
|
||||||
IfExpr = 65,
|
ElseIfExpr = 66,
|
||||||
ElseIfExpr = 67,
|
ElseExpr = 68,
|
||||||
ElseExpr = 69,
|
CompoundAssign = 70,
|
||||||
CompoundAssign = 71,
|
Assign = 71
|
||||||
Assign = 72
|
|
||||||
|
|
|
||||||
|
|
@ -4,14 +4,14 @@ import {operatorTokenizer} from "./operatorTokenizer"
|
||||||
import {tokenizer, specializeKeyword} from "./tokenizer"
|
import {tokenizer, specializeKeyword} from "./tokenizer"
|
||||||
import {trackScope} from "./scopeTracker"
|
import {trackScope} from "./scopeTracker"
|
||||||
import {highlighting} from "./highlight"
|
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, elseif:136, else:140}
|
const spec_Identifier = {__proto__:null,null:90, catch:96, finally:102, end:104, while:118, try:122, throw:126, if:130, elseif:134, else:138}
|
||||||
export const parser = LRParser.deserialize({
|
export const parser = LRParser.deserialize({
|
||||||
version: 14,
|
version: 14,
|
||||||
states: ":jQYQbOOO#wQcO'#C{O$tOSO'#C}OOQa'#DT'#DTO%}QbO'#DdO'`QcO'#E^OOQa'#E^'#E^O(cQcO'#E^O)eQcO'#E]O)xQRO'#C|O+UQcO'#EXO+fQcO'#EXO+pQbO'#CzO,hOpO'#CxOOQ`'#EY'#EYO,mQbO'#EXOOQ`'#Dk'#DkOOQ`'#Do'#DoO,tQRO'#DuOOQ`'#EX'#EXO-YQQO'#EWOOQ`'#EW'#EWOOQ`'#Dw'#DwQYQbOOO-bQbO'#DWO-mQbO'#DhO.bQQO'#EmO-mQbO'#DmO-mQbO'#EoO.gQbO'#DUOOQa'#E]'#E]OOQ`'#Df'#DfOOQ`'#El'#ElOOQ`'#EP'#EPO.qQbO,59cO/eQbO'#DPO/mQWO'#DQOOOO'#E`'#E`OOOO'#Dx'#DxO0ROSO,59iOOQa,59i,59iOOQ`'#Dy'#DyO0aQbO,5:OO0hQQO,59oOOQa,5:O,5:OO0sQbO,5:OO0}QbO,5:bO-mQbO,59hO-mQbO,59hO-mQbO,59hO-mQbO,5:PO-mQbO,5:PO-mQbO,5:PO1bQRO,59fO1iQRO,59fO1zQRO,59fO1uQQO,59fO2VQQO,59fO2_ObO,59dO2jQbO'#EQO2uQbO,59bO0}QbO,5:aOOQ`,5:r,5:rOOQ`-E7u-E7uOOQ`'#Dz'#DzO3^QbO'#DXO3iQbO'#DYOOQO'#D{'#D{O3aQQO'#DXO3wQQO,59rO4hQRO,5:SO4oQRO,5:SO4zQbO,5;XO5bQcO,5:XO6WQcO,5:XO6hQcO,5:XO6rQRO,5;ZO6yQRO,5;ZOOQ`,59p,59pOOQ`-E7}-E7}OOOO,59k,59kOOOO,59l,59lOOOO-E7v-E7vOOQa1G/T1G/TOOQ`-E7w-E7wO7UQQO1G/ZOOQa1G/j1G/jO7aQbO1G/jOOQO'#D}'#D}O7UQQO1G/ZOOQa1G/Z1G/ZOOQ`'#EO'#EOO7aQbO1G/jOOQ`1G/|1G/|OOQa1G/S1G/SO8YQcO1G/SO8dQcO1G/SO8nQcO1G/SOOQa1G/k1G/kO:^QcO1G/kO:eQcO1G/kO:lQcO1G/kOOQa1G/Q1G/QOOQa1G/O1G/OO!dQbO'#C{O:sQbO'#CwOOQ`,5:l,5:lOOQ`-E8O-E8OOOQ`1G/{1G/{OOQ`-E7x-E7xO;QQQO,59sOOQO,59t,59tOOQO-E7y-E7yO;YQbO1G/^O;pQbO1G/nO<WQbO1G0sO<cQbO1G0tO=SQbO1G0uO=jQQO7+$uOOQa7+$u7+$uO=uQbO7+%UOOQa7+%U7+%UOOQO-E7{-E7{OOQ`-E7|-E7|O>PQbO7+$xO<cQbO7+$xOOQ`'#Dj'#DjO>[QbO7+%YO>uQbO7+%YO>zQbO'#D]O?PQQO'#D`OOQ`7+&_7+&_O?UQbO7+&_O?ZQbO7+&_OOQ`'#D|'#D|O?cQQO'#D|O?hQbO'#EiOOQ`'#D_'#D_O@_QbO7+&`O@jQbO7+&aO@oQbO7+&bOOQa<<Ha<<HaOOQa<<Hp<<HpOOQ`<<Hd<<HdOA`QbO<<HdOAeQbO<<HdOAmQbO<<HdOAxQbO<<HtOOQ`<<Ht<<HtOA}QQO,59wOBSQbO,59zOOQ`<<Iy<<IyOBjQbO<<IyOOQ`,5:h,5:hOOQ`-E7z-E7zOOQ`<<Iz<<IzOBoQbO<<IzOBtQbO<<IzOOQ`<<I{<<I{OB|QbO<<I|OOQ`AN>OAN>OOCXQbOAN>OOC^QbOAN>OOOQ`AN>`AN>`OCfQbO1G/cO>[QbO1G/fOOQ`1G/f1G/fOOQ`AN?eAN?eOOQ`AN?fAN?fOC|QbOAN?fOOQ`'#ER'#ERODRQbOAN?hO-mQbO'#DqOD^QQO'#DsOOQ`AN?hAN?hODcQbOAN?hOOQ`G23jG23jODhQbOG23jODmQbO7+$}OOQ`7+$}7+$}OOQ`7+%Q7+%QOOQ`G25QG25QOOQ`-E8P-E8POOQ`G25SG25SOEZQbOG25SOE`QRO,5:]OEgQRO,5:]OErQQO,5:_OOQ`LD)ULD)UOOQ`<<Hi<<HiOOQ`LD*nLD*nOEwQQO1G/wO>[QbO1G/yO@oQbO7+%cOOQ`7+%e7+%eOOQ`<<H}<<H}",
|
states: "7vQYQbOOO#}QcO'#C{O$zOSO'#C}OOQa'#DT'#DTO&TQbO'#DdO'lQcO'#E]OOQa'#E]'#E]O(oQcO'#E]O)qQcO'#E[O*[QRO'#C|O+nQcO'#EWO,OQcO'#EWO,YQbO'#CzO-QOpO'#CxOOQ`'#EX'#EXO-VQbO'#EWO-^QRO'#DtOOQ`'#EW'#EWO-rQQO'#EVOOQ`'#EV'#EVOOQ`'#Dv'#DvQYQbOOO-zQbO'#DWO.VQbO'#DhO.zQQO'#DjO.VQbO'#DlO.VQbO'#DnO/PQbO'#DUOOQa'#E['#E[OOQ`'#Df'#DfOOQ`'#Ek'#EkOOQ`'#EO'#EOO/ZQbO,59cO0TQbO'#DPO0]QWO'#DQOOOO'#E_'#E_OOOO'#Dw'#DwO0qOSO,59iOOQa,59i,59iOOQ`'#Dx'#DxO1PQbO,5:OO1WQQO,59oOOQa,5:O,5:OO1cQbO,5:OO1mQbO,5:aO.VQbO,59hO.VQbO,59hO.VQbO,59hO.VQbO,5:PO.VQbO,5:PO.VQbO,5:PO2QQRO,59fO2XQRO,59fO2jQRO,59fO2eQQO,59fO2uQQO,59fO2}ObO,59dO3YQbO'#EPO3eQbO,59bO1mQbO,5:`OOQ`,5:q,5:qOOQ`-E7t-E7tOOQ`'#Dy'#DyO4SQbO'#DXO4_QbO'#DYOOQO'#Dz'#DzO4VQQO'#DXO4mQQO,59rO5^QRO,5:SO5eQRO,5:SO5pQbO,5:UO6WQcO,5:WO7YQcO,5:WO7jQcO,5:WO7tQRO,5:YO7{QRO,5:YOOQ`,59p,59pOOQ`-E7|-E7|OOOO,59k,59kOOOO,59l,59lOOOO-E7u-E7uOOQa1G/T1G/TOOQ`-E7v-E7vO8WQQO1G/ZOOQa1G/j1G/jO8cQbO1G/jOOQO'#D|'#D|O8WQQO1G/ZOOQa1G/Z1G/ZOOQ`'#D}'#D}O8cQbO1G/jOOQ`1G/{1G/{OOQa1G/S1G/SO9bQcO1G/SO9lQcO1G/SO9vQcO1G/SOOQa1G/k1G/kO;rQcO1G/kO;yQcO1G/kO<QQcO1G/kOOQa1G/Q1G/QOOQa1G/O1G/OO!dQbO'#C{O<XQbO'#CwOOQ`,5:k,5:kOOQ`-E7}-E7}OOQ`1G/z1G/zOOQ`-E7w-E7wO<fQQO,59sOOQO,59t,59tOOQO-E7x-E7xO<nQbO1G/^O5pQbO1G/nOOQ`'#D_'#D_O=UQbO'#D_O={QbO1G/pO5pQbO1G/tO>WQQO7+$uOOQa7+$u7+$uO>cQbO7+%UOOQa7+%U7+%UOOQO-E7z-E7zOOQ`-E7{-E7{O>mQbO7+$xO>xQbO7+$xO?iQbO7+%YOOQ`'#D{'#D{O?nQQO'#D{O?sQbO'#EhOOQ`,59y,59yO@jQbO'#D]O@oQQO'#D`OOQ`7+%[7+%[O@tQbO7+%[O@yQbO7+%[OARQbO7+%`OOQa<<Ha<<HaOOQa<<Hp<<HpOOQ`<<Hd<<HdOA^QbO<<HdOAcQbO<<HdOAkQbO<<HdOOQ`<<Ht<<HtOOQ`,5:g,5:gOOQ`-E7y-E7yOAvQQO,59wO5pQbO,59zOOQ`<<Hv<<HvOA{QbO<<HvOOQ`'#EQ'#EQOBQQbO<<HzO.VQbO'#DpOB]QQO'#DrOOQ`<<Hz<<HzOBbQbO<<HzOOQ`AN>OAN>OOBgQbOAN>OOBlQbOAN>OO5pQbO1G/cOOQ`1G/f1G/fOOQ`AN>bAN>bOOQ`-E8O-E8OOOQ`AN>fAN>fOBtQbOAN>fOByQRO,5:[OCQQRO,5:[O5pQbO,5:^OOQ`G23jG23jOC]QbOG23jOOQ`7+$}7+$}OOQ`G24QG24QO5pQbO1G/vOOQ`1G/x1G/xOOQ`LD)ULD)UOOQ`7+%b7+%b",
|
||||||
stateData: "FP~O!xOS!yOS~OdPOebOfUOg]OhhOmUOuUOvUO}UO!]iO!`jO!bkO!dlO#O[O#RQO#YRO#ZSO#[eO~OdnOfUOg]OhhOmUOuUOvUOymO}UO!VoO#O[O#RQO#YRO#ZSO!ZoX#[oX#eoX#_oX!QoX!ToX!UoX~OP#PXQ#PXR#PXS#PXT#PXU#PXW#PXX#PXY#PXZ#PX[#PX]#PX^#PX~P!dOruO#RxO#TsO#UtO~OdnOfUOg]OmUOuUOvUOymO}UO#O[O#RQO#YRO#ZSO#[yO~O#^|O~P%SOP#QXQ#QXR#QXS#QXT#QXU#QXW#QXX#QXY#QXZ#QX[#QX]#QX^#QX#[#QX#e#QX!Q#QX!T#QX!U#QX~OdnOfUOg]OhhOmUOuUOvUOymO}UO!VoO#O[O#RQO#YRO#ZSO#_#QX~P&UOV!OO~P&UOP#PXQ#PXR#PXS#PXT#PXU#PXW#PXX#PXY#PXZ#PX[#PX]#PX^#PX~O#[!{X#e!{X!Q!{X!T!{X!U!{X~P(jOP!QOQ!QOR!ROS!ROT!TOU!UOW!SOX!SOY!SOZ!SO[!SO]!SO^!PO~O#[!{X#e!{X!Q!{X!T!{X!U!{X~OP!QOQ!QOR!ROS!RO~P*sOT!TOU!UO~P*sOdPOfUOg]OhhOmUOuUOvUO}UO#O[O#RQO#YRO#ZSO~O!}![O~O!Z!]O~P*sOV!OO_!_O`!_Oa!_Ob!_Oc!_O~O#[!`O#e!`O~Od!bOy!dO!O{P~OdnOfUOg]OmUOuUOvUO}UO#O[O#RQO#YRO#ZSO~O!O!jO~OhhO!V!pO~P-mOhhOymO!VoO!Zka#[ka#eka#_ka!Qka!Tka!Uka~P-mOd!rO#O[O~O#R!sO#T!sO#U!sO#V!sO#W!sO#X!sO~OruO#R!uO#TsO#UtO~O#^!xO~P%SOymO#[!zO#^!|O~O#[!}O#^!xO~P-mOebO!]iO!`jO!bkO!dlO~P+pO#_#YO~P(jOP!QOQ!QOR!ROS!RO#_#YO~OT!TOU!UO#_#YO~O!Z!]O#_#YO~Od#ZOm#ZO#O[O~Od#[Og]O#O[O~O!Z!]O#[ja#eja#_ja!Qja!Tja!Uja~Od!bOy!dO!O{X~Om#cOu#cO}#cO#RQO~O!O#eO~OT!TOU!UOW!SOX!SOY!SOZ!SO[!SO]!SO~O!O#fO~P3|OT!TOU!UO!O#fO~OebO!]iO!`jO!bkO!dlO#[#hO~P+pO#[!aa#e!aa!Q!aa!T!aa!U!aa~P)xO#[!aa#e!aa!Q!aa!T!aa!U!aa~OP!QOQ!QOR!ROS!RO~P5uOT!TOU!UO~P5uO!O#iO~P3|OT!TOU!UO!O#iO~OymO#[!zO#^#kO~O#[!}O#^#mO~P-mO^!PORpiSpi#[pi#epi#_pi!Qpi!Tpi!Upi~OPpiQpi~P7kOP!QOQ!QO~P7kOP!QOQ!QORpiSpi#[pi#epi#_pi!Qpi!Tpi!Upi~OW!SOX!SOY!SOZ!SO[!SO]!SOT!Xi#[!Xi#e!Xi#_!Xi!O!Xi!Q!Xi!T!Xi!U!Xi~OU!UO~P9`OU!UO~P9rOU!Xi~P9`OhhOymO!VoO~P-mOy!dO!O{a~OebO!]iO!`jO!bkO!dlO#[#qO~P+pOebO!]iO!`jO!bkO!dlO#[#sO~P+pO!Q#uO!T#vO!U#wO~OebO!]iO!`jO!bkO!dlO#[#zO!Q#]P!T#]P!U#]P~P+pOebO!]iO!`jO!bkO!dlO#[$QO~P+pOymO#[!zO#^$RO~O#[!}O#^$SO~P-mO!Q#uO!T#vO!U$TO~OebO!]iO!`jO!bkO!dlO#[#zO!U#]P~P+pO!U$YO~Od$ZO~O!O$[O~O!U$]O~O!T#vO!U$]O~O#[$_O~OebO!]iO!`jO!bkO!dlO#[#zO!Q#]X!T#]X!U#]X!f#]X!h#]X~P+pO!Q#uO!T#vO!U$aO~O!U$dO~OebO!]iO!`jO!bkO!dlO#[#zO!U#]P!f#]P!h#]P~P+pO!U$fO~O!T#vO!U$fO~O!Q#uO!T#vO!U$fO~O!U$iO~O!O$jO~OebO!]iO!`jO!bkO!dlO#[$kO~P+pO!U$mO~O!U$nO~O!T#vO!U$nO~O!U$tO!f$rO!h$sO~O!U$vO~O!T#vO!U$vO~OebO!]iO!`jO!bkO!dlO#[$xO~P+pO!U${O~O!U$}O!f$rO!h$sO~O!O%RO~O!U$}O~O!U%SO~OebO!]iO!`jO!bkO!dlO#[#zO!T#]P!U#]P~P+pO!U%UO~O!O%VO~P3|OT!TOU!UO!O%VO~O#[%WO~O#[%XO~Omv~",
|
stateData: "Ce~O!wOS!xOS~OdPOe`OfUOg]OhfOmUOuUOvUO}UO!]gO!_hO!aiO!cjO!}[O#QQO#XRO#YSO#ZcO~OdlOfUOg]OhfOmUOuUOvUOykO}UO!VmO!}[O#QQO#XRO#YSO!ZoX#ZoX#`oX#^oX!QoX!ToX!UoX!eoX!goX~OP#OXQ#OXR#OXS#OXT#OXU#OXW#OXX#OXY#OXZ#OX[#OX]#OX^#OX~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!e#PX!g#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!e!zX!g!zX~P(vOP!OOQ!OOR!POS!POT!ROU!SOW!QOX!QOY!QOZ!QO[!QO]!QO^}O~O#Z!zX#`!zX!Q!zX!T!zX!U!zX!e!zX!g!zX~OP!OOQ!OOR!POS!PO~P+VOT!ROU!SO~P+VOdPOfUOg]OhfOmUOuUOvUO}UO!}[O#QQO#XRO#YSO~O!|!YO~O!Z!ZO~P+VOV|O_!]O`!]Oa!]Ob!]Oc!]O~O#Z!^O#`!^O~Od!`Oy!bO!O{P~OdlOfUOg]OmUOuUOvUO}UO!}[O#QQO#XRO#YSO~O!O!hO~OhfO!V!nO~P.VOhfOykO!VmO!Zka#Zka#`ka#^ka!Qka!Tka!Uka!eka!gka~P.VOd!pO!}[O~O#Q!qO#S!qO#T!qO#U!qO#V!qO#W!qO~OrsO#Q!sO#SqO#TrO~O#]!vO~P%YOykO#Z!xO#]!zO~O#Z!{O#]!vO~P.VOe`O!]gO!_hO!aiO!cjO~P,YO#^#WO~P(vOP!OOQ!OOR!POS!PO#^#WO~OT!ROU!SO#^#WO~O!Z!ZO#^#WO~Od#XOm#XO!}[O~Od#YOg]O!}[O~O!Z!ZO#Zja#`ja#^ja!Qja!Tja!Uja!eja!gja~Od!`Oy!bO!O{X~Om#aOu#aO}#aO#QQO~O!O#cO~OT!ROU!SOW!QOX!QOY!QOZ!QO[!QO]!QO~O!O#dO~P4rOT!ROU!SO!O#dO~Oe`O!]gO!_hO!aiO!cjO#Z#fO~P,YO#Z!`a#`!`a!Q!`a!T!`a!U!`a!e!`a!g!`a~P*[O#Z!`a#`!`a!Q!`a!T!`a!U!`a!e!`a!g!`a~OP!OOQ!OOR!POS!PO~P6qOT!ROU!SO~P6qO!O#hO~P4rOT!ROU!SO!O#hO~OykO#Z!xO#]#jO~O#Z!{O#]#lO~P.VO^}ORpiSpi#Zpi#`pi#^pi!Qpi!Tpi!Upi!epi!gpi~OPpiQpi~P8mOP!OOQ!OO~P8mOP!OOQ!OORpiSpi#Zpi#`pi#^pi!Qpi!Tpi!Upi!epi!gpi~OW!QOX!QOY!QOZ!QO[!QO]!QOT!Xi#Z!Xi#`!Xi#^!Xi!O!Xi!Q!Xi!T!Xi!U!Xi!e!Xi!g!Xi~OU!SO~P:nOU!SO~P;QOU!Xi~P:nOhfOykO!VmO~P.VOy!bO!O{a~Oe`O!]gO!_hO!aiO!cjO#Z#pO~P,YOe`O!]gO!_hO!aiO!cjO#Z#rO!Q#[P!T#[P!U#[P!e#[P!g#[P~P,YO!Q#vO!T#wO!U#xO~OykO#Z!xO#]#|O~O#Z!{O#]#}O~P.VO!Q#vO!T#wO!U$OO~Oe`O!]gO!_hO!aiO!cjO#Z#rO!Q#[P!T#[P!U#[P~P,YO!U$SO~O#Z$TO~Oe`O!]gO!_hO!aiO!cjO#Z#rO!Q#[X!T#[X!U#[X!e#[X!g#[X~P,YOd$VO~O!O$WO~O!U$XO~O!T#wO!U$XO~O!U$_O!e$]O!g$^O~O!U$aO~O!T#wO!U$aO~O!Q#vO!T#wO!U$aO~O!O$dO~O!U$fO~O!U$hO!e$]O!g$^O~O!O$lO~O!U$hO~O!U$mO~O!T#wO!U$mO~O!U$pO~O!O$qO~P4rOT!ROU!SO!O$qO~O!U$sO~Omv~",
|
||||||
goto: "6d#ePPPPPPPPPPPPPPPPPPPPPPPPPP#f$O$gP%j$O&s'fP(g(gPP(k)iP)|*p*sPP*yP+V+lPPP,S-S.OP.VP.l.VP.VP.VP.rP.vP.V.V.|/S/Y/`/f/p/}0X0c0l0sPPPP0y0}1tPP2a3}P5PPPPPPPPP5TPP5a5h5h5}5}vcOg!O!_!j#e#f#h#i#q#s#|$Q$[$j$k$x%W%XR!Y[{^O[g!O!]!_!j#e#f#h#i#q#s#|$Q$[$j$k$x%W%XxPO[g!O!_!j#e#f#h#i#q#s#|$Q$[$j$k$x%W%X|nPSTiklmrz}!P!Q!R!S!T!U!y#O#[#]#l$rR#[!]xTO[g!O!_!j#e#f#h#i#q#s#|$Q$[$j$k$x%W%X|UPSTiklmrz}!P!Q!R!S!T!U!y#O#[#]#l$rQ!rsQ#Z![R#]!]vYOg!O!_!j#e#f#h#i#q#s#|$Q$[$j$k$x%W%XQ!W[Q!lkQ#Q!QR#T!R!vUOPST[giklmrz}!O!P!Q!R!S!T!U!_!j!y#O#[#]#e#f#h#i#l#q#s#|$Q$[$j$k$r$x%W%XR#c!dTuQw!wUOPST[giklmrz}!O!P!Q!R!S!T!U!_!j!y#O#[#]#e#f#h#i#l#q#s#|$Q$[$j$k$r$x%W%XYpPTr#[#]Q{SQ!wzX!z{!w!{#jvcOg!O!_!j#e#f#h#i#q#s#|$Q$[$j$k$x%W%XYoPTr#[#]Q!Y[R!pmR!ghX!eh!c!f#bQ#y#gQ$V#pQ$c$OR$h$WQ$O#hQ$X#sQ$e$QQ$z$kQ%T$xQ%Y%WR%Z%XQ#x#gQ$U#pQ$^#yQ$b$OS$g$V$WQ$o$cR$w$h!OUPST[iklmrz}!P!Q!R!S!T!U!y#O#[#]#l$rwVOg!O!_!j#e#f#h#i#q#s#|$Q$[$j$k$x%W%XvZOg!O!_!j#e#f#h#i#q#s#|$Q$[$j$k$x%W%XQ!X[Q!iiQ!mkQ!olQ#U!UQ#W!TR%Q$rZpPTr#[#]wcOg!O!_!j#e#f#h#i#q#s#|$Q$[$j$k$x%W%XQ#t#fR$P#iT$p$e$qQ$u$eR%O$qQgOR!agQwQR!twQzSR!vzQ!chR#a!cQ!fhQ#b!cT#d!f#b`#|#h#q#s$Q$k$x%W%XR$`#|Q!{{Q#j!wT#n!{#jQ#O}Q#l!yT#o#O#lWrPT#[#]R!qrS!^_!ZR#_!^Q$q$eR$|$qTfOgSdOgQ#P!OQ#`!_Q#g!jQ#p#eS#r#f#ib#{#h#q#s#|$Q$k$x%W%XQ$l$[R$y$jv_Og!O!_!j#e#f#h#i#q#s#|$Q$[$j$k$x%W%XQ!Z[R#^!]xXO[g!O!_!j#e#f#h#i#q#s#|$Q$[$j$k$x%W%XYoPTr#[#]Q}SQ!hiQ!kkQ!nlQ!pmQ!yzW!}}!y#O#lQ#Q!PQ#R!QQ#S!RQ#U!SQ#V!TQ#X!UR%P$rvWOg!O!_!j#e#f#h#i#q#s#|$Q$[$j$k$x%W%X|nPSTiklmrz}!P!Q!R!S!T!U!y#O#[#]#l$rR!V[TvQw^#}#h#s$Q$k$x%W%XR$W#qZqPTr#[#]w`Og!O!_!j#e#f#h#i#q#s#|$Q$[$j$k$x%W%XwaOg!O!_!j#e#f#h#i#q#s#|$Q$[$j$k$x%W%X",
|
goto: "3b#`PPPPPPPPPPPPPPPPPPPPPPPPPP#a#u$YP%X#u&^&{P'x'xPP'|(vP)Z)y)|PP*SP*]*rPPP+S,O,vP,}P,}P,}P,}P-`P-dP,},}-j-p-v-|.S.^.e.o.y/S/ZPPPP/a/e0QPP0i2RP3PPPPPPPPP3TPP3ZnaOe|!]!h#c#d#f#h#p#t$W$d$l$qR!W[s^O[e|!Z!]!h#c#d#f#h#p#t$W$d$l$qpPO[e|!]!h#c#d#f#h#p#t$W$d$l$q|lPSTgijkpx{}!O!P!Q!R!S!w!|#Y#Z#k$]R#Y!ZpTO[e|!]!h#c#d#f#h#p#t$W$d$l$q|UPSTgijkpx{}!O!P!Q!R!S!w!|#Y#Z#k$]Q!pqQ#X!YR#Z!ZnYOe|!]!h#c#d#f#h#p#t$W$d$l$qQ!U[Q!jiQ#O!OR#R!P!nUOPST[egijkpx{|}!O!P!Q!R!S!]!h!w!|#Y#Z#c#d#f#h#k#p#t$W$]$d$l$qR#a!bTsQu!oUOPST[egijkpx{|}!O!P!Q!R!S!]!h!w!|#Y#Z#c#d#f#h#k#p#t$W$]$d$l$qYnPTp#Y#ZQySQ!uxX!xy!u!y#inaOe|!]!h#c#d#f#h#p#t$W$d$l$qYmPTp#Y#ZQ!W[R!nkR!efX!cf!a!d#`Q#z#gQ$Q#oR$c$RQ#g!hQ#q#dQ#{#hQ$e$WQ$o$dQ$r$lR$t$qQ#y#gQ$P#oQ$Y#zS$b$Q$RR$n$c!OUPST[gijkpx{}!O!P!Q!R!S!w!|#Y#Z#k$]oVOe|!]!h#c#d#f#h#p#t$W$d$l$qnZOe|!]!h#c#d#f#h#p#t$W$d$l$qQ!V[Q!ggQ!kiQ!mjQ#S!SQ#U!RR$k$]ZnPTp#Y#ZoaOe|!]!h#c#d#f#h#p#t$W$d$l$qT$Z#{$[Q$`#{R$i$[QeOR!_eQuQR!ruQxSR!txQ!afR#_!aQ!dfQ#`!aT#b!d#`S#t#f#pR$U#tQ!yyQ#i!uT#m!y#iQ!|{Q#k!wT#n!|#kWpPT#Y#ZR!opS![_!XR#]![Q$[#{R$g$[TdOeSbOeQ!}|Q#^!]^#e!h#d#h$W$d$l$qQ#o#cV#s#f#p#tn_Oe|!]!h#c#d#f#h#p#t$W$d$l$qQ!X[R#[!ZpXO[e|!]!h#c#d#f#h#p#t$W$d$l$qYmPTp#Y#ZQ{SQ!fgQ!iiQ!ljQ!nkQ!wxW!{{!w!|#kQ#O}Q#P!OQ#Q!PQ#S!QQ#T!RQ#V!SR$j$]nWOe|!]!h#c#d#f#h#p#t$W$d$l$q|lPSTgijkpx{}!O!P!Q!R!S!w!|#Y#Z#k$]R!T[TtQuQ#u#fR$R#pZoPTp#Y#Z",
|
||||||
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 MultiLineBlock FinallyExpr keyword keyword Underscore Array ConditionalOp PositionalArg operator WhileExpr keyword SingleLineBlock TryExpr keyword Throw keyword IfExpr keyword ElseIfExpr keyword ElseExpr keyword CompoundAssign Assign",
|
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 TryExpr keyword Throw keyword IfExpr keyword ElseIfExpr keyword ElseExpr keyword CompoundAssign Assign",
|
||||||
maxTerm: 113,
|
maxTerm: 108,
|
||||||
context: trackScope,
|
context: trackScope,
|
||||||
nodeProps: [
|
nodeProps: [
|
||||||
["closedBy", 46,"end"]
|
["closedBy", 46,"end"]
|
||||||
|
|
@ -19,9 +19,9 @@ export const parser = LRParser.deserialize({
|
||||||
propSources: [highlighting],
|
propSources: [highlighting],
|
||||||
skippedNodes: [0],
|
skippedNodes: [0],
|
||||||
repeatNodeCount: 11,
|
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!xYOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{U%[UrS#[QOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{^%uZrS!yYOY%nYZ#{Zt%ntu&huw%nwx&hx#O%n#O#P&h#P;'S%n;'S;=`'P<%lO%nY&mS!yYOY&hZ;'S&h;'S;=`&y<%lO&hY&|P;=`<%l&h^'SP;=`<%l%n~'[O#T~~'aO#R~U'hUrS#OQOt#{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#ZQrSOt#{uw#{x!_#{!_!`7e!`#O#{#P;'S#{;'S;=`$d<%lO#{U7jVrSOt#{uw#{x#O#{#P#Q8P#Q;'S#{;'S;=`$d<%lO#{U8WU#YQrSOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{~8oO#U~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[#VWrSOt#{uw#{x}#{}!O,Y!O!_#{!_!`-T!`#O#{#P#T#{#T#o,Y#o;'S#{;'S;=`$d<%lO#{^?u[#XWrSOt#{uw#{x}#{}!O,Y!O!_#{!_!`-T!`#O#{#P#T#{#T#o,Y#o;'S#{;'S;=`$d<%lO#{^@r^#WWrSOt#{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#e~",
|
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#`~",
|
||||||
tokenizers: [operatorTokenizer, 1, 2, 3, tokenizer, new LocalTokenGroup("[~RP!O!PU~ZO!}~~", 11)],
|
tokenizers: [operatorTokenizer, 1, 2, 3, tokenizer, new LocalTokenGroup("[~RP!O!PU~ZO!|~~", 11)],
|
||||||
topRules: {"Program":[0,25]},
|
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}],
|
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: 1700
|
tokenPrec: 1582
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -752,7 +752,7 @@ Assign
|
||||||
EqEq ==
|
EqEq ==
|
||||||
Number 5
|
Number 5
|
||||||
colon :
|
colon :
|
||||||
MultiLineBlock
|
Block
|
||||||
Boolean true
|
Boolean true
|
||||||
keyword end
|
keyword end
|
||||||
keyword end
|
keyword end
|
||||||
|
|
@ -794,7 +794,7 @@ Assign
|
||||||
EqEq ==
|
EqEq ==
|
||||||
Number 5
|
Number 5
|
||||||
colon :
|
colon :
|
||||||
MultiLineBlock
|
Block
|
||||||
Boolean true
|
Boolean true
|
||||||
keyword end
|
keyword end
|
||||||
keyword end
|
keyword end
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ describe('if/elseif/else', () => {
|
||||||
EqEq ==
|
EqEq ==
|
||||||
Number 1
|
Number 1
|
||||||
colon :
|
colon :
|
||||||
SingleLineBlock
|
Block
|
||||||
String
|
String
|
||||||
StringFragment cool
|
StringFragment cool
|
||||||
keyword end
|
keyword end
|
||||||
|
|
@ -26,7 +26,7 @@ describe('if/elseif/else', () => {
|
||||||
keyword if
|
keyword if
|
||||||
Identifier x
|
Identifier x
|
||||||
colon :
|
colon :
|
||||||
SingleLineBlock
|
Block
|
||||||
Number 2
|
Number 2
|
||||||
keyword end
|
keyword end
|
||||||
`)
|
`)
|
||||||
|
|
@ -44,7 +44,7 @@ describe('if/elseif/else', () => {
|
||||||
Lt <
|
Lt <
|
||||||
Number 9
|
Number 9
|
||||||
colon :
|
colon :
|
||||||
MultiLineBlock
|
Block
|
||||||
FunctionCallOrIdentifier
|
FunctionCallOrIdentifier
|
||||||
Identifier yes
|
Identifier yes
|
||||||
keyword end
|
keyword end
|
||||||
|
|
@ -61,13 +61,13 @@ describe('if/elseif/else', () => {
|
||||||
keyword if
|
keyword if
|
||||||
Identifier with-else
|
Identifier with-else
|
||||||
colon :
|
colon :
|
||||||
MultiLineBlock
|
Block
|
||||||
FunctionCallOrIdentifier
|
FunctionCallOrIdentifier
|
||||||
Identifier x
|
Identifier x
|
||||||
ElseExpr
|
ElseExpr
|
||||||
keyword else
|
keyword else
|
||||||
colon :
|
colon :
|
||||||
MultiLineBlock
|
Block
|
||||||
FunctionCallOrIdentifier
|
FunctionCallOrIdentifier
|
||||||
Identifier y
|
Identifier y
|
||||||
keyword end
|
keyword end
|
||||||
|
|
@ -84,14 +84,14 @@ describe('if/elseif/else', () => {
|
||||||
keyword if
|
keyword if
|
||||||
Identifier with-elseif
|
Identifier with-elseif
|
||||||
colon :
|
colon :
|
||||||
MultiLineBlock
|
Block
|
||||||
FunctionCallOrIdentifier
|
FunctionCallOrIdentifier
|
||||||
Identifier x
|
Identifier x
|
||||||
ElseIfExpr
|
ElseIfExpr
|
||||||
keyword elseif
|
keyword elseif
|
||||||
Identifier another-condition
|
Identifier another-condition
|
||||||
colon :
|
colon :
|
||||||
MultiLineBlock
|
Block
|
||||||
FunctionCallOrIdentifier
|
FunctionCallOrIdentifier
|
||||||
Identifier y
|
Identifier y
|
||||||
keyword end
|
keyword end
|
||||||
|
|
@ -112,27 +112,27 @@ describe('if/elseif/else', () => {
|
||||||
keyword if
|
keyword if
|
||||||
Identifier with-elseif-else
|
Identifier with-elseif-else
|
||||||
colon :
|
colon :
|
||||||
MultiLineBlock
|
Block
|
||||||
FunctionCallOrIdentifier
|
FunctionCallOrIdentifier
|
||||||
Identifier x
|
Identifier x
|
||||||
ElseIfExpr
|
ElseIfExpr
|
||||||
keyword elseif
|
keyword elseif
|
||||||
Identifier another-condition
|
Identifier another-condition
|
||||||
colon :
|
colon :
|
||||||
MultiLineBlock
|
Block
|
||||||
FunctionCallOrIdentifier
|
FunctionCallOrIdentifier
|
||||||
Identifier y
|
Identifier y
|
||||||
ElseIfExpr
|
ElseIfExpr
|
||||||
keyword elseif
|
keyword elseif
|
||||||
Identifier yet-another-condition
|
Identifier yet-another-condition
|
||||||
colon :
|
colon :
|
||||||
MultiLineBlock
|
Block
|
||||||
FunctionCallOrIdentifier
|
FunctionCallOrIdentifier
|
||||||
Identifier z
|
Identifier z
|
||||||
ElseExpr
|
ElseExpr
|
||||||
keyword else
|
keyword else
|
||||||
colon :
|
colon :
|
||||||
MultiLineBlock
|
Block
|
||||||
FunctionCallOrIdentifier
|
FunctionCallOrIdentifier
|
||||||
Identifier oh-no
|
Identifier oh-no
|
||||||
keyword end
|
keyword end
|
||||||
|
|
@ -148,7 +148,7 @@ describe('if/elseif/else', () => {
|
||||||
keyword if
|
keyword if
|
||||||
Boolean true
|
Boolean true
|
||||||
colon :
|
colon :
|
||||||
SingleLineBlock
|
Block
|
||||||
Number 2
|
Number 2
|
||||||
keyword end
|
keyword end
|
||||||
`)
|
`)
|
||||||
|
|
@ -162,7 +162,7 @@ describe('while', () => {
|
||||||
keyword while
|
keyword while
|
||||||
Boolean true
|
Boolean true
|
||||||
colon :
|
colon :
|
||||||
SingleLineBlock
|
Block
|
||||||
Boolean true
|
Boolean true
|
||||||
keyword end`)
|
keyword end`)
|
||||||
})
|
})
|
||||||
|
|
@ -176,7 +176,7 @@ describe('while', () => {
|
||||||
Gt >
|
Gt >
|
||||||
Number 0
|
Number 0
|
||||||
colon :
|
colon :
|
||||||
SingleLineBlock
|
Block
|
||||||
Boolean true
|
Boolean true
|
||||||
keyword end`)
|
keyword end`)
|
||||||
})
|
})
|
||||||
|
|
@ -203,7 +203,7 @@ describe('while', () => {
|
||||||
Lt <
|
Lt <
|
||||||
Number 1000
|
Number 1000
|
||||||
colon :
|
colon :
|
||||||
SingleLineBlock
|
Block
|
||||||
Boolean true
|
Boolean true
|
||||||
keyword end`)
|
keyword end`)
|
||||||
})
|
})
|
||||||
|
|
@ -217,7 +217,7 @@ describe('while', () => {
|
||||||
keyword while
|
keyword while
|
||||||
Boolean true
|
Boolean true
|
||||||
colon :
|
colon :
|
||||||
MultiLineBlock
|
Block
|
||||||
Boolean true
|
Boolean true
|
||||||
keyword end`)
|
keyword end`)
|
||||||
})
|
})
|
||||||
|
|
@ -234,7 +234,7 @@ describe('while', () => {
|
||||||
Gt >
|
Gt >
|
||||||
Number 0
|
Number 0
|
||||||
colon :
|
colon :
|
||||||
MultiLineBlock
|
Block
|
||||||
Boolean true
|
Boolean true
|
||||||
keyword end`)
|
keyword end`)
|
||||||
})
|
})
|
||||||
|
|
@ -264,7 +264,7 @@ describe('while', () => {
|
||||||
Lt <
|
Lt <
|
||||||
Number 1000
|
Number 1000
|
||||||
colon :
|
colon :
|
||||||
MultiLineBlock
|
Block
|
||||||
Boolean true
|
Boolean true
|
||||||
keyword end`)
|
keyword end`)
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -12,14 +12,14 @@ describe('try/catch/finally/throw', () => {
|
||||||
TryExpr
|
TryExpr
|
||||||
keyword try
|
keyword try
|
||||||
colon :
|
colon :
|
||||||
MultiLineBlock
|
Block
|
||||||
FunctionCallOrIdentifier
|
FunctionCallOrIdentifier
|
||||||
Identifier risky-operation
|
Identifier risky-operation
|
||||||
CatchExpr
|
CatchExpr
|
||||||
keyword catch
|
keyword catch
|
||||||
Identifier err
|
Identifier err
|
||||||
colon :
|
colon :
|
||||||
MultiLineBlock
|
Block
|
||||||
FunctionCall
|
FunctionCall
|
||||||
Identifier handle-error
|
Identifier handle-error
|
||||||
PositionalArg
|
PositionalArg
|
||||||
|
|
@ -37,13 +37,13 @@ describe('try/catch/finally/throw', () => {
|
||||||
TryExpr
|
TryExpr
|
||||||
keyword try
|
keyword try
|
||||||
colon :
|
colon :
|
||||||
MultiLineBlock
|
Block
|
||||||
FunctionCallOrIdentifier
|
FunctionCallOrIdentifier
|
||||||
Identifier do-work
|
Identifier do-work
|
||||||
FinallyExpr
|
FinallyExpr
|
||||||
keyword finally
|
keyword finally
|
||||||
colon :
|
colon :
|
||||||
MultiLineBlock
|
Block
|
||||||
FunctionCallOrIdentifier
|
FunctionCallOrIdentifier
|
||||||
Identifier cleanup
|
Identifier cleanup
|
||||||
keyword end
|
keyword end
|
||||||
|
|
@ -61,14 +61,14 @@ describe('try/catch/finally/throw', () => {
|
||||||
TryExpr
|
TryExpr
|
||||||
keyword try
|
keyword try
|
||||||
colon :
|
colon :
|
||||||
MultiLineBlock
|
Block
|
||||||
FunctionCallOrIdentifier
|
FunctionCallOrIdentifier
|
||||||
Identifier risky-operation
|
Identifier risky-operation
|
||||||
CatchExpr
|
CatchExpr
|
||||||
keyword catch
|
keyword catch
|
||||||
Identifier err
|
Identifier err
|
||||||
colon :
|
colon :
|
||||||
MultiLineBlock
|
Block
|
||||||
FunctionCall
|
FunctionCall
|
||||||
Identifier handle-error
|
Identifier handle-error
|
||||||
PositionalArg
|
PositionalArg
|
||||||
|
|
@ -76,7 +76,7 @@ describe('try/catch/finally/throw', () => {
|
||||||
FinallyExpr
|
FinallyExpr
|
||||||
keyword finally
|
keyword finally
|
||||||
colon :
|
colon :
|
||||||
MultiLineBlock
|
Block
|
||||||
FunctionCallOrIdentifier
|
FunctionCallOrIdentifier
|
||||||
Identifier cleanup
|
Identifier cleanup
|
||||||
keyword end
|
keyword end
|
||||||
|
|
@ -91,6 +91,7 @@ describe('try/catch/finally/throw', () => {
|
||||||
TryExpr
|
TryExpr
|
||||||
keyword try
|
keyword try
|
||||||
colon :
|
colon :
|
||||||
|
Block
|
||||||
FunctionCall
|
FunctionCall
|
||||||
Identifier parse-number
|
Identifier parse-number
|
||||||
PositionalArg
|
PositionalArg
|
||||||
|
|
@ -99,6 +100,7 @@ describe('try/catch/finally/throw', () => {
|
||||||
keyword catch
|
keyword catch
|
||||||
Identifier err
|
Identifier err
|
||||||
colon :
|
colon :
|
||||||
|
Block
|
||||||
Number 0
|
Number 0
|
||||||
keyword end
|
keyword end
|
||||||
`)
|
`)
|
||||||
|
|
@ -109,16 +111,19 @@ describe('try/catch/finally/throw', () => {
|
||||||
TryExpr
|
TryExpr
|
||||||
keyword try
|
keyword try
|
||||||
colon :
|
colon :
|
||||||
|
Block
|
||||||
FunctionCallOrIdentifier
|
FunctionCallOrIdentifier
|
||||||
Identifier work
|
Identifier work
|
||||||
CatchExpr
|
CatchExpr
|
||||||
keyword catch
|
keyword catch
|
||||||
Identifier err
|
Identifier err
|
||||||
colon :
|
colon :
|
||||||
|
Block
|
||||||
Number 0
|
Number 0
|
||||||
FinallyExpr
|
FinallyExpr
|
||||||
keyword finally
|
keyword finally
|
||||||
colon :
|
colon :
|
||||||
|
Block
|
||||||
FunctionCallOrIdentifier
|
FunctionCallOrIdentifier
|
||||||
Identifier cleanup
|
Identifier cleanup
|
||||||
keyword end
|
keyword end
|
||||||
|
|
@ -164,12 +169,14 @@ describe('try/catch/finally/throw', () => {
|
||||||
TryExpr
|
TryExpr
|
||||||
keyword try
|
keyword try
|
||||||
colon :
|
colon :
|
||||||
|
Block
|
||||||
FunctionCallOrIdentifier
|
FunctionCallOrIdentifier
|
||||||
Identifier work
|
Identifier work
|
||||||
CatchExpr
|
CatchExpr
|
||||||
keyword catch
|
keyword catch
|
||||||
Identifier err
|
Identifier err
|
||||||
colon :
|
colon :
|
||||||
|
Block
|
||||||
Number 0
|
Number 0
|
||||||
keyword end
|
keyword end
|
||||||
`)
|
`)
|
||||||
|
|
@ -199,7 +206,7 @@ describe('function-level exception handling', () => {
|
||||||
keyword catch
|
keyword catch
|
||||||
Identifier e
|
Identifier e
|
||||||
colon :
|
colon :
|
||||||
MultiLineBlock
|
Block
|
||||||
FunctionCallOrIdentifier
|
FunctionCallOrIdentifier
|
||||||
Identifier empty-string
|
Identifier empty-string
|
||||||
keyword end
|
keyword end
|
||||||
|
|
@ -227,7 +234,7 @@ describe('function-level exception handling', () => {
|
||||||
FinallyExpr
|
FinallyExpr
|
||||||
keyword finally
|
keyword finally
|
||||||
colon :
|
colon :
|
||||||
MultiLineBlock
|
Block
|
||||||
FunctionCallOrIdentifier
|
FunctionCallOrIdentifier
|
||||||
Identifier close-resources
|
Identifier close-resources
|
||||||
keyword end
|
keyword end
|
||||||
|
|
@ -259,7 +266,7 @@ describe('function-level exception handling', () => {
|
||||||
keyword catch
|
keyword catch
|
||||||
Identifier err
|
Identifier err
|
||||||
colon :
|
colon :
|
||||||
MultiLineBlock
|
Block
|
||||||
FunctionCall
|
FunctionCall
|
||||||
Identifier log
|
Identifier log
|
||||||
PositionalArg
|
PositionalArg
|
||||||
|
|
@ -269,7 +276,7 @@ describe('function-level exception handling', () => {
|
||||||
FinallyExpr
|
FinallyExpr
|
||||||
keyword finally
|
keyword finally
|
||||||
colon :
|
colon :
|
||||||
MultiLineBlock
|
Block
|
||||||
FunctionCallOrIdentifier
|
FunctionCallOrIdentifier
|
||||||
Identifier cleanup
|
Identifier cleanup
|
||||||
keyword end
|
keyword end
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user