Add Lua features for integers (#1363)

* Parse hexadecimal numeric constants in Lua

Fix lua grammar to not require a "+" after "e" in numbers.
Add tests for parsing correct number value.

* Implement bitwise operators in Lua

They throw an error when called on fractional values,
like Lua 5.4 but with a hint to round them manually.
This commit is contained in:
Marek S. Łukasiewicz
2025-04-30 10:58:45 +02:00
committed by GitHub
parent 85310e915d
commit 971e19f591
8 changed files with 100 additions and 8 deletions
+2 -1
View File
@@ -13,10 +13,11 @@ export const parser = LRParser.deserialize({
],
skippedNodes: [0,1],
repeatNodeCount: 11,
tokenData: "Dg~RuXY#fYZ$Q[]#f]^$_pq#fqr$grs$rst)Yuv)_vw)dwx)ixy-zyz.Pz{.U{|.Z|}.`}!O.g!O!P/Z!P!Q/p!Q!R0Q!R![1f![!]3j!]!^3w!^!_4O!_!`4b!`!a4j!c!}4|!}#O5_#O#P#w#P#QCl#Q#RCy#R#S4|#T#o4|#o#pDO#p#qDT#q#rDY#r#sD_~#kS#i~XY#f[]#fpq#f#O#P#w~#zQYZ#f]^#f~$VP#h~]^$Y~$_O#h~~$dP#h~YZ$Ym$jP!_!`$mm$rOzmk$uXOY$rZ]$r^r$rrs%bs#O$r#O#P%g#P;'S$r;'S;=`'w<%lO$rk%gO#mkk%jZrs$rwx$r!Q![&]#O#P$r#T#U$r#U#V$r#Y#Z$r#b#c$r#i#j'}#l#m(p#n#o$rk&`ZOY$rZ]$r^r$rrs%bs!Q$r!Q!['R![#O$r#O#P%g#P;'S$r;'S;=`'w<%lO$rk'UZOY$rZ]$r^r$rrs%bs!Q$r!Q![$r![#O$r#O#P%g#P;'S$r;'S;=`'w<%lO$rk'zP;=`<%l$rk(QP#o#p(Tk(WR!Q![(a!c!i(a#T#Z(ak(dS!Q![(a!c!i(a#T#Z(a#q#r$rk(sR!Q![(|!c!i(|#T#Z(|k)PR!Q![$r!c!i$r#T#Z$r~)_O$S~~)dO$P~~)iO#w~k)lXOY)iZ])i^w)iwx%bx#O)i#O#P*X#P;'S)i;'S;=`,i<%lO)ik*[Zrs)iwx)i!Q![*}#O#P)i#T#U)i#U#V)i#Y#Z)i#b#c)i#i#j,o#l#m-b#n#o)ik+QZOY)iZ])i^w)iwx%bx!Q)i!Q![+s![#O)i#O#P*X#P;'S)i;'S;=`,i<%lO)ik+vZOY)iZ])i^w)iwx%bx!Q)i!Q![)i![#O)i#O#P*X#P;'S)i;'S;=`,i<%lO)ik,lP;=`<%l)ik,rP#o#p,uk,xR!Q![-R!c!i-R#T#Z-Rk-US!Q![-R!c!i-R#T#Z-R#q#r)ik-eR!Q![-n!c!i-n#T#Z-nk-qR!Q![)i!c!i)i#T#Z)i~.POl~~.UOm~~.ZO#}~~.`O#{~o.gOvc#s[~.lP#|~}!O.o~.tTP~OY.oZ].o^;'S.o;'S;=`/T<%lO.o~/WP;=`<%l.oo/`Pgi!O!P/co/hP!Pm!O!P/kQ/pOcQ~/uQ$O~!P!Q/{!_!`$m~0QO$Q~~0VUd~!O!P0i!Q![1f!g!h0}!z!{1w#X#Y0}#l#m1w~0lP!Q![0o~0tRd~!Q![0o!g!h0}#X#Y0}~1QQ{|1W}!O1W~1ZP!Q![1^~1cPd~!Q![1^~1kSd~!O!P0i!Q![1f!g!h0}#X#Y0}~1zR!Q![2T!c!i2T#T#Z2T~2YUd~!O!P2l!Q![2T!c!i2T!r!s3^#T#Z2T#d#e3^~2oR!Q![2x!c!i2x#T#Z2x~2}Td~!Q![2x!c!i2x!r!s3^#T#Z2x#d#e3^~3aR{|1W}!O1W!P!Q1W~3oPo~![!]3r~3wOU~_4OOSR#s[o4VQ$[Qzm!^!_4]!_!`$mm4bO#ym~4gP#r~!_!`$mo4qQ$]Qzm!_!`$m!`!a4wm4|O#zm~5RS#k~!Q![4|!c!}4|#R#S4|#T#o4|o5dQik!_!`5j!}#OB[k5mQ!_!`5s!}#O=lk5vP!}#O5yk5|TO#P5y#P#Q6]#Q;'S5y;'S;=`8T<%lO5yk6`VO!_6u!_!`:p!`#P6u#P#Q;t#Q;'S6u;'S;=`=f<%lO6uk6xVO!_7_!_!`8Z!`#P7_#P#Q8s#Q;'S7_;'S;=`=`<%lO7_k7bTO#P5y#P#Q7q#Q;'S5y;'S;=`8T<%lO5yk7tP!_!`7wk7zP!_!`7}k8QP#P#Q%bk8WP;=`<%l5yk8^TO#P8Z#P#Q7q#Q;'S8Z;'S;=`8m<%lO8Zk8pP;=`<%l8Zk8vUO!_5y!_!`9Y!`#P5y#Q;'S5y;'S;=`8T<%lO5yk9]VO!_5y!_!`9r!`#P5y#P#Q6]#Q;'S5y;'S;=`8T<%lO5yk9uTO#P5y#P#Q:U#Q;'S5y;'S;=`8T<%lO5yk:ZV#mkO!_6u!_!`:p!`#P6u#P#Q;t#Q;'S6u;'S;=`=f<%lO6uk:sVO!_8Z!_!`;Y!`#P8Z#P#Q7q#Q;'S8Z;'S;=`8m<%lO8Zk;]TO#P8Z#P#Q;l#Q;'S8Z;'S;=`8m<%lO8Zk;qP#mk!_!`7wk;wVO!_7_!_!`:p!`#P7_#P#Q<^#Q;'S7_;'S;=`=`<%lO7_k<aVO!_5y!_!`9Y!`#P5y#P#Q<v#Q;'S5y;'S;=`8T<%lO5yk<yVO!_8Z!_!`:p!`#P8Z#P#Q<v#Q;'S8Z;'S;=`8m<%lO8Zk=cP;=`<%l7_k=iP;=`<%l6uk=oTO#P=l#P#Q>O#Q;'S=l;'S;=`>z<%lO=lk>RVO!_>h!_!`?Q!`#P>h#P#Q@U#Q;'S>h;'S;=`Al<%lO>hk>kTO#P=l#P#Q7w#Q;'S=l;'S;=`>z<%lO=lk>}P;=`<%l=lk?TTO#P?d#P#Q?|#Q;'S?d;'S;=`?v<%lO?dk?gTO#P?d#P#Q7w#Q;'S?d;'S;=`?v<%lO?dk?yP;=`<%l?dk@RP#mk!_!`7}k@XVO!_=l!_!`@n!`#P=l#P#QAr#Q;'S=l;'S;=`>z<%lO=lk@qTO#P=l#P#QAQ#Q;'S=l;'S;=`>z<%lO=lkAVV#mkO!_>h!_!`?Q!`#P>h#P#Q@U#Q;'S>h;'S;=`Al<%lO>hkAoP;=`<%l>hkAuVO!_?d!_!`?Q!`#P?d#P#QAr#Q;'S?d;'S;=`?v<%lO?doBaT$USO#PBp#P#QCS#Q;'SBp;'S;=`Cf<%lOBpkBsTO#PBp#P#QCS#Q;'SBp;'S;=`Cf<%lOBpkCVTO#PBp#P#Q%b#Q;'SBp;'S;=`Cf<%lOBpkCiP;=`<%lBpoCqPjP#P#QCtnCyO$Wn~DOO$R~~DTOq~~DYO#v~~D_Ou~~DdP#x~!_!`$m",
tokenData: "D^~RuXY#fYZ$Q[]#f]^$_pq#fqr$grs$rst)Yuv)_vw)dwx)ixy-zyz.Pz{.U{|.Z|}.`}!O.g!O!P/Z!P!Q/p!Q!R0Q!R![1i![!]3a!]!^3n!^!_3u!_!`4X!`!a4a!c!}4s!}#O5U#O#P#w#P#QCc#Q#RCp#R#S4s#T#o4s#o#pCu#p#qCz#q#rDP#r#sDU~#kS#i~XY#f[]#fpq#f#O#P#w~#zQYZ#f]^#f~$VP#h~]^$Y~$_O#h~~$dP#h~YZ$Ym$jP!_!`$mm$rOzmk$uXOY$rZ]$r^r$rrs%bs#O$r#O#P%g#P;'S$r;'S;=`'w<%lO$rk%gO#mkk%jZrs$rwx$r!Q![&]#O#P$r#T#U$r#U#V$r#Y#Z$r#b#c$r#i#j'}#l#m(p#n#o$rk&`ZOY$rZ]$r^r$rrs%bs!Q$r!Q!['R![#O$r#O#P%g#P;'S$r;'S;=`'w<%lO$rk'UZOY$rZ]$r^r$rrs%bs!Q$r!Q![$r![#O$r#O#P%g#P;'S$r;'S;=`'w<%lO$rk'zP;=`<%l$rk(QP#o#p(Tk(WR!Q![(a!c!i(a#T#Z(ak(dS!Q![(a!c!i(a#T#Z(a#q#r$rk(sR!Q![(|!c!i(|#T#Z(|k)PR!Q![$r!c!i$r#T#Z$r~)_O$S~~)dO$P~~)iO#w~k)lXOY)iZ])i^w)iwx%bx#O)i#O#P*X#P;'S)i;'S;=`,i<%lO)ik*[Zrs)iwx)i!Q![*}#O#P)i#T#U)i#U#V)i#Y#Z)i#b#c)i#i#j,o#l#m-b#n#o)ik+QZOY)iZ])i^w)iwx%bx!Q)i!Q![+s![#O)i#O#P*X#P;'S)i;'S;=`,i<%lO)ik+vZOY)iZ])i^w)iwx%bx!Q)i!Q![)i![#O)i#O#P*X#P;'S)i;'S;=`,i<%lO)ik,lP;=`<%l)ik,rP#o#p,uk,xR!Q![-R!c!i-R#T#Z-Rk-US!Q![-R!c!i-R#T#Z-R#q#r)ik-eR!Q![-n!c!i-n#T#Z-nk-qR!Q![)i!c!i)i#T#Z)i~.POl~~.UOm~~.ZO#}~~.`O#{~o.gOvc#s[~.lP#|~}!O.o~.tTP~OY.oZ].o^;'S.o;'S;=`/T<%lO.o~/WP;=`<%l.oo/`Pgi!O!P/co/hP!Pm!O!P/kQ/pOcQ~/uQ$O~!P!Q/{!_!`$m~0QO$Q~~0VUd~!O!P0i!Q![1i!g!h0}!z!{1z#X#Y0}#l#m1z~0lP!Q![0o~0tRd~!Q![0o!g!h0}#X#Y0}~1QR{|1Z}!O1Z!Q![1a~1^P!Q![1a~1fPd~!Q![1a~1nSd~!O!P0i!Q![1i!g!h0}#X#Y0}~1}R!Q![2W!c!i2W#T#Z2W~2]Ud~!O!P2o!Q![2W!c!i2W!r!s0}#T#Z2W#d#e0}~2rR!Q![2{!c!i2{#T#Z2{~3QTd~!Q![2{!c!i2{!r!s0}#T#Z2{#d#e0}~3fPo~![!]3i~3nOU~_3uOSR#s[o3|Q$[Qzm!^!_4S!_!`$mm4XO#ym~4^P#r~!_!`$mo4hQ$]Qzm!_!`$m!`!a4nm4sO#zm~4xS#k~!Q![4s!c!}4s#R#S4s#T#o4so5ZQik!_!`5a!}#OBRk5dQ!_!`5j!}#O=ck5mP!}#O5pk5sTO#P5p#P#Q6S#Q;'S5p;'S;=`7z<%lO5pk6VVO!_6l!_!`:g!`#P6l#P#Q;k#Q;'S6l;'S;=`=]<%lO6lk6oVO!_7U!_!`8Q!`#P7U#P#Q8j#Q;'S7U;'S;=`=V<%lO7Uk7XTO#P5p#P#Q7h#Q;'S5p;'S;=`7z<%lO5pk7kP!_!`7nk7qP!_!`7tk7wP#P#Q%bk7}P;=`<%l5pk8TTO#P8Q#P#Q7h#Q;'S8Q;'S;=`8d<%lO8Qk8gP;=`<%l8Qk8mUO!_5p!_!`9P!`#P5p#Q;'S5p;'S;=`7z<%lO5pk9SVO!_5p!_!`9i!`#P5p#P#Q6S#Q;'S5p;'S;=`7z<%lO5pk9lTO#P5p#P#Q9{#Q;'S5p;'S;=`7z<%lO5pk:QV#mkO!_6l!_!`:g!`#P6l#P#Q;k#Q;'S6l;'S;=`=]<%lO6lk:jVO!_8Q!_!`;P!`#P8Q#P#Q7h#Q;'S8Q;'S;=`8d<%lO8Qk;STO#P8Q#P#Q;c#Q;'S8Q;'S;=`8d<%lO8Qk;hP#mk!_!`7nk;nVO!_7U!_!`:g!`#P7U#P#Q<T#Q;'S7U;'S;=`=V<%lO7Uk<WVO!_5p!_!`9P!`#P5p#P#Q<m#Q;'S5p;'S;=`7z<%lO5pk<pVO!_8Q!_!`:g!`#P8Q#P#Q<m#Q;'S8Q;'S;=`8d<%lO8Qk=YP;=`<%l7Uk=`P;=`<%l6lk=fTO#P=c#P#Q=u#Q;'S=c;'S;=`>q<%lO=ck=xVO!_>_!_!`>w!`#P>_#P#Q?{#Q;'S>_;'S;=`Ac<%lO>_k>bTO#P=c#P#Q7n#Q;'S=c;'S;=`>q<%lO=ck>tP;=`<%l=ck>zTO#P?Z#P#Q?s#Q;'S?Z;'S;=`?m<%lO?Zk?^TO#P?Z#P#Q7n#Q;'S?Z;'S;=`?m<%lO?Zk?pP;=`<%l?Zk?xP#mk!_!`7tk@OVO!_=c!_!`@e!`#P=c#P#QAi#Q;'S=c;'S;=`>q<%lO=ck@hTO#P=c#P#Q@w#Q;'S=c;'S;=`>q<%lO=ck@|V#mkO!_>_!_!`>w!`#P>_#P#Q?{#Q;'S>_;'S;=`Ac<%lO>_kAfP;=`<%l>_kAlVO!_?Z!_!`>w!`#P?Z#P#QAi#Q;'S?Z;'S;=`?m<%lO?ZoBWT$USO#PBg#P#QBy#Q;'SBg;'S;=`C]<%lOBgkBjTO#PBg#P#QBy#Q;'SBg;'S;=`C]<%lOBgkB|TO#PBg#P#Q%b#Q;'SBg;'S;=`C]<%lOBgkC`P;=`<%lBgoChPjP#P#QCknCpO$Wn~CuO$R~~CzOq~~DPO#v~~DUOu~~DZP#x~!_!`$m",
tokenizers: [0, 1, 2, 3, 4],
topRules: {"Chunk":[0,2]},
dynamicPrecedences: {"128":1},
specialized: [{term: 119, get: (value) => spec_identifier[value] || -1}],
tokenPrec: 3791
})