From 661e9c43285f13096570bf4df7c78fcd10551d36 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Mon, 3 Aug 2020 15:58:08 -0500 Subject: [PATCH] Very sad but working implementation of hex literals --- docs/plan | 4 ++-- misc/onyx.sublime-syntax | 3 +++ onyx | Bin 351240 -> 355600 bytes src/onyxlex.c | 17 +++++++++++++++++ 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/docs/plan b/docs/plan index aadfdc33..12652ee9 100644 --- a/docs/plan +++ b/docs/plan @@ -140,9 +140,9 @@ HOW: [X] #private - symbol is scoped to package and not brought in from a 'use package' statement - [ ] Better checking for casts + [X] Hex literals - [ ] Hex literals + [ ] Better checking for casts [ ] All code paths return correct value diff --git a/misc/onyx.sublime-syntax b/misc/onyx.sublime-syntax index 67c95740..4327aa60 100644 --- a/misc/onyx.sublime-syntax +++ b/misc/onyx.sublime-syntax @@ -36,6 +36,9 @@ contexts: - match: '\b(-)?[0-9.]+\b' scope: constant.numeric.onyx + - match: '\b0x[0-9A-Fa-f]+\b' + scope: constant.numeric.onyx + - match: '#[a-zA-Z]+' scope: keyword.other.onyx diff --git a/onyx b/onyx index 6252d1f404eeeb277aef03aba8dc772605368250..28f1e29a31758ecb68e87001e7ed98479b652676 100755 GIT binary patch delta 43869 zcmcG12Urxz_w95wAVC2G3W|zgKv2Z2pn@Wbh=^HH5fyXJ*})7Vrgpt%F}ntI9Tity zWzA{L>$;|8T?3dF!kvHePHyZQuJ`Q#Sj-#;6r# zuhz_v=&dRrt@uEVH)xg6{m&IrYhiE2XUIp-c%)^RXvL>#1tePW*_wZn6`!g3FSg=eX#OiWkMa$9U7%%1v&xXGW!P@T8|JEA zu-A%zr}-bU;=MHgObecuZ}_NXIA>wte5jV;suf?vUM={x6`!X0XD6z5{lfILVMamT z#=w;F4fa-sQU=x0)rzmK@$Oc9sK$F)@evyDYsI(K_`n&)f;H->85&q+=&JFdR(yAj zkFet7H9p3QAE5DFbzZ%GgJHO4h}R9g{qY&6@dK^+$r?Y>il3(O6Rr4}8lPyz8&ujcgEB=zk8)jOJIo|(QG=sgR0sM81 zceUbw)p&O+{&L z>r8$A^P!H@mGuY3v7!)Y`g2o40@xN$%S1bOi#wS|wH#L5{6@Odf zjaRJ<_cX&tD?Ur(y|jITK5HIne1sLBt??tR_!k<#LgkHl(=S&uT(!!e?{IEg@o8F9 z=34Rk4(Fp4e@^pvonzV3=zo2O<6gjk-Jq5s(2CF7;aKtRT8qV4@%jd*s}�{rUJC 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

^o3+=$J&?Jwm3&# znw%qVfDDHo0Qm`eo5eKBj^&tWb&mW3QcgpzbJ@KrM;3q&fI9czB2QCKm&Yj#(c{*G z-U(uc3|^gMlE*=r3yEEamV>-lt0LF`Z%8ks(^^aG^M9o6otKFdoN7bLK-NMwL*}ic z`3`JHl_ooKi{o{cnWF|A6=$k0E|K^bjp=9^VdO&nr1Da#bkJAl)FtuaIpaR?9?i z2)*{7QubfCfAjlqxX%AW9*A399suK9$T&!2NGr&;tL8g}*i6CH`fiRK0T~22^)IsP zU$}qs``@^=S{kwcnO3vhOlNAwWZ=YmxIbA)XHB0A8|UjmWavLZF5ER2E5dr%nBzQH z0|!%$+o&X@4WvIL8Zrga>Ct~mH}LZy5@a1@C&Uan2l+RDOYSCop8ThuN&Xe&M~Dn@ zx`TTv#4@5U!c`&lAuS=DA$=gjArm08Ad4WYAX_1+kW-MWkcW_$kav*3A$F+08>BQO z08;y|3F8k+2S`uIV8~dA36cmQ$VSLs$T7$z$X&<_$Q#I4h=|5@fp|j7Lux=8L)t*P zLHa|YA-p5zK_tjJ$WDmagn#ECHz7|Tzd}AjWQfy!vg4%%ixR0%Hc`IOG$=4TWj< z+`OzDTPc{jl$GV*9P#}kCt3C`Aj`)fT?@+c2gm|vSuXD)%V#0ITxB^MA{CP5DuuCs z4H@8ueK^R6U|<|)h1Aw^2c z0rK9GvfR3qEdLC7TSk`SO3Sh*eu;M&(h=c#KC2U?t-t?*#5~(fA4%kHJ z_>+b~*c&fgQRT*CN4_J3+y7h1t|`m!5WjT*Duc9mJUgUONlRxHuxoYMMcz?emW?%J zxi=)BrulG1c2O`L43p&x{|_?E%DzMkPuFlGaOA*|(PJjzr$OCinaeNu;*YM^LHJcS zSstx%DVoo`?y^ZX^c_2rZ>WsyJ9HFZRt3bMbdV$X3YsoD_it$J!^7_(|K|IjoasLu z^#m=^G9pj>|C;z&C8lTE9bfxPhMa?ZiKbGO*)OJbb7XlKWGsa1Q#IteE_0wS)WQS| z_(7IyLz+Q4Kzc$3LtK_&utLg1YCsx8+CbzLs2ss}Ij*Rc`6M78an#D8EF$U=maZ`G zslpxz!wQ{~mw(BAv`1)_H4ec1D){&!Q$kYg^=L`Xi8?G^OPH zBZuOreXfQaIS}X|;87Up$?&KPoCe$nybQbr%qWD31^A+Hj_i(~H0A*700Z2x&H>H@ zP6TEEmjmsK;E@8@7MKBi2>cE_Q8Y*PcETt5?TTXxbut)Q`QTXsINLWzo(=3%0jntB zjfz+g0(<%A$ow~?ivx0Gdwj|CLFF8|0&rXvEd7A5tL4ZefDtuvw4cY(Kn;t0eCdIDYXrCGP=9JwYiAO^SX2q>{oCIVA|%YlCa(|{jFqtAdLW6)>7 zb7RqG_)6_NU@$N=Hb;&EP5{OM#qrpQ0QyeIkdf3oR4SGbYN>de`Wy*Xpdh_UjSABeguXB>)@G`|C+kZ9P~M` z6n|C)ZUGAvd&P&m9z@!y;yad{>GNI;By5VtcIk4?|+&Y0?8*=2Q zKw%?l4&1#7_kH}(e$f^@qyX;&BY~bKDifJDbfO6v?5&$kfgam+%%oudQM4-_f-;zIqrUUvML(>5t0tWzp2gU;n z9LJyorU27{e*&|B;V02@9w;!d5^&C`9Jwv<7vKn>X~bzX9h8m0UBKgK&~(7xfLTEI zvq+!>UY~OXO%L366-^H`UPl7J?Kd&#fHQCB$OnOjySUtd53tV523~rKntP%GFED0+ zLtmocz&~H3;GVet<3Ax|5Hmhwv;wz(!Dt2kla1@t3r&`T>lAnc9|T4MD`PPc2W*Hn z#3o=ftRc<=CkEo zz#GGn0IM7ax~%t#{=!lpg_P1z}vu3pyL?C2UY>b1A7Cv0n>n{bSO>7 zA_3q`puGFDt1eThF zrU#w}#sb?-mgOISgMkNuYo}l_a}SE=R9XH6904p+)?k*m-jHP3P!YFPEJVD46|vR`295wm0qwBXhyzN%6krWLS^uTrp(e%I(K=;bX(2SM?E(1maAElw`fnR~Efh{kf=D_-wQ1HsQ zIeff=QC|faU&p8g#$Bg9^_YK&j4%JlRSo!SZikyE-robM2?_g5f7WB=*y68LqCP9d zW@S@7ju*122eABy?0;kz+^!8xoL%R#W(93qE)ZuKMbV{zoxL~cOvqEa99mbOl`);N z$FntvT<0F}LJ$*~p{#&80Cp5M&pss2-W>L;uy?bxvrdWwkB{H-8JGihcJtXg=Gtcq z2GLN*fhIR)CCYDtb10mfTRNN6%)G&!hkb-Y4$W%7%7}NNY~{*Q#~ixafRz+&3gplm zFzi_|a&Cy$$SzJ*8ZsZByBio*n+DlgzchV^4f`lC53VY&x>WGO66^7&TH z_2r)y&nS&;L1125!Awu9h-ffuDT93im~-uHrBVTJP&Hxq!xA$Vm}?K2C5ppD?n6$E zm;)Qtwzj;MO3059E(?>>6|}MmDY0X97rd@`&=Wx*)Kw626NM)-)gyXMdfBx2jZ7870sedETp5mcfHD<%4Lhp{V+t6@CXoqB*| zH@nkhj_KWLCCA^o(@~B&-RUvMQa$J!Q0&nohfF->sdff~xd+v23gf#T)Pv*SJ@|ku z#hiNL3tm96Cmn5y;yvs|&w;*Idt_RXO_5v=I4=6KOuW?yn_&WqcZ z{F}q6TYqZL!`%kZD2}@a&_a%G18EP(l)-d^uYFGE7YMYJ`Le$T1R_0-)lYH;P_wz{lRhgMsjYALDvh<0sqr9{R8Iu$c;JV z)Ps4nIEcV4ICsj|;O%m|>K^P24-@_JHCV6Q2Kxki^UZVsnTqQ-=TLMc8ti>*RI%C? z`qCOj8ncBDuo4v524uz-s?`SMyDiieSUL;OBe;d-UF%T!g>eseuy0${5z^ul0`}YR z(2FsjJ1K~r?Rg=&a}hl11>?CSIA0m-=a!K_J4WrNKii<;k`GX^w!lJ%s2<0QhpBg4 z6sT+(P3PeU$7ln`jc4d0$0q0LH;(^YBIkC%emAH($9oynmE-nDG`St(?|)1ydHBbt zbdqD&pXeu!!(NeXdmx&|A1E#sWa`i!H=qejrs(##0mZw~67JF8lMZwI!;2nsY+0Ie zfIbVb*Ekrp%&j@=mwP$P#&Y1UH{m5+m~Z@O5XU6}gtv(KFrO;4rvplsQiX0HY!Yh7 z^6PvzqgS~%BmQi8B}kUX<;y1~cNE0JUb>bnZ_j7nlxzP1_HD2y=d&l~+7A}R!pXfh zUg4F`;Y_Z>JtS}v_7C~&Z*%RRU|&>6mht`4yoM0nl`d9>0G?SF)RpBO`Rto>?KO*; zuy0Wx`;++`M&vq#BZ0vUunnBgZl7z9g+06>Hq-L8AnuIX82kbDo{eR>Za#a>T>C*2 z9AcYb(==ZOKjvm|5B7S^WErm!u&7~VuKg42Q<}?i)qENF=Vnj@58v}!U`?CPF6YKK z)r7;SP&9GA4BqBCgu~vrwJev;XD^X!kA=Na8$3|uv(L-5{{Z_AJc^FWSAd~<0ZoR3 zaL8_tN4R_mOwLW<9_-!1P(#ZxFiaT&%4Plu_Cc`Mv9yoPvlqek0pG6nwY2xv?YITk zgu@It)U|Yo)g92ku&;!jFPw9)wmy0GSlHKw$uy-YmI6N@uqTXK_rO~4AoMImoNpPC z%~4`1vl;B2I^y}n(vG#qx!3 zv0{$ia0*9Q=tPCXF%Q(}M76>(5BPVYQIV_|jR?o8;Akfr&yAU#XeBq+=uC~ez<3Kr zv2tgbZZ>8mZG*8Na<&WQaF5WgRH_Sbe^>5VitX%5y*ZxkM$(p8_M>tfv-(jBj(+`V5Kw&8U#9vP5R}p# z_cyNrw1r#m4WNr0-wvQ(x+B$#1Ie)m!u1A`KgWLt@sU$XtUXvJQzHzgYq(qA8A9{9 z@!~Mr!Exy*-gG5wE1^q&97Vrz&KOOOJ%OfZ^5^&_np$&wAI+P;gzYu>mWiSHoQoVy zJ2-wB&6^78l)+={82XKK_s5W9B(UpP@{dFTC&f~G9`+c=M@cEReH<<1C`_b191l&T z8yu%iqCYrZnoQ2Um`~F^Q)GEDMqKXo!WQVm((r>1?i$z`iOhGwcT+BS6w`1J_MX#d z4ANnnrqi-sNcZY=I?VB@i5_r1dIo*t;q5c1L~o$|OsdDxb2jzp4g00pG#%*E4jUT( zw&3CU7;!(*hV11+s5ti2jNix!Z}T@CjBS?{ct1wRsZ_gMf#ik4cdF>^*8l;+AE$-&7v-m@;hqNlMfj&R2mM9&nOazXkG(;Ad%OOgdT%YPzlT0p z3+o5zq>QKarET2k_mM21u>CvUjRpgz7Ul2#2=X7rN(&>X^(bZ%V$4@YvD$(#QjJnH zhTRil6diY71CG>DBIzgS=qKjrC*o#=;~=!co;hnMJwmFQ=aeAeRWXOHM- zjkta&qb8`IC8D1lqMsFlvq5Op7_3Nf7ziC3!~DcUP+oEcr+tvqSSUE&gKBUE=Xp?1 zuHXO{`5;rKQ+VJu3u{UAsN;!%gBA3X8uWu1^n)1mgBRS@^9}+G5&FRg8tMlp z=m#ZaYkZ(x?)0ReeV`w8pdW3ZA7!8)U7#OTpr1^jpG2UaJfNR6pr0&&lLV9|(hm;M z4+_u^2Ea;8ou2eJ|LZUM*I(?fzsO&Ialihee*L}t`g{2G_wMWO+1KBzufIlLe{H`0 zntc7W_;?MzIz4Icy*KEuxz}H7ufN7#e{H?~ntJ`M^!i)q^|#LJZ<*KMDqq$?Z2|qI z@hzJ*tLI&zW&17_y{iRQsa7S>KqV$Icji+VlR&Y;*cUf2LrpyB^Jjg0K3S6@C$X{x zmSRIlWnPb?1)S;MPiHzUpyQm`IZ&(dvYRj1hKkCfL zXEc>FAHM6%u$Q!pGlx40TJD#Y(9_ARln_XNPiEdIwYlUJHq54*cBYp5B$QbwE!a-y z8}Im2w!(qJYW{)-kL&mcvmXzz#StZ9hZ_WM!8J??4l&r;cZKGDmPhauZ2Q!t=W(n= zS5Kj$8es@N5=V35Cn_%7F`@<>@n@%A@yMhPHa9)qH&I-w^Id&Ke;6`zA zvZ>@e>|zQ|)P4r@b5b_`k%q9k7EPbQD%gmEP^LQVoWc6J`+iU!#qbe?mVx((fujt< zAJk?h^Ai$i^h{Ppm_*V{R#P}e=`-2p!aKEkH$oZs-(njQu8V%;`H2-U@0-O^Dj-6~ zUCfOIj-^4nSfJDL&uZf3!^hJ4U92X%HI^RkVr5z3So&udYtH<}QnTHxIy*j^ChTT| zSommqv77Z{V~0_*J*+nSbr?sMeJqr{ z97Ol`p?ooe$!S0Ap9WL4{j4%e7(h|`k?w?nM4VqakWTDp4cWWi^nE{@&!j#Se}MTi zmnhnO0Od*UOScYizkc+E3vQ|w{X8=K(E52M~gJ5%Oiqv)oX*0lI2vh!#|=A$UCF@)Y8 zWlNk+DtqDhz;8=SN;n3?QLiTtUT*hi-w$HP1v;{+Ifn#X7NGv^%UA6B8cjo zW|bHVqCp%nMg4G^)hqmZoI2!(Vxxxt1$ywI?{9WI!``?R(+=$_yB@b#Aycr4!KnX| zNKW@LvJWRxV~#TuX)MR!MB2)+d?G#J`1gErc>t_8pPD_uh#xhdrar(k%Yyl|`T+}O z%kaz82k7z7@f7-ybz%wgX!S$*7n(=6c-SzP%4VQzs?Mdg8LVuXb92=ahN@twIMg7F z6biOQk=Wwq6|T&sml^1osOjYXh&6Uf(N+`zUMA}I2raVNM4KP6(##=_E#lrjY!Em1JY5P^qV^DNC73{hp%9G3Rf5iU?6!gbMv8(3__yLFNQ1@C*^~lp64i zjV|12fm)^eTFrL(>E}=L?dL3^NFnV+6W==C=nXg9n+s_8M|36bBr86$HigS4 zsqr^r$BF;#@l}#BV-^c2XVTV1ewFZ8$?TmS#7v#3%NYkS2JOMiuLWlu!FcOTXU;f* z3D%h?&J+L>r86TrQxHs?&P?WvGnkZdJut1~&u<>5TtJ=Ho%lBmm@Ak}omtPBLSPKq zg3WIaX9|Py)|q3RaRY-zTxn0SsGDv`=Z0cV$a6fk^c4LIk5qH67*+-bf!R84q*S5tIJWMIN?%}a_ES=-fg zrleSfty@7KIRAbHxtBslS5{KpQer9gcqMh`;WsO3GWJ@S#|la<1^18Pt?80&? zQCh6bW)Zb24gTv=np9e>$1U43mXfD83VcDLFmJIE8!gdvZ?O&=vxL&T zMPGJx2|e=`16etVT*`>`SdAsrri@sPeOgS@IqqCc`^$*cnUqXFmx14^Br5JBR&|Q_ zrr!IiR$NFOeZ;ct-a?w-Bl<955v}q;!3Qs*<2<}-5oP*_cq?f#iN0beo0UZEd_{NG zIf(}QA_FXVR{Dzd3t!o!w%{jiWzf4aAGpiR)5?ndaYDsI)w)~F75DsJ-*fKpV}gw+c&6CJEU{xI)$_o%Q2@LG_oCfqw)<(Y9|IW={nuy_JC_7wnw~s z*YME@;vK$9-P?m-l}<_R#W3b-q!;bc%U#mRu>*R~C7qgatbCECb`V>zNtft+2eCDq zah_bmz^^_>t-{bN*Ur)`jt@`Ji7>GxTY8#oJBrO%{Bdg25$P8^MkbDT4^wJK)MHy3 z{nin^T5Bh{cf#i~2X@ioPUzK3yXbHy)YoAz{n`oXeA`Zeoy7)DM|Y^rSk7?=P3Vk@ zdF~+UEcRg)w^4Ryu@+mql>)ThoCWV_)h{nP_P`07(C-V>eT@Pr!o6vs2CM`Z3Pj%8R5SBex{6&|Uj@DJ9P{Es!~ zWl-*7*@Ag{Z?Q?h-RKy8N)Zpa*8M1^)>!l}A|n(PpVvS|xw*A7f@jpkFv4zVAr7f%g#iZhwhTsplI{`KZjgI)07 zF`Gv0LMuF;O_z3IUif=9z1f9c9X5x&cZ*T%{7jm;TU@|~&mz}77@13EQQ#i5LSh_^ z*@JX~X3!sdkj{YVRBA86&Lav+mE(eb?)>fNT%?|a30?3XDtejl*GWRmy6@0ZCm zWk2GTo9DA%5mwEU1bihUbK_J_p;)_FKdhtW%(1L@vjv7b|X zNwwW8_Zvt}%$OjhK{VKmx#43UI${>Pu`W?mI1T*HzEmd-ms&_aib+Gpvr1A*8YalL z{pe^K=9ty}=*Kk7VcYu=JAwi&=tHfJ;8OJMO;e9xIF0O0sYfu3w)CVwVHYM-oulGl zmKsUxkD@$ZyVFlcF(uCHK@EWz z14=qA&S33*$n}gk#wkoIP{0BoN;)GpXT`kf?itjqr8iYRiv*W>Q)iA5WoXh_jEHF^ zXvbM`8ms6|70-zqSe=q|{hS!U@B)Qz=fr4cUyO#I7sJ^YCpvRp93tYqOe9=n);@GDrhk5QA0Vp;K&s9C366g|b3IR;vBQT)cbX4BG3;v*LK ziDJ^lSSN42F|U21cj;)H{hz7WW#E!8)bKLO?E01ZUq)js`${V=<2KAb(*4U~Z&vXG z1ziz0IT`fIAN)YCu80lT>_5ooDheXLr>R$QrwRO>wqC`k8vFaQYq%l2e?wKSA>HwB zDf}Ahy!<82xQ0Q4ZGnT=FkfHduf)RN$)4&Q5;Vz-IV8hRm}GwZr+5VKuz5>MKjDsY zEQ_2!V{|^vq86V~z)Qc-)X%tVCOlsD1${98F}3)D8_uf7H2e$h@~@uI!Y`QHK0l$| zUvT5<{+Ry!g27qr5moz&xiB?@lE0!nZ|~EIuNaN=kpBECmS@-RlV>(YpYL62mo0W- zC+^awZ1A1$(DiJzQ`8;$l#M?1zD0h2i38aBo0RyM*paooNzebn+?jlxDt{Blu|C&m z(>HM>bH7Gze`65syh6?X#$XM(N{N4C7VB`Cj{YrHD)r^Ewve#3H(_s~{^^#O(topa z&Kz_9HaeXsp5-9-$pZ zV<*=B5ak$+Q=D9ns5J{5dx&P+7^|^5hskVX^ksCIp4u48;&nj8Y=I-pRDt6&Gqtxh z;tL;XG{)B0gw;!>L$=1t%(S24?2Ox(-+uD9H%76h`)Gl^aU9#TmqZ6+XJHj}b1;Um zeS2uFgK-d>xQA>Vjm?VlR~PcXO7~l!VOQDM@jG0~Zi;e5WkYw9+0ochm_iOtMt?SR z7X>*P2e1OWXqA((BdfWS{&0fZ!yOb-0AYDMEiZuZ+3obMfDuoW+sU_}aUlD$mF9C? zvz0y+MBRIDr4VOe>8-Sa<8NE&caDp;P!kulHNFcp#|7aBo9Ph`Puxr;T@m)(Oru?m zqgm%o^vcz^ihbNjGYT1JvGk2(TNwGkD;0&+b}d~mYTUuzuAxcA z(2uLu{GYbY1H7sti{q1*cQFYDLXeOI2th0)LK0~SF|>rDV4)Xjp$Q4FNFvSs!V92u z79@}%gc6jpgaw1RK0#_gsga^0;sOC1AW|iuyPxbibN=J9Pv`q!a)0N{nR2JyxpU{~ z4eUp)&|ig-?H>wt%bM;2*K5o5>6-2quChX1J)Gq23UyjI)q|DGbY3{=eW&%^aQ8A- zY=O>;pz4-Xpbtm5>$*-9=pQ5K_Mb1%QIS-3N3`x1>2BoeqxIBCy6wZXULQ%7wTjlq zBS~*yzV@%>URpSuMqLsaI`gQgu>tgae2tyl4jQf`Ucd1}n zH<#<);;D<^u4V#yf!_k}15VRg<9JD#?aTsi2ObK36x=fx0^T*m0eUwV@I81F@Ro@J z7Sc7l=fKO7_~p$<5F|kmhmzRK z+T^-|&mJb%TcDo_p8SgNSl+-*ZYub&47sif{pH}c@&adEUO9a@G4xn~MuL6VBSP1$eKqw1{PuBvXkuyHLn)yNK$3s5>{4TiJE=V#u z1>5MaLV`Bo7IX%GemQ+M#WrY3%DBD|WRrm10`b&q;I0({I>69O@Ml*E9}b=ePOFnc zVw^aST_Z#DR9?tyu9a|RJ2L&r=ZJF#+xzf;foFramtg8L_=n(haH(+>;DraxrAP5$ z*X;O^bB^H1I=TK#JQV`|)KLK=VJI4W<$B?^>um^rvP}4W*hvD9p|_yyP8d5L`sfRS zUpIrhWIZ@y9Zipt{iaqpba&pwdrWXch{Dd1o3lL7B( zC+@SLr`((0xozel*qcD>(Z)qV|AQlPJs$ii@I2gt*5GZyPkbt%JuT6hzq&vWc1#5K z5Fiu03W^{Um3Sg}^hr^SvqcR~YqvuhI`I+cCre=NU5IJ5ub9PHd`m~U*lg0`+pUJw zH0+|7Z30&jeCao0&uqY_KP$j*{3yH)>;*q0#hLJv@E+j&a}Qk1uG_+GZ`uspuclG- zs0Ik|JOpoClK^W`3@?Mn+!W3~HpDKAIFCT~3E%env!H*suPD9?eGMMyC!pLkNvaxe zLvYzGg4vW)b|v6hd@4D)d`wq%fCq#L|HVjYGd=h|6iqYKptIn)Ka1ii^aVGVbJOUB znsAe8Xb%Ou`;=35d%(k@h12ZCG)+|o z!Mc7T$U(&C!C#~^%h?U0&B^R4h;xqZ(pF8u>ft~sx%vY|KSMlKn>g#+wK-ctjRPru z78FHDjO`HM851Bv(T}kj)47PCGa{HbNEAnacLTo--T);r6cJBH$)O3WanP^j87_v- zBYwl|@e{<*1{gXI zei|H;9Xh05ihATk(fI0dF-&6mLR5*KnH5&&?Im0!6w60rpQ5Zob~& zgn<{oA>4emL3|f@WbQADP;MA6kOCiqD*Iz5q_XO_-ef3u< zpg=l@#khWYa1*DdhYv*I_*Eea5aKb0Q@4!gRU6Ml8_#DFPceec0WagHDROnq|MVd} z_*L)&&@U10QCm+-fT0Mm9|6KJRHTVmodWNBMnDwwzXhKN-UT!Kd*BC91Iz)@6y{-) zb3uJ{iS6jWHFfBdoGyBMQzw3~&q6~IsruOk1w_YQTNA|}7c6=h{>O!n5ylR6bFb=7 z&78Q#>bhhBy@r}k@=!|BzHL9X}P!*%Wzkq%cBJK))1-xjJ*f}k{ zySifxg{wW-{$UL{G$eA4qtA(EHyEl1p0rpDp`29S3I>A-1jB%PH;8D7|@<1C#G@!Y_YZmM%^^{aHd{5B-Z-F zXiae1yL2Xr694R5BJe<-2Kn&40&HdM2L9w+iGaEcIbk|4-};3@(ng3kq?x!nX%^T3ybSKuv{wX+HQFp4-I`n!p9yD7(=X<+zcbd-k? zP>!+3jrKGfcLs)N>%pRDoDTdF;LI~lT;%PYl90nN+=k}HTmtmE>CqG?uG4$yDdHf1 z74j?VBwRD_Dd0^v3P;0K^T6qa%rdga8%PhQ&`{~q-(7@SrIiwVw0MdSj^gBO&J&P; z=z>Be{|P=rYcz4z->^;e)1V&@Zg=VGNiCfQo}T3*E`e4Sv@-Avi`uGkY-lZ3v!TBT z+;@ZV+u(yg7X3@mF9Bb^#PEK~j^w2z;D+YADt!zAve0`C5qs(mcp2IUX5T7+=FeO$ zqF>jqw{ki(K7s^Wd2f<)@oXP2hU_Er7;xI`c&ioN^+}j%3`D{UAz!&n!mR_}0Pee) zX&dosu5fkfRXVETk9V6-<>F+l-6Q7qz}#I9Mw5Pp&u8q!s1l82tbY!*0E@6H6uc$w zwjEXKfqS-yeGf(v6$ioN5LiR4!A~LIc!#XIga3eXP854;6nO2`0_ca1jLRX;!ejNND_`I_M7K5JwuZH1j3;12bX)gV5 z3~&u0c&LUHY05VOZ2Jx)ZhB0g2KqSkOQfe$zrhY4h{m^O^)X2(J+>K_0$%?jT@Ijs z5h$Y05X9kL))#%%8~hw*2phq_q3RGqMXENUCj%c&`drlMll85(RK?K4M?;(gbA=e9 zx`NLK?=eomNbptQvu6sh9ndBdO}J{~Qyx2@pO7v3x+v9&q4z+CQ>po6UzN<-1tY&O zDWnDHG;Q^&0{$Fz-0bZB|2p8br!zH;hP7{Zh`sHirg}lX@v!hQDBGdncJJB?&>v5n zZ)&tpCZM&U6arKQ?}(ac+jcGR?k7dxHl-Nw3S_>P zh*d}MtLRh;#eQYg3j*4a5!9aU$_fPRiv-LdIhS%9pQ^YN;clYs_kw;A_$wC#$c#^^ zf3h9wJbhRO&5YP+y!<4YdIcQp_RVqAO5|%rj&T65AM<180HbIN( zLUJxqyJ0&Ac87qk#2ld~_*n2AXhRt&xoO~A4+y~WoLU5)T4K0Iq0dn(A(&kx0rC*R zyWqERi_^h(gC}nl{YQ|2qu^bU@fOfO3;rF3!EHvL=8*q^fOcSX>PRKh4Y#Hf0wz#@ z!zJ?AWC7;5B>J;G_y?G0wt;?6@MDCmDUJD12HY=eQj6y(baD9q>U- zz000;PDQ!Km+7n#PF#@PB0y8|;t@__2!?DsbbIv85l(!N-6xP+PsfgQng`ka0ZU_b z=13*xd!^_QBI=k(W*Lgl+!9GqLK7$ uTNms1Mmf!0NB8P0#9c+fI(9Vq=~Z+l`$dVmnEb#EUFF%Iz8D(r)cr593NV5I diff --git a/src/onyxlex.c b/src/onyxlex.c index 9546f7bd..ba69632e 100644 --- a/src/onyxlex.c +++ b/src/onyxlex.c @@ -233,6 +233,23 @@ OnyxToken* onyx_get_token(OnyxTokenizer* tokenizer) { goto token_parsed; } + // Hex literal + if (*tokenizer->curr == '0' && *(tokenizer->curr + 1) == 'x' && char_is_num(*(tokenizer->curr + 2))) { + INCREMENT_CURR_TOKEN(tokenizer); + INCREMENT_CURR_TOKEN(tokenizer); + u32 len = 3; + while (char_is_num(*(tokenizer->curr + 1)) || charset_contains("abcdefABCDEF", *(tokenizer->curr + 1))) { + len++; + INCREMENT_CURR_TOKEN(tokenizer); + } + + tk.type = Token_Type_Literal_Numeric; + tk.length = len; + + INCREMENT_CURR_TOKEN(tokenizer); + goto token_parsed; + } + // Number literal if (char_is_num(*tokenizer->curr)) { u32 len = 1; -- 2.25.1