From 94aa9cf8291096235f7a92d11981fa59271e44c3 Mon Sep 17 00:00:00 2001 From: Vadym Slizov Date: Thu, 17 Sep 2020 16:49:54 +0300 Subject: [PATCH] [refactoring] update ast structure of "Goto" and "Label" nodes --- internal/php5/php5.go | Bin 287603 -> 287375 bytes internal/php5/php5.y | 26 +++++++++++++++-------- internal/php7/php7.go | Bin 240642 -> 240414 bytes internal/php7/php7.y | 26 +++++++++++++++-------- pkg/ast/node.go | 5 ++++- pkg/ast/visitor/filter_tokens.go | 9 ++++++++ pkg/printer/printer.go | 35 +++++++------------------------ 7 files changed, 55 insertions(+), 46 deletions(-) diff --git a/internal/php5/php5.go b/internal/php5/php5.go index f819223c6be86bef3d4702be7e8777a6d45f1526..2e1bb38eefe402006c4fdb148fc9c2bc5bac38b3 100644 GIT binary patch delta 8477 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 RGGUvgzYv!sOVc*x{U1f1KJx$o delta 6139 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 diff --git a/internal/php7/php7.y b/internal/php7/php7.y index 920dc76..e4709aa 100644 --- a/internal/php7/php7.y +++ b/internal/php7/php7.y @@ -1089,30 +1089,38 @@ statement: | T_GOTO T_STRING ';' { label := &ast.Identifier{ast.Node{}, $2.Value} - $$ = &ast.StmtGoto{ast.Node{}, label} + + $$ = &ast.StmtGoto{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $3), + }, + GotoTkn: $1, + Label: label, + SemiColonTkn: $3, + } // save position label.GetNode().Position = position.NewTokenPosition($2) - $$.GetNode().Position = position.NewTokensPosition($1, $3) // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) yylex.(*Parser).setFreeFloating(label, token.Start, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Label, $3.SkippedTokens) - yylex.(*Parser).setToken($$, token.SemiColon, $3.SkippedTokens) } | T_STRING ':' { label := &ast.Identifier{ast.Node{}, $1.Value} - $$ = &ast.StmtLabel{ast.Node{}, label} + $$ = &ast.StmtLabel{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $2), + }, + LabelName: label, + ColonTkn: $2, + } // save position label.GetNode().Position = position.NewTokenPosition($1) - $$.GetNode().Position = position.NewTokensPosition($1, $2) // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Label, $2.SkippedTokens) + yylex.(*Parser).setFreeFloating(label, token.Start, $1.SkippedTokens) } catch_list: diff --git a/pkg/ast/node.go b/pkg/ast/node.go index e459723..7882623 100644 --- a/pkg/ast/node.go +++ b/pkg/ast/node.go @@ -505,7 +505,9 @@ func (n *StmtGlobal) Accept(v NodeVisitor) { // StmtGoto node type StmtGoto struct { Node - Label Vertex + GotoTkn *token.Token + Label Vertex + SemiColonTkn *token.Token } func (n *StmtGoto) Accept(v NodeVisitor) { @@ -582,6 +584,7 @@ func (n *StmtInterfaceExtends) Accept(v NodeVisitor) { type StmtLabel struct { Node LabelName Vertex + ColonTkn *token.Token } func (n *StmtLabel) Accept(v NodeVisitor) { diff --git a/pkg/ast/visitor/filter_tokens.go b/pkg/ast/visitor/filter_tokens.go index 62f7700..579bb8d 100644 --- a/pkg/ast/visitor/filter_tokens.go +++ b/pkg/ast/visitor/filter_tokens.go @@ -265,3 +265,12 @@ func (v *FilterTokens) StmtThrow(n *ast.StmtThrow) { n.ThrowTkn = nil n.SemiColonTkn = nil } + +func (v *FilterTokens) StmtGoto(n *ast.StmtGoto) { + n.GotoTkn = nil + n.SemiColonTkn = nil +} + +func (v *FilterTokens) StmtLabel(n *ast.StmtLabel) { + n.ColonTkn = nil +} diff --git a/pkg/printer/printer.go b/pkg/printer/printer.go index 0ade2a0..2dd68a4 100644 --- a/pkg/printer/printer.go +++ b/pkg/printer/printer.go @@ -2425,23 +2425,11 @@ func (p *Printer) printStmtGlobal(n *ast.StmtGlobal) { p.printToken(n.SemiColonTkn, ";") } -func (p *Printer) printStmtGoto(n ast.Vertex) { - nn := n.(*ast.StmtGoto) - p.printFreeFloating(nn, token.Start) - - p.write([]byte("goto")) - if nn.Label.GetNode().Tokens.IsEmpty() { - p.write([]byte(" ")) - } - p.Print(nn.Label) - p.printFreeFloating(nn, token.Label) - - p.printFreeFloating(nn, token.SemiColon) - if nn.GetNode().Tokens.IsEmpty() { - p.write([]byte(";")) - } - - p.printFreeFloating(nn, token.End) +func (p *Printer) printStmtGoto(n *ast.StmtGoto) { + p.printToken(n.GotoTkn, "goto") + p.bufStart = " " + p.Print(n.Label) + p.printToken(n.SemiColonTkn, ";") } func (p *Printer) printStmtHaltCompiler(n *ast.StmtHaltCompiler) { @@ -2527,16 +2515,9 @@ func (p *Printer) printStmtInterface(n ast.Vertex) { p.printFreeFloating(nn, token.End) } -func (p *Printer) printStmtLabel(n ast.Vertex) { - nn := n.(*ast.StmtLabel) - p.printFreeFloating(nn, token.Start) - - p.Print(nn.LabelName) - p.printFreeFloating(nn, token.Label) - - p.write([]byte(":")) - - p.printFreeFloating(nn, token.End) +func (p *Printer) printStmtLabel(n *ast.StmtLabel) { + p.Print(n.LabelName) + p.printToken(n.ColonTkn, ":") } func (p *Printer) printStmtNamespace(n *ast.StmtNamespace) {