From df1626b7dc92424ebdbb147ba8169eea4653bcb2 Mon Sep 17 00:00:00 2001 From: Vadym Slizov Date: Fri, 4 Dec 2020 11:02:38 +0200 Subject: [PATCH] [refactoring] update ast structure of "Root" and "Class" nodes --- internal/php5/php5.go | Bin 264006 -> 264971 bytes internal/php5/php5.y | 11 +++++--- internal/php7/php7.go | Bin 219046 -> 219158 bytes internal/php7/php7.y | 29 +++++++++++--------- pkg/ast/ast.go | 1 - pkg/ast/node.go | 49 ++++++++++++++++++---------------- pkg/ast/traverser/dfs.go | 24 +++++------------ pkg/ast/visitor/dump.go | 6 ----- pkg/ast/visitor/null.go | 4 --- pkg/printer/pretty_printer.go | 4 +-- pkg/printer/printer.go | 8 +++--- 11 files changed, 61 insertions(+), 75 deletions(-) diff --git a/internal/php5/php5.go b/internal/php5/php5.go index 58de3b2e1c6f46459be94bb3c6f2155036d8db7c..77d735f17fe72f66daf0d99cb947605c2f560427 100644 GIT binary patch delta 14292 zcmZ`=d3aXE)qiFtA*?YVvWC2GSQG{1-IvG`uti%af{LZhQg3sgUm?>A@ey>p{}|KxcxXPGnSo;ll`_vIxe zzppE)pWRtx7FKuG)t$v6C0n$hwtYo6YS&G~DD{YpQLKgPUv%EDXZ`x>iYVQg79ERz ze&y8jFTb*anwJ4F-A}ZoDKCm%KB-FN5_;u@;ygj`Mnq44StjyS`L*al1EV5t78|C@ z2*qc}4it-uHdG%K-+H)ZGM=Er`$SS7D;KAUU^S7U$H$5ObZrm2+lEClBI2~+Vf;DR z!)|5PXlPH>fp+x}U8$<4L#6HuRGjwo6ek;wYwiK!kf9=?ADAHWg04E*uH*D&RK8S1 z>4Dy28jZSEbf8%+RS`u`6;II%gJehAdO&ujiryjohQT7Lf&UQ;J7o)4_h?jIsq#8e zptqa`U6?J!r?O1O;yT_}oZ&A->ESzN7e=IW`ijX^^E1&wM@|>jj8R^wAZ4M)swu{B zL5t(|c!sk`QB9$Y(mCa_kSY_RWnDsi#k%XJqBOrywx=hCiRJV{(hANr8S_mB(~wkX zEgRafYAB$_0%+yg;t|@Ec6c(EqPAy4MO!0sumRs!H$)txT+WI#dORdQuo?OV57@$2 zdAok#GG#s*C@1OK3eiIv5rJGLQ`wM|3kKSq3`C@@l+6ZtyWiJDDL;_$rooPqmabGC zDb`E0AcLi&l|u4{ZJ!TGHrl*!CbsO>vy818t8T%fpf1zq^Le6OJr%^g)(kFehW>b z#3jLX7Fjy*A0yW)QK<9hi=PD$mCeP?ZM8bEd*l-|eYaz5=1C|AOF_x#ijmws#tF=$$XZ4 zJgK)#7bAidX>@3u%h@xV} zI3<9|e1?{8^?gA4D)CQW|1zI-5IyZ`(IGgj%;#7FI(UtkN>yLU6KL|aqA&H^Av)6R zYs6rmhse{MxQuGxb!O^@&7w@jVkwFnSGe<` z`6tb|-hmKH+V)W0^p5LAmtYSWOR}9)_Z!52eI`Y*RK}|4W@zuC8^yW+zbKYY`=H)> z%*|p=2$V_rpa|`sESu@d8t=;+(PS*7Ct5pSeCh88$!fR4c#Wqvg6yV;7dp9B4BwHz z$~m`)BHjKL@#kPq6^|wK*4xEAMRRYr=E_=#Ct_y#5jHEcQWW>TdgBt&TW?q_Ch(VK zxu7v;aT5p0rSw6q<0a#1dUKIykb1~ckqs!}LSx-mEjGuakDyzMm`Y6&8AJjKb@*($ktSQx-6j&LvUwV9~ihpdcuJ*VB8}P zAd@L`vp9_?rClM2N~ZEO9n{71!DUka7X#4K9b+Atcl0<sErZmoDf_`)ig&+4P=#KHofrA#H=ZKo~IA*wwThrcg5MfA~S_2R$5X^{)S{q>^C zKZy+0J|%wRSY#;P4fcL)GrSDI_XzsvX(yjdd0ykJXT&o;5x6yER7YL8Q9LNLPIat1CQhKrO#zb#dvXGHF|FGq8hvD(vc{bJ(6f#K{)Gqcz%0f+=U7Nsp>aPN zr@YrcR+PFg6&82-<^VV9-5`WEcxv2+!WYC{K1l?T4}Q2SmCRGkDDsLrh4#0WJ*fNE zfIcF#d3|`3I$O|&Z6V1x7TDdoH8^Z`mb9Qj+~KQ7nh$LPRAp*Fpp` z>zSgj*929Lf$qP4L)`8Tf?NG&9GP_Wb!wBY-Yq@|Ku9}MbfA-r=sVsK{R27hwdP0Q zXGRT{1q8?xPKT*>o+_Z$RiZV0xCXX%e7`KF*t>ApU+#sCExQV?r{n|Cj`qDLuJ_Mr zGLRrSpx?iPC|2@1Wa;$2*zIr-rTqh1oU+f<2^4uA*ugA z!W8!WSpr2Rl}tCD@n7OZ-SKlVEcmKkqGB)2gI|O$0y3Bbs0HZ$gJMu!DXu`tv$!xd zUy5q~a7aTAr`Va4Q0AaBa+Qaruqy!VLo91sq+A7wSd3%FNjCH>`N|4wV2E|dK4&7w zGark-34uTs=Qudc?CT*XOc|P^*#qHFZ@O6ij+QnyVV2bEj)>couKKq)jnC={kW1=6 z91)RbjupbW2^w%`=_ZRfdsnJHCJy?mu!12|VCYzTnI;{#nlfwwm~*izr<%E{9ld?r z$srT*pqeS9Lj|%Ot(Yt>2&HCxOIALPa=cNh7JN&V?Uxt%TNWhZxs;wP-eJ^Rhe~87*jOc!$Xnu~C)M68n$zlbaCCJi$s1_@iL#ukDv@QL z(?O0EbY*+_p1%Qz(zduC+zI)SA<`f^EvQ_8VB@wv-bwx{uu&v)VJ8UK9NK?}I90D7 zBmW_&b(uS)gxZ&OMke%Ox#%3EVQpzundEkfRYVG5*)I)SQ~QXc$5!EB^qYuW7M!^t zk;=sROK3DFng{Ek$#D3$k@NBHO}5I$HEOlV!5Iq@X%xS4lN2mDSuPH7Nym+I`B992 zw0D?aI+5_AeEPJo*ht%4ZG{Z{F6!5(37wyb+|@@`1e-#bwC8@<$CUJI!V}gx6N%Yv zp;ehkQ^T3)9&xv8{aHvvi%)k%20Z%RAL>8rTYv$Vi~zWPfjWuC#pEy=+h6|42g7TO zDnnWAL%;C>Dv{1x&kLP3*Z0NcQ=v0t(C(Q3oVtwmB%LG$36qi7glJmYts|jNxQMF% znwE0{R-Ei}y39GylC0ApgMuuDKsK1rhAE(ug)qd)IXNTXBGKU6@LxZrXMu|=PxfgxwRjOb+70%^T>XlIWFi=Yr)u`U8loD_{_t zd|ej6pTN>O$>`eJ$wJVWN~avaa78(GawYUy2&MqD;mB`vwxmn5;(Uq~%bTd(&?a2c zE&>N31kBT3_5tRlbY!SI2w<7Ct*CA|({aL{8M|kb`&>e8e&&#j64scU6;WtArGD-p zAm<{IgVuJMFwB8qYNKC}9J#jBg0q?cmW~&lC|00erN_^905pWX3(EWK`b85ELW&n0 zx6{#II#59(m(1(I!(}ey0dmNAv2>yFVjb#E#P{FzrfNlHZzBzC9BqB){X)mCQAL7Y zA1%lE-%ciSB<83Xy>UqPG^y$^z5iT!C}djsA2^YO2G&i1D=kRmQ)!L%+KYiWrlW1m z)pXTRdYlu0fSpIOhuEWMPnJD-8`JMbw}I23x2oiHBbr&0NJwnbHAV6#XGG3PI+)z1 z8y%fu<0E6^n*p0Eh4k*NZQ)ssv4x8uy`Vj?%iEdQJ^kMbTFE4R&ZC z47yOYm&$6B+;yj_zoTZpW19Rp0B159;Q3Z>Gh`I?n=j2U*0ot<2{|w8M&Hb^8;Y4$ z4(~{FE_2K1)!Fk8MUQIlWr1y%nGQ=JVkwlD`WeDvq0l7~Yex9H;%a$Uo36a~wnS73MS|S76ew=g0xRZ9t4{R*$$^4&Xu@ zfv^m16KrG>f>*ASeolu~xCgU^{_kAbEFhN&jxbRgwNMu7Gk+tCLLhuCQ=Qh=$X2@c z23Zh*;JB^4`foSN!eH6BNGE2Gn?oR4-5Rz6PA&DUc`nM98Pn$?lu!0tO^C!;F#1cq zbio4In)l!*6>i=3(qk6NR{mnt79Py~ky|`uaVtKycjP0B9C8E|D}sS{;$gRjdBazk z18=(mdC$_@jdTywgIv3|Eq^?7;^YKSQJ0qF&_1BEXo~iyq z{nv)UUQy3lS#hq~OV>UY1}Ck4KR!?Gqiv6eA#AqjAKxRJQNJfJcPN7eJioi}FaogKHR1kZ~_L9x|QRQ~xY~ z&hdobcll$o>3;sQwP@ap(j5_YHs`9Ym zmm~TntofhUBoBPRk6#U9PH^brok1}WF`qR`zkNeqLRF6;?>%FeY)d5v^#H`ndY_JV#Nnx#Zu54~tvc%H;8T!kMDz#8<-Y}O|JIs;5eQ+_n5+jWJ7yu} zn5V!!a_-C$UU%GqrPs?blwJ6IhR9wj9Bl}dd;^!f^8q-_sur@1hMd3T@4&phgpMnn zZwnMRkpMu%H`&d^LZ!`-8Pz`O>XFTqopIqs&y|jBr9L5QuDCD80Iwbchr8(Z77jp% z_sCMiq!2R}E$uo!IL0Zs*66Cis)cVSSYo9bHXE; z2`hegAwz@OBfP)SMqSP+u^~swhrr*_P!ILYr%a^~8T|4fLeUegIt;o>p(b>lq`DBu zJVBv*5}|ENRdXt6uef(;MdWDEfudc|r2kiYD}38-_LCa@;x%Gs(~jt=`q)VbSVkm+ zXr87LRMXK)VpdG!%L#I%2?SRaa}c_!lWG@mz(ILviOc+#Iy*)HAX8%DY~^mY!_)=q zq?Fcn35n}H>((B`qf~KMb-))7eiq)ZD={Ee8UUj7)@(F|yL_RZrB-F3J#!)a30bv+ z21G*JurKwvG4zUP=!4^N%5BEr73B^LQQ{TI&SJCRMj5)ZdlM+4OsN%=q2KjzP?`}PWhQ$GYxJUI*wtEcu#b-NyMin=YHn+MV**r}}u^l(-1 zG;Ty6XLH_jmS_9Z`??*eYNJfjzP=7unN|;n3-^grnwsiql^cbehDGu7aLOIk`>Z z#D2vOCNl-ym~n8(3-8d8YI3;J|H*`|w9TuWX>b$i9)Mno(TlUc5fetEj8Jo7( ztNIDuMT$%%qv+`$3}Qgef~(q7CFZjODzdy>IXD_q(wI)cnEeJAh(TF zw()Kj&9gl#x=0s~^5o!k6bT)v_HKM0tT!{2^V<|V*KxB^o(mupR`vkA3nm0im5iFo z_9}QWZA(W~Qe2qwTE?Cf<&%Ae;%&JwDmw_|Oc$v7M_oiD}%%o+I%m8j5PkH{5J5mvi=d3IEsJ!UKFP`PwcexeB0BjKB zFWx{Ywld8`s?M>CBy86zY^ zf8)S1$*8u7!2#gFo`&zntM!TWt2>+uR65BmT<%xHlI{qpKMnQxnO7ScyEsghO6gUL z)p$-X`7)$2OY-B!^k%BL+i{fXoIZdWO$2XjB~-plRTwD+W`^Ml`G()WO#PO>G%tFc zc7B`r`W*zy8nTiYsL2lfCV5vnN_H~~ac%2jy7=Az61C&!d|&q78?cHBlxz>Fiv-o& zA1oTr&+d8n3V2ic$8xJ^mMhc{)d1T*fPvVDz{)icb^A(3VCJ#o3z0Yfs7&2T=dB9F zGZnVcLQwXG>SM(6t@QC~r%{zfqkG7W7@MEC#(f^76&M5PNG!shH6i1`zz{A!Ci))? z*%G=^Y)g7{rJ~*lz>i+|Pr%iG!tqC{V^oAekYai=v~D~d zYlzL`EX^q~^MJo`Wmp`Qz(=&ezGfDmQHMzLn zv6H#9xhB&El{^(*&D!5*{CJOz{xvrP()g6#tKi6|!_;~Ek%OS8(M|l4KdhOxH-q(j z*O~jvpUVrVq#Tch>JMlze9;!eEOpv)V{A-k;MOH6dk!FtN5oLt7Q^5dPatEkqCGXn zFq*z%lS&!Um?W7pZ`QN@9nHf8p0;a!xN+3n6MD*DF}=@l=iJ```% z-?H_dwtbg9&on{Z-?!>$_{2;2J(oF#O8THHiQyZx z?O>Yv=Dq57ETzH3GY||vLU}FQn7hYAw?jhMgZ8O*+$=KKw!DL`YU$YPNH}9#(bQ`F zu^Mg$IXh5E0UmPty^RLak`n>lctBle}O&6lnpnS%cBuZDskzIlJOe(8KW>7m1 z6=;)PN@(4s@Ah0);8)P*b?YYzc=2zn*D{&RI|@D(JclK5sLIcrB3byH8$ z?l0_xG(?zr&g!mTs)2#s;BxYBYiic1v&@8XZ+g9r{E$BQ+7SW8JX?{;x%JRS^_st1 z#Ef2eZRU~x^a^8a;|&foKGu_hI{n8+3j@R_fC)zE$s_nN*24cNehOeJz8jp`1IE34 z#Kodw*2!-nR4&b00=fIgEB bV%np~=^_TS*HprV4Z2?|06A}}tj!F`;I12RxL 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 Kw7+IrK~X6IMZ^LDY&Z}_0}hBhrr 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

o`4ed*#Dt?&;uu`b{e0wLChC zjF~URL+fnSt%-GqNy0SQnqUpmEHn8;67RsA$Sk|0?C2CE-#v*I09ldNJH-{0z^XfyhwTpNI>L!&mWFis}kZe{!r Dvf&3Z delta 7903 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