From 5a6418e853ee72ec31627d77ab140812e845af46 Mon Sep 17 00:00:00 2001 From: Vadym Slizov Date: Fri, 4 Dec 2020 09:42:45 +0200 Subject: [PATCH] [refactoring] update ast structure of "Yield", "YieldFrom" and "Cast" nodes --- internal/php5/php5.go | Bin 276089 -> 274372 bytes internal/php5/php5.y | 180 ++++++++++++++++++++---------------------- internal/php7/php7.go | Bin 226870 -> 224287 bytes internal/php7/php7.y | 163 ++++++++++++++++++-------------------- pkg/ast/node.go | 30 ++++--- 5 files changed, 185 insertions(+), 188 deletions(-) diff --git a/internal/php5/php5.go b/internal/php5/php5.go index e6a9141b2d7608c887850fbc0a6f48b3854bf5d2..8664f6e873cc4c4c2334631f2933283cce0e1d19 100644 GIT binary patch delta 4573 zcmbtYdsvoL5`WH_7Z5})f*^rh#4j;#+~Gq7xhVFmxmvpFW(a0Rrbrjsvdv5Ds+q1> z4~%6N6}d~+3T2)wdeXAo)^yRWwVMKAX^En4QKZKH&iUSti(UTNe?H#xo_S~H%>3pz zbLeOd*w+|PyEu$eoauim4O>$hCRAyd41a@HO%uQ2b8#Yw19po6lv{Kc7kw#*aKvu> zv>%ldMFOvEmVukiJ~7fqXfk-44M2 zuPXX`1UHeVl~5D|Iv%`Zfpl{G@97NJb;t=KiT66JpKN7cloMpKld}cI@|)h)DmD6& zTq{KC&q~WqgbDdHYKl1EkO)_@lIn|!E&8IjsuDAMFuYtz_E>J2HSS zX)4H*K9MpdO||u*Cy29ifRw3K6wG`4D2|7JN&fs%e``YJRWguA1zFx|YCp;r+OA7Z zLGBp<54foerg0oSUi9I|V`UtVx2!&<{&+<&1@ZPt;$hxgW6);#a@G)JV(K7D)rs-q z@yqcO9YlLXvN`OoU^*gkaKJO%02<0~=N&VoA6Jb#)OAzW)&Ufh&K_wx8Q5zEW!f$=rT`10IwWMTPy>CI=7=?IV!*oys@ z6w)ke+yw$W`N=?QzS@yW(`#9u+iTgH*J~LuvDb2PevhT6+L=$`Ql>lA;cID( z!G4rlmT2unx+X*L!t02Eq1c(%(L^1q=8=@Z4OsLzaQ+m8*H!oG#VIsPb1FJklq#v9 zt%Bd0hHbmh7gx|?b)3mxaP7rb=_<;k?}O21w3;+epSfs^geiJ6oSGh!S? ztI4ypK7*$Xvmuvgc(|LL6xb=rq##N))W{OS=jNEN(FKO6IX6+QIk`hEe^K5lcyl2f zYYqbYK-f!p6wwQI**VnFc~~G`8cPoK{Cs**vyds}s_oK4-MfIo_3_F_FSr*<;UTR~tTr4<#5rUPh58!YKF4?Ai@+m>YU-}Bw1v5VU+fwpS z4LfDA;Fcw>ghp{`3H4PqyX0+x-?*due8cVpRq8-HROemvir|+E0ZpR@YcJJQrVo*z zE8D^5&FHOif#B%-;E5r6hnliQN9~8DaH1#>5r@OOh0SL=N}ej~0eV@86yvyxep8kT zUb_O2Nkyo1lrQbke%Pgv|ZaLk>+`;dxYLo9a^nf-tF2xgzeb7S}b&3 zmun0eFSTx+KBIPx8#Yi8FONVe_xn(8=7k&F@kH)7(0y8+Y5v6@ZWjFsDWEZ%_U17$=Lt6mr zRL!QgP4NWw;k=7ORPhs(VRtUgIgGM?h$lZuyZO!pX=D!a*{2W*8>=9}TSdHjwTfQX zPOaPq?h5!TsBH5yy3AAcn?&yaEKrohF&(sW*9F=y_?hR(baA|y!=3Mm{#@RH=of6G zzr(t_zpBD^?M+z?d`{y{el(NUwo?vwHd72oS%B~I=V_@PZg6z_JR`RwhNgdnx`O)L zc2n@ZD0>|jE|ET}>IGVB6RMlcyLWN{+*;6w)?SU{R@R#QcSp{@4vK-(F4Jr3AOVb3 zi>uW)bu`->esqhkcwHYkS#$p=E-Xgp4X#IslG8c6O$^qZ=X#lvs*cpteU?m5EvYIGx`=^kG!y5h_5Tzh_Wm0ET%%3cl(9!knhb3p9TKqMFJ~ zoZ81bQYwqHmOa3Jor&O*e1))TGNqW!7idLj^3veXHR! zxM0SO+Gyd!s+p?!)G?qV^7%=!kyo~0AA>GD za50er6ZMrnY!CgCPRXQX6?hVyC6iIE9+*)t(rF&`75%xp67{4T#!bGsJP!IA-kYXo zhV}=ZC8w_7q5Q8_^58RHQ!!$2{B7~0t8H$$L>VSr3i}rXZmrH9llqV6z%ggf(lkWZ zU7<1j$2J5b-l0Z1B8^fav72&TK6T<-jieJ)ejE49{Wn`zx{ zEzoz|v8q;DGlfj;rV3v!A0-3$2FpSlOxFw&p_FA!(l$(CXL@3%7Z5OMe#mRQtlLn- z=e?{NZA}pD zA7xGCJGbjQ`9kTf%A%}R?Y_PZs)4Z<2C$ujtvo$L?)?HCFD%yj1NPOXAy&MW!(WFw z>9G9GM_M9esCADpm{r^3tp0*?x8dz)!>kD1HeF0*U*~L)&mV5(^AFcpefePzIlx^I znf%QNyvJ3@o*fsBM6)$BntPZWiG9$RnSC)Kb&keS%>N583u7IY*kgUso+PogLvVho GmH0oF#w20@ delta 5131 zcmb_gdw5M(7XS8MCnE8>(Oa_6cr`3s9Z{>v?^gfZK_C3 zYf*+EqhF{=Vyas`DmscP^=O591~t`=N1`nqgUoNAbCU?Z{$b{y`<=bc+H0@9*82U{ zI(OGu+rKZ{ieGL)@s8Lzt`={)S_tK8Ap^H_a~-pX7nB$v}2p#LwQjvIFN& zk*#>9zwy}OLh|L)4%wU@AN307_#2Vj=a@|6BL-AUCrX3=c1$*SR8v{UVX9ZMaGN@H z{LxJndfJ|Vpy)vLoNU}|=@4E4gDrw({we8y<*87u-GAy!o<1a@2}{pTdL`pg9UF26rV>>C897GE#5f+bREDTF=VU`6 z6CGS!AfkEndHC*gnnJl;kPn|aFH;~bi6tjLb3vxUkyQZ{s?RHy?S$ z69Fy_d%#QX+FHJOmc+gy#s>{uTE8a(3oc_j4{_dYR>hla(OZq{MmNGt0 zUouC9|0E-&NT`jVX*cizyVIxl&YU=L)RbYrU(HTVxPrsO=9B$@H8lFF>@8y*9Ckql zaOqXqgxAcI8ckvk05fNqe8Pg1EkgLS;~H*zYTA9cva{3Sm(3PWATPdj z&5W#0hw0+~$?U{RnZlEgQUKfL0vP!h$>5@~GLh47%By_my6i1tO(3e$0~9HE-Y+^% z?}{MCI+^pjh+fL|t6U_Ib&XfI+LON_Z#wn7@*;U~(JeWgZC{H3b>Jxq6r6GkL5g

Q^HuT$Y9K~+k+hsdBIhin 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 K61*tNaQ+vM5boUo diff --git a/internal/php5/php5.y b/internal/php5/php5.y index 3990144..7ff468a 100644 --- a/internal/php5/php5.y +++ b/internal/php5/php5.y @@ -3799,80 +3799,73 @@ expr_without_variable: } | T_INT_CAST expr { - $$ = &ast.ExprCastInt{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setToken($$, token.Cast, $1.SkippedTokens) + $$ = &ast.ExprCastInt{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $2), + }, + CastTkn: $1, + Expr: $2, + } } | T_DOUBLE_CAST expr { - $$ = &ast.ExprCastDouble{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setToken($$, token.Cast, $1.SkippedTokens) + $$ = &ast.ExprCastDouble{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $2), + }, + CastTkn: $1, + Expr: $2, + } } | T_STRING_CAST expr { - $$ = &ast.ExprCastString{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setToken($$, token.Cast, $1.SkippedTokens) + $$ = &ast.ExprCastString{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $2), + }, + CastTkn: $1, + Expr: $2, + } } | T_ARRAY_CAST expr { - $$ = &ast.ExprCastArray{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setToken($$, token.Cast, $1.SkippedTokens) + $$ = &ast.ExprCastArray{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $2), + }, + CastTkn: $1, + Expr: $2, + } } | T_OBJECT_CAST expr { - $$ = &ast.ExprCastObject{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setToken($$, token.Cast, $1.SkippedTokens) + $$ = &ast.ExprCastObject{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $2), + }, + CastTkn: $1, + Expr: $2, + } } | T_BOOL_CAST expr { - $$ = &ast.ExprCastBool{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setToken($$, token.Cast, $1.SkippedTokens) + $$ = &ast.ExprCastBool{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $2), + }, + CastTkn: $1, + Expr: $2, + } } | T_UNSET_CAST expr { - $$ = &ast.ExprCastUnset{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setToken($$, token.Cast, $1.SkippedTokens) + $$ = &ast.ExprCastUnset{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $2), + }, + CastTkn: $1, + Expr: $2, + } } | T_EXIT exit_expr { @@ -3936,13 +3929,12 @@ expr_without_variable: } | T_YIELD { - $$ = &ast.ExprYield{ast.Node{}, nil, nil} - - // save position - $$.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ExprYield{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + YieldTkn: $1, + } } | function is_reference '(' parameter_list ')' lexical_vars '{' inner_statement_list '}' { @@ -3984,45 +3976,47 @@ expr_without_variable: yield_expr: T_YIELD expr_without_variable { - $$ = &ast.ExprYield{ast.Node{}, nil, $2} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ExprYield{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $2), + }, + YieldTkn: $1, + Value: $2, + } } | T_YIELD variable { - $$ = &ast.ExprYield{ast.Node{}, nil, $2} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ExprYield{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $2), + }, + YieldTkn: $1, + Value: $2, + } } | T_YIELD expr T_DOUBLE_ARROW expr_without_variable { - $$ = &ast.ExprYield{ast.Node{}, $2, $4} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $4) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Expr, $3.SkippedTokens) + $$ = &ast.ExprYield{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $4), + }, + YieldTkn: $1, + Key: $2, + DoubleArrowTkn: $3, + Value: $4, + } } | T_YIELD expr T_DOUBLE_ARROW variable { - $$ = &ast.ExprYield{ast.Node{}, $2, $4} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $4) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Expr, $3.SkippedTokens) + $$ = &ast.ExprYield{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $4), + }, + YieldTkn: $1, + Key: $2, + DoubleArrowTkn: $3, + Value: $4, + } } ; diff --git a/internal/php7/php7.go b/internal/php7/php7.go index 351c5c167838cd6f69c547a5c24abcad62bd400e..8788ab26ffc89584dd54141cf98f8c93947dea7d 100644 GIT binary patch delta 7547 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 delta 9438 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 W!1>el(&P{4B=cwvWMb`fp7S3cg-Iv? diff --git a/internal/php7/php7.y b/internal/php7/php7.y index bdd808a..7390dd6 100644 --- a/internal/php7/php7.y +++ b/internal/php7/php7.y @@ -3455,80 +3455,73 @@ expr_without_variable: } | T_INT_CAST expr { - $$ = &ast.ExprCastInt{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setToken($$, token.Cast, $1.SkippedTokens) + $$ = &ast.ExprCastInt{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $2), + }, + CastTkn: $1, + Expr: $2, + } } | T_DOUBLE_CAST expr { - $$ = &ast.ExprCastDouble{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setToken($$, token.Cast, $1.SkippedTokens) + $$ = &ast.ExprCastDouble{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $2), + }, + CastTkn: $1, + Expr: $2, + } } | T_STRING_CAST expr { - $$ = &ast.ExprCastString{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setToken($$, token.Cast, $1.SkippedTokens) + $$ = &ast.ExprCastString{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $2), + }, + CastTkn: $1, + Expr: $2, + } } | T_ARRAY_CAST expr { - $$ = &ast.ExprCastArray{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setToken($$, token.Cast, $1.SkippedTokens) + $$ = &ast.ExprCastArray{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $2), + }, + CastTkn: $1, + Expr: $2, + } } | T_OBJECT_CAST expr { - $$ = &ast.ExprCastObject{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setToken($$, token.Cast, $1.SkippedTokens) + $$ = &ast.ExprCastObject{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $2), + }, + CastTkn: $1, + Expr: $2, + } } | T_BOOL_CAST expr { - $$ = &ast.ExprCastBool{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setToken($$, token.Cast, $1.SkippedTokens) + $$ = &ast.ExprCastBool{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $2), + }, + CastTkn: $1, + Expr: $2, + } } | T_UNSET_CAST expr { - $$ = &ast.ExprCastUnset{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setToken($$, token.Cast, $1.SkippedTokens) + $$ = &ast.ExprCastUnset{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $2), + }, + CastTkn: $1, + Expr: $2, + } } | T_EXIT exit_expr { @@ -3584,44 +3577,44 @@ expr_without_variable: } | T_YIELD { - $$ = &ast.ExprYield{ast.Node{}, nil, nil} - - // save position - $$.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ExprYield{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + YieldTkn: $1, + } } | T_YIELD expr { - $$ = &ast.ExprYield{ast.Node{}, nil, $2} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ExprYield{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $2), + }, + YieldTkn: $1, + Value: $2, + } } | T_YIELD expr T_DOUBLE_ARROW expr { - $$ = &ast.ExprYield{ast.Node{}, $2, $4} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $4) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Expr, $3.SkippedTokens) + $$ = &ast.ExprYield{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $4), + }, + YieldTkn: $1, + Key: $2, + DoubleArrowTkn: $3, + Value: $4, + } } | T_YIELD_FROM expr { - $$ = &ast.ExprYieldFrom{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokenNodePosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ExprYieldFrom{ + Node: ast.Node{ + Position: position.NewTokenNodePosition($1, $2), + }, + YieldFromTkn: $1, + Expr: $2, + } } | inline_function { diff --git a/pkg/ast/node.go b/pkg/ast/node.go index 4bd9737..a4599b4 100644 --- a/pkg/ast/node.go +++ b/pkg/ast/node.go @@ -1428,8 +1428,10 @@ func (n *ExprVariable) Accept(v NodeVisitor) { // ExprYield node type ExprYield struct { Node - Key Vertex - Value Vertex + YieldTkn *token.Token + Key Vertex + DoubleArrowTkn *token.Token + Value Vertex } func (n *ExprYield) Accept(v NodeVisitor) { @@ -1439,7 +1441,8 @@ func (n *ExprYield) Accept(v NodeVisitor) { // ExprYieldFrom node type ExprYieldFrom struct { Node - Expr Vertex + YieldFromTkn *token.Token + Expr Vertex } func (n *ExprYieldFrom) Accept(v NodeVisitor) { @@ -1449,7 +1452,8 @@ func (n *ExprYieldFrom) Accept(v NodeVisitor) { // ExprCastArray node type ExprCastArray struct { Node - Expr Vertex + CastTkn *token.Token + Expr Vertex } func (n *ExprCastArray) Accept(v NodeVisitor) { @@ -1459,7 +1463,8 @@ func (n *ExprCastArray) Accept(v NodeVisitor) { // ExprCastBool node type ExprCastBool struct { Node - Expr Vertex + CastTkn *token.Token + Expr Vertex } func (n *ExprCastBool) Accept(v NodeVisitor) { @@ -1469,7 +1474,8 @@ func (n *ExprCastBool) Accept(v NodeVisitor) { // ExprCastDouble node type ExprCastDouble struct { Node - Expr Vertex + CastTkn *token.Token + Expr Vertex } func (n *ExprCastDouble) Accept(v NodeVisitor) { @@ -1479,7 +1485,8 @@ func (n *ExprCastDouble) Accept(v NodeVisitor) { // ExprCastInt node type ExprCastInt struct { Node - Expr Vertex + CastTkn *token.Token + Expr Vertex } func (n *ExprCastInt) Accept(v NodeVisitor) { @@ -1489,7 +1496,8 @@ func (n *ExprCastInt) Accept(v NodeVisitor) { // ExprCastObject node type ExprCastObject struct { Node - Expr Vertex + CastTkn *token.Token + Expr Vertex } func (n *ExprCastObject) Accept(v NodeVisitor) { @@ -1499,7 +1507,8 @@ func (n *ExprCastObject) Accept(v NodeVisitor) { // ExprCastString node type ExprCastString struct { Node - Expr Vertex + CastTkn *token.Token + Expr Vertex } func (n *ExprCastString) Accept(v NodeVisitor) { @@ -1509,7 +1518,8 @@ func (n *ExprCastString) Accept(v NodeVisitor) { // ExprCastUnset node type ExprCastUnset struct { Node - Expr Vertex + CastTkn *token.Token + Expr Vertex } func (n *ExprCastUnset) Accept(v NodeVisitor) {