From ea3c5298e2e65321a1f72b98d0ab85737be8e2de Mon Sep 17 00:00:00 2001 From: Vadym Slizov Date: Fri, 4 Dec 2020 12:49:13 +0200 Subject: [PATCH] [refactoring] update ast structure of "For", "TraitUseAlias" and "TraitUsePrecedence" nodes --- internal/php5/php5.go | Bin 264589 -> 265977 bytes internal/php5/php5.y | 44 +++++++++++++++++++++--------------------- internal/php7/php7.go | Bin 219415 -> 219796 bytes internal/php7/php7.y | 36 +++++++++++++++++----------------- pkg/ast/node.go | 13 +++++++++---- 5 files changed, 49 insertions(+), 44 deletions(-) diff --git a/internal/php5/php5.go b/internal/php5/php5.go index 664719238ff45eadb75c96c1a8e75f16e221581f..626fc16ccbf360ff1988ca8972dc6a6a12f02b40 100644 GIT binary patch delta 11947 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 Z`-K&7w1%lPv%@n~T*C`JT@ydz{2zUHo)7>4 delta 10506 zcmbVScX(CBw*O`(fh2SgM3S6y0t65eJT*Co3!zE7bPGkKL@6RtA}DYX2%uu8M6zs@ zTyGRBAi~%QD)JOXu%ie>!2*K7ML|XH`>mPTC%pI9``-7#$=YjHpEYaN%-+APZg_uL z!;L2knna?Zyg(=zisWUa7bN0&fmozW6<#XhW%-4j(juWKM#F_=(+k_HXfRUtSYhi% zvBDUL6TwJcAd<)nM1!067Is=WG8Bx3^8#TW0~lnfQ4HgkH9!s%8*~J8p^C@pHjH*c5^= z^Mk+1e=$ho{~@D1l-T^pt`yOZ^@jL|4Gq=&uxZvlV``%8o%d%pWMtUbd_-I`((~~E6sQbA6px_-mKfz|So*}~b^Euoyz36E z5W%uD2QCBL`rv>jOvhv#Fe4`%EL(E0Ge)ZpcD@`+t>jQrDxN``&;OG;0U=`faW*E2 z3?oqdRMzd#m1!J_eD?p*Ll=uSCgMh-`3Z7>qAbBgK4$$1mwi!v6YS{q&BORT_)WEl zmTmtwrv}W7jGKr4ki*n7eX4Fa~gWN`^-YMQTygn5QhV@TNMWtdYJcfh(xKL4K znGFMQk+{BXnOG_fi3~-lcsyomLI=5mK3(akWGF`6_X)r5TqX)FC1xkIUS{cyt3(T{ zO@`t&7$@t>R9%&}XBuz(tMmo2IO!y;@g35SCE`iI48YnTj22`jxBeK=Cor{1eQ ztw2}Y4z16v7NebxZ~^T-fE?K~8Ph&`t>;C!AevNBmp<|EGF(U%9c5P`5NyPPo&xs`|Mi?}NK9yO7l&Yn#c|nYFb03Y-qG}fc zI=)48qF`UyjuzHQNu@Dc#6ZJLp|&!IhP*0L>5mt&fDg5SYrJgr$d^S+L3e1+)o9!< zs2L%dMptxEV`%V8;tC@~!d-9SrfR4{Ih^;3XiJS=#hMDyigJXg>o(Dlj=lm<9hNhY zHUDA|5;FtO!}Q2&j*<4BkQZCF^w&K$6K_l_`&#n4D92_29kghyFr-KZJW51&#XR9N ze(6`XiIt8F+Y?H})iR$N79)Yb*bY_VO%Xu#!0h{}YQ8!~+u9?;ro08ejjTkFN{*v8 ze&Jz6!Um%A+hUn@pVhI8NS7?~?{E=AG#kywMtbKCyR3bx09jV?j@W7^h;lZ{Y+EcJ zdRIJWM5%&UkaFG@IrQke2wXQ39jMzNBvONu;v(H(7jK`OPO`ve1$BK})T4Vp0NJ`N zsx_T_7p^q_z)PosxRKUDgW?Trd>rxOZm#apZF^8~YuK9Y0UMJ*vB@}$?{Z8g!4SC4 zy6Piww=`rjR*;O^OS>n*Ei~w5b|aB67AmQw=dMc}jEq9F zR>M^5u)`pnH5=fx!(xLqG-1Oz=7`woN@xOg*;Fl9)sUus@8(M;LbSIUQq~?7-KgOz z(U``41IL1+WgXf$Q`XiKe-Jl&G9u1S$cWkGNqEkp7+S9&XoD;830kzvuBQgH>bT2M z+B**G;LqdY2b)%jINNF#YXi#r*~{bv6>kAA&ncZhE{bT#bag3}##B>{Noi|4N)aso z6RXfHf_qMZm77l$44Jjqf|uPz^mMVTOZ848UOXs+AzPwqmSk1USXk%0DgG|#$}>q> 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 YA421!9PADF_3Ql^Kv?ix-4r4J8v>wnQ~&?~ diff --git a/internal/php5/php5.y b/internal/php5/php5.y index e58d0cf..8c4c536 100644 --- a/internal/php5/php5.y +++ b/internal/php5/php5.y @@ -240,7 +240,7 @@ import ( %type switch_case_list non_empty_function_call_parameter_list assignment_list lexical_var_list %type method_body trait_reference_list static_array_pair_list non_empty_static_array_pair_list %type foreach_statement for_statement while_statement isset_variables -%type foreach_variable foreach_optional_arg +%type foreach_variable foreach_optional_arg for_expr non_empty_for_expr %type extends_from interface_list trait_list %type implements_list %type interface_extends_list @@ -248,8 +248,8 @@ import ( %type top_statement_list namespace_name use_declarations use_function_declarations use_const_declarations %type inner_statement_list encaps_list -%type elseif_list new_elseif_list non_empty_for_expr -%type for_expr case_list catch_statement additional_catches +%type elseif_list new_elseif_list +%type case_list catch_statement additional_catches %type non_empty_additional_catches class_statement_list %type class_statement_list variable_modifiers method_modifiers %type trait_adaptation_list non_empty_trait_adaptation_list @@ -938,11 +938,14 @@ unticked_statement: { $9.(*ast.StmtFor).ForTkn = $1 $9.(*ast.StmtFor).OpenParenthesisTkn = $2 - $9.(*ast.StmtFor).Init = $3 + $9.(*ast.StmtFor).Init = $3.(*ast.ParserSeparatedList).Items + $9.(*ast.StmtFor).InitSeparatorTkns = $3.(*ast.ParserSeparatedList).SeparatorTkns $9.(*ast.StmtFor).InitSemiColonTkn = $4 - $9.(*ast.StmtFor).Cond = $5 + $9.(*ast.StmtFor).Cond = $5.(*ast.ParserSeparatedList).Items + $9.(*ast.StmtFor).CondSeparatorTkns = $5.(*ast.ParserSeparatedList).SeparatorTkns $9.(*ast.StmtFor).CondSemiColonTkn = $6 - $9.(*ast.StmtFor).Loop = $7 + $9.(*ast.StmtFor).Loop = $7.(*ast.ParserSeparatedList).Items + $9.(*ast.StmtFor).LoopSeparatorTkns = $7.(*ast.ParserSeparatedList).SeparatorTkns $9.(*ast.StmtFor).CloseParenthesisTkn = $8 $9.(*ast.StmtFor).Node.Position = position.NewTokenNodePosition($1, $9) @@ -2537,19 +2540,15 @@ non_empty_trait_adaptation_list: trait_adaptation_statement: trait_precedence ';' { - $$ = $1; + $1.(*ast.StmtTraitUsePrecedence).SemiColonTkn = $2 - // save comments - yylex.(*Parser).setFreeFloating($$, token.NameList, $2.SkippedTokens) - yylex.(*Parser).setToken($$, token.SemiColon, $2.SkippedTokens) + $$ = $1; } | trait_alias ';' { - $$ = $1; + $1.(*ast.StmtTraitUseAlias).SemiColonTkn = $2 - // save comments - yylex.(*Parser).setFreeFloating($$, token.Alias, $2.SkippedTokens) - yylex.(*Parser).setToken($$, token.SemiColon, $2.SkippedTokens) + $$ = $1; } ; @@ -2976,7 +2975,7 @@ echo_expr_list: for_expr: /* empty */ { - $$ = nil + $$ = &ast.ParserSeparatedList{} } | non_empty_for_expr { @@ -2987,14 +2986,16 @@ for_expr: non_empty_for_expr: non_empty_for_expr ',' expr { - $$ = append($1, $3) + $1.(*ast.ParserSeparatedList).SeparatorTkns = append($1.(*ast.ParserSeparatedList).SeparatorTkns, $2) + $1.(*ast.ParserSeparatedList).Items = append($1.(*ast.ParserSeparatedList).Items, $3) - // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.SkippedTokens) + $$ = $1 } | expr { - $$ = []ast.Vertex{$1} + $$ = &ast.ParserSeparatedList{ + Items: []ast.Vertex{$1}, + } } ; @@ -4461,10 +4462,9 @@ dynamic_class_name_variable_properties: dynamic_class_name_variable_property: T_OBJECT_OPERATOR object_property { - $$ = $2 + $2[0].(*ast.ExprPropertyFetch).ObjectOperatorTkn = $1 - // save comments - yylex.(*Parser).setFreeFloating($2[0], token.Var, $1.SkippedTokens) + $$ = $2 } ; diff --git a/internal/php7/php7.go b/internal/php7/php7.go index 4eb37848a20a7b3a6b5af32abbbeab70a995845e..35f39c1cc9ba8bda32d70573fa4134f23d812f32 100644 GIT binary patch delta 9356 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 R`dxR$BokaQspQTc{|5(CUrhi2 delta 9202 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 Mn()oBMUQv?U;H30*8l(j diff --git a/internal/php7/php7.y b/internal/php7/php7.y index 8248833..845fa18 100644 --- a/internal/php7/php7.y +++ b/internal/php7/php7.y @@ -234,7 +234,7 @@ import ( %type interface_declaration_statement %type group_use_declaration inline_use_declaration %type mixed_group_use_declaration use_declaration unprefixed_use_declaration -%type const_decl inner_statement +%type const_decl inner_statement for_exprs non_empty_for_exprs %type expr optional_expr parameter_list non_empty_parameter_list %type declare_statement finally_statement unset_variable variable %type parameter optional_type argument expr_without_variable global_var_list global_var @@ -272,7 +272,6 @@ import ( %type encaps_list backticks_expr namespace_name catch_list class_const_list -%type for_exprs non_empty_for_exprs %type unprefixed_use_declarations inline_use_declarations %type case_list trait_adaptation_list %type use_declarations @@ -900,11 +899,14 @@ statement: { $9.(*ast.StmtFor).ForTkn = $1 $9.(*ast.StmtFor).OpenParenthesisTkn = $2 - $9.(*ast.StmtFor).Init = $3 + $9.(*ast.StmtFor).Init = $3.(*ast.ParserSeparatedList).Items + $9.(*ast.StmtFor).InitSeparatorTkns = $3.(*ast.ParserSeparatedList).SeparatorTkns $9.(*ast.StmtFor).InitSemiColonTkn = $4 - $9.(*ast.StmtFor).Cond = $5 + $9.(*ast.StmtFor).Cond = $5.(*ast.ParserSeparatedList).Items + $9.(*ast.StmtFor).CondSeparatorTkns = $5.(*ast.ParserSeparatedList).SeparatorTkns $9.(*ast.StmtFor).CondSemiColonTkn = $6 - $9.(*ast.StmtFor).Loop = $7 + $9.(*ast.StmtFor).Loop = $7.(*ast.ParserSeparatedList).Items + $9.(*ast.StmtFor).LoopSeparatorTkns = $7.(*ast.ParserSeparatedList).SeparatorTkns $9.(*ast.StmtFor).CloseParenthesisTkn = $8 $9.(*ast.StmtFor).Node.Position = position.NewTokenNodePosition($1, $9) @@ -2277,19 +2279,15 @@ trait_adaptation_list: trait_adaptation: trait_precedence ';' { - $$ = $1; + $1.(*ast.StmtTraitUsePrecedence).SemiColonTkn = $2 - // save comments - yylex.(*Parser).setFreeFloating($$, token.NameList, $2.SkippedTokens) - yylex.(*Parser).setToken($$, token.SemiColon, $2.SkippedTokens) + $$ = $1; } | trait_alias ';' { - $$ = $1; + $1.(*ast.StmtTraitUseAlias).SemiColonTkn = $2 - // save comments - yylex.(*Parser).setFreeFloating($$, token.Alias, $2.SkippedTokens) - yylex.(*Parser).setToken($$, token.SemiColon, $2.SkippedTokens) + $$ = $1; } ; @@ -2688,7 +2686,7 @@ echo_expr: for_exprs: /* empty */ { - $$ = nil; + $$ = &ast.ParserSeparatedList{} } | non_empty_for_exprs { @@ -2699,14 +2697,16 @@ for_exprs: non_empty_for_exprs: non_empty_for_exprs ',' expr { - $$ = append($1, $3) + $1.(*ast.ParserSeparatedList).SeparatorTkns = append($1.(*ast.ParserSeparatedList).SeparatorTkns, $2) + $1.(*ast.ParserSeparatedList).Items = append($1.(*ast.ParserSeparatedList).Items, $3) - // save comments - yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.SkippedTokens) + $$ = $1 } | expr { - $$ = []ast.Vertex{$1} + $$ = &ast.ParserSeparatedList{ + Items: []ast.Vertex{$1}, + } } ; diff --git a/pkg/ast/node.go b/pkg/ast/node.go index c231894..5a71e3d 100644 --- a/pkg/ast/node.go +++ b/pkg/ast/node.go @@ -438,10 +438,13 @@ type StmtFor struct { ForTkn *token.Token OpenParenthesisTkn *token.Token Init []Vertex + InitSeparatorTkns []*token.Token InitSemiColonTkn *token.Token Cond []Vertex + CondSeparatorTkns []*token.Token CondSemiColonTkn *token.Token Loop []Vertex + LoopSeparatorTkns []*token.Token CloseParenthesisTkn *token.Token ColonTkn *token.Token Stmt Vertex @@ -792,10 +795,11 @@ func (n *StmtTraitUse) Accept(v NodeVisitor) { // StmtTraitUseAlias node type StmtTraitUseAlias struct { Node - Ref Vertex - AsTkn *token.Token - Modifier Vertex - Alias Vertex + Ref Vertex + AsTkn *token.Token + Modifier Vertex + Alias Vertex + SemiColonTkn *token.Token } func (n *StmtTraitUseAlias) Accept(v NodeVisitor) { @@ -809,6 +813,7 @@ type StmtTraitUsePrecedence struct { InsteadofTkn *token.Token Insteadof []Vertex SeparatorTkns []*token.Token + SemiColonTkn *token.Token } func (n *StmtTraitUsePrecedence) Accept(v NodeVisitor) {