DotGet function calls
This commit is contained in:
parent
611c2a4c8a
commit
abd7d2e43b
|
|
@ -46,7 +46,6 @@ item {
|
||||||
consumeToTerminator {
|
consumeToTerminator {
|
||||||
PipeExpr |
|
PipeExpr |
|
||||||
ambiguousFunctionCall |
|
ambiguousFunctionCall |
|
||||||
DotGet |
|
|
||||||
IfExpr |
|
IfExpr |
|
||||||
FunctionDef |
|
FunctionDef |
|
||||||
Assign |
|
Assign |
|
||||||
|
|
@ -63,7 +62,7 @@ pipeOperand {
|
||||||
}
|
}
|
||||||
|
|
||||||
FunctionCallOrIdentifier {
|
FunctionCallOrIdentifier {
|
||||||
Identifier
|
DotGet | Identifier
|
||||||
}
|
}
|
||||||
|
|
||||||
ambiguousFunctionCall {
|
ambiguousFunctionCall {
|
||||||
|
|
@ -71,7 +70,7 @@ ambiguousFunctionCall {
|
||||||
}
|
}
|
||||||
|
|
||||||
FunctionCall {
|
FunctionCall {
|
||||||
Identifier arg+
|
(DotGet | Identifier) arg+
|
||||||
}
|
}
|
||||||
|
|
||||||
arg {
|
arg {
|
||||||
|
|
|
||||||
|
|
@ -19,24 +19,24 @@ export const
|
||||||
Program = 17,
|
Program = 17,
|
||||||
PipeExpr = 18,
|
PipeExpr = 18,
|
||||||
FunctionCall = 19,
|
FunctionCall = 19,
|
||||||
PositionalArg = 20,
|
DotGet = 20,
|
||||||
ParenExpr = 21,
|
PositionalArg = 21,
|
||||||
FunctionCallOrIdentifier = 22,
|
ParenExpr = 22,
|
||||||
BinOp = 23,
|
FunctionCallOrIdentifier = 23,
|
||||||
ConditionalOp = 24,
|
BinOp = 24,
|
||||||
FunctionDef = 25,
|
ConditionalOp = 25,
|
||||||
|
FunctionDef = 26,
|
||||||
keyword = 50,
|
keyword = 50,
|
||||||
Params = 27,
|
Params = 28,
|
||||||
colon = 28,
|
colon = 29,
|
||||||
String = 30,
|
String = 31,
|
||||||
StringFragment = 31,
|
StringFragment = 32,
|
||||||
Interpolation = 32,
|
Interpolation = 33,
|
||||||
EscapeSeq = 33,
|
EscapeSeq = 34,
|
||||||
Number = 34,
|
Number = 35,
|
||||||
Boolean = 35,
|
Boolean = 36,
|
||||||
Regex = 36,
|
Regex = 37,
|
||||||
Null = 37,
|
Null = 38,
|
||||||
DotGet = 38,
|
|
||||||
Underscore = 39,
|
Underscore = 39,
|
||||||
NamedArg = 40,
|
NamedArg = 40,
|
||||||
NamedArgPrefix = 41,
|
NamedArgPrefix = 41,
|
||||||
|
|
|
||||||
|
|
@ -4,24 +4,24 @@ import {operatorTokenizer} from "./operatorTokenizer"
|
||||||
import {tokenizer} from "./tokenizer"
|
import {tokenizer} from "./tokenizer"
|
||||||
import {trackScope} from "./scopeTracker"
|
import {trackScope} from "./scopeTracker"
|
||||||
import {highlighting} from "./highlight"
|
import {highlighting} from "./highlight"
|
||||||
const spec_Identifier = {__proto__:null,do:52, end:58, null:74, if:88, elseif:96, else:100}
|
const spec_Identifier = {__proto__:null,do:54, end:60, null:76, if:88, elseif:96, else:100}
|
||||||
export const parser = LRParser.deserialize({
|
export const parser = LRParser.deserialize({
|
||||||
version: 14,
|
version: 14,
|
||||||
states: ".jQVQbOOO#XQcO'#CrO$RQRO'#CsO$aQcO'#DmO$xQbO'#DsOOQ`'#Cu'#CuO%QQbO'#CqO%rOSO'#CzOOQa'#Dq'#DqO&QOpO'#DSO&VQcO'#DpOOQ`'#Dn'#DnO&nQbO'#DmO&|QbO'#EQOOQ`'#DX'#DXO'kQRO'#DaOOQ`'#Dm'#DmO'pQQO'#DlOOQ`'#Dl'#DlOOQ`'#Db'#DbQVQbOOOOQa'#Dp'#DpOOQ`'#Cp'#CpO'xQbO'#DUOOQ`'#Do'#DoOOQ`'#Dc'#DcO(SQbO,59ZO&|QbO,59_O&|QbO,59_OOQ`'#Dd'#DdO(pQbO'#CwO(xQQO,5:_O)iQRO'#CsO)yQRO,59]O*[QRO,59]O*VQQO,59]O+VQQO,59]O+_QbO'#C|O+gQWO'#C}OOOO'#Dy'#DyOOOO'#Df'#DfO+{OSO,59fOOQa,59f,59fO,ZO`O,59nO,`QbO'#DgO,eQbO,59YO,vQRO,5:lO,}QQO,5:lO-SQbO,59{OOQ`,5:W,5:WOOQ`-E7`-E7`OOQ`,59p,59pOOQ`-E7a-E7aOOQa1G.y1G.yO-^QcO1G.yOOQ`-E7b-E7bO-xQbO1G/yO&|QbO,59`O&|QbO,59`OOQa1G.w1G.wOOOO,59h,59hOOOO,59i,59iOOOO-E7d-E7dOOQa1G/Q1G/QOOQa1G/Y1G/YO!QQbO'#CrOOQ`,5:R,5:ROOQ`-E7e-E7eO.VQbO1G0WOOQ`1G/g1G/gO.dQbO7+%eO.iQbO7+%fOOQO1G.z1G.zO.vQRO1G.zOOQ`'#DZ'#DZOOQ`7+%r7+%rO/QQbO7+%sOOQ`<<IP<<IPO/eQQO'#DeO/jQbO'#DvO/}QbO<<IQOOQ`'#D['#D[O0SQbO<<I_OOQ`,5:P,5:POOQ`-E7c-E7cOOQ`AN>lAN>lO&|QbO'#D]OOQ`'#Dh'#DhO0_QbOAN>yO0jQQO'#D_OOQ`AN>yAN>yO0oQbOAN>yO0tQRO,59wO0{QQO,59wOOQ`-E7f-E7fOOQ`G24eG24eO1QQbOG24eO1VQQO,59yO1[QQO1G/cOOQ`LD*PLD*PO.iQbO1G/eO/QQbO7+$}OOQ`7+%P7+%POOQ`<<Hi<<Hi",
|
states: ".jQVQbOOO!QOpO'#CpO#^QcO'#CsO$WQRO'#CtO$fQcO'#DmO$}QbO'#DtOOQ`'#Cv'#CvO%VQbO'#CrO%wOSO'#C{OOQa'#Dr'#DrO&VQcO'#DqOOQ`'#Dn'#DnO&nQbO'#DmO&|QbO'#EQOOQ`'#DX'#DXO'kQRO'#DaOOQ`'#Dm'#DmO'pQQO'#DlOOQ`'#Dl'#DlOOQ`'#Db'#DbQVQbOOO'xO`O,59[OOQa'#Dq'#DqOOQ`'#Cq'#CqO'}QbO'#DUOOQ`'#Dp'#DpOOQ`'#Dc'#DcO(XQbO,59ZO&|QbO,59`O&|QbO,59`OOQ`'#Dd'#DdO(uQbO'#CxO(}QQO,5:`O)nQRO'#CtO*OQRO,59^O*aQRO,59^O*[QQO,59^O+[QQO,59^O+dQbO'#C}O+lQWO'#DOOOOO'#Dz'#DzOOOO'#Df'#DfO,QOSO,59gOOQa,59g,59gO,`QbO'#DgO,hQbO,59YO,yQRO,5:lO-QQQO,5:lO-VQbO,59{OOQ`,5:W,5:WOOQ`-E7`-E7`OOQa1G.v1G.vOOQ`,59p,59pOOQ`-E7a-E7aOOQa1G.z1G.zO-aQcO1G.zOOQ`-E7b-E7bO-{QbO1G/zO&|QbO,59aO&|QbO,59aOOQa1G.x1G.xOOOO,59i,59iOOOO,59j,59jOOOO-E7d-E7dOOQa1G/R1G/RO!VQbO'#CsOOQ`,5:R,5:ROOQ`-E7e-E7eO.YQbO1G0WOOQ`1G/g1G/gO.gQbO7+%fO.lQbO7+%gOOQO1G.{1G.{O.yQRO1G.{OOQ`'#DZ'#DZOOQ`7+%r7+%rO/TQbO7+%sOOQ`<<IQ<<IQO/hQQO'#DeO/mQbO'#DwO0QQbO<<IROOQ`'#D['#D[O0VQbO<<I_OOQ`,5:P,5:POOQ`-E7c-E7cOOQ`AN>mAN>mO&|QbO'#D]OOQ`'#Dh'#DhO0bQbOAN>yO0mQQO'#D_OOQ`AN>yAN>yO0rQbOAN>yO0wQRO,59wO1OQQO,59wOOQ`-E7f-E7fOOQ`G24eG24eO1TQbOG24eO1YQQO,59yO1_QQO1G/cOOQ`LD*PLD*PO.lQbO1G/eO/TQbO7+$}OOQ`7+%P7+%POOQ`<<Hi<<Hi",
|
||||||
stateData: "1d~O!_OS~O]PO^_O_WO`XOjSOrWOsWOtWOuWO|]O!fUO!ibO!lVO~O]eO_WO`XOjSOrWOsWOtWOuWOwfOygO!fUO!lVOzfX!ifX!vfX!kfXmfX~OP!dXQ!dXR!dXS!dXT!dXU!dXV!dXW!dXX!dXY!dXZ!dX[!dX~P!QOPkOQkORlOSlO~OPkOQkORlOSlO!i!aX!v!aXm!aX~O^mOlkP~O]PO_WO`XOjSOrWOsWOtWOuWO!fUO!lVO~OowO!lzO!nuO!ovO~O!s{O~OP!dXQ!dXR!dXS!dX!i!aX!v!aXm!aX~Oz|O!i!aX!v!aXm!aX~O]eO_WO`XOrWOsWOtWOuWO!fUO!lVO~OV!QO~O!i!RO!v!RO~OjSOw!TO~P&|OjSOwfOygOzca!ica!vca!kcamca~P&|O^mOlkX~Ol!YO~OT![OU![OV!ZOW!ZOX!ZOY!ZOZ!ZO[!ZO~OPkOQkORlOSlO~P(}OPkOQkORlOSlO!k!]O~O!k!]OP!dXQ!dXR!dXS!dXT!dXU!dXV!dXW!dXX!dXY!dXZ!dX[!dX~Oz|O!k!]O~O]!^O!fUO~O!l!_O!n!_O!o!_O!p!_O!q!_O!r!_O~OowO!l!aO!nuO!ovO~O]!bO~O]!cO~Oz|O!iba!vba!kbamba~Ol!fO~P(}Ol!fO~O^_O|]O~P%QOPkOQkORgiSgi!igi!vgi!kgimgi~O^_O|]O!i!iO~P%QO^_O|]O!i!nO~P%QOm!oO~O^_O|]Om!jP~P%QO!khilhi~P(}O^_O|]Om!jP!Q!jP!S!jP~P%QO!i!uO~O^_O|]Om!jX!Q!jX!S!jX~P%QOm!wO~Om!|O!Q!xO!S!{O~Om#RO!Q!xO!S!{O~Ol#TO~Om#RO~Ol#UO~P(}Ol#UO~Om#VO~O!i#WO~O!i#XO~Ort~",
|
stateData: "1g~O!_OS~O]QO^_O_XO`POkTOsXOtXOuXOvXO|]O!gVO!jbO!mWO~O!ceO~O]fO_XO`POkTOsXOtXOuXOvXOwgOyhO!gVO!mWOzgX!jgX!vgX!lgXngX~OP!eXQ!eXR!eXS!eXT!eXU!eXV!eXW!eXX!eXY!eXZ!eX[!eX~P!VOPlOQlORmOSmO~OPlOQlORmOSmO!j!aX!v!aXn!aX~O^nOmlP~O]QO_XO`POkTOsXOtXOuXOvXO!gVO!mWO~OpxO!m{O!ovO!pwO~OP!eXQ!eXR!eXS!eX!j!aX!v!aXn!aX~Oz|O!j!aX!v!aXn!aX~O]fO_XO`POsXOtXOuXOvXO!gVO!mWO~OV!QO~O!j!RO!v!RO~O]!TO~OkTOw!UO~P&|OkTOwgOyhOzca!jca!vca!lcanca~P&|O^nOmlX~Om!ZO~OT!]OU!]OV![OW![OX![OY![OZ![O[![O~OPlOQlORmOSmO~P)SOPlOQlORmOSmO!l!^O~O!l!^OP!eXQ!eXR!eXS!eXT!eXU!eXV!eXW!eXX!eXY!eXZ!eX[!eX~Oz|O!l!^O~O]!_O!gVO~O!m!`O!o!`O!p!`O!q!`O!r!`O!s!`O~OpxO!m!bO!ovO!pwO~O]!cO`PO~Oz|O!jba!vba!lbanba~Om!fO~P)SOm!fO~O^_O|]O~P%VOPlOQlORhiShi!jhi!vhi!lhinhi~O^_O|]O!j!iO~P%VO^_O|]O!j!nO~P%VOn!oO~O^_O|]On!kP~P%VO!liimii~P)SO^_O|]On!kP!Q!kP!S!kP~P%VO!j!uO~O^_O|]On!kX!Q!kX!S!kX~P%VOn!wO~On!|O!Q!xO!S!{O~On#RO!Q!xO!S!{O~Om#TO~On#RO~Om#UO~P)SOm#UO~On#VO~O!j#WO~O!j#XO~Osu~",
|
||||||
goto: "+q!vPPPPPPPPPPPPPPPPPP!w#W#f#k#W$V$l$xP%aPP%dP%{%{PPPP&PP#fPP&jP&v&y'SP'WP&j'^'d'k'q'z(Q(XPPP(_(c(w)Z)`*ZP*v*vP+XPP+aPPPPPP+e+ed`Od!Q!Y!f!i!n!q#W#XRsUiZOUd|!Q!Y!f!i!n!q#W#XVhPj!czWOPU]dgjkl!Q!Y!Z![!c!f!i!n!q!x#W#XR!^udROd!Q!Y!f!i!n!q#W#XQqUQ!VkR!WlQsUQ!P]Q!j![R#P!xd`Od!Q!Y!f!i!n!q#W#XUfPj!cQsUR!TgRoS{WOPU]dgjkl!Q!Y!Z![!c!f!i!n!q!x#W#XTwVydYOd!Q!Y!f!i!n!q#W#XgePU]gjkl!Z![!c!xe`Od!Q!Y!f!i!n!q#W#XR!m!fQ!t!nQ#Y#WR#Z#XT!y!t!zQ!}!tR#S!zQdOR!SdSjP!cR!UjQnSR!XnW!q!i!n#W#XR!v!qQyVR!`yS}[tR!e}Q!z!tR#Q!zTcOdSaOdQ!g!QQ!h!YQ!l!fZ!p!i!n!q#W#Xd[Od!Q!Y!f!i!n!q#W#XQtUR!d|ViPj!cdQOd!Q!Y!f!i!n!q#W#XUfPj!cQpUQ!O]Q!TgQ!VkQ!WlQ!j!ZQ!k![R#O!xdYOd!Q!Y!f!i!n!q#W#XdeP]gjkl!Z![!c!xRrUoTOPUdgj!Q!Y!c!f!i!n!q#W#XQ!r!iV!s!n#W#XTxVye^Od!Q!Y!f!i!n!q#W#X",
|
goto: "+t!vPPPPPPPPPPPPPPPPPP!w#W#f$S$X#W$s%Y%fP%}PP&QP&i&iPPPPP$SPP&mP&y&|'VP'ZP&m'a'g'n't'}(T([PPP(b(f(zP)^)c*^P*y*yP+[PP+dPPPPP+h+hd`Od!Q!Z!f!i!n!q#W#XRtViZOVd|!Q!Z!f!i!n!q#W#XfQOVd!Q!Z!f!i!n!q#W#XdfQ]hklm![!]!c!xR!c|ViQk!czXOQV]dhklm!Q!Z![!]!c!f!i!n!q!x#W#XR!_vdSOd!Q!Z!f!i!n!q#W#XQrVQ!WlR!XmQtVQ!P]Q!j!]R#P!xd`Od!Q!Z!f!i!n!q#W#XUgQk!cQtVR!UhRpT{XOQV]dhklm!Q!Z![!]!c!f!i!n!q!x#W#XTxWze`Od!Q!Z!f!i!n!q#W#XR!m!fQ!t!nQ#Y#WR#Z#XT!y!t!zQ!}!tR#S!zQdOR!SdSkQ!cR!VkQoTR!YoW!q!i!n#W#XR!v!qQzWR!azS}[uR!e}Q!z!tR#Q!zTcOdSaOdQ!g!QQ!h!ZQ!l!fZ!p!i!n!q#W#Xd[Od!Q!Z!f!i!n!q#W#XQuVR!d|VjQk!cdROd!Q!Z!f!i!n!q#W#XUgQk!cQqVQ!O]Q!UhQ!WlQ!XmQ!j![Q!k!]R#O!xdYOd!Q!Z!f!i!n!q#W#XdfQ]hklm![!]!c!xRsVoUOQVdhk!Q!Z!c!f!i!n!q#W#XQ!r!iV!s!n#W#XTyWze^Od!Q!Z!f!i!n!q#W#X",
|
||||||
nodeNames: "⚠ Star Slash Plus Minus And Or Eq Neq Lt Lte Gt Gte Identifier AssignableIdentifier Word IdentifierBeforeDot Program PipeExpr FunctionCall PositionalArg ParenExpr FunctionCallOrIdentifier BinOp ConditionalOp FunctionDef keyword Params colon keyword String StringFragment Interpolation EscapeSeq Number Boolean Regex Null DotGet Underscore NamedArg NamedArgPrefix operator IfExpr keyword ThenBlock ThenBlock ElseIfExpr keyword ElseExpr keyword Assign",
|
nodeNames: "⚠ Star Slash Plus Minus And Or Eq Neq Lt Lte Gt Gte Identifier AssignableIdentifier Word IdentifierBeforeDot Program PipeExpr FunctionCall DotGet PositionalArg ParenExpr FunctionCallOrIdentifier BinOp ConditionalOp FunctionDef keyword Params colon keyword String StringFragment Interpolation EscapeSeq Number Boolean Regex Null Underscore NamedArg NamedArgPrefix operator IfExpr keyword ThenBlock ThenBlock ElseIfExpr keyword ElseExpr keyword Assign",
|
||||||
maxTerm: 84,
|
maxTerm: 84,
|
||||||
context: trackScope,
|
context: trackScope,
|
||||||
nodeProps: [
|
nodeProps: [
|
||||||
["closedBy", 28,"end"]
|
["closedBy", 29,"end"]
|
||||||
],
|
],
|
||||||
propSources: [highlighting],
|
propSources: [highlighting],
|
||||||
skippedNodes: [0],
|
skippedNodes: [0],
|
||||||
repeatNodeCount: 7,
|
repeatNodeCount: 7,
|
||||||
tokenData: "<}~RyOX#rXY$aYZ$zZp#rpq$aqt#rtu%euw#rwx%jxy%oyz&Yz{#r{|&s|}#r}!O&s!O!P#r!P!Q)g!Q!['b![!]2S!]!^$z!^#O#r#O#P2m#P#R#r#R#S2r#S#T#r#T#Y3]#Y#Z4k#Z#b3]#b#c8y#c#f3]#f#g9p#g#h3]#h#i:g#i#o3]#o#p#r#p#q<_#q;'S#r;'S;=`$Z<%l~#r~O#r~~<xS#wUoSOt#ruw#rx#O#r#P;'S#r;'S;=`$Z<%lO#rS$^P;=`<%l#r^$hUoS!_YOt#ruw#rx#O#r#P;'S#r;'S;=`$Z<%lO#rU%RUoS!iQOt#ruw#rx#O#r#P;'S#r;'S;=`$Z<%lO#r~%jO!n~~%oO!l~U%vUoS!fQOt#ruw#rx#O#r#P;'S#r;'S;=`$Z<%lO#rU&aUoS!kQOt#ruw#rx#O#r#P;'S#r;'S;=`$Z<%lO#rU&xWoSOt#ruw#rx!Q#r!Q!['b![#O#r#P;'S#r;'S;=`$Z<%lO#rU'iYoSrQOt#ruw#rx!O#r!O!P(X!P!Q#r!Q!['b![#O#r#P;'S#r;'S;=`$Z<%lO#rU(^WoSOt#ruw#rx!Q#r!Q![(v![#O#r#P;'S#r;'S;=`$Z<%lO#rU(}WoSrQOt#ruw#rx!Q#r!Q![(v![#O#r#P;'S#r;'S;=`$Z<%lO#rU)lWoSOt#ruw#rx!P#r!P!Q*U!Q#O#r#P;'S#r;'S;=`$Z<%lO#rU*Z^oSOY+VYZ#rZt+Vtu,Yuw+Vwx,Yx!P+V!P!Q#r!Q!}+V!}#O0{#O#P.h#P;'S+V;'S;=`1|<%lO+VU+^^oStQOY+VYZ#rZt+Vtu,Yuw+Vwx,Yx!P+V!P!Q.}!Q!}+V!}#O0{#O#P.h#P;'S+V;'S;=`1|<%lO+VQ,_XtQOY,YZ!P,Y!P!Q,z!Q!},Y!}#O-i#O#P.h#P;'S,Y;'S;=`.w<%lO,YQ,}P!P!Q-QQ-VUtQ#Z#[-Q#]#^-Q#a#b-Q#g#h-Q#i#j-Q#m#n-QQ-lVOY-iZ#O-i#O#P.R#P#Q,Y#Q;'S-i;'S;=`.b<%lO-iQ.USOY-iZ;'S-i;'S;=`.b<%lO-iQ.eP;=`<%l-iQ.kSOY,YZ;'S,Y;'S;=`.w<%lO,YQ.zP;=`<%l,YU/SWoSOt#ruw#rx!P#r!P!Q/l!Q#O#r#P;'S#r;'S;=`$Z<%lO#rU/sboStQOt#ruw#rx#O#r#P#Z#r#Z#[/l#[#]#r#]#^/l#^#a#r#a#b/l#b#g#r#g#h/l#h#i#r#i#j/l#j#m#r#m#n/l#n;'S#r;'S;=`$Z<%lO#rU1Q[oSOY0{YZ#rZt0{tu-iuw0{wx-ix#O0{#O#P.R#P#Q+V#Q;'S0{;'S;=`1v<%lO0{U1yP;=`<%l0{U2PP;=`<%l+VU2ZUoSlQOt#ruw#rx#O#r#P;'S#r;'S;=`$Z<%lO#r~2rO!o~U2yUoSwQOt#ruw#rx#O#r#P;'S#r;'S;=`$Z<%lO#rU3bYoSOt#ruw#rx!_#r!_!`4Q!`#O#r#P#T#r#T#o3]#o;'S#r;'S;=`$Z<%lO#rU4XUyQoSOt#ruw#rx#O#r#P;'S#r;'S;=`$Z<%lO#rU4pZoSOt#ruw#rx!_#r!_!`4Q!`#O#r#P#T#r#T#U5c#U#o3]#o;'S#r;'S;=`$Z<%lO#rU5h[oSOt#ruw#rx!_#r!_!`4Q!`#O#r#P#T#r#T#`3]#`#a6^#a#o3]#o;'S#r;'S;=`$Z<%lO#rU6c[oSOt#ruw#rx!_#r!_!`4Q!`#O#r#P#T#r#T#g3]#g#h7X#h#o3]#o;'S#r;'S;=`$Z<%lO#rU7^[oSOt#ruw#rx!_#r!_!`4Q!`#O#r#P#T#r#T#X3]#X#Y8S#Y#o3]#o;'S#r;'S;=`$Z<%lO#rU8ZYsQoSOt#ruw#rx!_#r!_!`4Q!`#O#r#P#T#r#T#o3]#o;'S#r;'S;=`$Z<%lO#r^9QY!pWoSOt#ruw#rx!_#r!_!`4Q!`#O#r#P#T#r#T#o3]#o;'S#r;'S;=`$Z<%lO#r^9wY!rWoSOt#ruw#rx!_#r!_!`4Q!`#O#r#P#T#r#T#o3]#o;'S#r;'S;=`$Z<%lO#r^:n[!qWoSOt#ruw#rx!_#r!_!`4Q!`#O#r#P#T#r#T#f3]#f#g;d#g#o3]#o;'S#r;'S;=`$Z<%lO#rU;i[oSOt#ruw#rx!_#r!_!`4Q!`#O#r#P#T#r#T#i3]#i#j7X#j#o3]#o;'S#r;'S;=`$Z<%lO#rU<fUzQoSOt#ruw#rx#O#r#P;'S#r;'S;=`$Z<%lO#r~<}O!v~",
|
tokenData: "<}~RyOX#rXY$aYZ$zZp#rpq$aqt#rtu%euw#rwx%jxy%oyz&Yz{#r{|&s|}#r}!O&s!O!P#r!P!Q)g!Q!['b![!]2S!]!^$z!^#O#r#O#P2m#P#R#r#R#S2r#S#T#r#T#Y3]#Y#Z4k#Z#b3]#b#c8y#c#f3]#f#g9p#g#h3]#h#i:g#i#o3]#o#p#r#p#q<_#q;'S#r;'S;=`$Z<%l~#r~O#r~~<xS#wUpSOt#ruw#rx#O#r#P;'S#r;'S;=`$Z<%lO#rS$^P;=`<%l#r^$hUpS!_YOt#ruw#rx#O#r#P;'S#r;'S;=`$Z<%lO#rU%RUpS!jQOt#ruw#rx#O#r#P;'S#r;'S;=`$Z<%lO#r~%jO!o~~%oO!m~U%vUpS!gQOt#ruw#rx#O#r#P;'S#r;'S;=`$Z<%lO#rU&aUpS!lQOt#ruw#rx#O#r#P;'S#r;'S;=`$Z<%lO#rU&xWpSOt#ruw#rx!Q#r!Q!['b![#O#r#P;'S#r;'S;=`$Z<%lO#rU'iYpSsQOt#ruw#rx!O#r!O!P(X!P!Q#r!Q!['b![#O#r#P;'S#r;'S;=`$Z<%lO#rU(^WpSOt#ruw#rx!Q#r!Q![(v![#O#r#P;'S#r;'S;=`$Z<%lO#rU(}WpSsQOt#ruw#rx!Q#r!Q![(v![#O#r#P;'S#r;'S;=`$Z<%lO#rU)lWpSOt#ruw#rx!P#r!P!Q*U!Q#O#r#P;'S#r;'S;=`$Z<%lO#rU*Z^pSOY+VYZ#rZt+Vtu,Yuw+Vwx,Yx!P+V!P!Q#r!Q!}+V!}#O0{#O#P.h#P;'S+V;'S;=`1|<%lO+VU+^^pSuQOY+VYZ#rZt+Vtu,Yuw+Vwx,Yx!P+V!P!Q.}!Q!}+V!}#O0{#O#P.h#P;'S+V;'S;=`1|<%lO+VQ,_XuQOY,YZ!P,Y!P!Q,z!Q!},Y!}#O-i#O#P.h#P;'S,Y;'S;=`.w<%lO,YQ,}P!P!Q-QQ-VUuQ#Z#[-Q#]#^-Q#a#b-Q#g#h-Q#i#j-Q#m#n-QQ-lVOY-iZ#O-i#O#P.R#P#Q,Y#Q;'S-i;'S;=`.b<%lO-iQ.USOY-iZ;'S-i;'S;=`.b<%lO-iQ.eP;=`<%l-iQ.kSOY,YZ;'S,Y;'S;=`.w<%lO,YQ.zP;=`<%l,YU/SWpSOt#ruw#rx!P#r!P!Q/l!Q#O#r#P;'S#r;'S;=`$Z<%lO#rU/sbpSuQOt#ruw#rx#O#r#P#Z#r#Z#[/l#[#]#r#]#^/l#^#a#r#a#b/l#b#g#r#g#h/l#h#i#r#i#j/l#j#m#r#m#n/l#n;'S#r;'S;=`$Z<%lO#rU1Q[pSOY0{YZ#rZt0{tu-iuw0{wx-ix#O0{#O#P.R#P#Q+V#Q;'S0{;'S;=`1v<%lO0{U1yP;=`<%l0{U2PP;=`<%l+VU2ZUpSmQOt#ruw#rx#O#r#P;'S#r;'S;=`$Z<%lO#r~2rO!p~U2yUpSwQOt#ruw#rx#O#r#P;'S#r;'S;=`$Z<%lO#rU3bYpSOt#ruw#rx!_#r!_!`4Q!`#O#r#P#T#r#T#o3]#o;'S#r;'S;=`$Z<%lO#rU4XUyQpSOt#ruw#rx#O#r#P;'S#r;'S;=`$Z<%lO#rU4pZpSOt#ruw#rx!_#r!_!`4Q!`#O#r#P#T#r#T#U5c#U#o3]#o;'S#r;'S;=`$Z<%lO#rU5h[pSOt#ruw#rx!_#r!_!`4Q!`#O#r#P#T#r#T#`3]#`#a6^#a#o3]#o;'S#r;'S;=`$Z<%lO#rU6c[pSOt#ruw#rx!_#r!_!`4Q!`#O#r#P#T#r#T#g3]#g#h7X#h#o3]#o;'S#r;'S;=`$Z<%lO#rU7^[pSOt#ruw#rx!_#r!_!`4Q!`#O#r#P#T#r#T#X3]#X#Y8S#Y#o3]#o;'S#r;'S;=`$Z<%lO#rU8ZYtQpSOt#ruw#rx!_#r!_!`4Q!`#O#r#P#T#r#T#o3]#o;'S#r;'S;=`$Z<%lO#r^9QY!qWpSOt#ruw#rx!_#r!_!`4Q!`#O#r#P#T#r#T#o3]#o;'S#r;'S;=`$Z<%lO#r^9wY!sWpSOt#ruw#rx!_#r!_!`4Q!`#O#r#P#T#r#T#o3]#o;'S#r;'S;=`$Z<%lO#r^:n[!rWpSOt#ruw#rx!_#r!_!`4Q!`#O#r#P#T#r#T#f3]#f#g;d#g#o3]#o;'S#r;'S;=`$Z<%lO#rU;i[pSOt#ruw#rx!_#r!_!`4Q!`#O#r#P#T#r#T#i3]#i#j7X#j#o3]#o;'S#r;'S;=`$Z<%lO#rU<fUzQpSOt#ruw#rx#O#r#P;'S#r;'S;=`$Z<%lO#r~<}O!v~",
|
||||||
tokenizers: [operatorTokenizer, 1, 2, 3, tokenizer, new LocalTokenGroup("[~RP!O!PU~ZO!s~~", 11)],
|
tokenizers: [operatorTokenizer, 1, 2, 3, tokenizer, new LocalTokenGroup("[~RP!O!PU~ZO!c~~", 11)],
|
||||||
topRules: {"Program":[0,17]},
|
topRules: {"Program":[0,17]},
|
||||||
specialized: [{term: 13, get: (value: keyof typeof spec_Identifier) => spec_Identifier[value] || -1}],
|
specialized: [{term: 13, get: (value: keyof typeof spec_Identifier) => spec_Identifier[value] || -1}],
|
||||||
tokenPrec: 753
|
tokenPrec: 756
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -319,6 +319,7 @@ describe('DotGet whitespace sensitivity', () => {
|
||||||
AssignableIdentifier basename
|
AssignableIdentifier basename
|
||||||
Eq =
|
Eq =
|
||||||
Number 5
|
Number 5
|
||||||
|
FunctionCallOrIdentifier
|
||||||
DotGet
|
DotGet
|
||||||
IdentifierBeforeDot basename
|
IdentifierBeforeDot basename
|
||||||
Identifier prop`)
|
Identifier prop`)
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ describe('DotGet', () => {
|
||||||
AssignableIdentifier obj
|
AssignableIdentifier obj
|
||||||
Eq =
|
Eq =
|
||||||
Number 5
|
Number 5
|
||||||
|
FunctionCallOrIdentifier
|
||||||
DotGet
|
DotGet
|
||||||
IdentifierBeforeDot obj
|
IdentifierBeforeDot obj
|
||||||
Identifier prop
|
Identifier prop
|
||||||
|
|
@ -33,6 +34,7 @@ describe('DotGet', () => {
|
||||||
Params
|
Params
|
||||||
AssignableIdentifier config
|
AssignableIdentifier config
|
||||||
colon :
|
colon :
|
||||||
|
FunctionCallOrIdentifier
|
||||||
DotGet
|
DotGet
|
||||||
IdentifierBeforeDot config
|
IdentifierBeforeDot config
|
||||||
Identifier path
|
Identifier path
|
||||||
|
|
@ -47,6 +49,7 @@ describe('DotGet', () => {
|
||||||
Params
|
Params
|
||||||
AssignableIdentifier x
|
AssignableIdentifier x
|
||||||
colon :
|
colon :
|
||||||
|
FunctionCallOrIdentifier
|
||||||
DotGet
|
DotGet
|
||||||
IdentifierBeforeDot x
|
IdentifierBeforeDot x
|
||||||
Identifier prop
|
Identifier prop
|
||||||
|
|
@ -66,9 +69,11 @@ end`).toMatchTree(`
|
||||||
AssignableIdentifier x
|
AssignableIdentifier x
|
||||||
AssignableIdentifier y
|
AssignableIdentifier y
|
||||||
colon :
|
colon :
|
||||||
|
FunctionCallOrIdentifier
|
||||||
DotGet
|
DotGet
|
||||||
IdentifierBeforeDot x
|
IdentifierBeforeDot x
|
||||||
Identifier foo
|
Identifier foo
|
||||||
|
FunctionCallOrIdentifier
|
||||||
DotGet
|
DotGet
|
||||||
IdentifierBeforeDot y
|
IdentifierBeforeDot y
|
||||||
Identifier bar
|
Identifier bar
|
||||||
|
|
@ -86,6 +91,7 @@ end`).toMatchTree(`
|
||||||
Params
|
Params
|
||||||
AssignableIdentifier x
|
AssignableIdentifier x
|
||||||
colon :
|
colon :
|
||||||
|
FunctionCallOrIdentifier
|
||||||
DotGet
|
DotGet
|
||||||
IdentifierBeforeDot x
|
IdentifierBeforeDot x
|
||||||
Identifier outer
|
Identifier outer
|
||||||
|
|
@ -94,6 +100,7 @@ end`).toMatchTree(`
|
||||||
Params
|
Params
|
||||||
AssignableIdentifier y
|
AssignableIdentifier y
|
||||||
colon :
|
colon :
|
||||||
|
FunctionCallOrIdentifier
|
||||||
DotGet
|
DotGet
|
||||||
IdentifierBeforeDot y
|
IdentifierBeforeDot y
|
||||||
Identifier inner
|
Identifier inner
|
||||||
|
|
@ -117,6 +124,62 @@ end`).toMatchTree(`
|
||||||
`)
|
`)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test('dot get works as bare function', () => {
|
||||||
|
expect('io = dict print=echo; io.print').toMatchTree(`
|
||||||
|
Assign
|
||||||
|
AssignableIdentifier io
|
||||||
|
Eq =
|
||||||
|
FunctionCall
|
||||||
|
Identifier dict
|
||||||
|
NamedArg
|
||||||
|
NamedArgPrefix print=
|
||||||
|
Identifier echo
|
||||||
|
FunctionCallOrIdentifier
|
||||||
|
DotGet
|
||||||
|
IdentifierBeforeDot io
|
||||||
|
Identifier print
|
||||||
|
`)
|
||||||
|
})
|
||||||
|
|
||||||
|
test('dot get works as function w/ args', () => {
|
||||||
|
expect('io = dict print=echo; io.print heya').toMatchTree(`
|
||||||
|
Assign
|
||||||
|
AssignableIdentifier io
|
||||||
|
Eq =
|
||||||
|
FunctionCall
|
||||||
|
Identifier dict
|
||||||
|
NamedArg
|
||||||
|
NamedArgPrefix print=
|
||||||
|
Identifier echo
|
||||||
|
FunctionCall
|
||||||
|
DotGet
|
||||||
|
IdentifierBeforeDot io
|
||||||
|
Identifier print
|
||||||
|
PositionalArg
|
||||||
|
Identifier heya
|
||||||
|
`)
|
||||||
|
})
|
||||||
|
|
||||||
|
test('dot get works as function in parens', () => {
|
||||||
|
expect('io = dict print=echo; (io.print heya)').toMatchTree(`
|
||||||
|
Assign
|
||||||
|
AssignableIdentifier io
|
||||||
|
Eq =
|
||||||
|
FunctionCall
|
||||||
|
Identifier dict
|
||||||
|
NamedArg
|
||||||
|
NamedArgPrefix print=
|
||||||
|
Identifier echo
|
||||||
|
ParenExpr
|
||||||
|
FunctionCall
|
||||||
|
DotGet
|
||||||
|
IdentifierBeforeDot io
|
||||||
|
Identifier print
|
||||||
|
PositionalArg
|
||||||
|
Identifier heya
|
||||||
|
`)
|
||||||
|
})
|
||||||
|
|
||||||
test('mixed file paths and dot get', () => {
|
test('mixed file paths and dot get', () => {
|
||||||
expect('config = 42; cat readme.txt; echo config.path').toMatchTree(`
|
expect('config = 42; cat readme.txt; echo config.path').toMatchTree(`
|
||||||
Assign
|
Assign
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user