From e6a23dfa3a58902963b03e615f79623087632229 Mon Sep 17 00:00:00 2001 From: Vadym Slizov Date: Fri, 20 Nov 2020 23:36:45 +0200 Subject: [PATCH] [refactoring] update ast structure of "Encapsed", "EncapsedStringPart" and "Heredoc" nodes --- internal/php5/php5.go | Bin 288752 -> 288464 bytes internal/php5/php5.y | 119 +++++++++++++++++++--------------- internal/php7/php7.go | Bin 239733 -> 239445 bytes internal/php7/php7.y | 119 +++++++++++++++++++--------------- pkg/ast/node.go | 12 ++-- pkg/ast/visitor/dump.go | 3 - pkg/printer/pretty_printer.go | 4 +- pkg/printer/printer.go | 4 +- 8 files changed, 148 insertions(+), 113 deletions(-) diff --git a/internal/php5/php5.go b/internal/php5/php5.go index 51b160f699860b239e55ba78bcf2e11522c8aba3..51ae8568f9a971bce1b6f0f0018c41b6b3c2aabf 100644 GIT binary patch delta 3636 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 We1@7Ykx`-Y$Zy$Fvn1LomG|G#iLEUF delta 3418 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 X`uLD8zs-$1RiufA++d~BchLPWF_xy< delta 2134 zcma)-eN5G56vy{G2OVG_Ag`CViv+$Q+~4oMaIXx(ra)o|X3hkHn%pY82|y)KysK^H+;nx;0aA&6cxPtLdDs3AWm5b9J8I<<+&;A9uUwoaZ^udHJ04 zyLm1A_rdV~2%F3`I-+cQqHID%+2qCH;0AwFi+w@99XaWgg6>$#fGm>9#CkYLBnIgN z7%rAeLbiv7to1k7+MP(dB5WuO5?SQ+deQitj6qfyt;3BBiba)QgyTXO6{9nZ;xXW+ zL}Z6kiEzL;D^oGlN>kLaa7vNV@S?m)rl?yHbVZ=XDdI4cOw%xQkdn}sM8DzY4EEzc zCSn7I!Tl75rP1`qxK87)<@kij@?qO#IXY>wd?yg|VHP9|a? zil(Z+Z4@KWX=nQvkHsYAQ!}X~#taP!Y2{x??WVQI@Z0DO4H)A>=jl1=9cVLwM{LxTU$r3Z-+s`7Cb8IHux}k#e1>lsumJuWPYA$#zWkw{@&l?fR5RCJ^L zjNE`bnVjUoy3vkIju+RJFkz3R>nK}HAt;^A9=$FYZZdFbHWiVBxv->yIaDMaK8;4= z;p=jWIz5M6LOR^4eLhu4c;~a-bZY6ilrGDMi5DGIgyADHPUDk=YYr+F?g@A;FqkJd z{7zxug8uJ8`4NW1I-O(k>0G3R$PvYvfTG+b5>nq1E0Z2CyEOwr@H@$f@NtkDTGfz8rvzr?QIT+A*ks__zm!3mbern(QHMZm zKHJ=AG)3&l>4XB-cmf=EZImIZt$=Qe32`T*a}gi$YKK-L$q0Ui!yc{kP8P`II_nWa zSUcIkZ`C7Wy}Xari>X99INB4U?&3CT6WCkCh@9Uo?do9>y(fj!3I_UVuqH+I_mU9! zb}1jjvt(EKrSzEyR6UT7)@&2#c|H)hu2$G`u2wE04+Q4g%66APWO;xGjw}`SCJItJ z@(2RaFL3fnF$L9y z@)8DLVy#Q3n2LRsB3Ko!p>BcUW(L}VWNM{_6jPHJxRG7OH%2h(zsnn~?+u!T_FrWN zy4KKRJb0PA%>!X#Z8g`{YmDu^MEp=q#pDXK!b&&|bv3j~x<&{as?m0zPc86Mmym`- zefP<9P6|STG0*$pYO&2XqODh2M%C9-r3R?8kv1#uCR$14_PN!8Mv5nCaEbJu?z<;u;-?m>h&6Km&$ha= zOlFR)vpFz&MZ&-BqjMc{E*u|;h;ie=^CBK?#~Dj&M^tQKCQR#Vu@FCRp^{kVf2_-~ z57D^4_K!u@xU{H5wvJ0T(kKsQTloc-XO#KNTplNCy6F}+hsn|aI6RV>l04pVgHO$C zqr-Bl!>7xEzEGKsg;!;)nzoDH7t%Cw{6q1Lb}<)yODI%*zFX_LD-EwvP>^1vX?J-5 zHDzGR=D{(@YrUbFmcsrzC7`f_mtymqJXV7lG;{3R_6Ya)@c`#~-O9ONx7XoOp>s=wZ*9HA~Bp>)Zs!KkJ8Hv32P!s{A^-pY diff --git a/internal/php7/php7.y b/internal/php7/php7.y index d171ae7..f896af8 100644 --- a/internal/php7/php7.y +++ b/internal/php7/php7.y @@ -3878,11 +3878,15 @@ backticks_expr: } | T_ENCAPSED_AND_WHITESPACE { - part := &ast.ScalarEncapsedStringPart{ast.Node{}, $1.Value} - $$ = []ast.Vertex{part} - - // save position - part.GetNode().Position = position.NewTokenPosition($1) + $$ = []ast.Vertex{ + &ast.ScalarEncapsedStringPart{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + EncapsedStrTkn: $1, + Value: $1.Value, + }, + } } | encaps_list { @@ -4040,45 +4044,54 @@ scalar: } | T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC { - encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, $2.Value} - $$ = &ast.ScalarHeredoc{ast.Node{}, $1.Value, []ast.Vertex{encapsed}} - - // save position - encapsed.GetNode().Position = position.NewTokenPosition($2) - $$.GetNode().Position = position.NewTokensPosition($1, $3) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ScalarHeredoc{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $3), + }, + OpenHeredocTkn: $1, + Parts: []ast.Vertex{ + &ast.ScalarEncapsedStringPart{ + Node: ast.Node{ + Position: position.NewTokenPosition($2), + }, + EncapsedStrTkn: $2, + Value: $2.Value, + }, + }, + CloseHeredocTkn: $3, + } } | T_START_HEREDOC T_END_HEREDOC { - $$ = &ast.ScalarHeredoc{ast.Node{}, $1.Value, nil} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ScalarHeredoc{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $2), + }, + OpenHeredocTkn: $1, + CloseHeredocTkn: $2, + } } | '"' encaps_list '"' { - $$ = &ast.ScalarEncapsed{ast.Node{}, $2} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $3) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ScalarEncapsed{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $3), + }, + OpenQoteTkn: $1, + Parts: $2, + CloseQoteTkn: $1, + } } | T_START_HEREDOC encaps_list T_END_HEREDOC { - $$ = &ast.ScalarHeredoc{ast.Node{}, $1.Value, $2} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $3) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.ScalarHeredoc{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $3), + }, + OpenHeredocTkn: $1, + Parts: $2, + CloseHeredocTkn: $3, + } } | dereferencable_scalar { @@ -4615,14 +4628,16 @@ encaps_list: } | encaps_list T_ENCAPSED_AND_WHITESPACE { - encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, $2.Value} - $$ = append($1, encapsed) - - // save position - encapsed.GetNode().Position = position.NewTokenPosition($2) - - // save comments - yylex.(*Parser).setFreeFloating(encapsed, token.Start, $2.SkippedTokens) + $$ = append( + $1, + &ast.ScalarEncapsedStringPart{ + Node: ast.Node{ + Position: position.NewTokenPosition($2), + }, + EncapsedStrTkn: $2, + Value: $2.Value, + }, + ) } | encaps_var { @@ -4630,14 +4645,16 @@ encaps_list: } | T_ENCAPSED_AND_WHITESPACE encaps_var { - encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, $1.Value} - $$ = []ast.Vertex{encapsed, $2} - - // save position - encapsed.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating(encapsed, token.Start, $1.SkippedTokens) + $$ = []ast.Vertex{ + &ast.ScalarEncapsedStringPart{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + EncapsedStrTkn: $1, + Value: $1.Value, + }, + $2, + } } ; diff --git a/pkg/ast/node.go b/pkg/ast/node.go index 5e6e373..a1b04f4 100644 --- a/pkg/ast/node.go +++ b/pkg/ast/node.go @@ -126,7 +126,9 @@ func (n *ScalarDnumber) Accept(v NodeVisitor) { // ScalarEncapsed node type ScalarEncapsed struct { Node - Parts []Vertex + OpenQoteTkn *token.Token + Parts []Vertex + CloseQoteTkn *token.Token } func (n *ScalarEncapsed) Accept(v NodeVisitor) { @@ -136,7 +138,8 @@ func (n *ScalarEncapsed) Accept(v NodeVisitor) { // ScalarEncapsedStringPart node type ScalarEncapsedStringPart struct { Node - Value []byte + EncapsedStrTkn *token.Token + Value []byte } func (n *ScalarEncapsedStringPart) Accept(v NodeVisitor) { @@ -146,8 +149,9 @@ func (n *ScalarEncapsedStringPart) Accept(v NodeVisitor) { // ScalarHeredoc node type ScalarHeredoc struct { Node - Label []byte - Parts []Vertex + OpenHeredocTkn *token.Token + Parts []Vertex + CloseHeredocTkn *token.Token } func (n *ScalarHeredoc) Accept(v NodeVisitor) { diff --git a/pkg/ast/visitor/dump.go b/pkg/ast/visitor/dump.go index 7e11d72..15c3226 100644 --- a/pkg/ast/visitor/dump.go +++ b/pkg/ast/visitor/dump.go @@ -1224,9 +1224,6 @@ func (v *Dump) ScalarHeredoc(n *ast.ScalarHeredoc) { v.printIndentIfNotSingle(v.indent - 1) v.print("&ast.ScalarHeredoc{\n") v.printNode(n.GetNode()) - - v.printIndent(v.indent) - v.print(fmt.Sprintf("Label: %q,\n", n.Label)) } func (v *Dump) ScalarLnumber(n *ast.ScalarLnumber) { diff --git a/pkg/printer/pretty_printer.go b/pkg/printer/pretty_printer.go index 6caa793..b1e411f 100644 --- a/pkg/printer/pretty_printer.go +++ b/pkg/printer/pretty_printer.go @@ -558,7 +558,7 @@ func (p *PrettyPrinter) printScalarEncapsed(n ast.Vertex) { func (p *PrettyPrinter) printScalarHeredoc(n ast.Vertex) { nn := n.(*ast.ScalarHeredoc) - io.WriteString(p.w, string(nn.Label)) + io.WriteString(p.w, string(nn.OpenHeredocTkn.Value)) for _, part := range nn.Parts { switch part.(type) { @@ -571,7 +571,7 @@ func (p *PrettyPrinter) printScalarHeredoc(n ast.Vertex) { } } - io.WriteString(p.w, strings.Trim(string(nn.Label), "<\"'\n")) + io.WriteString(p.w, strings.Trim(string(nn.OpenHeredocTkn.Value), "<\"'\n")) } func (p *PrettyPrinter) printScalarMagicConstant(n ast.Vertex) { diff --git a/pkg/printer/printer.go b/pkg/printer/printer.go index 7f5fae5..4925c35 100644 --- a/pkg/printer/printer.go +++ b/pkg/printer/printer.go @@ -687,7 +687,7 @@ func (p *Printer) printScalarHeredoc(n ast.Vertex) { p.printFreeFloatingOrDefault(nn, token.Start, p.bufStart) p.bufStart = "" - p.write(nn.Label) + p.write(nn.OpenHeredocTkn.Value) for _, part := range nn.Parts { switch part.(type) { @@ -710,7 +710,7 @@ func (p *Printer) printScalarHeredoc(n ast.Vertex) { } } - p.write([]byte(strings.Trim(string(nn.Label), "<\"'\n"))) + p.write([]byte(strings.Trim(string(nn.OpenHeredocTkn.Value), "<\"'\n"))) p.printFreeFloating(nn, token.End) }