From be318abb2e329574d4e2af606449e0027f8a7db8 Mon Sep 17 00:00:00 2001 From: ValKmjolnir Date: Sun, 27 Nov 2022 23:47:58 +0800 Subject: [PATCH] :zap: change enum tok to enum class tok --- README.md | 2 +- doc/pic/social.png | Bin 0 -> 176854 bytes nasal_lexer.h | 218 ++++++++-------- nasal_parse.h | 627 +++++++++++++++++++++++---------------------- 4 files changed, 427 insertions(+), 420 deletions(-) create mode 100644 doc/pic/social.png diff --git a/README.md b/README.md index 963cb49..2e4a5a5 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# __Nasal Script Language__ +# __Nasal Script__ diff --git a/doc/pic/social.png b/doc/pic/social.png new file mode 100644 index 0000000000000000000000000000000000000000..ddb9911026e89939d53956ca88514b04f24188fb GIT binary patch literal 176854 zcmZU*1yGdV`#uavmvnb8Eggb1EU|Qhw3KuSf;7?%l1eX2NlQuR64E80q@+bCs2~4l z@%x*3XWnPVaTc9@&biMW*L~gBAwdtOPJ~Z~kA{Xu1l3S6Ktsd6kA{ZPii-h$B4v8# z2KB^Nh=)*r(8s*09nsMKRzg)2 zjh;L_eH+~BVQ%~(?WgC5AFsnN9|kPe#tmk(Sv(-s*HEzI;9;dxq#<*NG*Dw@BSR;3 z#Ux}`z+lBrNsZ7Ew#6Z1K_ud;j9}vP)Pxyd-u&?VAldiM{6nzG*&AIy-Edve2jQnp z%T|8VZCA%XdVZb$643QtPx89X^$Ol0fAzEe!%e*vUNomv>aJAkLUyD1ScJnyML z#c{}}@-eQuk=cfiMdIEr6i3i=13$=}6AqqE3*ZENeH zrKP2{^(H=vRKW2fd)ocxo}M1s^iXH#F%gauA(1}?j7(Nb>d)^o_ud@W-er)A5KmqZ zdi(aRoSa;4JsX{vU(sm4_uQdfhs%Xo6xhM8lup8xXYo}B{)YisBBDE_cYUGRj_aul zGA@U4&hH6}rIYgqH)L=3@Fd|~G>>C$UTA?VI!1-BfFpjf%dpB?PZSS6vcWyZh-0D$ zGs+Vi8qw&_!Ci92@$2U128l$juhXG>n$Pg>8_ea?Ife=D8TXTlX_%Ut+So9sNJvSo zE-bXPwu(tgzUl0Q#IA;vZZB{=r*#ZDOwb*kSzV=(0ROc~EwGcqsZnIZbxGc(#0A5B zcNQ41Eae#}uYUOOKunCH*yR2D_w?u(BDgNRANQI&JEdi1 z3;it+9*P35RNj^txoU1LEve=`vazzVGB;PO=Vpn{*@o3#MWUns8g$RHH5l_@81pHh zObzM{3X;0$9z`=P{uw4L<)O^5MfaZT?0!d(jyG_K0=d>8k0KLb$oXvHSpJBS*D6#B zR0dcOcC-8G1|~EvYLS?XuD(vm1O5H|U%v{kBqw}~GQaDHocSS>mu2tnt_9=6;KJvy zl#fd1!aCw8e35H|_xSN+|A2tYA3uIvUP9|{jU}wIb9gV~-$6sA)}6k-?e>dzzUfJ) zYa&ctXckVUU9$Kf)+10lGU!LpTtfgrxw&KD)9aDJ4Z?6JAUBrR9oMdzFwX2w02(4%v>OhRx6pB3^$a z{ou+iRe@Ltu+_5DOkJQ7uE;9itYD1G4Urp_^hLl~#GgVqbF29o8=nySdZPs<=4sw2 za@^}SwcuK+z{=G@km_Y_a9UeiTV)7=M?hf0p$$BY>CF@j1x{gMVICeHPEM+yYp$=a z!3j6C7SaiO;KBCqNb!n)tK6R_ZFht->IV@7 z$Q<@lu}-uy!Y`pIS1_h6H=LK-^wQI!^)}3K<5ADqiCPF88|p$PP^Qd6@v~zW%7dS8 z-`qCOgF%~3QUUGH9O^<+wgI~VgXQGpTwVqYHt89Zn`$k~ zOsjVz*t1pVtXx(<)*ye@_{Xk_gH7DIa|c8vAhIt4`L#>SXlaNh)(B*N1ss?X=~ z`0-&_?G(Ikc_l$DjdHkwLd^PM)DZF+W%Wa}GF(?bmShNFLFu4FImzc%x8OtH6ugwX zSu(fjQ*3zJ0xqL~k$c(-@qcq;T`b5y?X#ZIv3%`Cl9W zW-Q=e^cwqHu)Y|>H<+d=kiOemuTe9%2;5_Hb2H{%>{>RKxgcqfMcaMrwnm8dtQn~Qgq@<3;#dn%m}bL=DRG3F{uv*pw8K4qzdL;k+PuD)~!=@xF>T*sfG zWL~C|WCIm3UBrY|_uXe9uC-fr}WmO@U9FJHp5QhpI! zs&{tWECf{r##NnN7-ZP5HLz6`&GnSy=~kqUeKTf0e*F0LYh#g#yb8M;PB4OHzg06( z=b^oB01j9?7dQ8hFCTQ>Yx_uQ3S$=2(GVsH^WJb{ck)Leu>>i%Ddtk4yJhy85ZAJK zL9jXr%X+HRO1(KgQ~SNoIz@_~fd5B_hr^HN3~c8^lpq$t{VJR!emM^(D%6KmOv^Yx zFb_EA+$*~x9nZM9x*`S-Az@=#Cfx?3X-DNO`a~p0`m9(p%NP7FzX*wlQj(KN6rvb( zjLWkUrYn2X$J|6iXA>0+SQF@k7k1X#&%S*5LNM!;m6atbDtcjCCEB}hsaFy$;#ptk zp!J8-utqJRW1%K?PQzf#-SL0btEG`=G=4H!Qq*Fk+UwtDDO&Nw9ywK4QIFSJIV~BQ_wSh6yY5TX;~r8G zGs^gX-C(9sp-<>lq))6&zk^QTcR&t{C_Gmc9&ggo7EN(^(P(i$x`5l9AEY1;8N zgI=Y3lTDHYIonOZ+?DRuSe};&QsoZ#$lMvdZ>TU?d=SMcMHH@GPLUXmpJ@0X*U~t< zlKBoab8y2bvPjAJEcq`asW(YXUcUG3Tb*p9?4ZEFy~xZjccMgVaIlu{Z$v6mNo#@# z!@%KdXAsTITT_qg6nufDx;%vWvZpLwI5T zBdnHc^yUNn70QcG#fyeS)W0ZzKKZC}p;%i#9DY}&T0XJbA}5oD-^cj9MERQGxIi zUh_g!5g$V^d5rm}V@o)FcwxyHlHQ;l$oJ%pOe$`Y)u`-8!*bl#)k5!;@`>t4e2czFoYBDA$j^>AYmvvpnW(B+c_kE7e5&D=GaVBmGzhd@z z7Z@qM6!!4tI-Oy)FHirLb^}Q5)$?sM8t3lur^q=65E7__4OS&5r!x;S=fh5=_~Nhj zdIu+_r1|@aPH%}S$cou!t*p@tK)rsOzL0puFs1Yw(dJaz0CLZz?M2Me#0Ou0V7ekX z7N)i#$V{m5pjZ)Aq+rsYJQbx&NM8G{zr<9ml&qK{{{XaPG{HR{dZKpegs|jmNk?YV z3)q_@j2`w$og5v_{gMSwzOGqp8Xwf|LvL8vcKFhW=~EJe`$3@dc)@RZut(%Y9pWeZqs@|tbi0l+F9sh z1Nc&WnsyT(JI6I-(#JqpJo9{{0*0|nw66XzXOy4)n4s~=wI0;Gy19Kj@O7g?YrIos zO=ksmNH@NOghcvXLc)t!-LR8Hm8!tNz}f6EH`!3}q8<(>HD@#(7Sr(XKG}NB$XqKM zo0SJ76?U$6>!NEFWwHeI>q|>c`6p?>+Xz#brrj{O0&XEAYvc9$+O$our;Z2?g5RI* zu7r$(C(qsWA)q6eU-o372ViaQ2;Z)s}E z_>B`a=UT~y)yB(+KH!maL@{X<4yv=J%Z5vcJB|6j&gzo;^Wb{C&T%X8@xW@rM;zWU zNa{hnP*|nH?yO3y@f`~&R;)at#?a^!Z^}4^*?qlnk<2OHqOb}g-h8w}>hO>SXBQWj z$BzmBv_*)Nkw121NhA%{EsIUA|EesZM<&C=XG~jc<#K+B7MU$c;-VZ}w^#wP3}!ly z*Bwxp`7-i1?1q2V`JvnkduXQC+RRxhOQv4=RI%ZB*!$)8J2|@)>@bFDx-6ONl6n`m zg4!(tEh1UffH=2fegfNX3apbF)zU1~8tGnMUe3Kvlq@pf6vf3=ZG(e@0|Ih><@n(z zG;7Q=KC6k-6T(4At-To2B(v7{`>s?tDP3)2HE-f3rl?he$U?VR6TU($D39BO3I4SRM>)@7%Za3i)n9TxEajQkH#eknl~|wBP(+@8Rj~vOCQ6_ztmI^TP0~PA4Pv zJYQ;xCu)5QWRsyn?(;EC5w#(ysIuN)qQd=03#CnEZ4Oq^GCf zOG(YFKxl+cYpSqsqT}f-P2lJdeg6|_kt}igg_=R$zgpGpz1nj(2kUam>X~d-!6$(2Q4OSdv=oVSq1>3c_Xj{h4xXQqd zt6&34NZ5Qa2Oc^dFKr6Tm!qSjyR$EEn#s_wUn(vnWFvxoy9;Cz~1pMEY9Q6#V1l`YDK=w#0`OG&=1$28!}ke}4U7mJfaM=#iTK z+sz@$kf%@e4M~xFfrAgowb?qSMx%<@9>@G;sL+yOHzh>T(nLX!Zg7xe&z(w+8wK>BtcnB=&?!juOM5tM;vbF{^zMdKF zw?<8wL6aG>usMv1DW?N0STih-3)~wzuMY}!i=zAUEL z4wrbOAl~_WRGQBwL*A-`9dG_LzYA||nJV(_wMeIRY z?7p0K)U4PQMUch6uHwkMVaZ2_k zXJubABt?B=oK&Y+Ux!6h3%#36;}bboGsOUsdmXRs!F;ia&VJ*VSe5`3q5T;7HJ)DmC)F&dsjLtlM%cFd^ESItgnb z{l&BMoNWvt-AiVo?NHDl7g*c#Mu7%u^n$lY{RsAo|HwT}rk}>$k=dbd=|NT)JAE$5=NTkX$}cd?#>oBJ;Cp%!lp{Ini(Pa=KQy%eF{{AswMKU43nBZFhI~ zn>RtBp}$v~99FD@HV2|{0Q^gztpRAEu&@v$(36vs|D5>7KADM@)4?y}Bz!q!GeG70Lam@Yvk86p_q{*%mnuK+fa&UzZ?3H=mIAO`Tk8&h z45vb18H*vzc?VW|pd=~{d-9K1FyulAP)e!6Ve>GDk~P=AMnSk=D8^hlw7d4S#Sn(_ zZWA|ccD`$M3o`k%=;%qN=xRnwJ=mNShZmQZL_|b7+S&}Vfv3l{uV21=$wWgl`!pO? zS0yARU%Ys+-^!*1cv;_;eSeN#BXMe<;2pPr6cJM87oy!rv4iRPGdOPkSRMaFZ~POu z6l^G7R6i@DmQ%{9EEh9r1$`||&UmHSO{uw^i+8Fw3`Gn8`vFuwHZ}&lb^?Vf7ZyY% zB$nU5?`~?k2M!95qa7U`&CQuVK1JrgYq3e-lsb#=b6v6$c8DEeL3M8Zh>HxJu%PFq%Y<3X=}I|nWSHGIUSVY{ZF7r=U&o*{ z(b3V-(6DrY$Z2jS>uZM{g9KEm^+M35x2LPCtG#`Bb2Ej@+)?xN^t7apl7%JB*!n$k z%@RN!D;JUI|E&OLrmiUD(#Pt9?vKP(f{@QqU&Xf5$WvP+hare-7Xx@G-E8KnDXHC3 z-EK3&5-rIzl9tyNIghbXAn!5~01)!CXU_rx0-ioC>aFeeS6kW=N#OkB8nxkD^`kit@MucsUya#KRwIHI&7;dp>v}%qC*i zgFmI`3gc@4yfX+y5RP39b#?sw{8nB5P^Mad+?SS?zV7zbmzI`(`}PfVlr5C2Yiq18 zo;|3i^<8J|&G;ypcwrRUpFjS2) zWIHX)S8qCHt{fmM3Q>}+-5;9R$M2zLfJ0{;lg}5qA6?ES+YQ}IGoCJ_h%S9ix7}o* zSccqbY&;P*qLpl@AgcDl5*oeYxN-kFg(>S7a@*99Z4sm{+!vOtkJt2=a#Lw2{dQ8Jj*rjv7O z)m1dW+`(`{PR&qb;qLzc9x+0Pe2{hdZpmeA;MJp`B9lnkf}%#QfEqO-%QUW>{kQohBuvVH9X@evTSN!oDabOx&w6Q1)m_Hmlsx^S%69i4w*pNjFGs#M@Q9t|$Lm>j&SdLUM^d$$!6 zfj7AXcC9xQHR6u{h)8l_M-|6>B(5l1x`nywEHKN2!lV{EK-fx{+Ij$BJtp9;Jsw?$k!#2}I zYuyQ0&g@`o3+mk@Q+n|W%iNFaOE_KMHIh>L_ZlVhJImCuT31Ewq!<~p1qX?9GD7lr zB2;Jvn9^k-j}%c|bx3ecZ7tukD!1U^>+k!MAUkzD`NkG`eI3jJ!uLBA%1w84cE(8P z9~9)kv25Z7Be*>QQT+eUTCCbk@wNPpu{}Odf0nApO52%mbvJ;!9j`Q|d=b&qPoN;; zs>eM&b;IxU6sRn5^KN@$%N<%QSMAKw1I85(9_ZSFzR=&_$c=!2!1>)vxv-my{fPS} zmTN0*7360ZKYpZPf?x=BYZcq_c#6FMUC4<@K&7TJyv7G^FBa8kn;hY4vlaQ=X?)*+ z3s6PTB4d`OF7Ygt!4fW8diZ#W`5$6Es-~(6#CV_Z3J0(-|8mmdQ)7*TPoH#gz^;WQ zCE*nyH-X6o1*RKKsU~Qo0c{Pk115Mg`sdbl`aDsKn*L8|D7eD$&AR#CaNt%D=hkWJ zf|9W1kiDz!!L8d(W}2PHT?$Te%G6K&&BnrmS_xTqUG(3%TO<>3yfcyn9spyiG8B-l z$FsAu7Z(=*!s_a#QGRR{0dEoY*S@GkqVhf_z5Q^|#7!v`mD?u@)N9Cw&Fd1TfP+~m zydUM9QxR8syF4yPz|I*xQd=Hkm``1cL3Nj8Q?n6dSwIs42B4?s{(}eMpEo)U;jp9U zks)J=M%OiLdxN<3>tJpLx?eG|#m!BRP8vG%z$` z;u}O5IiU|8rgzcGdvXRD|Cak0c*RW2Rca6F5@3!Q2}p8v;7dO6rLF#pg~!^{w;1h6 zVU;LgS(_;~EU8Xi zuX2Xdq*ul1sKOwjiUZWR!fkj|J~Pq7>okn=1x+ybmHU{v13WYV<;3rd4=qQD&E#6{=Y135NJXDZ)-j03n=H2 ziS%w4gHygQ`|8mYve*c5+52fotY8ngq*h}2VtTdaV)xa-{Qqjx_IIi`gdg$>WhXCM zW!uLz2O68ye?LCOtUx0}N>gUcvau#sX_o?z>g?(Qyp=cwZWoMTw>KCSe?D|LW17T> zqV=RAr(*os>z8plN`_x*=iK1S({*4l%k2kv2fenj zdVN&M`m4A++HO-jtzx}j|233Sna)8!ESE^yYNTt)p2*6=YKJJ6Pp^(P%7!mH2jtBD zjI&Y)H012V?wJ zZG72$M)SfvU^W$pUGF}X`h)_e@PWpYrXOdMJHKq}zs3a=UB%JXyMAuzzE|C54%@G~ z=SpeosLO-~A*kV(w5T?AUyLp;F0NO&Fp&000RHfNx$e=+tJ}IszIw#=ICLF7_Dl3q z2^Zy7W9q`_FzTz&IV>%SJn@XvTi1Rv)iql!-KV?f>gwp(O)S}+HL`0Az=CwL4KObBJst zS&oB0s1<;Exr07N)tYcjtL&&f@M1Zjc0e})(27mO;^YgVR}aFU0buO{I97kq$E>WZ>^E6h zSPXXfLY7>40gh+cv0}5m?PFYpS{KmA^co%q4`vpNlpZa5Q5a^huMob&DHrDxD*DI+1yt$egdByZQb5_s&jP z=tHXvfGd%vSheW;7!;XRMUVQ6O^Dcn{^2v(0c`jkW|FHv4Ixqz)p7wbXsEY3cMe1+6FME9K3Q8LJJ&1>|6MCvPJd^n+XujC%{@ z8@^bAxF=Oh_4e@rJww^yB){ofHuY6kGO%Y{F~310Uw95U`2`b~H1cmfTC17Gnfmlx z`cIYaD@6dTyztN^O7z3N^0$dCG#6)!LW$SL?qBTg8Wd?#bLKW!4f>j_(}`rR)oOMJ zL8y5f(jj;QJCRmS7_!^U1jkv%fS5dO?CoXh8*h-T&wcSCp$ySub=3R$^JgQ{nJo~4 zUFGJ(F^eh~THYW#6j7O=;qZQ2b-KNOjgMY$UToYKy40eeiGi6jhO8?lkAZLbMZp3szk_(PZbZdY`I zEf?00mIOZvBA9t!d@G;V>7w80Rx9?!)8fl=;S~+l>JD1Uw+g<@!ABUO_MYvVOqQF( z>l#!2OoAtk((bw@LU;uPNP!Pp8-( zmAi^$ZFXb}fedh+rim}_2vRB!JW?}U8cigU%A*Xj%>>_G-OU3BmxsYm^%v|dXcaf-iqMl} zQ4N9n;B|6VQR7jjA=;V1krX4$7s5iA`*D$cJs*2zvcApjYBkMH;Po$iSg|1| zzLub-h*!riq*ouE;XN;2Q!x!R?E+QQo2wM6zN;DQA@yT1`7^O5On%bjJ{(!!*x(>A zRbXoQG<~uN3h5GcT=M~8-Yw;8K~nrKQyq$8d-1A?u%`2V>tmA{`ZB;pH3YDFamC_7 z#JUL+3uyRZ2iV9DD%o1YJuw2EY&G{{XwFj*_S&Yr@vly1}2ba@uFoc@OYGi8g z=%~IK`~v32>swn~kn>Dq1uqLIc?)u63BmWdwT8WbDWBHxGVvpd>3pi;rhcwdkFgln zL_1(P?;}GcfMG!r3UQ%vJ71T0daAxA=DMk;xW5(EJRG8Q6r2oTpvS>9s=$uY$q zK+TYIdR=q0r}w6wh05V87O-F`aG(F`|Jbn8MJXRf8DQU!U{s8;-*tGupfNW*X(5HHfcVfCs8X?B+p6y zZcu6TkQNijwknqvT`4(9Iibw4xcYCsDviW;#j^$w^eK53j08ibKzE0F1*U}1j2**w zl>-v$RHt4<4zY*RG<7`DEe{}rR&_rqLI9_?TB2z6XPa9f|M;V!n|oBInh6zg@5SwN zKtaK<8m}=e1HhG%pWVgXM#u%v*`7xnO34^Sx?u(h?Zv>0u!w!56 zBK|@{-3>5NM>!Q;F{5aB8nIEJ@R{QdR7S$q9LHzOXPwZ-=m&|wc$-IH0FT%s4|u%U zPQys4-WMVslPZi!q}E7gFkbbHUYBBi6x-73L`X?H*(?1Ilwxyfy}TJK=lf!4z{HFmj9 z)^dT~x3Po~Qi&A4jDmFE3a%Wn1$4riczpgWIj{OMMG9?y&eFZHEZlMsCUyqu<6g$O zeNc0Nhxcj|S*9#w3{8*4$7E=+ecZm^?lP;qSSvgStLzyU-wQ|jn|pw_$4z^aukH`F z8PmbP;;ooF9TLPd>aef1W{5OsKwDD3iu8^iYw;A$Elf;Yb+OXPu9p6Od{Xqr3cmHz zr{>Cq=gWj+ASwqU27v9VbdCfILdjkk^N$)&roOl(Q&z2l!SB8mL>_I}^ za|4}ttF20nVgSAYl?8BTWNN0_BAWS&U>Sga2P+vEP{hy-pwl*veg`dWV!DU81y|_n zg*%bS5gds!syvG(WTU7tuAO2$UtA+5JhGw-jlUGXw{025XDpIT{a(driAEaWOy_{DSDf!t`fa_ zktK)ZEjCeli;yVsBFW-iDbD^Kk{1LR7Wc}AT{-e&W#4199b?gE>ofpHpm~gUB!sG_ zg2KMzo^C<+at*(KU;axCF-9^L{D~-zWV_ARBG`9mMWpWlSt+hQOAnCjaHNwuMQTG6 z?lznhBl7d}+0|3Eb#=9ZU0q!P+v?-v0}STpM;?nBn<#{bKTxYUIK{hUykNvyP+nk} zA;0Yll%>j!>Z)9%#+^_Ly_>lbBOM{y}iBv{`>-Lcx4ZOa!h7;C2RC7?8v5&Ujx z&>}&b@kHPS()UdB`!cTK-^D-2y)k9b&g|IlSI>n?PzqXsW59XVzkUrwk4KEP(`X*5 zZu26hWi+%jG>6B>_*|k}Jam45hWXHnA4fzeh&5h`ZAxYCcZKiuhpwOHQJhMsHVSAw zP4dt%*FL7;^4t$D2cJ6|RXAQ@{3f-%3k{5EjN#Q-t1Ah2iUf+nM2JBp*Pa-PKe`K$ zvLJYbgeC(ho2DvD`Ne-&jugPl5bt#}H2*ArC8IhVg;!Mp1(%q#G=y=j;yY+EUKSTy zo12>huUlQ6WgH>PI;;fB^q?SeFmk@=en4lEi{-%!yoYqeB zyKv)EEOO4zFVG|_jY!K4(C|2^O|1i#h$J`qm&7mthn9wQaBz^Dn`>ffy89M$=n*Y0 zAtB+cKg-{2iWmk1B+c4P*Lg*`f`-pk^4MKx*og3Q{#~mugGrHUKo zcI2SAiLnXABbf~% zGec69>BI#Y(9~P(6ku@qqDu755Hh0=L`eXHs1A68xD`$)jlLyLNFHD0$)UPe4eT)M;-D!^$~hyS+f;vEH33x4lkm>e1V9NCkU(XG*Sq*Y-Z*g!fD zIN2IoF5&LMo^estTbcsqawqXANh8rU%m|b2xrt^w&66bQ)D}KFpEevXOWDwgO?Q`2 zFj&*nxnW!9e;b~|c|gW_fR*hqnis2(O`iL{5)OxhTmek!?p`bV`_K!BWSpF^7|Xx} z_c<|R7Z8u3=B{A4a`8O8E9hf?qysR4d}tnz+a4&S)|QrrimG~yfle#!i84x_?5v*_ zXJ_?7aWn@fCZN288|;ssKYtD;+Im@v7Pbx!(Uu>tKo_3@WJ&tOvG-H)%P9VoD`4Ds zlxRx}#QZSd7rsYxF(o&Re>)L{6(`WA6T3wK#oGjqN2Qu!5}pE+~JBpsw~ z7??mFa=D;7SQEWr21Xh{I6K_rFqZDkzLD{alvZ2b&d)EadsdFjgj4~I-KxGKB5{a| zii?Y@QAj7>*8(@l!Wib8`LCBcj%FNah#}$uq$Jh)Z~=tCQo>Z6I`1Wb#9Bc(_4H_yeUFTcoS2vZTAR5!eQi7PJpr~|lyLSvdJer}CqKU>M$9)s zHVPdlVrKdKqN2(p5%i_&i&?zrmmt5Wr(y(b;n~#ee2y?OSL4wrb4mwg#)nhWttxNU z6ThV7#Uc;JhT_D8Jsp#NVkNi3rrq9Xlkt?EZ2 zt2z^J5un-Hd9qaikuT*>bWY%T-5>Jyu3QZC~qCWIC*NGx^9;4oD2``e;*Jmd zujW_MUkHSFCMv~+g(GG_p#}4w?)LUL;(|2!n?r{*x%RFuUiCC2z65U!TVwjuXe-i3 zztu`TeP03Mkvs>ESAE9~WE&nZQ8%z_;NfZWACD^j*s?y69pvO5@!RCk3>zK*)Pwsj zOc?*}Lcj!Uo#&*5n9wtR1{yM~Yo=6Dk>`TbGZgW`x^k)ruC{^OnoA^kHS<(sR8y`@ zakfaGwaeLwBFM{kcXxlGJPs&ZZbq25^$2R?vb$SeNvnHEg&w-u+Jedo(C0Zg6gaGy zO@WL|x*pK8fn>}=FCZNF*{TOuzMgt*N;HbiU0s@Fl=R5|loiT2^sl$R!t(E%d|TE; zcWO@0hdCO6MDlH@GaIB-zC4+s!KC8?NRxWNYe}MpGT9s~itl z`tU)Q-oD3b5|#zDikh~>j*lJ&I{oXTjPP+FXZ$78s%Fhuch|X>?8VBNp^Re?>SZFT z^u-Wxo8}bakNF4OK=1&LZrW$=)@W>1ljBb)n1M-ZPfH6sPSzgi-VC_J zo&13C!p_bPO!}TZdwDX_e|`Q*2#7yAI;xGzKFt)fceS>VlF(-xV4@q12*G#VoR2o>p08PYpWc7EIb zInvHp>3Nx13Lc!T)XI^h2p zDSU&up`7!i2J8yCxS8O76aeO1UqvMwd@U4Bf2KVVVRPr><2y(1YH2W;OYwf zYnlEPh*&gIUYkc2$tOPYYzuYdHX2AD&Lrnacwagj`SruyPIV^)wsd_5xVcnWjqch2 zy7va&O;^>PPrzpYCjR)F;$0QyZ>csu8T8r_1-QX&*<{Wo{Yu$^&`VoYvcUC;j=#QPPZz<_{QT`wp3q?b?OIjobd+TlA71ddH3+XTkf$U_5e`4Kq< zbs1s<(z0jOyu>=gtgGvja$%{vMnts@CX_ajg*XA4rnv<|mp*?59BE^b?RhTJO0BaU z$a*#20?h5h!@~@A^(r_VOw_>`pnSp2-F-5-4U(e&>Kq>+%p_(Xr@gkGqa3(V*3*0=)kIEkaxd9>YV1}&f02s;xYqIufi>`>V?9=DI^TiMEi^paYD7p=cV8*Nc zY7`>joZuMLqy+xR&dv@J21wI4GC5nhN`?(`YiWIHhE$2~2|w4=qaiSg&F&3Oxa17e zFB(6>L%Yn+%UkUW|GT)j2$UgUhhM*b?e9l}f@>8N9F0_W7FpRkU1jUzWb2VE(lKw){nqS)kMNfTQ zU0p+i=i|qxm_b0t%5P;=sNM?6@~Sa~Loo?!m_ z$(3l#cs95uX!@i9cKi8LD&XYHm)Fn7G^=MdiZy-cZtb1=jQIyxIgE4_BK0aVFoolk zr8j{haty>C z)d%TFX8P-711YJq3X#-&RtYZGpa`$8uh8!@-G8z(oB)~~(9r`31F<~do8*+G-TyN{ zhp6$c>p{s~L0@cUHXb_8`wQ>tFqbVo8Q+{|B|ug1IQ@MzSqvr*L|2C|i=-I-2<09Qc4osgJ@NSU+Dk*BYW zj9GH%+RHDV#Z&;#?e3N}+~ms&R9((~3)Gjkwx}E3fGS`n04nhNz+Rx;1vg>efEiUs zM;?EaChzN*!?d(CT^*fLZQiye>k5mz?7;d~l7r#&{GVIdUMI6843gpLKD?-#mBcQE8f5}^f`PgSgyW)phS5Sk3J&MH zK%v{Unuet?yR|gFKF&p4LgX_Z?!K^?CJacKF!mMJbA20|S5~kHl}cR70b|UeH2REP zH7elDj~+cjVOnWvX(}2x_qIXU1FKzWFq>WcVm1WP|%zZ^6DA z8@<2nsA}7JhlN?cauB+3%ZcCCUTTr#geKC0t|E$*eLXCrfv!+)Q}t3Xq;sF@i! zNx2KTUV>WY!@!-s&J{tPm+A!bapCil0R^0R688k^7L2YHSb%mDzm;Lb#s9m_=KAQH zFlM6MuzrI9D}wMI1lfsn5SNju`5X0I&yyOXEB26*EwR^A4^uMxR;CIByCKu!D-2TJ zwjm*OhK~6_JqEnP!b0=U{q&wq)BmdV{)XLUh0derba!^5G(IiP?;iF%@d1I*%Sz~p zlL_NI?KyZ)svlzh|ma0dWV&=X0fp8E9*l2|VUibyI&Z ztKY>EP|p-ei#~Xerc=lHz@<_%$_-cFx7E29bOlKA?y+DXZ@}0vE%`EsR^o8{2<= zpT9p#-Q;dx(hyb=1+F5NReV%Omblb8no?;I+c+KLF~6c?Vq&7FFDxozpruu$m0meJ zJ3D-vsOCt*!ObhZEUX$>2TkFV`M!x_=NcL`X`z5X;GCJ7Vz~dr8`z{Qf$enWS(Mxe zfRdps*Qq&`P8rO+WG7WMRGK=h`y99dvJ*zCv7fEqyneIP@dA+M90q|!R-iEPThl{zvoFr1#87}Bsu zpj0V<_^7O`)H{7+z~)8)F2I!nVnClqX3l{!g&Qhek7idL4>5dyn44)uNj_qjrNJFl zL;n* z9s?^syM-m2PsTkW=hynob3%wqX6^E2TXQFbRMw*m1|!bvWFVPOW03X*SMWfK*xM`5 zFwT7}3o@@pdg}7$2(eDq7gu- zR)_UrMn3FY82GgW_V!VHH#MS<2->!;uC9O>;5f_Q!p^FX#7M27=3!z*Pdd!U(MGkp zhP3S4maDgCqW5A@Q4b)UXbLLr%&S*c&{17*E{iA5_H53;k65zOe_q90$J;wDChd>U z*edjiu}DVoORdT{BO$_QP;UFqC%~_C@8?>+{JqD0viYi^K@gH&@x?3!+^>!O`%RLe zmwO4^0BLCvm6QxRn&%ArV)fu|%#;pSzmeC^*Wtb}{i0KcNVa$b`|$9;|Iix{0|Td8 z77?rs`=w#fX@tgDhlpoG!T-8CTl98O3oNb+`Ev+%`yb7qQ0$n&s z+lPO$Eo4{A9x^f^IwVTmGdbPvni$e)h~{i(|n8_yzf7dWd~RDkOV+%bA|CK$}}QbYu@5oE)o? zF{Av|s~*+!0{M~hCMo(wFb9}i;SDA zU10~eqSC*Gkj_5+Mm%N}=)Y%DL_$S~Upc`XaD10$;|0~n9J1MdJym{oG8v;R@!}4Z z17L5b%LQh9Qi)D*QC!NntebI*N_glAmB+^Ttzr%K2WjT)1nf4-3f~_kDs}`EU$epT z(LTIo2Zjl;uYOatgs9yTsbN8gVba&xfL5LAHH72c?_w~)9zTy|_ zXf~n{JFcH-AJV%<*r$h9RfyF7}TFTqR=Z-R+K1 zPH~+jL{(uexiI!Xzr7hRskGg!=6`eS=i%f?A-{rpU@XTfLvfvdRhE1Zo`Jx zhVPm%GNCCxc7M~qQ)wD?2$B@7#sf`YMiUhMn+@x-xGsi)n2C_(PMLFX`nUs6LFIIXn9Jn3Aw~Kv@Aj;+t<5gdCrkW-#nBGq|kg=5d-lv;m67 z0GVlPlUgr?AMEe5#{LV})A`;9T?2KDw`y78`FX%X7m>khJ$#DiKT3yjka(Ypv z6TxFhd|k#Uyx7zOU3}ZP9aujBNv!u0K8hR$Vdn7M)h*7k%f+781txftKN>5>iD&WA zIhzyP4Z5XCt zCoW?zFZXUVlpY|IfFCs>fx2whzEcpOIUx~|AlWQ27?0n&^%7%*!*Sf;3$h`K_(f8B zMn;YZvoHtOEIGd@CfrdC(QF+m9QDDmxK9d_r3*O}=2-PFVZtSxyCw2lezGo_uvNTt zukYHZYA8uc($KplLw*Izt%rOsa8W{07GoA3&Ac2v)7noT=+4=slOq#eaUi&VBT7z% zB3`J|f^w7^Qs==-!~6Vq#-2XyawqiAV6Dwd8O-Y?6utMOmfl7vqm&5>G`HBD#ZO1s z-YdN0ak4qB5{mcYNmu3hx_n6%Z1ccWNN!bK+qX+U15+7)dY3RCVNhx0pi#z= zlV_JAy1Z3L(Z&hB65FIJKZKljbTaQ5;~E^Tt~#!L? zXNZ3NJv}Vi1*lusY{Pum)#UT#tNLDG`{e)fkl3p3islMiLSg9cX^EWf5?!o}iC2f+ zyQO>};eR=xKW_QN{RNw0%w*UBzxYk~ zOpV8?d@L{~FTyCf%Nh^NT>5%@??WfRc}m)}`3I|D6r@xfSXCY&uE}wgX!KnSq#pKX z(Q^$_%ZHmM`)(W#6e`?5l6mG#+_AGbSP9gyD%2I=%ghOu+)GfrFI@PL=S6%ck90hC z@fFdY)Agn~Yitrh<~bv8GZ_C+!1>zxCQ-@#+$^vp9dA3y!>^0L!D_^&K{?R`UaQi;`%9o zi9guWmA(YpB+5OapBy0($NV2!#HQP_oC>iY3}LI`5vmjgg2Kh{C6uKn+szl*A=lX) zq4rzf-K~G2n0%1*r6Ol>3x222hCjLZ3mjE{SFq+<4Jiolc>{ zKp2&=|3sZS{#v^K*YKNorWL})N(DVnk~^^5ed#8sSEUgQ@FYZ()9=;`RQx$c^xYH^ z2lnWLi&?|pU3YpH(E345jE@K|?EeHd^-t$o#+uLfLzn|Tf)>rg!vkLA#)I?XgoMRK z+n~#HQ)>&TSfEX0|B?QD{^$PRo>`ujRHNO)mB#{3B}l`3otoVgl2k~1$KQY09Y!S( zzS`VyHexv;KYCO6t+llk;Hr)ed_%#lN<~Cj6F`yB&4a=~)$2(NgD!=tPA*qHf}c=J z%bq|fn$G0AKo+kML-|T~%5dk$VZKN^-6W$XE$H>DY0bX<7S7;Ei}y3U$&hkmG|%&~ zI(2Lv9{b~gXfN*1*5KvVixJ4UfhEU^g|}E(kn%Jl)4l1#y4v9EKN;) z7Gm!rGG%2z#tZHHr%%4n_(BQa=!lD?-Q3uKK{j+WapVMKEYGWCF_HxM>mQ2q=Pr4c z9-&m9ylsr@oiI}v&e3bPC5W{MQxhK;2tEM&yB3NPg|I4lud*VGyrFBm(-@4L7}rkz zHXo&mAdEB|DAz7G&NT{#BKYI=aV68kNMG?kFmhlE?p(x}3JpK3ctaGy{l~Bo+d+h0 ze<~+zZ5p*E3krOAKgKP=YKA+J_z}{Gslh{)??trx21x&zZy6dSP5o* z>A8xHL$0*^D~{>LW!G9%*(^wX@@eNgLl_V&*4p@Ew07+R^4>k=Q{g5_DrBpur)X+M zgt6cmQ4r`)5!XP+y|%fTo|cxDlEP-;D=Ng<(Q+S#YPH2M3JtjoE?uY?stA@WRn1!z zO&4v3QbTC`Vq+uXbg_b8*%h~~jfCEPL5IMZ)%=3&?c^eGmM~u66?pxDp*mqwC~Q(E z$#OJlm632itD>j$?N4N`oVR@e?S`2+5!wb(n24V#_Qt1?wwy%J?Yx z42LvAqxdrQxcJnshQicb@^x)X|5oic?*7FqiY=nga)g^(aN}^oiAjWCX8s#ftbGZ69`Dm9(3uP zA=p47l6f^q@g_QwIgTb+N>j3K*G%!-W7`;=lvhGh<`Wmxv@}1j4&k)GLqVVglnj0X zq;aWjvzW?3*&qHp!(~jxZ(EAFA5+{{B>SmHM&C1oM12c&ZqQmaxFX)2j{IHy1qNrM z*u_as)ar)v&4d8dC$tl0^YIEqmtREyD;?g#DB;5xR0~CT$sa}&##gzXH^mNA13CON z0e#%<{7K4~Bt7a5WVnHXqIzQKZ(V1T;RP0^4B|W^97m}>OY6(GG-YV$(6xnVw#sh& z)bH1`yF!QfU)yDW{Z3JAC{lpbid`?O3d(AR(ihOO>gwvMDz>}SE28}IMfTo@J@p+_ zrtAikF}70p!sWWQvyZSf-qE)t5%Q23roPySCrWgrX?##qQ2{b6aXGonJ(HKzWLd&| zfHu~Fu@GRl065y%1XbKIDtH&X!Pnt7?dXZ?=5)k?ser^x(jRde6NrTT3`hXfP96z!B`EShh569jPVuo&A;Ei zjN(8ifGQcRNDHc3&|m;4gjk0^rx-oi^&gDHKhX0JLvkH}KM_6BkcChpb|^Kay?%Y~^q0hQ?A+>^h`0LYsQU$$&Tno+fX$w;qhpM5 z{qBqkpQtK<^VwUJBF^pPx8&;aG656CpFf-LuIchpmCANCG{=*sL^x|}_k+>muU{F>9&58PyLFD+%%u*8oXh1~5=)Nl_djdB3jcyVoWOG4`1fd(i_K*~U_}6vN!%xu( z(Je0@dNn=@~7C(QOKU)yA*khAtKff+!VF0GaPFQUah&!&P)r%^9U!@!b6pasQKoT~VcrW-_E_P70>1xTO#RVOgi zAk+ZQE_!IB0bgTe%nKv4D>hNVO(Ox==!*LrpOPY?|9o{0@JVi&B`WZLsIWonIhdqW zmJvtP#GgIo+1Fpao@KY}Bom9P?)T+sn%UO@jovekf&~#~0sOs`2HMW84+~2yWsl5$ zXyBYJXeIAy=q3JDjqBCJ_i*^O^+%=%L;ybadl7deOVx;R#p0hyLwC29>=?h+^uGLU zy*Ys{%HScGqd~HT7I@oF_ml0@w4Z+}9}30JkBDLb`C%U6kOIbPf%W&7)$UCd#gA7o znv|M4k5p6%jJT0)zFw6i4*70;mqQnIU2vBT7qD@LTUe<_lF|P-l52-W3cK0%%zFO? z)8}Xy>4@)%az!i<*53a9h!&+wHz@ik|5Mp%aQd`7{{B9&7h(th1n%gl7V;BjfB8m)<84mp!U z(5mDpIN(^<|ERTAicVfsBi@wuZ2828r|FgUbKu2J{Va0e?w-NMN8b%1Q4Z57B!6;! znx(DH{G=O`zHSb z^7+6}T7mMTFYrjKt@dK=yg0dS%K`i?d&cdyUcpNTCNKF+CzkSW5zySc)SYg0XCwE0 zVYt4Rq5Ms~&DrJ)VEy3?fGw@j{@(E@T%iA7*I1v4>0IYG)pvXRdNO2c`MM)kmICm} z)f5rM^xR>{BCS`%?GsGiW)sCsiMc%^!WbM(U)-ZhJ;#$4Gqy0mAue2sZ1ob0)Zl$+ znv^lzYGS;|&R6KJuZ)Y%t=Q`Sx*SlFbsoO(zLz_932FtjSrgdJJ!P3#}SuewE&`M5<**>39U&lEHDe;o-7cr~f07eEfB zZw#B`J zeTlysq?5@1W))pmv0FNscJ*ChKYn869_S>4>sj!o_$jSz!qwY9xl9^(z~ zv5Ff_U6k1C=9N4AkCuz#FP_w6Elg0SttWaPCH%k*?Zsg}WmaFXDR5#Z-i}O2Ejm#! z!@fQg)aL#tz{L~EEljcWnK{Wk!p5HbN$K6|YXqawQl=e0OLtLvMh0LY%XH`2pVlx+ zFcJRoSrL*f2ymg7GuRH(_L~O*?)dol%1Yt6Ba5kxjkG+=jLOn?MG1|`Xn;Ck@{yue zi0jb*@)Ge1d_(~$|MwLp9s5(?OWypJ=)2y6-Cd7UJkk-<4QZULg^c6Ba;#*IvKYGy?@vs@jWFifX4pguzp`>DFR72_)bK^m$AC}X%!ijdSJi8h~r zI#r#)7&v$zchmm_@fZ*SyT%t1MVPy5_I0Q@E*!zl3-^R+jxovcsq_4c{LxqA**=2Y zpFdkvd}p-`eCwIQC`B)F1sNOF>@xakAnab}h%ok=w>~oEx|HS_ZQ{7muF1=_dy6II zA5?Gtzn@*+@S*M0YGlRy>}0vIP`a4eKD`l8iY zFfvK{L`cNsI9=4|y~lQC0wX5SEF$>fLFvif4L8K3v{Ye2j2Wfk zA=uw(H$L zrUOgYY6=_Z_=Fbivebdcuow3Q9Qm$GB5iDJ@}y4#<@FYO^bC9;Wdjk!4`z_q z@XHJMu4Tcb=j@RJ(z8Wi3NrhQ66IuNHh+Ulg6TuQST~J=-1cz0h^1(42Kcr}^|G}0 z`7QH^vq2iJdj|T#&u#i{6kVdw?KsilFK-2dn*eQVw~L>q5tIRRabM?yccRJ&+?JM5 z(x205*y_e&9890=lZ}r?U=fr@`}mAHJSWzD(jj^Mjz9y9vVsiVD0PhkX34e z8E(3UBSqp)o1yB?cw%u3`BG9EpIXW}Bz%!3c(!3`g-T8d9aKEwy*49`k|X|Y?QeXO zo!vz3jgu-;K3HgZaHjMH>!lZPy0#aUyDydoKVf}1#8)`u*k(7zObc}yGjnD}M$^`( zbqxM-CiE1(B(Q`)HUL9i68cgk#D$LfHPsGTsudA*f|*i;&-1Ig_S!4cqNUaCzQ(D8wliMFo-@J0A`H%uhYk_X<1E;eknJy<)|dIwSdl2L z1P3=X?!+i{u;Pr{VmuLLBJca)7G=p1M=ZCs@K1*8?%|1B0}G+0qmfjOB^G*J;Z+ln zIKT}Bi&`MzMl(r!0YnAAwg&{ueq1=MKd{|0Q6E&VKnkr8qF({g|6JnYp?3Wb>O4xqAdE`e!8^Imdo3R#sLpTrgIVELgYl zU4PqWxa_&8!bVkk#q`R1P#2~uEIXZ2G2c#RrLK4ulFds%(~nmqYQ>W#!|LIAMP+q( z;duJW%GSqR`Y4loop!5_gY9;Abl^E>fKFOeR0M!OuuGxt0F4GC@PhN;_K7tCz-9?f zFsWH-MltnqE`t{P;Xgnh0hOxiLvlsUWEvU#Nb8uN@r>x#s}}FHOw@({qn3B#*>fR` zTYmHkNa-eL=xaOJ)8DDPCQwiFK+slhqFGrT6+sAeBnhABs3;_%oW}~8y>I%@{Hw(k zEbm``%s0GSXi#8OBfKKQux3>z_JZ(*B5}K6w*pZfmkYT-^l;Tc*q*4f>&9M>)VS(N z`4gSGD_o`6^xVLVE;W$i$ORS;Qj+`u+T6;Dd*DBRcaOQ2;J?fL{e68HSpy!1JTP(9 z%1zHJ8R8#iB9NBG!G4xhOxlI?jE&vEsjezoVi9d$HIW)|Y+D$U`XBY2f;*2xAR(=? z+DoQ9+|_iUAi~=P2wf$AWYkg|pOGQFe2Y zKLxXG9sE6B=NSFtOcgOR{UF~<)QMpM0?i1(>k{HAFlj43ei#sN{y(dtfw~fT;LB{G zpXm#W-nnxJ&|juqRD3b2$^{2bwD)fHN<>`a?9+;n zeyouFB!Ns|Ms+;W_Lk%50BW)nKdBI>x?M#(E(dZabT%+oP=hBnmBH^0$)COKBpAM; z`sqWE*#7M+Mhn6HN0)p0ucMhzEvOjF|XzoTKnwk>@K z7}YITpKf!@{bFO&JVv;rQ=N`&yF3CJU#|6BQF=X0K3RItAk$KfCf=EuK>Zdq)uIq_ zT7zWp_H1+J>l0w`L4CB4_Ue!QqZ12X4>PQ}ltUtvDt`AfEdgmk<$9U2Y`qc%6Ze+2 z)UWfOzxq|j4Bu!K6{~Zfs`^~dd!=Eku2wv>Mp4id$B?T}L1kh?_`)X-ji)cbq z7|NHZn`$NjBdhmz=26e~Y2S9Wnq4v4$?OGo;4g%CFk}iwf$g6 z;Mx=rRt4ec-Yp7OwJl34_B>R@2nL=#OH%T2JqKXIIHSYzoczhDl)19SH zNL6v{nDi3~XEd-F^pt9iYG z6eed?l52vcHslqxwKTHfHEiHHRYA&OZ51qRkhdYh1Z25MvP6}~m#MS%E3GTMKH$95 ze9gb=fxWp|-Njgi9EczDrPW2*y3>c6Sr$6KsNft+p&$x(qGv!k6p}4*^d^WV^F$m0 zV%gCVI#aC(K44vDT9_3a7RQLY5;Jn=6D}%`6nJCaksMbV={)g5yAObAm+s*A{UftgYG+5Y7bk&oN1fWWYMpmZCi^5Y}(UU@TM@mXcLV~=37d3h8?pCoE1b877A~yvD zIz00~JX4n9l_bH zgs-Cxz5=N+(LU{Wd-P4bir2v~{)B=OvayJ*MNeO!<;SNlosoYP?-q<(f|_OAIv;*N zwU8U}2-cbXGH)#{Ez?%Fv>$idZPV-6q@E>sqTJU)qUwK$Ps~(SA7`=ZHn6-2aWb?i zd|GP>3E9kSzR(|H?=V_h?)1;Me?Prv!Ocd}{zGbv|E;WR6mg47Ov&ou@#gqdtx~Bl zueUEBG(*3$Wg|9OOP_2>tfOvvpz@;d{9}&Xw*}Q2=FUYCCeR$w($RJ9n_!ua-}^0I z%7cwh2J)QYb>o6H2_|*C(gZ2y4}S5_@wa$P%x91Kyv^W=6BRWr2!pLNi2zaKWLVuFx?Cv^$l9}JX&&Ycd&UhbNNMP5RR8Hr4oSGp!Mq2pEr(1yrmp`y5N zM3#SEU2FOiOathE$^+9!ZjZvc8*)*X!pfiZzByoD&%SaH+ZCL${Tf2?J@<;G7_Iof zpU!3PiMW3uoqdnXw4zybWw+tCX*|leu=BezokdM(JnS z4-u8`DnC~i1)pv1$n|sNLRB8{=PO?GK}~tOv^PTf(T&31{(iZG@kc9U12?xth6&#_GTDZd|_)11HQQA3ad$=Ddy*cW7Eap`*$9tp{8Oitd85FNB7sexXnTd@W~dnnmN86_Wz(RTzhHhJ_lRx9B?K{HLE{>q6!;MhBF}ljl^_ z%3lrKL64Z3nb`~uWf-5j5h9~;^(8|E-$lMpWw2>O>atv;KW9gc;cJI5DAWzh8}$G{guf^f8oNerpVT7p@-l<6BHqQ zEz!cBCzOJpr|zRL-pYcH6s|f@No)?ulaNoI_T zktRz5YRJ)tyg2dTavaB2Z?vG|Y{1$R9{0jd_j6mphoBz{=SA^130mwNwoTj;6qN~~ z(E)Qc7%VW%WnKbVcP2@i%<}{ItvNUYsd;qtz0B@uT`Om!+LB;WKFORiq5I9@+GdC( z#hBzt&+L#y09N^Qem5U|7Fupss#uIiK=#;XR+lDNtZ5qJYv9?s)y2@ero90rQs9m~ zJuL7L#n#ERu{BWFEOB_2Yo#IG{)&E@9%?5tGoFpnB1S%wEGfnm&2{&6F(&h*X}!UB z@ybQ&+WHhIu$9?Y9rZnI{`Bs~ecxX%@vi&*`3muHUEiqF`+d;8qSf&aw9h^%p4K-~ z|B^^oxO-Zu>zvQ5$Nwuzdh0M_`{+76tiHBM)-DCY*Z5b7X2D2 zeV%vhH97{Igors%=^TF-Z*l_}6+k^6WW~5B1ZOrqjPmolT*9)-Hxy~ubn$$I4Uu4| zMO=ExXOK@fl+Xx`;F`#bbdgGMjy3yoqc&k%i$50W=thmS1BE7d_szj~1%L)7Odyf5 z5A=hdk^oW#hFDO{Mw{K{OE>^#E|1=zn9%xv$hS9IKF^*#AsWS^@gRbOlgrN3zsY-Q zF@)s!tk>?L>A)gYKDN)w>Z6LMkuC7klf(05s8hO+mG7=-;rrd9SNI$ySjvC9nA%ry zQ0q!JsLSsl!aq`pKg-YmD8p-9!P;e91K0RJGdRE1q5Qkd{(DU)TPIz{O}qaBFaD9r z9%lI&ascx*r#4m|Q3Cl5&=RE(5-sqgi;RrC0`fs%umKy!KU9h-lzA-e{<9%qio6kT z_{vuECgG=I)bPZLi~Zdt0V(9sU|w*?W_#nBf?;j|`rz4(WsP_}9?iNmc<5q7);w5m zGW?|I6>3z69RF;3TOyr+GIKTasK`)utA3^NdBa;6KnODX3!6Bn;w1)ZiMjQ|L3b zJKop(`-!ZmjXQV($rmhUz~1gv8>E`8_;ntJOpLT#e3V{FjV~IQ0#s;c>&*VsRV8I+ zj`d%DmzcP>=;_#{Nv)t}S^Tv&-(RP-RA@SpR2Tgl1~K{++kVT^g5ZZj{dDA)Kuab2 zox5^TBy0r>)hr&&>G-3JJ|*_$#o0)@PUv+mV~AyCfFL!@yfr*|s}s zR^#M{;^lJSt5>-oBC<%R_p*EwOE|Z2i`Cgn$Pqu26VfR5-}8v;(~iwb0cj9;-LkR> zd8FY@Swo6T;DZEMH*ASZ1Ox%lgu^OB<*v`KxajtWj6@VyMPi+3(_O8L0huqJaTPLbCSmHHaYYQn6koCFLiW17}AJqsrX1 zaUb%Ya;g7^`0>6J|9D{$kv!xr&N0JmeJr~;%34g~i{z*o+6vb;N2@>3p4Mo1W_YJq zz)dq9PDkC8cDhs>Lc;?fDrjettN(VD-7XQUAn{8q#1p-UePB_*gg)c(7&)LWk_k0` zyJEr|f|&W@OM*0mqO8+#A40PKZ-!Y3_ob^&gFYNE5eL|4k2w~FC;^may}bGShqYqpFShT`lZ8t@Tm|y^KkH zDFd&4PR3CG@cDAhM4PzYFF-|RzuwJMg4I$1aIv&>LypwFm2 z)M_{6^6|2gN~i&EeHZAY5HpVEY$^Wvk5r`oo2@;+i7(c^5Eqp*XpGy*Ggk=fFusa` zYx2FM#(O94-b#QO_x6C);toUe4g*kH6I2-6)zgOdgcx_+&CMx3e=a(Hm-6NMkMPU? zj*mZ08v=qD08h)-%u<1Dpqr*p59=L2=8hs?VNp&IW+k z2gKL$*Jx<^GUfVx?u#chu&cX7*$!&bFs}33K6oI1^Re4NW^!`&$EhcuH~-9il!y7(-fyHU~j_qq;}y@%eNc>4$j;ogNi?Y-Z`7PS~Ks$ zG+T}B|0MCYIF`!bT#pP~R!PZDazB8kpT`IU+a>%89r-xl}_zp)!p8E#k4Dr;~*7nJht-aOZf3txX zV@(G&Hv^Bl|4qC1E0M~0K>CM2ph00oxi)S|hnIleJ}51R7(; zb%3~G+Ys24fO=>T?HJzlZ{~R=q$N_yAFp37HVW{KMP?n!npWUC8$Z*DE&6;{SJLOTMorNBVJ9I!cYhd3BY>67`Zn-y>TK&S zdf;vik z)9%&Rz@MIDtFy>eLa1an0xRGfa><_wezVNtihQh@g+_DNmSSV71!QVDWe@#QluFke zgx&y@gIskO$2YB≥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͚rOzU%z||H zSi>A+)NjpG)~lV?p9{cA5+&)Nq-y=L$zy*_dW92t^iWM%i%NQromXmVa*FPnK&gS(NkgW0;6`7AQ-^)dSw$gh`n0N7ln}c3)4wqu!_sIBeGi;IW)Qz; zx|#ZGJH=GyT;h^};qmr%y%h!S$}t%n;tmvX#UIU9M|34To8o%G*PTqvSQ+ATBP1h^ zsgVJA7je_R;|eKK>UMO>7|2SbU;aaOr!q4tvEH~)ji=grq|{1ps5z%=I8w?Zy$}m? zbK}$G(DS?s_oj`zA5r;%1IaUbj=Yh@_{`gFIQ%a?HGaTjcjI*WY~(9S@ba%;$PpHT zenOQ_+5bAnF>*4S>5grBym_c62qTY#D+5xiIumpgzw~SC#HYlJ`twa1b8UPh0=qdt z?*&e1AffN~zL_!|Y>Z?e*_JyneoaUU+LS`C03FC4a-l?Owyz zO<0=Dw@S7^h=3NRhJT1OB6g^%^_Stpo#{Bnw3$RqBq=2BF~a0C#TR)8lpWU14SyU$mUH3myJ)97%nT z|Jb@>GkQU-B-|_32+v6SF+ggT1&AxAEQN7ANfy*D1E110YO6_>b18sGRT;qx=*VHfH4EBugvGmm6-N{ixex@Y=WM+3vTtNn4zd!_!F^(N94Im`7>t z<*ufVWSvD@mQJb8;rUiPiopHzl|ILJdw?imL>=*77X{t;n|45K1K1VLZ5+_>H)-%j zy&Wmn6=GES+V&+wY5f4r5ryDSZ-JXTi z-%elBl$D|S9?h2=x?@sZ3i|82Iz?2kfrfO=)V|H#co}F&{ZqD`$!8hy$Ekjku3qq&qXm31r68InGE?OFL|i zzQmoJD(#(PkmcHdO`1^7yDTQy^0~38!e0*Ozads)D^QQAR^>=5PlR2f;{I0>yNk|A zd9Hs{5$ILV*=|`F6xjtWBRQf|MA+eg9B=l~D?^3@^F?sCo@}wnxF;Mw9tGs)HCdBlo8Kau6j-q z@0YEmOui-+aMSMqx}5k*KnL=ORm0^cbN^0maAcgwMXLaHI9Wgr^&F2tTU77rd zAwHA0p~S$Pq##knnFGJg?%@W!RKX)>m5J-RV8t+S&qyYyg&o%bcE_IW*8lEpKduWhA$& zD!^k>P7Q#J1m|S2YNFT?6^zHXA7W^S?m~=l^hdCtLeBDr7gWHW$9}4v#*oC!zc+XFbOv27OB+%;Hg! z!W*qwLMqPelA|Y?(KmiHkQlkufPO#>1EjO?4dY`zSfgm=^*17^xH7jHXG*L#X0ZoKP^N>pHeJNS&g}CACQD>{|aR zn>H7n#jwJ4YzVKeg+?*i=)FoMbxSf#+u_2r;zwFuC z*3l7%p=pHwW}h)JtnD5itsdLcZO3A#oTsR2O*3@)vjo3f& zF<|QSVXSybIoW{!8V!;8+X!STOC-FM{$-QwK@+)wa005g|>2x0< z;iVYzF6*%p?J5Fp50juIkXk8B=v5;J5H%j~Hund7q=37#fax;~G-ZmWew>P8CYZZp z&41d|^q)^u=N6oFiRTZ#F-mcSPBlI}nZ|M)j9!xpiU{1cw@^0*6wJY~%3ZY#8XM_P zh5j9j+wQ=?r)g(C(xGbFg0T8tJ+z6hIZbn?7Mki;YT=^b2KG;izN_kX?f&e8Q+CQO zyArLH=Seu_!)o2y-8*bhW$RE#h%LO1`749LC_-ESPaC9&q$bBB3Ro=j7)U-B^6f;? zKZT7rnplI`sw)(~zhAFFDt+Rtk7pf9`ezKr;-$%G5)^y2<;rh5j`zYF9U6WCpAeA8 z0|tR^6|>svzcb+0ySEoDZ=M+e!g$b=tvSov87@D8{G-@?Ib&ASY`KX&)%m;h2m&;61!%@HhKS ztn7zzj*S?qI1k*o515g1U^*!s>WNO6W|HGOruZ&;#rd3|vNF1)Ls-_82KM?lc1Lbw0;bO~tP!L4te zb!2|E3AEaWhZ^BJsjhxO7!#LNdB{)VY$~*Ap*n00w#91GJ-&|PIP2-VtUtfa3!$#M^I{-Kderv zfJ3587?-^tUQ0W(EjU@c8#vZ3a2QhkybN34(^4v+ZMqalrSZV?Ng&Su_s<`nZvn#! zDV>U}I@CO`mZTkdlHj>5l^FIn>Qd^z2uqzn&iq61k%9SldW!KnYv8WHOZ=AM4X4jR z|L_oJe!nxxrJ}0$2Tpfk%3-{ex+{U5x=(j zycmzHi;tBFv$3!R)ga~Zv6cOf%Aq!b-pdP-e)l`(;~lE|_VvKFAoYTCt4Q!Sqs5h| zbKHokK$d8ILg5%099YHC2f%t6X6hE%SDHT+*(f+P7&IHn>9HrXpT4h&k;?<8XW}C^ z&mJbnOP8YqWlDia{mid*KL{XGW?>3ahhiH3ZcELoTgN7PJT}^y=pN6y1hPV5SQWGU zm}3}ggYbc)#9U@XJ6DXmQ8z7#NWC;S>S!Rp9yFJj)*X^_&>4`vfB8bRRN9Ve#4WCY zJ-K}?axj#+&kBMAH(m`Ts(96p4Yp%m^g{Iygm4OXmEg2DN$yr(>+$5G##UimU)N1? zykl>s;jld%+h~|Qr$w!I#|&O(zr9U^nFji{K$Sl0sL@~7;E&t^&wBlh*E=lY`QIti z85qj>I^p?np$})>@?M-8hOVcfbN|ZKzDVX6YXWq?f34PgV9aLhq(FUUadA@tkTkXg zICMd;4`%}&ry?%*H%tOM!tzr7egWP<>~7){pSUm|#@(#HD01ZV2N}R>wLLH1U@;Oc zYl<)-VDNk?@e=AN9Qu=EcZ^YLVJpse_hYxW@0&eh!#C#OU)JPx{D`@r>y8J zbaa@E)gu&f!BV`~^L{OUDPPI&OX08+Y=aBkipSFFa+7rB5%D;<*;>jo!4^vkv(WOb zs^H1@LG6OBIuv3|S0>6Lnnue$z-Wh!-E62=gts3MsDXcs&M0ULKZx$$MtJl2QS`bt_O`pK4F@&p(UUVP!gt z_$QUFT&&U3OOM5OpMA^qiu^{^%n*S(HE*YYn2x&ZLr*r~=1MijeVDVsBN*D_O^t-s z1^U}t^o;1?#!%}rkVAcr@^+lqVK$Q5W!z_b@nrhS?v%*&HuftyZmA@$Gf<`8c>NF@wwB zrp$9GCU^{sd?0FNGy7e4e_&ZiCO)szq}SmSP{jb&=!Z}Af?U)#O}tr{B?W^d%m-WY z(elpO^_HlBwa2;pvOXcymjLif^_v{d5wUZd`qYm`p2vjkqHZp+oY{xN)spWDU{s8E zu-ojQ(X&Duv@5dLS^UIJAm}VO0g(zlHMkF^blYpWF5 z2wt(m<$43_R169!MdO&BP`@?v`{-g2@PFWDbAIla6 z;h8p43>xcZkD|#|OPEg7m8}Mtg7r+ysMfHQhS8OwIAS74(X9Xm0j+o+pI?Gl!N}yC zcW=B(>EGLihU>ZIkh$eJ^>ZLxo@sJm_wYaPUX-h$F?8uKl*!XOE&LfpVAZw&5h%P; zDp||k39My_IAPiSP)XF##H{6ki^?3f^^}y6pNNel>R0N(z!@EeLMp%KBl76^FFDCQ ztX^T!Q5-XwaDQCQY6FRSN_y5v-qVgzY6=V_d&%FK zB@p)(JU4!W#%p^YK~LONnj@`4)>A4TTU3i#{5p&r6Q5DQkaqSALm$^b#g>_=0`$nG zct!E5BRk)p4roeB=bS&4L7UAx&OhfgQue5`;1$J@$>ayg+si2r+X9!o;v^7klpZ^M z7NaG6S*yhS!(N*=EIL2T{eF*T5rIfOb4GrhR0Z%OaB4(p6yLr@sYBkq``9mcpxt=r zv7XZH5K}iF$VT@{rDQ^9H=pzUS@KC3sFrL5wH^%onllU9gRqF?j^!j9e9i@2I+8)0 zprj9_FZR5mwb>Hbn1re}%t-q3*}+?izDis{!KY#EU%X2Uhk*~N+P_8(vAbHD5 zm}Tz-pBbbh6BZmDmEVY^aX;)=^8FGo=oqh2xI4QEDfOV?X&B_6V~%kxCX7Cr&%x?y zl>C5>2vSfar*}`1N?qZ5_RNG$0fF1G)g;PH3 zSjbN8@>sr?(}Joyl|s|4`qKY!<=*=A^pFj+I>3Xhy!;MsB3$V1|2ds}l`ur?VFghI zkgw;kKfa7^h!z92NZZbdkI$%ef)%bdyZcZBJ1_UwW`Ue1czGebl*CdWR7`$;HT?Iw zlQG3kHYM3(!e?q{+_TNrkxhSX&^2$=w!vW1Ui+zz#uo*Bk5dV5>{_jo>0PZHW;;nV z;etMQ)Tto$E#2W!0)@42?~a?ME^+U;dK0-_yAu!b1W)0C3>Ctbq=+kEB0v>wcu zI;h~((ukAs^PMjzOh8YdeWwXsCI&;}-_Ai;N|u^Z-v`8|lYRjix+}d~5WlRL+}x+h zYzJ_fA^t?#)dbwS=*nOyxZaQu`?7sHi8w9jwW)Dh1$rTE$uj5y8l7a4LV-brj=*tT_z2of zlXlVgsAj{`tbwwnyr$e~&q{bWnAiafkKVtJfC!uIdk<>me8B z0R9uoH)c~0;a{23a|ao${IDJmas=0wu4_ZwS-a5PZh$e?e_Vs4)E9-+)Z7hSwD&k| zEB8Ob2ma@qV^TE$q`gwr1ecsF=w}4tFJVVa>5(>ptQmgn1k2+_%V}y^e(dEJ5daB| zu^LR*5nD#0zYSua4K9lBPX53t#Y+h!B0MeI3GPv>?k-6<6g*g~gRc&7^itzNo5og` zkV|6Jsq|h3`)ok>7y0?)Xu}Gf-4h=$z_oOo!zTulzT~J#i}`PUhJw`{;-M(S=o2%K zcEu$8?FBC`MZ%6IYb~4c8h0MQsSs>BkoL9b1PLn#bTdPX4GLVcav8Dp&HRUfm07^; ze?suWp`29FC-Jj3G>jOvwVm+Mv=S|LoJmjyNL54dHhd={^>67Dd-D9~XDMJjC>q{L zxQ>`Ox6Vr(PrL=573D>q7ZMQ@ZMbuG+Yk<<$f(+L(#YWzE37OXoypJXWbX2tnjr0T z(qgBilfhZbcDFmf(vb+e`=CZu%~oqAA|@CAM3;>i>;86cjK?E`zV=H2T#DNJ&mD{} zr88y5-bcDmL?T}0r|l9*{U*6z7A7`;^IYl@#%3fd>}K@>Us7ZdpEBM>jm9uF(EaxBs6{-x(h4hbr^*|6@g+!8#3w_8KB|GU1c+LO*$cKl zn))x#e#G8Fnq|N9MeNcT$N-_~@x_si5>ru1Fp=&VnjdeG2~iq%v}9)f@uOpWem)g; z!}~8jI}g>t|J_Xo+)UqHNZi=~8mq*Dmnfra|XQ)7N-1)xpu_5L*z%JSo-KIBSCAS9IuqPJZx1K@zCDqaYfu| z*=q@C$mj4Suq=t4os(if90kw{&$hSAPjQuTM+{!gvr&_|_vWf{4f3V8Prmh2qZ)BvMOBV?Of!WOPy^B? zNvaIOG5sWlAD+4O^5@_%r~J3P;8vNe?=6}M$6SbjXv7hb?Arln3MIVp?=qRg(`AG4 z^9Zovijog3`!7J)1O4AyrX|q$8IGwk?MMIuu|IPXx8u{7YL&k_NZ0-~>XgwvdW2|T zi8>Cz0*s~6QBr%Y>!V?bnm}d0s-PW_8uUBzf5p#N)_c4;U3nyKiDY-($Oh_DP2YDZ zYW|i)GY0`XViJh)wzs#z-56M}Rl)tlLdVIsXZ9p&mnLF^R3N+ZNm^uJ?ZhK+ijS?h zfax9yhGJg!PE8sH+GkY_%6PgcZDl%F&!bWIFH^dWziRU6achZBztJo>on2mDy7mJ9#vv)- z60?(QN`LzvS$bn36{00?!k&!akIuYl8e<5!Uar#L{vL_#&Tp5*=tH!kTD8 zEwBmM7Avl6C-{sC-0_~87E?y;_+Oa$w7z33%+ISCluZKZGwQ;$y>GPPX?+$Z;w2r! zS)3A_W&$SE@o#-rR0~Nnc(5V;i?o@zgcH@{AdRf2H>>NAo>}xKQK$@Y5g?OvncDn# zOG{cKf`hL26RbCqt@MTN0uX56ok0_vAg*I=Kgr*nS$9qFnu=Q~e7#iaqk&!&8%Hu))Ee;YKb6NgHJfmH|MgtM>~#*dxuw)<+WEiSTg(HNy=^QX2%8rcn3b3>vU39yl z=Y@ypo{-XrE=$f{TnwcLgSIjwd<_n9o!N@@QW#ACxCELS>vG;7lp% zEq6biMFe~O(M1;zGA1=aq0Lr0p8wI8(Sy_Bsz!eIoPUAMd-*q0X4HrjFu_wr%rj=CjYHE5g*t&=&h6P(e@-rHv3L{s$B~h833CZ6X^qzP?0tTAJyRsOXZZe zjIC~aznP*6DJuyKYD}J#%ZzV))c8EA>EBmO3t7vT)V$HCIFT|G6pK?X!_QRl0W<9X zRdw86f{66I7aZt8IDd)B7gOd$Hc8M5Iw`vV*eVfo{s1KP)yV_DohRd{5W1UVmdV#V ztZ?_DcQu~j!y4&eFr$l(i*0h8D5}`@aXY_; zW+^U(95U*v_bzIJt$Yvs|%nptV14bi8|pD60iF7J!-jAnFo8 z^4IsI6a2{5)IvV;;WB%lUOXeX0*fA?H^?bT<$IqDVu;|*6yo6@ReIkj(X)z9rDs;+ zaSD!01TD_4Jg|?Fg9x!wsH76}Vnt^ZXhaP{}EWM}~; z5;&a9Wob$;XBzRf-*S3e!KMg*F0XC9J}AE|<5w$KnoBd%j@poYd%DmD|J>a9Nu}rr z$bn6ajpHk(cPH(Wn;F5O7C09Xvh1fl6_A{;EjD9EojOUp8j(A+@8NJir2=B2k?>Fm zj15q?tV?7#+;LcaIKw~(I>Tn%iO{$AYIW%;q`++TpGP;Ppc~c#tfB^DOtjZqc*!w< zh$PGm1O^;7&CJUR9{LD4|9_1RrfHN+0DMq@uG0`;jeRVv)@`Wep)T|#vfG$T_FWh$ z{sA$>Ywngr*UHyu3(z{KKp0d0NuGy}G5w*Bfbbmv-XF^D253na|9%`;2aOY87jt@j zeSLbG!anmVF;b*{Y`Ffx9;mP}(y@YQ591~7&_dL*XpQ!dmjBf$k)b>qR?C-0@T}E| z;QMlo!A=aD4Nio=l<5iLoqC^K@&tmcgxTpje|qW00aZb z3*lNw$tIf)cs_XW zDLL=X*@i#&qCVT63#G9X^hiaAwZw0k1X5NC(S+2@q7#Q@_0Dt+Lp}B~fQe52o#Z=9 zt+GjwVmUQNrTtcvj%fiaY4B+irzQYKJ%cUl>JuapY$5}}&YD#BW&K}c0wKd?j9ZH& z!`oOv%GHu)xWP-q6O{+@G}!k2NWh74GKVF z1>6Nd>#NO))Zk85Nb(e+Ys1DUsVOSPQySGLo6V}FMyTblveOv@^S0a5IcFdyzwG(& zqVO%tvW<&b*yergkg(|-=n#ckg*qK>1uyc&fMMl*nN1xCYp$mD)vU)(zZ=an3shJO zdyOV8qwn|VgO=GrO&9j35MXk~h{ECZ@D?zCHOKoezn9|rHS~7yiil@VsaiU<{koq0 z-;*a4PuGv|+LEQH)9IpG(P;ZXp;0#Z8+6fuB<=>}dVv0ROQqU4=jY`$68E^lfU9!d z709d1L&hBLTe&BAh;qY9-l~y8m2}hb34BbUz5evc)|=X%uM2{?+LA&rFk9q0Tp~=| zPR>Rxy`RY~P)CVYv6~EpdVh82Oj;2(rk-h}dz_OphFZf$Uen9|tsZdN&`>}sCuUYv z=PjajY26vaKx@~?<2m5#ARmToTNnt`i8q%x)|o5!&r$v+0{)$K7H@?D(dOso!1o7b zJCH%$ojTuvPuc-?fycCcetsUr;&*_&4YD)Pqyo>LVMWT2A1FCMW;8rJe9|A6B^iI< zj`mA?Jin-z>z?&Cj-qsi!Wff@y^RjdY)egEi)(ZA=XM|?K@+Acn!ZeCZGIa5K&C<> z>N7IN(LD@5I3$EmRtGoIWp8;IDR9JCgfE#UtUn1D4!G_VpOLhPS+=$EVjclp6>t}g&@Kas{4tcPy(}Fc(@MhmcC{` z$jn89|4=Mo&SLK=`hDM+Ye?sbj|>*VPwf3%dv@CA*XPkdHi0Qj3~Rx-n9O7#oW-`X zkt&4F11>r+jR0bSyYn6iAWa0s(vHRHzmMZ3b1Wr3h44jyCj>|pL90}=RHm%P31^LU ziyGSGYVtyKqG0vnF_XqWO~fwACU`V;0T8!!@(cp5AISPawu{mq087P_lLiKZ=0peC zOqu?N^&B~msM8BpA&y4l)C$EzpwLd`Oh&B={0x79XPut#BozmkWIpn-pBT3!!$c05 z3H7f&Fr4yxP%PXtM+r?ZIS}jvWaBIyD6KQb{Eq;=(~s^3T(2^K!Eob$-L|P!JdhbiNzj$2#>(?MCDMpt%XUs>LFl8+i>GThlDcKJ#h#~D*jF+18Jtl z{qbQ8mb8fUyUUw)hOwY|@^M3bvR$<>o3`|+j-JA|Ffs&fgqC%|j(XYT>%vqXpNd5* zpk^w~1+Mns9swf%&}t54Tv+E()=LiYqXYZ6G#Vg=75!%PuK#c(ByF`c{g2fzLKCbk zQ)Q=wcI637un=<>OP4+P^!AT@4FK$?!TBex(0uXOlNCy|n3ZMM{8o{`=3hRG!!A-S z#Vd3hI?RGRw(P|;BZA26PiMXiWm{aexuS8Ma_3YdZwP7iH{%fI^-DAMENgv__Wa*4|LciH}J32DW;&YG^z7K z4Z3QSo9+i1NQH0TTN}h&FgM{B055|72DBTbgm-Pre zL%U*ZzAU(-*W>;O>|cRN#P4sQ!vQVKx>RaW6XB_~9umh*uO;rMf?9>K7oy9MJy`+M zK8ea}-}SiE>XbdxJdQUA1w9YcQjl|2@!-y5C+-mR1LuG922sb98I0OJSkVe4(^aex z1V}`dz&zq3MIMcSlq;iZ(*7_gLIsmWEq|kME0Cgd*fjsIzGRU(z=(h{#MIdMm#PNTiwMJ4XV(T9fr1Jlr;S6HDbk<}vjHRtyj}L_fjbk7~w7T^FLkv0`Fk zjOEk2gA|vr$s|owE)9NOb-K>A_;je}} z3+?IJ(AN1)bkI#x5?b%Ct1nJ`pdDY9AWA`q6|7Q}S2eV)7s4S80V}!GNy`!}#l!u3 z?hdvJjK}cu^prC=eQZko*Q1~KeSSTIE*KWLy_tp5mV@CbAm`7_$^u_ww_IL3B+QmV zfWO3@>;lQe#j+&b_n0$VBgi#}Tk~G1`BTM@qxqWd%D|5D zqLGQ&jK(IB#L5*8D&t@Ko@J9@S%eNcC85@Apf@&t(>m5l*DkP=eNTRIkSx2SjJsQ zOhNoQdI=%RHl{Pp#xv!LoF&-nfsK!UiX8^d9Jn>NY|U&Ob^8PTDq$jPNFYEfixt~T zdLkoTdTn{9fdF(B0Lp-tu}PIKJ7wEaaN#GK=i8SNX8_U*xV^prCO!alGi~>6Zf#Ah zole8ADrgVHUuQQNWmUdU!~)DvFL6(S9^T-khb5tbA1t-Bkg!bx!V*b?s-V$yh9&Ba@! z^i0$y%c0Q!3SKl-=kxJZ6yL{^?j$LEdMYVd;0?E~I9c-yS&^l5J& ziUuH`E|To+?+fe|jrcD$p?Z9|c9_jX#4jyLAxDyCDtsn zvN9{?t`n9>i-L-@3LfNBUZOhXCw8;b%t4ke*XHuZzAZjNwt-}3iV;=M|Nkt)P@X$1 z!HohGGN1$JeKyQ*8)@#@Z|ErWhbyZwI^U$*g&3 zl8C%gn90DzAgDWuCVO)K`r-cm8({ucwn`Rh8_Tg36$HxW=V<_83wRE!1pe$ZkhVND z+6*=LRMq?^@zfK>h}0%iSY0#Y9l4X+JMr-}OTHm#)jhk7gx_@8dfB1%O%_7}NwoY# zST)s+M@Apw3gv28Ns0KxS1dS9?|R6!0){JQuX<|R0_v)ObkYJv27y+WHkghvtBz?e zrTF!PVt~_SeD3a0ndts7Cw*u8aQ9PC+BAhd?eg{|=FhY*yTE>7 z3e++M8lyah9<2+&4#0jpnIVlOW+?NfdIGp2U-R4@@&qH7I&OD6Zc(0rAQ^jix_H0l zhqjX*ez!&5b}@4?zR{$z6qQ4h0=mmX?B1P4mfydBC&;aMs+~@0%l?pUr@$-lW=(iV ziveSt{2V!rNvDh3n5SWdMrWM^nVU-z9Fx8{-2e+v6K zp(=5sRW%LD7Zn)D#g54mf44|WO(7CxfoL6Z4&oF*u>YOx>hgQsVrm+tq1zw6;>I1` zShw9t!e**mIf`SDxC~QSw2a|!J;Ngr@s1dz>Lp4cFd)S#;ITBv+ftLIl){G78X~L& zn3A+f0mnUtw2)c9(w-vWxdey;$@`(HRi>hPZBXp50z&7pD7=#A~U)gPLFTIUKL!sEhDALLejx3ljWt|RV# zL_~XO@8=`CE!j^zYEBs8TQZi-36)m?3Hr+`8(%J&O*V?-3AM0$51y)gQrGzif+reI||&`|GhD& z2_LclS@wY~G5!Af^d(t7TsEF`&hw?y4k{K1c5zrr zT+f0Vjc@Ably}~$$^lWs;vz5u&G)#5tOHi}jZkOgO@H!lGW6pDwoqU*_CAYErbi@q zDImwxR)JX}13nVN%E2noQ+HPqzIiS;zQwp%YWlVRoy6Zs)=;Wvtv04X-#LFM7LegN zNr~VG`YGXtT^=86-Brfx*pd$HP$;tqzj%=im5C8|WeESj2p|f;3$q92b9ouWqMwr; zU3r;+6{vTbFZyqgBK>{c;zzigxSfQQP{t zeK6&yI^f$GNU3ZVm0O=ffi)~$RbZ@o@q33mLj*ej>v*zvUBWdEHm-g9rO+W1CJ+kS zjnLYA{djCksab_g>Qq85gC};~abxaup)GvH?2s+S1xrb4s=?BC8Yx3YUU9s#xklVT zI^_>EFTgYJsU|D0yRAaF97rB)7gWnxHBf#7;D?+d3D-fYsLkM^r!!afCjPkYRY4;F z)$JP6GLf2-KIYyP|;mGue%ONlAjHJB>42RTtZf`8NKlMWjg>8$Hz6>{)B`?>JN)AIv2ogi5 zLrF-fbTGp>-oNIJAd+nHLH%bAA3+2Fp%=@&bCo)dCLGg;(|xR;%@#+ zg^WlQe(uGlk*^O2s~Qa87wpBOO{^e~oSPY0v^4u*SN^w%I@7S;EXT9=gr zHh?Bta%2iiJf45aZt@Q^fQD-S(7X%)~Njal< zQnWzi7^Mt(U%=U`wj90G4UC(h+|j2*F<&-T$Gzn;;)o~8)XcxIoS7|{>CmDvOt*iw zjXHtevDfx7Ksct`=AZLcVvrgYHrQt}Z(SNb1Auh*%lmOCWhKB=Ks+V&8AhD>?n
wq++RmtKKqaM<#GQJSp&N!o3a6TJTH^OQ0 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 literal 0 HcmV?d00001 diff --git a/nasal_lexer.h b/nasal_lexer.h index 42b34af..54adb59 100644 --- a/nasal_lexer.h +++ b/nasal_lexer.h @@ -8,65 +8,65 @@ #define S_ISREG(m) (((m)&0xF000)==0x8000) #endif -enum tok:u32 { - tok_null=0, // null token (default token type) - tok_num, // number literal - tok_str, // string literal - tok_id, // identifier - tok_for, // loop keyword for - tok_forindex,// loop keyword forindex - tok_foreach, // loop keyword foreach - tok_while, // loop keyword while - tok_var, // keyword for definition - tok_func, // keyword for definition of function - tok_break, // loop keyword break - tok_continue,// loop keyword continue - tok_ret, // function keyword return - tok_if, // condition expression keyword if - tok_elsif, // condition expression keyword elsif - tok_else, // condition expression keyword else - tok_nil, // nil literal - tok_lcurve, // ( - tok_rcurve, // ) - tok_lbracket,// [ - tok_rbracket,// ] - tok_lbrace, // { - tok_rbrace, // } - tok_semi, // ; - tok_and, // operator and - tok_or, // operator or - tok_comma, // , - tok_dot, // . - tok_ellipsis,// ... - tok_quesmark,// ? - tok_colon, // : - tok_add, // operator + - tok_sub, // operator - - tok_mult, // operator * - tok_div, // operator / - tok_link, // operator ~ - tok_not, // operator ! - tok_eq, // operator = - tok_addeq, // operator += - tok_subeq, // operator -= - tok_multeq, // operator *= - tok_diveq, // operator /= - tok_lnkeq, // operator ~= - tok_cmpeq, // operator == - tok_neq, // operator != - tok_less, // operator < - tok_leq, // operator <= - tok_grt, // operator > - tok_geq, // operator >= - tok_eof // end of token list +enum class tok:u32 { + null=0, // null token (default token type) + num, // number literal + str, // string literal + id, // identifier + rfor, // loop keyword for + forindex, // loop keyword forindex + foreach, // loop keyword foreach + rwhile, // loop keyword while + var, // keyword for definition + func, // keyword for definition of function + brk, // loop keyword break + cont, // loop keyword continue + ret, // function keyword return + rif, // condition expression keyword if + elsif, // condition expression keyword elsif + relse, // condition expression keyword else + nil, // nil literal + lcurve, // ( + rcurve, // ) + lbracket, // [ + rbracket, // ] + lbrace, // { + rbrace, // } + semi, // ; + opand, // operator and + opor, // operator or + comma, // , + dot, // . + ellipsis, // ... + quesmark, // ? + colon, // : + add, // operator + + sub, // operator - + mult, // operator * + div, // operator / + link, // operator ~ + opnot, // operator ! + eq, // operator = + addeq, // operator += + subeq, // operator -= + multeq, // operator *= + diveq, // operator /= + lnkeq, // operator ~= + cmpeq, // operator == + neq, // operator != + less, // operator < + leq, // operator <= + grt, // operator > + geq, // operator >= + eof // end of token list }; struct token { u32 line; u32 col; - u32 type; + tok type; string str; - token(u32 l=0,u32 c=0,u32 t=tok_null,const string& s="") + token(u32 l=0,u32 c=0,tok t=tok::null,const string& s="") : line(l),col(c),type(t),str(s) {} }; @@ -78,55 +78,55 @@ private: string res; error& err; std::vector toks; - std::unordered_map typetbl { - {"for" ,tok_for }, - {"forindex",tok_forindex}, - {"foreach" ,tok_foreach }, - {"while" ,tok_while }, - {"var" ,tok_var }, - {"func" ,tok_func }, - {"break" ,tok_break }, - {"continue",tok_continue}, - {"return" ,tok_ret }, - {"if" ,tok_if }, - {"elsif" ,tok_elsif }, - {"else" ,tok_else }, - {"nil" ,tok_nil }, - {"(" ,tok_lcurve }, - {")" ,tok_rcurve }, - {"[" ,tok_lbracket}, - {"]" ,tok_rbracket}, - {"{" ,tok_lbrace }, - {"}" ,tok_rbrace }, - {";" ,tok_semi }, - {"and" ,tok_and }, - {"or" ,tok_or }, - {"," ,tok_comma }, - {"." ,tok_dot }, - {"..." ,tok_ellipsis}, - {"?" ,tok_quesmark}, - {":" ,tok_colon }, - {"+" ,tok_add }, - {"-" ,tok_sub }, - {"*" ,tok_mult }, - {"/" ,tok_div }, - {"~" ,tok_link }, - {"!" ,tok_not }, - {"=" ,tok_eq }, - {"+=" ,tok_addeq }, - {"-=" ,tok_subeq }, - {"*=" ,tok_multeq }, - {"/=" ,tok_diveq }, - {"~=" ,tok_lnkeq }, - {"==" ,tok_cmpeq }, - {"!=" ,tok_neq }, - {"<" ,tok_less }, - {"<=" ,tok_leq }, - {">" ,tok_grt }, - {">=" ,tok_geq } + std::unordered_map typetbl { + {"for" ,tok::rfor }, + {"forindex",tok::forindex}, + {"foreach" ,tok::foreach }, + {"while" ,tok::rwhile }, + {"var" ,tok::var }, + {"func" ,tok::func }, + {"break" ,tok::brk }, + {"continue",tok::cont }, + {"return" ,tok::ret }, + {"if" ,tok::rif }, + {"elsif" ,tok::elsif }, + {"else" ,tok::relse }, + {"nil" ,tok::nil }, + {"(" ,tok::lcurve }, + {")" ,tok::rcurve }, + {"[" ,tok::lbracket}, + {"]" ,tok::rbracket}, + {"{" ,tok::lbrace }, + {"}" ,tok::rbrace }, + {";" ,tok::semi }, + {"and" ,tok::opand }, + {"or" ,tok::opor }, + {"," ,tok::comma }, + {"." ,tok::dot }, + {"..." ,tok::ellipsis}, + {"?" ,tok::quesmark}, + {":" ,tok::colon }, + {"+" ,tok::add }, + {"-" ,tok::sub }, + {"*" ,tok::mult }, + {"/" ,tok::div }, + {"~" ,tok::link }, + {"!" ,tok::opnot }, + {"=" ,tok::eq }, + {"+=" ,tok::addeq }, + {"-=" ,tok::subeq }, + {"*=" ,tok::multeq }, + {"/=" ,tok::diveq }, + {"~=" ,tok::lnkeq }, + {"==" ,tok::cmpeq }, + {"!=" ,tok::neq }, + {"<" ,tok::less }, + {"<=" ,tok::leq }, + {">" ,tok::grt }, + {">=" ,tok::geq } }; - u32 get_type(const string&); + tok get_type(const string&); bool skip(char); bool is_id(char); bool is_hex(char); @@ -205,8 +205,8 @@ void lexer::open(const string& file) { res=ss.str(); } -u32 lexer::get_type(const string& str) { - return typetbl.count(str)?typetbl.at(str):tok_null; +tok lexer::get_type(const string& str) { + return typetbl.count(str)?typetbl.at(str):tok::null; } string lexer::utf8_gen() { @@ -386,19 +386,19 @@ const error& lexer::scan(const string& file) { } if (is_id(res[ptr])) { str=id_gen(); - u32 type=get_type(str); - toks.push_back({line,column,type?type:tok_id,str}); + tok type=get_type(str); + toks.push_back({line,column,(type!=tok::null)?type:tok::id,str}); } else if (is_dec(res[ptr])) { str=num_gen(); // make sure column is correct - toks.push_back({line,column,tok_num,str}); + toks.push_back({line,column,tok::num,str}); } else if (is_str(res[ptr])) { str=str_gen(); // make sure column is correct - toks.push_back({line,column,tok_str,str}); + toks.push_back({line,column,tok::str,str}); } else if (is_single_opr(res[ptr])) { str=res[ptr]; ++column; - u32 type=get_type(str); - if (!type) { + tok type=get_type(str); + if (type==tok::null) { err.err("lexer",line,column,str.length(),"invalid operator `"+str+"`"); } toks.push_back({line,column,type,str}); @@ -428,7 +428,7 @@ const error& lexer::scan(const string& file) { err.fatal("lexer","fatal error occurred, stop"); } } - toks.push_back({line,column,tok_eof,""}); + toks.push_back({line,column,tok::eof,""}); res=""; return err; } diff --git a/nasal_parse.h b/nasal_parse.h index 0a135a3..8e84bd7 100644 --- a/nasal_parse.h +++ b/nasal_parse.h @@ -48,60 +48,60 @@ private: const token* toks; ast root; error& err; - std::unordered_map tokname { - {tok_for ,"for" }, - {tok_forindex,"forindex"}, - {tok_foreach ,"foreach" }, - {tok_while ,"while" }, - {tok_var ,"var" }, - {tok_func ,"func" }, - {tok_break ,"break" }, - {tok_continue,"continue"}, - {tok_ret ,"return" }, - {tok_if ,"if" }, - {tok_elsif ,"elsif" }, - {tok_else ,"else" }, - {tok_nil ,"nil" }, - {tok_lcurve ,"(" }, - {tok_rcurve ,")" }, - {tok_lbracket,"[" }, - {tok_rbracket,"]" }, - {tok_lbrace ,"{" }, - {tok_rbrace ,"}" }, - {tok_semi ,";" }, - {tok_and ,"and" }, - {tok_or ,"or" }, - {tok_comma ,"," }, - {tok_dot ,"." }, - {tok_ellipsis,"..." }, - {tok_quesmark,"?" }, - {tok_colon ,":" }, - {tok_add ,"+" }, - {tok_sub ,"-" }, - {tok_mult ,"*" }, - {tok_div ,"/" }, - {tok_link ,"~" }, - {tok_not ,"!" }, - {tok_eq ,"=" }, - {tok_addeq ,"+=" }, - {tok_subeq ,"-=" }, - {tok_multeq ,"*=" }, - {tok_diveq ,"/=" }, - {tok_lnkeq ,"~=" }, - {tok_cmpeq ,"==" }, - {tok_neq ,"!=" }, - {tok_less ,"<" }, - {tok_leq ,"<=" }, - {tok_grt ,">" }, - {tok_geq ,">=" } + std::unordered_map tokname { + {tok::rfor ,"for" }, + {tok::forindex,"forindex"}, + {tok::foreach ,"foreach" }, + {tok::rwhile ,"while" }, + {tok::var ,"var" }, + {tok::func ,"func" }, + {tok::brk ,"break" }, + {tok::cont ,"continue"}, + {tok::ret ,"return" }, + {tok::rif ,"if" }, + {tok::elsif ,"elsif" }, + {tok::relse ,"else" }, + {tok::nil ,"nil" }, + {tok::lcurve ,"(" }, + {tok::rcurve ,")" }, + {tok::lbracket,"[" }, + {tok::rbracket,"]" }, + {tok::lbrace ,"{" }, + {tok::rbrace ,"}" }, + {tok::semi ,";" }, + {tok::opand ,"and" }, + {tok::opor ,"or" }, + {tok::comma ,"," }, + {tok::dot ,"." }, + {tok::ellipsis,"..." }, + {tok::quesmark,"?" }, + {tok::colon ,":" }, + {tok::add ,"+" }, + {tok::sub ,"-" }, + {tok::mult ,"*" }, + {tok::div ,"/" }, + {tok::link ,"~" }, + {tok::opnot ,"!" }, + {tok::eq ,"=" }, + {tok::addeq ,"+=" }, + {tok::subeq ,"-=" }, + {tok::multeq ,"*=" }, + {tok::diveq ,"/=" }, + {tok::lnkeq ,"~=" }, + {tok::cmpeq ,"==" }, + {tok::neq ,"!=" }, + {tok::less ,"<" }, + {tok::leq ,"<=" }, + {tok::grt ,">" }, + {tok::geq ,">=" } }; void die(u32,u32,u32,string,bool); void next() {++ptr;}; - void match(u32 type,const char* info=nullptr); - bool lookahead(u32); - bool is_call(u32); - bool check_comma(const u32*); + void match(tok type,const char* info=nullptr); + bool lookahead(tok); + bool is_call(tok); + bool check_comma(const tok*); bool check_tuple(); bool check_func_end(const ast&); bool check_special_call(); @@ -162,11 +162,11 @@ const error& parse::compile(const lexer& lexer) { ptr=in_func=in_loop=0; root={0,0,ast_root}; - while(!lookahead(tok_eof)) { + while(!lookahead(tok::eof)) { root.add(expr()); - if (lookahead(tok_semi)) { - match(tok_semi); - } else if (need_semi_check(root.child().back()) && !lookahead(tok_eof)) { + if (lookahead(tok::semi)) { + match(tok::semi); + } else if (need_semi_check(root.child().back()) && !lookahead(tok::eof)) { // the last expression can be recognized without semi die(thisline,thiscol,thislen,"expected \";\"",true); } @@ -175,8 +175,8 @@ const error& parse::compile(const lexer& lexer) { } void parse::die(u32 line,u32 col,u32 len,string info,bool prev=false) { - // tok_str's str has no \" - if (lookahead(tok_str)) { + // tok::str's str has no \" + if (lookahead(tok::str)) { col-=2; len+=2; } @@ -185,41 +185,41 @@ void parse::die(u32 line,u32 col,u32 len,string info,bool prev=false) { line=toks[ptr-1].line; col=toks[ptr-1].col; len=toks[ptr-1].str.length(); - len+=toks[ptr-1].type==tok_str?2:0; + len+=toks[ptr-1].type==tok::str?2:0; } - err.err("parse",line,col,lookahead(tok_eof)?1:len,info); + err.err("parse",line,col,lookahead(tok::eof)?1:len,info); } -void parse::match(u32 type,const char* info) { +void parse::match(tok type,const char* info) { if (!lookahead(type)) { if (info) { die(thisline,thiscol,thislen,info); return; } switch(type) { - case tok_num:die(thisline,thiscol,thislen,"expected number"); break; - case tok_str:die(thisline,thiscol,thislen,"expected string"); break; - case tok_id: die(thisline,thiscol,thislen,"expected identifier");break; - default: die(thisline,thiscol,thislen,"expected '"+tokname[type]+"'"); break; + case tok::num:die(thisline,thiscol,thislen,"expected number"); break; + case tok::str:die(thisline,thiscol,thislen,"expected string"); break; + case tok::id: die(thisline,thiscol,thislen,"expected identifier");break; + default: die(thisline,thiscol,thislen,"expected '"+tokname[type]+"'"); break; } return; } - if (lookahead(tok_eof)) { + if (lookahead(tok::eof)) { return; } next(); } -bool parse::lookahead(u32 type) { +bool parse::lookahead(tok type) { return toks[ptr].type==type; } -bool parse::is_call(u32 type) { - return type==tok_lcurve || type==tok_lbracket || type==tok_dot; +bool parse::is_call(tok type) { + return type==tok::lcurve || type==tok::lbracket || type==tok::dot; } -bool parse::check_comma(const u32* panic_set) { - for(u32 i=0;panic_set[i];++i) { +bool parse::check_comma(const tok* panic_set) { + for(u32 i=0;panic_set[i]!=tok::null;++i) { if (lookahead(panic_set[i])) { die(thisline,thiscol,thislen,"expected ',' between scalars",true); return true; @@ -230,16 +230,17 @@ bool parse::check_comma(const u32* panic_set) { bool parse::check_tuple() { u32 check_ptr=ptr,curve=1,bracket=0,brace=0; - while(toks[++check_ptr].type!=tok_eof && curve) { + while(toks[++check_ptr].type!=tok::eof && curve) { switch(toks[check_ptr].type) { - case tok_lcurve: ++curve; break; - case tok_lbracket: ++bracket; break; - case tok_lbrace: ++brace; break; - case tok_rcurve: --curve; break; - case tok_rbracket: --bracket; break; - case tok_rbrace: --brace; break; + case tok::lcurve: ++curve; break; + case tok::lbracket: ++bracket; break; + case tok::lbrace: ++brace; break; + case tok::rcurve: --curve; break; + case tok::rbracket: --bracket; break; + case tok::rbrace: --brace; break; + default: break; } - if (curve==1 && !bracket && !brace && toks[check_ptr].type==tok_comma) { + if (curve==1 && !bracket && !brace && toks[check_ptr].type==tok::comma) { return true; } } @@ -273,20 +274,21 @@ bool parse::check_func_end(const ast& node) { bool parse::check_special_call() { // special call means like this: function_name(a:1,b:2,c:3); u32 check_ptr=ptr,curve=1,bracket=0,brace=0; - while(toks[++check_ptr].type!=tok_eof && curve) { + while(toks[++check_ptr].type!=tok::eof && curve) { switch(toks[check_ptr].type) { - case tok_lcurve: ++curve; break; - case tok_lbracket: ++bracket;break; - case tok_lbrace: ++brace; break; - case tok_rcurve: --curve; break; - case tok_rbracket: --bracket;break; - case tok_rbrace: --brace; break; + case tok::lcurve: ++curve; break; + case tok::lbracket: ++bracket;break; + case tok::lbrace: ++brace; break; + case tok::rcurve: --curve; break; + case tok::rbracket: --bracket;break; + case tok::rbrace: --brace; break; + default: break; } // m?1:0 will be recognized as normal parameter - if (curve==1 && !bracket && !brace && toks[check_ptr].type==tok_quesmark) { + if (curve==1 && !bracket && !brace && toks[check_ptr].type==tok::quesmark) { return false; } - if (curve==1 && !bracket && !brace && toks[check_ptr].type==tok_colon) { + if (curve==1 && !bracket && !brace && toks[check_ptr].type==tok::colon) { return true; } } @@ -312,77 +314,77 @@ ast parse::nil() { ast parse::num() { ast node(toks[ptr].line,toks[ptr].col,ast_num); node.set_num(str2num(toks[ptr].str.c_str())); - match(tok_num); + match(tok::num); return node; } ast parse::str() { ast node(toks[ptr].line,toks[ptr].col,ast_str); node.set_str(toks[ptr].str); - match(tok_str); + match(tok::str); return node; } ast parse::id() { ast node(toks[ptr].line,toks[ptr].col,ast_id); node.set_str(toks[ptr].str); - match(tok_id); + match(tok::id); return node; } ast parse::vec() { // panic set for this token is not ',' // this is the FIRST set of calculation - // array end with tok_null=0 - const u32 panic_set[]={ - tok_id,tok_str,tok_num, - tok_not,tok_sub,tok_nil, - tok_func,tok_var,tok_lcurve, - tok_lbrace,tok_lbracket,tok_null + // array end with tok::null=0 + const tok panic[]={ + tok::id,tok::str,tok::num, + tok::opnot,tok::sub,tok::nil, + tok::func,tok::var,tok::lcurve, + tok::lbrace,tok::lbracket,tok::null }; ast node(toks[ptr].line,toks[ptr].col,ast_vec); - match(tok_lbracket); - while(!lookahead(tok_rbracket)) { + match(tok::lbracket); + while(!lookahead(tok::rbracket)) { node.add(calc()); - if (lookahead(tok_comma)) { - match(tok_comma); - } else if (lookahead(tok_eof)) { + if (lookahead(tok::comma)) { + match(tok::comma); + } else if (lookahead(tok::eof)) { break; - } else if (!lookahead(tok_rbracket) && !check_comma(panic_set)) { + } else if (!lookahead(tok::rbracket) && !check_comma(panic)) { break; } } - match(tok_rbracket,"expected ']' when generating vector"); + match(tok::rbracket,"expected ']' when generating vector"); return node; } ast parse::hash() { ast node(toks[ptr].line,toks[ptr].col,ast_hash); - match(tok_lbrace); - while(!lookahead(tok_rbrace)) { + match(tok::lbrace); + while(!lookahead(tok::rbrace)) { node.add(pair()); - if (lookahead(tok_comma)) { - match(tok_comma); - } else if (lookahead(tok_id) || lookahead(tok_str)) { // first set of hashmember + if (lookahead(tok::comma)) { + match(tok::comma); + } else if (lookahead(tok::id) || lookahead(tok::str)) { // first set of hashmember die(thisline,thiscol,thislen,"expected ',' between hash members",true); } else { break; } } - match(tok_rbrace,"expected '}' when generating hash"); + match(tok::rbrace,"expected '}' when generating hash"); return node; } ast parse::pair() { ast node(toks[ptr].line,toks[ptr].col,ast_pair); - if (lookahead(tok_id)) { + if (lookahead(tok::id)) { node.add(id()); - } else if (lookahead(tok_str)) { + } else if (lookahead(tok::str)) { node.add(str()); } else { - match(tok_id,"expected hashmap key"); + match(tok::id,"expected hashmap key"); } - match(tok_colon); + match(tok::colon); node.add(calc()); return node; } @@ -390,8 +392,8 @@ ast parse::pair() { ast parse::func() { ++in_func; ast node(toks[ptr].line,toks[ptr].col,ast_func); - match(tok_func); - if (lookahead(tok_lcurve)) { + match(tok::func); + if (lookahead(tok::lcurve)) { node.add(params()); } else { node.add(null()); @@ -403,18 +405,18 @@ ast parse::func() { ast parse::params() { ast node(toks[ptr].line,toks[ptr].col,ast_params); - match(tok_lcurve); - while(!lookahead(tok_rcurve)) { + match(tok::lcurve); + while(!lookahead(tok::rcurve)) { ast tmp=id(); - if (lookahead(tok_eq) || lookahead(tok_ellipsis)) { + if (lookahead(tok::eq) || lookahead(tok::ellipsis)) { ast special_arg(toks[ptr].line,toks[ptr].col,ast_null); - if (lookahead(tok_eq)) { - match(tok_eq); + if (lookahead(tok::eq)) { + match(tok::eq); special_arg=std::move(tmp); special_arg.set_type(ast_default); special_arg.add(calc()); } else { - match(tok_ellipsis); + match(tok::ellipsis); special_arg=std::move(tmp); special_arg.set_type(ast_dynamic); } @@ -422,53 +424,53 @@ ast parse::params() { } else { node.add(std::move(tmp)); } - if (lookahead(tok_comma)) { - match(tok_comma); - } else if (lookahead(tok_id)) { // first set of identifier + if (lookahead(tok::comma)) { + match(tok::comma); + } else if (lookahead(tok::id)) { // first set of identifier die(thisline,thiscol,thislen,"expected ',' between identifiers",true); } else { break; } } - match(tok_rcurve,"expected ')' after parameter list"); + match(tok::rcurve,"expected ')' after parameter list"); return node; } ast parse::lcurve_expr() { - if (toks[ptr+1].type==tok_var) + if (toks[ptr+1].type==tok::var) return definition(); return check_tuple()?multi_assgin():calc(); } ast parse::expr() { - u32 type=toks[ptr].type; - if ((type==tok_break || type==tok_continue) && !in_loop) { + tok type=toks[ptr].type; + if ((type==tok::brk || type==tok::cont) && !in_loop) { die(thisline,thiscol,thislen,"must use break/continue in loops"); } - if (type==tok_ret && !in_func) { + if (type==tok::ret && !in_func) { die(thisline,thiscol,thislen,"must use return in functions"); } switch(type) { - case tok_nil: - case tok_num: - case tok_str: - case tok_id: - case tok_func: - case tok_lbracket: - case tok_lbrace: - case tok_sub: - case tok_not: return calc(); break; - case tok_var: return definition(); break; - case tok_lcurve: return lcurve_expr(); break; - case tok_for: - case tok_forindex: - case tok_foreach: - case tok_while: return loop(); break; - case tok_if: return cond(); break; - case tok_continue: return continue_expr(); break; - case tok_break: return break_expr(); break; - case tok_ret: return ret_expr(); break; - case tok_semi: break; + case tok::nil: + case tok::num: + case tok::str: + case tok::id: + case tok::func: + case tok::lbracket: + case tok::lbrace: + case tok::sub: + case tok::opnot: return calc(); break; + case tok::var: return definition(); break; + case tok::lcurve: return lcurve_expr(); break; + case tok::rfor: + case tok::forindex: + case tok::foreach: + case tok::rwhile: return loop(); break; + case tok::rif: return cond(); break; + case tok::cont: return continue_expr(); break; + case tok::brk: return break_expr(); break; + case tok::ret: return ret_expr(); break; + case tok::semi: break; default: die(thisline,thiscol,thislen,"incorrect token <"+toks[ptr].str+">"); next(); @@ -478,45 +480,45 @@ ast parse::expr() } ast parse::exprs() { - if (lookahead(tok_eof)) { + if (lookahead(tok::eof)) { die(thisline,thiscol,thislen,"expected expression block"); return null(); } ast node(toks[ptr].line,toks[ptr].col,ast_block); - if (lookahead(tok_lbrace)) { - match(tok_lbrace); - while(!lookahead(tok_rbrace) && !lookahead(tok_eof)) { + if (lookahead(tok::lbrace)) { + match(tok::lbrace); + while(!lookahead(tok::rbrace) && !lookahead(tok::eof)) { node.add(expr()); - if (lookahead(tok_semi)) { - match(tok_semi); - } else if (need_semi_check(node.child().back()) && !lookahead(tok_rbrace)) { + if (lookahead(tok::semi)) { + match(tok::semi); + } else if (need_semi_check(node.child().back()) && !lookahead(tok::rbrace)) { // the last expression can be recognized without semi die(thisline,thiscol,thislen,"expected ';'",true); } } - match(tok_rbrace,"expected '}' when generating expressions"); + match(tok::rbrace,"expected '}' when generating expressions"); } else { node.add(expr()); - if (lookahead(tok_semi)) - match(tok_semi); + if (lookahead(tok::semi)) + match(tok::semi); } return node; } ast parse::calc() { ast node=or_expr(); - if (lookahead(tok_quesmark)) { + if (lookahead(tok::quesmark)) { // trinocular calculation ast tmp(toks[ptr].line,toks[ptr].col,ast_trino); - match(tok_quesmark); + match(tok::quesmark); tmp.add(std::move(node)); tmp.add(calc()); - match(tok_colon); + match(tok::colon); tmp.add(calc()); node=std::move(tmp); - } else if (tok_eq<=toks[ptr].type && toks[ptr].type<=tok_lnkeq) { - // tok_eq~tok_lnkeq is 37 to 42,ast_equal~ast_lnkeq is 21~26 - ast tmp(toks[ptr].line,toks[ptr].col,toks[ptr].type-tok_eq+ast_equal); + } else if (tok::eq<=toks[ptr].type && toks[ptr].type<=tok::lnkeq) { + // tok::eq~tok::lnkeq is 37 to 42,ast_equal~ast_lnkeq is 21~26 + ast tmp(toks[ptr].line,toks[ptr].col,(u32)toks[ptr].type-(u32)tok::eq+ast_equal); tmp.add(std::move(node)); match(toks[ptr].type); tmp.add(calc()); @@ -527,10 +529,10 @@ ast parse::calc() { ast parse::or_expr() { ast node=and_expr(); - while(lookahead(tok_or)) { + while(lookahead(tok::opor)) { ast tmp(toks[ptr].line,toks[ptr].col,ast_or); tmp.add(std::move(node)); - match(tok_or); + match(tok::opor); tmp.add(and_expr()); node=std::move(tmp); } @@ -539,10 +541,10 @@ ast parse::or_expr() { ast parse::and_expr() { ast node=cmp_expr(); - while(lookahead(tok_and)) { + while(lookahead(tok::opand)) { ast tmp(toks[ptr].line,toks[ptr].col,ast_and); tmp.add(std::move(node)); - match(tok_and); + match(tok::opand); tmp.add(cmp_expr()); node=std::move(tmp); } @@ -551,9 +553,9 @@ ast parse::and_expr() { ast parse::cmp_expr() { ast node=additive_expr(); - while(tok_cmpeq<=toks[ptr].type && toks[ptr].type<=tok_geq) { - // tok_cmpeq~tok_geq is 43~48,ast_cmpeq~ast_geq is 27~32 - ast tmp(toks[ptr].line,toks[ptr].col,toks[ptr].type-tok_cmpeq+ast_cmpeq); + while(tok::cmpeq<=toks[ptr].type && toks[ptr].type<=tok::geq) { + // tok::cmpeq~tok::geq is 43~48,ast_cmpeq~ast_geq is 27~32 + ast tmp(toks[ptr].line,toks[ptr].col,(u32)toks[ptr].type-(u32)tok::cmpeq+ast_cmpeq); tmp.add(std::move(node)); match(toks[ptr].type); tmp.add(additive_expr()); @@ -564,12 +566,13 @@ ast parse::cmp_expr() { ast parse::additive_expr() { ast node=multive_expr(); - while(lookahead(tok_add) || lookahead(tok_sub) || lookahead(tok_link)) { + while(lookahead(tok::add) || lookahead(tok::sub) || lookahead(tok::link)) { ast tmp(toks[ptr].line,toks[ptr].col,ast_null); switch(toks[ptr].type) { - case tok_add: tmp.set_type(ast_add); break; - case tok_sub: tmp.set_type(ast_sub); break; - case tok_link: tmp.set_type(ast_link); break; + case tok::add: tmp.set_type(ast_add); break; + case tok::sub: tmp.set_type(ast_sub); break; + case tok::link: tmp.set_type(ast_link); break; + default: break; } tmp.add(std::move(node)); match(toks[ptr].type); @@ -580,12 +583,12 @@ ast parse::additive_expr() { } ast parse::multive_expr() { - ast node=(lookahead(tok_sub) || lookahead(tok_not))?unary():scalar(); - while(lookahead(tok_mult) || lookahead(tok_div)) { - ast tmp(toks[ptr].line,toks[ptr].col,toks[ptr].type-tok_mult+ast_mult); + ast node=(lookahead(tok::sub) || lookahead(tok::opnot))?unary():scalar(); + while(lookahead(tok::mult) || lookahead(tok::div)) { + ast tmp(toks[ptr].line,toks[ptr].col,(u32)toks[ptr].type-(u32)tok::mult+ast_mult); tmp.add(std::move(node)); match(toks[ptr].type); - tmp.add((lookahead(tok_sub) || lookahead(tok_not))?unary():scalar()); + tmp.add((lookahead(tok::sub) || lookahead(tok::opnot))?unary():scalar()); node=std::move(tmp); } return node; @@ -594,46 +597,47 @@ ast parse::multive_expr() { ast parse::unary() { ast node(toks[ptr].line,toks[ptr].col,ast_null); switch(toks[ptr].type) { - case tok_sub:node.set_type(ast_neg);match(tok_sub);break; - case tok_not:node.set_type(ast_not);match(tok_not);break; + case tok::sub: node.set_type(ast_neg);match(tok::sub);break; + case tok::opnot: node.set_type(ast_not);match(tok::opnot);break; + default: break; } - node.add((lookahead(tok_sub) || lookahead(tok_not))?unary():scalar()); + node.add((lookahead(tok::sub) || lookahead(tok::opnot))?unary():scalar()); return node; } ast parse::scalar() { ast node(toks[ptr].line,toks[ptr].col,ast_null); - if (lookahead(tok_nil)) { + if (lookahead(tok::nil)) { node=nil(); - match(tok_nil); - } else if (lookahead(tok_num)) { + match(tok::nil); + } else if (lookahead(tok::num)) { node=num(); - } else if (lookahead(tok_str)) { + } else if (lookahead(tok::str)) { node=str(); - } else if (lookahead(tok_id)) { + } else if (lookahead(tok::id)) { node=id(); - } else if (lookahead(tok_func)) { + } else if (lookahead(tok::func)) { node=func(); - } else if (lookahead(tok_lbracket)) { + } else if (lookahead(tok::lbracket)) { node=vec(); - } else if (lookahead(tok_lbrace)) { + } else if (lookahead(tok::lbrace)) { node=hash(); - } else if (lookahead(tok_lcurve)) { - match(tok_lcurve); + } else if (lookahead(tok::lcurve)) { + match(tok::lcurve); node=calc(); - match(tok_rcurve); - } else if (lookahead(tok_var)) { - match(tok_var); + match(tok::rcurve); + } else if (lookahead(tok::var)) { + match(tok::var); node.set_type(ast_def); node.add(id()); - match(tok_eq); + match(tok::eq); node.add(calc()); } else { die(thisline,thiscol,thislen,"expected scalar"); return node; } // check call and avoid ambiguous syntax - if (is_call(toks[ptr].type) && !(lookahead(tok_lcurve) && toks[ptr+1].type==tok_var)) { + if (is_call(toks[ptr].type) && !(lookahead(tok::lcurve) && toks[ptr+1].type==tok::var)) { ast tmp=std::move(node); node={toks[ptr].line,toks[ptr].col,ast_call}; node.add(std::move(tmp)); @@ -646,9 +650,10 @@ ast parse::scalar() { ast parse::call_scalar() { switch(toks[ptr].type) { - case tok_lcurve: return callf(); break; - case tok_lbracket: return callv(); break; - case tok_dot: return callh(); break; + case tok::lcurve: return callf(); break; + case tok::lbracket: return callv(); break; + case tok::dot: return callh(); break; + default: break; } // should never run this expression return {toks[ptr].line,toks[ptr].col,ast_nil}; @@ -656,75 +661,75 @@ ast parse::call_scalar() { ast parse::callh() { ast node(toks[ptr].line,toks[ptr].col,ast_callh); - match(tok_dot); + match(tok::dot); node.set_str(toks[ptr].str); - match(tok_id,"expected hashmap key"); // get key + match(tok::id,"expected hashmap key"); // get key return node; } ast parse::callv() { // panic set for this token is not ',' // this is the FIRST set of subvec - // array end with tok_null=0 - const u32 panic_set[]={ - tok_id,tok_str,tok_num, - tok_not,tok_sub,tok_nil, - tok_func,tok_var,tok_lcurve, - tok_lbrace,tok_lbracket,tok_colon, - tok_null + // array end with tok::null=0 + const tok panic[]={ + tok::id,tok::str,tok::num, + tok::opnot,tok::sub,tok::nil, + tok::func,tok::var,tok::lcurve, + tok::lbrace,tok::lbracket,tok::colon, + tok::null }; ast node(toks[ptr].line,toks[ptr].col,ast_callv); - match(tok_lbracket); - while(!lookahead(tok_rbracket)) { + match(tok::lbracket); + while(!lookahead(tok::rbracket)) { node.add(subvec()); - if (lookahead(tok_comma)) { - match(tok_comma); - } else if (lookahead(tok_eof)) { + if (lookahead(tok::comma)) { + match(tok::comma); + } else if (lookahead(tok::eof)) { break; - } else if (!lookahead(tok_rbracket) && !check_comma(panic_set)) { + } else if (!lookahead(tok::rbracket) && !check_comma(panic)) { break; } } if (node.size()==0) { die(node.line(),node.col(),1,"expected index value"); } - match(tok_rbracket,"expected ']' when calling vector"); + match(tok::rbracket,"expected ']' when calling vector"); return node; } ast parse::callf() { // panic set for this token is not ',' // this is the FIRST set of calculation/hashmember - // array end with tok_null=0 - const u32 panic_set[]={ - tok_id,tok_str,tok_num, - tok_not,tok_sub,tok_nil, - tok_func,tok_var,tok_lcurve, - tok_lbrace,tok_lbracket,tok_null + // array end with tok::null=0 + const tok panic[]={ + tok::id,tok::str,tok::num, + tok::opnot,tok::sub,tok::nil, + tok::func,tok::var,tok::lcurve, + tok::lbrace,tok::lbracket,tok::null }; ast node(toks[ptr].line,toks[ptr].col,ast_callf); bool special_call=check_special_call(); - match(tok_lcurve); - while(!lookahead(tok_rcurve)) { + match(tok::lcurve); + while(!lookahead(tok::rcurve)) { node.add(special_call?pair():calc()); - if (lookahead(tok_comma)) - match(tok_comma); - else if (lookahead(tok_eof)) + if (lookahead(tok::comma)) + match(tok::comma); + else if (lookahead(tok::eof)) break; - else if (!lookahead(tok_rcurve) && !check_comma(panic_set)) + else if (!lookahead(tok::rcurve) && !check_comma(panic)) break; } - match(tok_rcurve,"expected ')' when calling function"); + match(tok::rcurve,"expected ')' when calling function"); return node; } ast parse::subvec() { - ast node=lookahead(tok_colon)?nil():calc(); - if (lookahead(tok_colon)) { + ast node=lookahead(tok::colon)?nil():calc(); + if (lookahead(tok::colon)) { ast tmp(node.line(),node.col(),ast_subvec); - match(tok_colon); + match(tok::colon); tmp.add(std::move(node)); - tmp.add((lookahead(tok_comma) || lookahead(tok_rbracket))?nil():calc()); + tmp.add((lookahead(tok::comma) || lookahead(tok::rbracket))?nil():calc()); node=std::move(tmp); } return node; @@ -732,18 +737,18 @@ ast parse::subvec() { ast parse::definition() { ast node(toks[ptr].line,toks[ptr].col,ast_def); - if (lookahead(tok_var)) { - match(tok_var); + if (lookahead(tok::var)) { + match(tok::var); switch(toks[ptr].type) { - case tok_id: node.add(id());break; - case tok_lcurve: node.add(outcurve_def());break; - default: die(thisline,thiscol,thislen,"expected identifier");break; + case tok::id: node.add(id());break; + case tok::lcurve: node.add(outcurve_def());break; + default: die(thisline,thiscol,thislen,"expected identifier");break; } - } else if (lookahead(tok_lcurve)) { + } else if (lookahead(tok::lcurve)) { node.add(incurve_def()); } - match(tok_eq); - if (lookahead(tok_lcurve)) { + match(tok::eq); + if (lookahead(tok::lcurve)) { node.add(check_tuple()?multi_scalar():calc()); } else { node.add(calc()); @@ -752,31 +757,31 @@ ast parse::definition() { } ast parse::incurve_def() { - match(tok_lcurve); - match(tok_var); + match(tok::lcurve); + match(tok::var); ast node=multi_id(); - match(tok_rcurve); + match(tok::rcurve); return node; } ast parse::outcurve_def() { - match(tok_lcurve); + match(tok::lcurve); ast node=multi_id(); - match(tok_rcurve); + match(tok::rcurve); return node; } ast parse::multi_id() { ast node(toks[ptr].line,toks[ptr].col,ast_multi_id); - while(!lookahead(tok_eof)) { + while(!lookahead(tok::eof)) { node.add(id()); if (is_call(toks[ptr].type)) { ast tmp=call_scalar();// recognize calls but this is still a syntax error die(tmp.line(),tmp.col(),1,"cannot call identifier in multi-definition"); } - if (lookahead(tok_comma)) { - match(tok_comma); - } else if (lookahead(tok_id)) { // first set of identifier + if (lookahead(tok::comma)) { + match(tok::comma); + } else if (lookahead(tok::id)) { // first set of identifier die(thisline,thiscol,thislen,"expected ',' between identifiers",true); } else { break; @@ -787,37 +792,37 @@ ast parse::multi_id() { ast parse::multi_scalar() { // if check_call_memory is true,we will check if value called here can reach a memory space - const u32 panic_set[]={ - tok_id,tok_str,tok_num, - tok_not,tok_sub,tok_nil, - tok_func,tok_var,tok_lcurve, - tok_lbrace,tok_lbracket,tok_null + const tok panic[]={ + tok::id,tok::str,tok::num, + tok::opnot,tok::sub,tok::nil, + tok::func,tok::var,tok::lcurve, + tok::lbrace,tok::lbracket,tok::null }; ast node(toks[ptr].line,toks[ptr].col,ast_tuple); - match(tok_lcurve); - while(!lookahead(tok_rcurve)) { + match(tok::lcurve); + while(!lookahead(tok::rcurve)) { node.add(calc()); - if (lookahead(tok_comma)) { - match(tok_comma); - } else if (lookahead(tok_eof)) { + if (lookahead(tok::comma)) { + match(tok::comma); + } else if (lookahead(tok::eof)) { break; - } else if (!lookahead(tok_rcurve) && !check_comma(panic_set)) { + } else if (!lookahead(tok::rcurve) && !check_comma(panic)) { break; } } - match(tok_rcurve,"expected ')' after multi-scalar"); + match(tok::rcurve,"expected ')' after multi-scalar"); return node; } ast parse::multi_assgin() { ast node(toks[ptr].line,toks[ptr].col,ast_multi_assign); node.add(multi_scalar()); - match(tok_eq); - if (lookahead(tok_eof)) { + match(tok::eq); + if (lookahead(tok::eof)) { die(thisline,thiscol,thislen,"expected value list"); return node; } - if (lookahead(tok_lcurve)) { + if (lookahead(tok::lcurve)) { node.add(check_tuple()?multi_scalar():calc()); } else { node.add(calc()); @@ -829,10 +834,11 @@ ast parse::loop() { ++in_loop; ast node(0,0,ast_null); switch(toks[ptr].type) { - case tok_while: node=while_loop(); break; - case tok_for: node=for_loop(); break; - case tok_forindex: - case tok_foreach: node=forei_loop(); break; + case tok::rwhile: node=while_loop(); break; + case tok::rfor: node=for_loop(); break; + case tok::forindex: + case tok::foreach: node=forei_loop(); break; + default: break; } --in_loop; return node; @@ -840,52 +846,52 @@ ast parse::loop() { ast parse::while_loop() { ast node(toks[ptr].line,toks[ptr].col,ast_while); - match(tok_while); - match(tok_lcurve); + match(tok::rwhile); + match(tok::lcurve); node.add(calc()); - match(tok_rcurve); + match(tok::rcurve); node.add(exprs()); return node; } ast parse::for_loop() { ast node(toks[ptr].line,toks[ptr].col,ast_for); - match(tok_for); - match(tok_lcurve); + match(tok::rfor); + match(tok::lcurve); // first expression - if (lookahead(tok_eof)) { + if (lookahead(tok::eof)) { die(thisline,thiscol,thislen,"expected definition"); } - if (lookahead(tok_semi)) { + if (lookahead(tok::semi)) { node.add(null()); - } else if (lookahead(tok_var)) { + } else if (lookahead(tok::var)) { node.add(definition()); - } else if (lookahead(tok_lcurve)) { + } else if (lookahead(tok::lcurve)) { node.add(lcurve_expr()); } else { node.add(calc()); } - match(tok_semi,"expected ';' in for(;;)"); + match(tok::semi,"expected ';' in for(;;)"); // conditional expression - if (lookahead(tok_eof)) { + if (lookahead(tok::eof)) { die(thisline,thiscol,thislen,"expected conditional expr"); } - if (lookahead(tok_semi)) { + if (lookahead(tok::semi)) { node.add(null()); } else { node.add(calc()); } - match(tok_semi,"expected ';' in for(;;)"); + match(tok::semi,"expected ';' in for(;;)"); //after loop expression - if (lookahead(tok_eof)) { + if (lookahead(tok::eof)) { die(thisline,thiscol,thislen,"expected calculation"); } - if (lookahead(tok_rcurve)) { + if (lookahead(tok::rcurve)) { node.add(null()); } else { node.add(calc()); } - match(tok_rcurve); + match(tok::rcurve); node.add(exprs()); return node; } @@ -893,30 +899,31 @@ ast parse::for_loop() { ast parse::forei_loop() { ast node(toks[ptr].line,toks[ptr].col,ast_null); switch(toks[ptr].type) { - case tok_forindex:node.set_type(ast_forindex);match(tok_forindex);break; - case tok_foreach: node.set_type(ast_foreach); match(tok_foreach); break; + case tok::forindex:node.set_type(ast_forindex);match(tok::forindex);break; + case tok::foreach: node.set_type(ast_foreach); match(tok::foreach); break; + default: break; } - match(tok_lcurve); + match(tok::lcurve); // first expression // foreach/forindex must have an iterator to loop through - if (!lookahead(tok_var) && !lookahead(tok_id)) { + if (!lookahead(tok::var) && !lookahead(tok::id)) { die(thisline,thiscol,thislen,"expected iterator"); } node.add(iter_gen()); - match(tok_semi,"expected ';' in foreach/forindex(iter;vector)"); - if (lookahead(tok_eof)) { + match(tok::semi,"expected ';' in foreach/forindex(iter;vector)"); + if (lookahead(tok::eof)) { die(thisline,thiscol,thislen,"expected vector"); } node.add(calc()); - match(tok_rcurve); + match(tok::rcurve); node.add(exprs()); return node; } ast parse::iter_gen() { ast node(toks[ptr].line,toks[ptr].col,ast_null); - if (lookahead(tok_var)) { - match(tok_var); + if (lookahead(tok::var)) { + match(tok::var); node.set_type(ast_iter); node.add(id()); } else { @@ -932,24 +939,24 @@ ast parse::iter_gen() { ast parse::cond() { ast node(toks[ptr].line,toks[ptr].col,ast_cond); ast ifnode(toks[ptr].line,toks[ptr].col,ast_if); - match(tok_if); - match(tok_lcurve); + match(tok::rif); + match(tok::lcurve); ifnode.add(calc()); - match(tok_rcurve); + match(tok::rcurve); ifnode.add(exprs()); node.add(std::move(ifnode)); - while(lookahead(tok_elsif)) { + while(lookahead(tok::elsif)) { ast elsifnode(toks[ptr].line,toks[ptr].col,ast_elsif); - match(tok_elsif); - match(tok_lcurve); + match(tok::elsif); + match(tok::lcurve); elsifnode.add(calc()); - match(tok_rcurve); + match(tok::rcurve); elsifnode.add(exprs()); node.add(std::move(elsifnode)); } - if (lookahead(tok_else)) { + if (lookahead(tok::relse)) { ast elsenode(toks[ptr].line,toks[ptr].col,ast_else); - match(tok_else); + match(tok::relse); elsenode.add(exprs()); node.add(std::move(elsenode)); } @@ -958,23 +965,23 @@ ast parse::cond() { ast parse::continue_expr() { ast node(toks[ptr].line,toks[ptr].col,ast_continue); - match(tok_continue); + match(tok::cont); return node; } ast parse::break_expr() { ast node(toks[ptr].line,toks[ptr].col,ast_break); - match(tok_break); + match(tok::brk); return node; } ast parse::ret_expr() { ast node(toks[ptr].line,toks[ptr].col,ast_ret); - match(tok_ret); - u32 type=toks[ptr].type; - if (type==tok_nil || type==tok_num || type==tok_str || type==tok_id || - type==tok_func || type==tok_sub || type==tok_not || type==tok_lcurve || - type==tok_lbracket || type==tok_lbrace + match(tok::ret); + tok type=toks[ptr].type; + if (type==tok::nil || type==tok::num || type==tok::str || type==tok::id || + type==tok::func || type==tok::sub || type==tok::opnot || type==tok::lcurve || + type==tok::lbracket || type==tok::lbrace ) { node.add(calc()); }