diff --git a/src/compiler/compiler.ts b/src/compiler/compiler.ts index be8814b..f872e17 100644 --- a/src/compiler/compiler.ts +++ b/src/compiler/compiler.ts @@ -390,10 +390,7 @@ export class Compiler { } case terms.MultiLineBlock: - case terms.SingleLineBlock: - case terms.ThenBlock: - case terms.SingleLineThenBlock: - case terms.TryBlock: { + case terms.SingleLineBlock: { const children = getAllChildren(node) const instructions: ProgramItem[] = [] diff --git a/src/compiler/utils.ts b/src/compiler/utils.ts index 6151563..5738cac 100644 --- a/src/compiler/utils.ts +++ b/src/compiler/utils.ts @@ -309,7 +309,7 @@ export const getDotGetParts = (node: SyntaxNode, input: string) => { export const getTryExprParts = (node: SyntaxNode, input: string) => { const children = getAllChildren(node) - // First child is always 'try' keyword, second is colon, third is TryBlock or statement + // First child is always 'try' keyword, second is colon, third is MultiLineBlock or statement const [tryKeyword, _colon, tryBlock, ...rest] = children if (!tryKeyword || !tryBlock) { diff --git a/src/parser/shrimp.grammar b/src/parser/shrimp.grammar index f95f93d..e8787cb 100644 --- a/src/parser/shrimp.grammar +++ b/src/parser/shrimp.grammar @@ -125,27 +125,19 @@ IfExpr { } singleLineIf { - if (ConditionalOp | expression) colon SingleLineThenBlock end + if (ConditionalOp | expression) colon SingleLineBlock end } multilineIf { - if (ConditionalOp | expression) colon newlineOrSemicolon ThenBlock ElseIfExpr* ElseExpr? end + if (ConditionalOp | expression) colon newlineOrSemicolon MultiLineBlock ElseIfExpr* ElseExpr? end } ElseIfExpr { - elseif (ConditionalOp | expression) colon newlineOrSemicolon ThenBlock + elseif (ConditionalOp | expression) colon newlineOrSemicolon MultiLineBlock } ElseExpr { - else colon newlineOrSemicolon ThenBlock -} - -ThenBlock { - block -} - -SingleLineThenBlock { - consumeToTerminator + else colon newlineOrSemicolon MultiLineBlock } TryExpr { @@ -157,19 +149,15 @@ singleLineTry { } multilineTry { - try colon newlineOrSemicolon TryBlock CatchExpr? FinallyExpr? end + try colon newlineOrSemicolon MultiLineBlock CatchExpr? FinallyExpr? end } CatchExpr { - catch Identifier colon (newlineOrSemicolon TryBlock | consumeToTerminator) + catch Identifier colon (newlineOrSemicolon MultiLineBlock | consumeToTerminator) } FinallyExpr { - finally colon (newlineOrSemicolon TryBlock | consumeToTerminator) -} - -TryBlock { - block + finally colon (newlineOrSemicolon MultiLineBlock | consumeToTerminator) } Throw { diff --git a/src/parser/shrimp.terms.ts b/src/parser/shrimp.terms.ts index 96a8259..743e237 100644 --- a/src/parser/shrimp.terms.ts +++ b/src/parser/shrimp.terms.ts @@ -47,22 +47,19 @@ export const Null = 45, colon = 46, CatchExpr = 47, - keyword = 73, - TryBlock = 49, + keyword = 70, + MultiLineBlock = 49, FinallyExpr = 50, Underscore = 53, Array = 54, ConditionalOp = 55, PositionalArg = 56, WhileExpr = 58, - MultiLineBlock = 60, - SingleLineBlock = 61, - TryExpr = 62, - Throw = 64, - IfExpr = 66, - SingleLineThenBlock = 68, - ThenBlock = 69, - ElseIfExpr = 70, - ElseExpr = 72, - CompoundAssign = 74, - Assign = 75 + SingleLineBlock = 60, + TryExpr = 61, + Throw = 63, + IfExpr = 65, + ElseIfExpr = 67, + ElseExpr = 69, + CompoundAssign = 71, + Assign = 72 diff --git a/src/parser/shrimp.ts b/src/parser/shrimp.ts index 38ed0db..84be190 100644 --- a/src/parser/shrimp.ts +++ b/src/parser/shrimp.ts @@ -4,14 +4,14 @@ import {operatorTokenizer} from "./operatorTokenizer" import {tokenizer, specializeKeyword} from "./tokenizer" import {trackScope} from "./scopeTracker" import {highlighting} from "./highlight" -const spec_Identifier = {__proto__:null,null:90, catch:96, finally:102, end:104, while:118, try:126, throw:130, if:134, elseif:142, else:146} +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} export const parser = LRParser.deserialize({ version: 14, - states: ":|QYQbOOO#wQcO'#C{O$tOSO'#C}OOQa'#DT'#DTO%}QbO'#DdO'`QcO'#EaOOQa'#Ea'#EaO(cQcO'#EaO)eQcO'#E`O)xQRO'#C|O+UQcO'#E[O+fQcO'#E[O+pQbO'#CzO,hOpO'#CxOOQ`'#E]'#E]O,mQbO'#E[OOQ`'#Dl'#DlOOQ`'#Dp'#DpO,tQRO'#DxOOQ`'#E['#E[O-YQQO'#EZOOQ`'#EZ'#EZOOQ`'#Dz'#DzQYQbOOO-bQbO'#DWO-mQbO'#DhO.bQQO'#EpO-mQbO'#DnO-mQbO'#ErO.gQbO'#DUOOQa'#E`'#E`OOQ`'#Df'#DfOOQ`'#Eo'#EoOOQ`'#ES'#ESO.qQbO,59cO/eQbO'#DPO/mQWO'#DQOOOO'#Ec'#EcOOOO'#D{'#D{O0ROSO,59iOOQa,59i,59iOOQ`'#D|'#D|O0aQbO,5:OO0hQQO,59oOOQa,5:O,5:OO0sQbO,5:OO0}QbO,5:eO-mQbO,59hO-mQbO,59hO-mQbO,59hO-mQbO,5:PO-mQbO,5:PO-mQbO,5:PO1bQRO,59fO1iQRO,59fO1zQRO,59fO1uQQO,59fO2VQQO,59fO2_ObO,59dO2jQbO'#ETO2uQbO,59bO0}QbO,5:dOOQ`,5:u,5:uOOQ`-E7x-E7xOOQ`'#D}'#D}O3^QbO'#DXO3iQbO'#DYOOQO'#EO'#EOO3aQQO'#DXO3wQQO,59rO4hQRO,5:SO4oQRO,5:SO4zQbO,5;[O5bQcO,5:YO6WQcO,5:YO6hQcO,5:YO6rQRO,5;^O6yQRO,5;^OOQ`,59p,59pOOQ`-E8Q-E8QOOOO,59k,59kOOOO,59l,59lOOOO-E7y-E7yOOQa1G/T1G/TOOQ`-E7z-E7zO7UQQO1G/ZOOQa1G/j1G/jO7aQbO1G/jOOQO'#EQ'#EQO7UQQO1G/ZOOQa1G/Z1G/ZOOQ`'#ER'#ERO7aQbO1G/jOOQ`1G0P1G0POOQa1G/S1G/SO8YQcO1G/SO8dQcO1G/SO8nQcO1G/SOOQa1G/k1G/kO:^QcO1G/kO:eQcO1G/kO:lQcO1G/kOOQa1G/Q1G/QOOQa1G/O1G/OO!dQbO'#C{O:sQbO'#CwOOQ`,5:o,5:oOOQ`-E8R-E8ROOQ`1G0O1G0OOOQ`-E7{-E7{O;QQQO,59sOOQO,59t,59tOOQO-E7|-E7|O;YQbO1G/^O;pQbO1G/nOPQbO7+$xO[QbO7+%YO>uQbO7+%YO>zQbO'#D]O?PQQO'#D`OOQ`7+&b7+&bO?UQbO7+&bO?ZQbO7+&bOOQ`'#EP'#EPO?cQQO'#EPO?hQbO'#ElOOQ`'#D_'#D_O@_QbO7+&cOOQ`'#Dr'#DrO@jQbO7+&dO@oQbO7+&eOOQa<OAN>OOCXQbOAN>OOC^QbOAN>OOOQ`AN>`AN>`OCfQbO1G/cO>[QbO1G/fOOQ`1G/f1G/fOOQ`AN?hAN?hOOQ`AN?iAN?iOC|QbOAN?iOOQ`'#EU'#EUODRQbOAN?kO-mQbO'#DtOD^QQO'#DvOOQ`AN?kAN?kODcQbOAN?kOOQ`G23jG23jODhQbOG23jODmQbO7+$}OOQ`7+$}7+$}OOQ`7+%Q7+%QOOQ`G25TG25TOOQ`-E8S-E8SOOQ`G25VG25VOEZQbOG25VOE`QRO,5:`OEgQRO,5:`OErQQO,5:bOOQ`LD)ULD)UOOQ`<[QbO1G/|O@oQbO7+%fOOQ`7+%h7+%hOOQ`<PQbO7+$xO[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<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`<[QbO1G/yO@oQbO7+%cOOQ`7+%e7+%eOOQ`<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!{YOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{U%[UrS#_QOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{^%uZrS!|YOY%nYZ#{Zt%ntu&huw%nwx&hx#O%n#O#P&h#P;'S%n;'S;=`'P<%lO%nY&mS!|YOY&hZ;'S&h;'S;=`&y<%lO&hY&|P;=`<%l&h^'SP;=`<%l%n~'[O#W~~'aO#U~U'hUrS#RQOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{U(RUrS#bQOt#{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#^QrSOt#{uw#{x!_#{!_!`7e!`#O#{#P;'S#{;'S;=`$d<%lO#{U7jVrSOt#{uw#{x#O#{#P#Q8P#Q;'S#{;'S;=`$d<%lO#{U8WU#]QrSOt#{uw#{x#O#{#P;'S#{;'S;=`$d<%lO#{~8oO#X~U8vU#aQrSOt#{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#hx[#YWrSOt#{uw#{x}#{}!O,Y!O!_#{!_!`-T!`#O#{#P#T#{#T#o,Y#o;'S#{;'S;=`$d<%lO#{^?u[#[WrSOt#{uw#{x}#{}!O,Y!O!_#{!_!`-T!`#O#{#P#T#{#T#o,Y#o;'S#{;'S;=`$d<%lO#{^@r^#ZWrSOt#{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#jq#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#hx[#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 (specializeKeyword(value, stack) << 1), external: specializeKeyword},{term: 20, get: (value: keyof typeof spec_Identifier) => spec_Identifier[value] || -1}], tokenPrec: 1700 diff --git a/src/parser/tests/basics.test.ts b/src/parser/tests/basics.test.ts index d890f91..47be1bd 100644 --- a/src/parser/tests/basics.test.ts +++ b/src/parser/tests/basics.test.ts @@ -752,7 +752,7 @@ Assign EqEq == Number 5 colon : - ThenBlock + MultiLineBlock Boolean true keyword end keyword end @@ -794,7 +794,7 @@ Assign EqEq == Number 5 colon : - ThenBlock + MultiLineBlock Boolean true keyword end keyword end diff --git a/src/parser/tests/control-flow.test.ts b/src/parser/tests/control-flow.test.ts index a62d74a..69eb903 100644 --- a/src/parser/tests/control-flow.test.ts +++ b/src/parser/tests/control-flow.test.ts @@ -12,7 +12,7 @@ describe('if/elseif/else', () => { EqEq == Number 1 colon : - SingleLineThenBlock + SingleLineBlock String StringFragment cool keyword end @@ -26,7 +26,7 @@ describe('if/elseif/else', () => { keyword if Identifier x colon : - SingleLineThenBlock + SingleLineBlock Number 2 keyword end `) @@ -44,7 +44,7 @@ describe('if/elseif/else', () => { Lt < Number 9 colon : - ThenBlock + MultiLineBlock FunctionCallOrIdentifier Identifier yes keyword end @@ -61,13 +61,13 @@ describe('if/elseif/else', () => { keyword if Identifier with-else colon : - ThenBlock + MultiLineBlock FunctionCallOrIdentifier Identifier x ElseExpr keyword else colon : - ThenBlock + MultiLineBlock FunctionCallOrIdentifier Identifier y keyword end @@ -84,14 +84,14 @@ describe('if/elseif/else', () => { keyword if Identifier with-elseif colon : - ThenBlock + MultiLineBlock FunctionCallOrIdentifier Identifier x ElseIfExpr keyword elseif Identifier another-condition colon : - ThenBlock + MultiLineBlock FunctionCallOrIdentifier Identifier y keyword end @@ -112,27 +112,27 @@ describe('if/elseif/else', () => { keyword if Identifier with-elseif-else colon : - ThenBlock + MultiLineBlock FunctionCallOrIdentifier Identifier x ElseIfExpr keyword elseif Identifier another-condition colon : - ThenBlock + MultiLineBlock FunctionCallOrIdentifier Identifier y ElseIfExpr keyword elseif Identifier yet-another-condition colon : - ThenBlock + MultiLineBlock FunctionCallOrIdentifier Identifier z ElseExpr keyword else colon : - ThenBlock + MultiLineBlock FunctionCallOrIdentifier Identifier oh-no keyword end @@ -148,7 +148,7 @@ describe('if/elseif/else', () => { keyword if Boolean true colon : - SingleLineThenBlock + SingleLineBlock Number 2 keyword end `) diff --git a/src/parser/tests/exceptions.test.ts b/src/parser/tests/exceptions.test.ts index 039a279..105bab0 100644 --- a/src/parser/tests/exceptions.test.ts +++ b/src/parser/tests/exceptions.test.ts @@ -12,14 +12,14 @@ describe('try/catch/finally/throw', () => { TryExpr keyword try colon : - TryBlock + MultiLineBlock FunctionCallOrIdentifier Identifier risky-operation CatchExpr keyword catch Identifier err colon : - TryBlock + MultiLineBlock FunctionCall Identifier handle-error PositionalArg @@ -37,13 +37,13 @@ describe('try/catch/finally/throw', () => { TryExpr keyword try colon : - TryBlock + MultiLineBlock FunctionCallOrIdentifier Identifier do-work FinallyExpr keyword finally colon : - TryBlock + MultiLineBlock FunctionCallOrIdentifier Identifier cleanup keyword end @@ -61,14 +61,14 @@ describe('try/catch/finally/throw', () => { TryExpr keyword try colon : - TryBlock + MultiLineBlock FunctionCallOrIdentifier Identifier risky-operation CatchExpr keyword catch Identifier err colon : - TryBlock + MultiLineBlock FunctionCall Identifier handle-error PositionalArg @@ -76,7 +76,7 @@ describe('try/catch/finally/throw', () => { FinallyExpr keyword finally colon : - TryBlock + MultiLineBlock FunctionCallOrIdentifier Identifier cleanup keyword end @@ -199,7 +199,7 @@ describe('function-level exception handling', () => { keyword catch Identifier e colon : - TryBlock + MultiLineBlock FunctionCallOrIdentifier Identifier empty-string keyword end @@ -227,7 +227,7 @@ describe('function-level exception handling', () => { FinallyExpr keyword finally colon : - TryBlock + MultiLineBlock FunctionCallOrIdentifier Identifier close-resources keyword end @@ -259,7 +259,7 @@ describe('function-level exception handling', () => { keyword catch Identifier err colon : - TryBlock + MultiLineBlock FunctionCall Identifier log PositionalArg @@ -269,7 +269,7 @@ describe('function-level exception handling', () => { FinallyExpr keyword finally colon : - TryBlock + MultiLineBlock FunctionCallOrIdentifier Identifier cleanup keyword end