From 0285900fe5aabf4f8644ee079cb33f49199d9c63 Mon Sep 17 00:00:00 2001 From: Vadym Slizov Date: Mon, 24 Aug 2020 21:41:06 +0300 Subject: [PATCH] [refactoring] update ast structure of "HaltCompiler" node --- internal/php5/php5.go | Bin 296000 -> 295716 bytes internal/php5/php5.y | 34 +++++++++++++----------- internal/php7/php7.go | Bin 252280 -> 251010 bytes internal/php7/php7.y | 34 +++++++++++++----------- pkg/ast/node.go | 4 +++ pkg/ast/visitor/filter_tokens.go | 7 +++++ pkg/printer/printer.go | 12 ++++----- pkg/printer/printer_parsed_php5_test.go | 3 ++- pkg/printer/printer_parsed_php7_test.go | 3 ++- 9 files changed, 56 insertions(+), 41 deletions(-) diff --git a/internal/php5/php5.go b/internal/php5/php5.go index b074c966276016b5d0ba2a3ab7733f1b5d9c3eb4..926e1bebabfb0937d9f5ece935e29a3d8e94ac78 100644 GIT binary patch delta 8742 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 diff --git a/internal/php7/php7.y b/internal/php7/php7.y index 33c558c..3013dfd 100644 --- a/internal/php7/php7.y +++ b/internal/php7/php7.y @@ -434,14 +434,15 @@ top_statement: } | T_HALT_COMPILER '(' ')' ';' { - $$ = &ast.StmtHaltCompiler{ast.Node{}} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $4) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens($$, token.End, append($2.SkippedTokens, append($3.SkippedTokens, $4.SkippedTokens...)...)) + $$ = &ast.StmtHaltCompiler{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $4), + }, + HaltCompilerTkn: $1, + OpenParenthesisTkn: $2, + CloseParenthesisTkn: $3, + SemiColonTkn: $4, + } } | T_NAMESPACE namespace_name ';' { @@ -838,14 +839,15 @@ inner_statement: } | T_HALT_COMPILER '(' ')' ';' { - $$ = &ast.StmtHaltCompiler{ast.Node{}} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $4) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloatingTokens($$, token.End, append($2.SkippedTokens, append($3.SkippedTokens, $4.SkippedTokens...)...)) + $$ = &ast.StmtHaltCompiler{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $4), + }, + HaltCompilerTkn: $1, + OpenParenthesisTkn: $2, + CloseParenthesisTkn: $3, + SemiColonTkn: $4, + } } statement: diff --git a/pkg/ast/node.go b/pkg/ast/node.go index d64da63..4b633fe 100644 --- a/pkg/ast/node.go +++ b/pkg/ast/node.go @@ -539,6 +539,10 @@ func (n *StmtGoto) Accept(v NodeVisitor) { // StmtHaltCompiler node type StmtHaltCompiler struct { Node + HaltCompilerTkn *token.Token + OpenParenthesisTkn *token.Token + CloseParenthesisTkn *token.Token + SemiColonTkn *token.Token } func (n *StmtHaltCompiler) Accept(v NodeVisitor) { diff --git a/pkg/ast/visitor/filter_tokens.go b/pkg/ast/visitor/filter_tokens.go index adba189..ff7f336 100644 --- a/pkg/ast/visitor/filter_tokens.go +++ b/pkg/ast/visitor/filter_tokens.go @@ -60,3 +60,10 @@ func (v *FilterTokens) StmtNamespace(n *ast.StmtNamespace) { n.CloseCurlyBracket = nil n.SemiColonTkn = nil } + +func (v *FilterTokens) StmtHaltCompiler(n *ast.StmtHaltCompiler) { + n.HaltCompilerTkn = nil + n.OpenParenthesisTkn = nil + n.CloseParenthesisTkn = nil + n.SemiColonTkn = nil +} diff --git a/pkg/printer/printer.go b/pkg/printer/printer.go index 0e8a0dd..450f928 100644 --- a/pkg/printer/printer.go +++ b/pkg/printer/printer.go @@ -2823,13 +2823,11 @@ func (p *Printer) printStmtGoto(n ast.Vertex) { p.printFreeFloating(nn, token.End) } -func (p *Printer) printStmtHaltCompiler(n ast.Vertex) { - nn := n.(*ast.StmtHaltCompiler) - p.printFreeFloating(nn, token.Start) - - io.WriteString(p.w, "__halt_compiler") - - p.printFreeFloatingOrDefault(nn, token.End, "();") +func (p *Printer) printStmtHaltCompiler(n *ast.StmtHaltCompiler) { + p.printToken(n.HaltCompilerTkn, "__halt_compiler") + p.printToken(n.OpenParenthesisTkn, "(") + p.printToken(n.CloseParenthesisTkn, ")") + p.printToken(n.SemiColonTkn, ";") } func (p *Printer) printStmtIf(n ast.Vertex) { diff --git a/pkg/printer/printer_parsed_php5_test.go b/pkg/printer/printer_parsed_php5_test.go index 17cef65..a65bd6b 100644 --- a/pkg/printer/printer_parsed_php5_test.go +++ b/pkg/printer/printer_parsed_php5_test.go @@ -1049,7 +1049,8 @@ func TestParseAndPrintPhp5Goto(t *testing.T) { } func TestParseAndPrintPhp5HaltCompiler(t *testing.T) { - src := `