From f3203c0b5f62b39796bd62d9434b9a222035ebbf Mon Sep 17 00:00:00 2001 From: Vadym Slizov Date: Fri, 4 Dec 2020 11:36:12 +0200 Subject: [PATCH] [refactoring] update ast structure of "Parameter", "Class", "FunctionCall", "MethodCall", "New" and "StaticCall" nodes --- internal/php5/php5.go | Bin 264971 -> 263926 bytes internal/php5/php5.y | 113 +++++++++++++--------------------- internal/php7/php7.go | Bin 219158 -> 217768 bytes internal/php7/php7.y | 107 +++++++++++--------------------- pkg/ast/ast.go | 2 - pkg/ast/node.go | 29 +++------ pkg/ast/traverser/dfs.go | 24 -------- pkg/ast/visitor/dump.go | 12 ---- pkg/ast/visitor/null.go | 8 --- pkg/printer/pretty_printer.go | 18 ------ pkg/printer/printer.go | 24 -------- 11 files changed, 85 insertions(+), 252 deletions(-) diff --git a/internal/php5/php5.go b/internal/php5/php5.go index 77d735f17fe72f66daf0d99cb947605c2f560427..384171331321d906823c36b5920101b8e76080e1 100644 GIT binary patch delta 11013 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 QA3r#h?=kwaT9ohq00qKq*8l(j delta 12733 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 b&SPD&qCD)WQ@2}Gw_Q=a!DvTPLgaq|zs2NY diff --git a/internal/php5/php5.y b/internal/php5/php5.y index d3072b8..5349205 100644 --- a/internal/php5/php5.y +++ b/internal/php5/php5.y @@ -2028,40 +2028,6 @@ non_empty_parameter_list: parameter: optional_class_type is_reference is_variadic T_VARIABLE { - var variable ast.Vertex - variable = &ast.ExprVariable{ - Node: ast.Node{ - Position: position.NewTokenPosition($4), - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: position.NewTokenPosition($4), - }, - IdentifierTkn: $4, - Value: $4.Value, - }, - } - - if $3 != nil { - variable = &ast.Variadic{ - Node: ast.Node{ - Position: position.NewTokensPosition($3, $4), - }, - VariadicTkn: $3, - Var: variable, - } - } - - if $2 != nil { - variable = &ast.Reference{ - Node: ast.Node{ - Position: position.NewTokensPosition($2, $4), - }, - AmpersandTkn: $2, - Var: variable, - } - } - pos := position.NewTokenPosition($4) if $1 != nil { pos = position.NewNodeTokenPosition($1, $4) @@ -2075,46 +2041,25 @@ parameter: Node: ast.Node{ Position: pos, }, - Type: $1, - Var: variable, + Type: $1, + AmpersandTkn: $2, + VariadicTkn: $3, + Var: &ast.ExprVariable{ + Node: ast.Node{ + Position: position.NewTokenPosition($4), + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($4), + }, + IdentifierTkn: $4, + Value: $4.Value, + }, + }, } } | optional_class_type is_reference is_variadic T_VARIABLE '=' expr { - var variable ast.Vertex - variable = &ast.ExprVariable{ - Node: ast.Node{ - Position: position.NewTokenPosition($4), - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: position.NewTokenPosition($4), - }, - IdentifierTkn: $4, - Value: $4.Value, - }, - } - - if $3 != nil { - variable = &ast.Variadic{ - Node: ast.Node{ - Position: position.NewTokensPosition($3, $4), - }, - VariadicTkn: $3, - Var: variable, - } - } - - if $2 != nil { - variable = &ast.Reference{ - Node: ast.Node{ - Position: position.NewTokensPosition($2, $4), - }, - AmpersandTkn: $2, - Var: variable, - } - } - pos := position.NewTokenNodePosition($4, $6) if $1 != nil { pos = position.NewNodesPosition($1, $6) @@ -2129,7 +2074,20 @@ parameter: Position: pos, }, Type: $1, - Var: variable, + AmpersandTkn: $2, + VariadicTkn: $3, + Var: &ast.ExprVariable{ + Node: ast.Node{ + Position: position.NewTokenPosition($4), + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($4), + }, + IdentifierTkn: $4, + Value: $4.Value, + }, + }, EqualTkn: $5, DefaultValue: $6, } @@ -3116,6 +3074,7 @@ new_expr: Class: $2, OpenParenthesisTkn: $3.(*ast.ArgumentList).OpenParenthesisTkn, Arguments: $3.(*ast.ArgumentList).Arguments, + SeparatorTkns: $3.(*ast.ArgumentList).SeparatorTkns, CloseParenthesisTkn: $3.(*ast.ArgumentList).OpenParenthesisTkn, } } else { @@ -3185,6 +3144,7 @@ expr_without_variable: Class: $5, OpenParenthesisTkn: $6.(*ast.ArgumentList).OpenParenthesisTkn, Arguments: $6.(*ast.ArgumentList).Arguments, + SeparatorTkns: $6.(*ast.ArgumentList).SeparatorTkns, CloseParenthesisTkn: $6.(*ast.ArgumentList).OpenParenthesisTkn, } } else { @@ -4228,6 +4188,7 @@ function_call: }, OpenParenthesisTkn: $2.(*ast.ArgumentList).OpenParenthesisTkn, Arguments: $2.(*ast.ArgumentList).Arguments, + SeparatorTkns: $2.(*ast.ArgumentList).SeparatorTkns, CloseParenthesisTkn: $2.(*ast.ArgumentList).OpenParenthesisTkn, } } @@ -4247,6 +4208,7 @@ function_call: }, OpenParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn, Arguments: $4.(*ast.ArgumentList).Arguments, + SeparatorTkns: $4.(*ast.ArgumentList).SeparatorTkns, CloseParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn, } } @@ -4265,6 +4227,7 @@ function_call: }, OpenParenthesisTkn: $3.(*ast.ArgumentList).OpenParenthesisTkn, Arguments: $3.(*ast.ArgumentList).Arguments, + SeparatorTkns: $3.(*ast.ArgumentList).SeparatorTkns, CloseParenthesisTkn: $3.(*ast.ArgumentList).OpenParenthesisTkn, } } @@ -4279,6 +4242,7 @@ function_call: Call: $3, OpenParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn, Arguments: $4.(*ast.ArgumentList).Arguments, + SeparatorTkns: $4.(*ast.ArgumentList).SeparatorTkns, CloseParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn, } } @@ -4293,6 +4257,7 @@ function_call: Call: $3, OpenParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn, Arguments: $4.(*ast.ArgumentList).Arguments, + SeparatorTkns: $4.(*ast.ArgumentList).SeparatorTkns, CloseParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn, } } @@ -4307,6 +4272,7 @@ function_call: Call: $3, OpenParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn, Arguments: $4.(*ast.ArgumentList).Arguments, + SeparatorTkns: $4.(*ast.ArgumentList).SeparatorTkns, CloseParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn, } } @@ -4321,6 +4287,7 @@ function_call: Call: $3, OpenParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn, Arguments: $4.(*ast.ArgumentList).Arguments, + SeparatorTkns: $4.(*ast.ArgumentList).SeparatorTkns, CloseParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn, } } @@ -4333,6 +4300,7 @@ function_call: Function: $1, OpenParenthesisTkn: $2.(*ast.ArgumentList).OpenParenthesisTkn, Arguments: $2.(*ast.ArgumentList).Arguments, + SeparatorTkns: $2.(*ast.ArgumentList).SeparatorTkns, CloseParenthesisTkn: $2.(*ast.ArgumentList).OpenParenthesisTkn, } } @@ -5462,6 +5430,7 @@ variable: }, OpenParenthesisTkn: mc.OpenParenthesisTkn, Arguments: mc.Arguments, + SeparatorTkns: mc.SeparatorTkns, CloseParenthesisTkn: mc.OpenParenthesisTkn, }, ) @@ -5555,6 +5524,7 @@ variable_property: }, OpenParenthesisTkn: mc.OpenParenthesisTkn, Arguments: mc.Arguments, + SeparatorTkns: mc.SeparatorTkns, CloseParenthesisTkn: mc.OpenParenthesisTkn, }, ) @@ -5610,6 +5580,7 @@ method: }, OpenParenthesisTkn: $1.(*ast.ArgumentList).OpenParenthesisTkn, Arguments: $1.(*ast.ArgumentList).Arguments, + SeparatorTkns: $1.(*ast.ArgumentList).SeparatorTkns, CloseParenthesisTkn: $1.(*ast.ArgumentList).CloseParenthesisTkn, } } diff --git a/internal/php7/php7.go b/internal/php7/php7.go index b85c2a17f378eeab6b22649cbe35b73398ebced7..ee03b47f693dffc962ba58b832347e3481c01121 100644 GIT binary patch delta 9194 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 delta 10902 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 diff --git a/internal/php7/php7.y b/internal/php7/php7.y index e40fa5f..35d271e 100644 --- a/internal/php7/php7.y +++ b/internal/php7/php7.y @@ -1849,40 +1849,6 @@ non_empty_parameter_list: parameter: optional_type is_reference is_variadic T_VARIABLE { - var variable ast.Vertex - variable = &ast.ExprVariable{ - Node: ast.Node{ - Position: position.NewTokenPosition($4), - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: position.NewTokenPosition($4), - }, - IdentifierTkn: $4, - Value: $4.Value, - }, - } - - if $3 != nil { - variable = &ast.Variadic{ - Node: ast.Node{ - Position: position.NewTokensPosition($3, $4), - }, - VariadicTkn: $3, - Var: variable, - } - } - - if $2 != nil { - variable = &ast.Reference{ - Node: ast.Node{ - Position: position.NewTokensPosition($2, $4), - }, - AmpersandTkn: $2, - Var: variable, - } - } - pos := position.NewTokenPosition($4) if $1 != nil { pos = position.NewNodeTokenPosition($1, $4) @@ -1896,46 +1862,25 @@ parameter: Node: ast.Node{ Position: pos, }, - Type: $1, - Var: variable, + Type: $1, + AmpersandTkn: $2, + VariadicTkn: $3, + Var: &ast.ExprVariable{ + Node: ast.Node{ + Position: position.NewTokenPosition($4), + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($4), + }, + IdentifierTkn: $4, + Value: $4.Value, + }, + }, } } | optional_type is_reference is_variadic T_VARIABLE '=' expr { - var variable ast.Vertex - variable = &ast.ExprVariable{ - Node: ast.Node{ - Position: position.NewTokenPosition($4), - }, - VarName: &ast.Identifier{ - Node: ast.Node{ - Position: position.NewTokenPosition($4), - }, - IdentifierTkn: $4, - Value: $4.Value, - }, - } - - if $3 != nil { - variable = &ast.Variadic{ - Node: ast.Node{ - Position: position.NewTokensPosition($3, $4), - }, - VariadicTkn: $3, - Var: variable, - } - } - - if $2 != nil { - variable = &ast.Reference{ - Node: ast.Node{ - Position: position.NewTokensPosition($2, $4), - }, - AmpersandTkn: $2, - Var: variable, - } - } - pos := position.NewTokenNodePosition($4, $6) if $1 != nil { pos = position.NewNodesPosition($1, $6) @@ -1950,7 +1895,20 @@ parameter: Position: pos, }, Type: $1, - Var: variable, + AmpersandTkn: $2, + VariadicTkn: $3, + Var: &ast.ExprVariable{ + Node: ast.Node{ + Position: position.NewTokenPosition($4), + }, + VarName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($4), + }, + IdentifierTkn: $4, + Value: $4.Value, + }, + }, EqualTkn: $5, DefaultValue: $6, } @@ -2758,6 +2716,7 @@ anonymous_class: ClassTkn: $1, OpenParenthesisTkn: $2.(*ast.ArgumentList).OpenParenthesisTkn, Arguments: $2.(*ast.ArgumentList).Arguments, + SeparatorTkns: $2.(*ast.ArgumentList).SeparatorTkns, CloseParenthesisTkn: $2.(*ast.ArgumentList).OpenParenthesisTkn, Extends: $3, Implements: $4, @@ -2780,6 +2739,7 @@ new_expr: Class: $2, OpenParenthesisTkn: $3.(*ast.ArgumentList).OpenParenthesisTkn, Arguments: $3.(*ast.ArgumentList).Arguments, + SeparatorTkns: $3.(*ast.ArgumentList).SeparatorTkns, CloseParenthesisTkn: $3.(*ast.ArgumentList).OpenParenthesisTkn, } } else { @@ -3777,6 +3737,7 @@ function_call: Function: $1, OpenParenthesisTkn: $2.(*ast.ArgumentList).OpenParenthesisTkn, Arguments: $2.(*ast.ArgumentList).Arguments, + SeparatorTkns: $2.(*ast.ArgumentList).SeparatorTkns, CloseParenthesisTkn: $2.(*ast.ArgumentList).OpenParenthesisTkn, } } @@ -3791,6 +3752,7 @@ function_call: Call: $3, OpenParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn, Arguments: $4.(*ast.ArgumentList).Arguments, + SeparatorTkns: $4.(*ast.ArgumentList).SeparatorTkns, CloseParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn, } } @@ -3805,6 +3767,7 @@ function_call: Call: $3, OpenParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn, Arguments: $4.(*ast.ArgumentList).Arguments, + SeparatorTkns: $4.(*ast.ArgumentList).SeparatorTkns, CloseParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn, } } @@ -3817,6 +3780,7 @@ function_call: Function: $1, OpenParenthesisTkn: $2.(*ast.ArgumentList).OpenParenthesisTkn, Arguments: $2.(*ast.ArgumentList).Arguments, + SeparatorTkns: $2.(*ast.ArgumentList).SeparatorTkns, CloseParenthesisTkn: $2.(*ast.ArgumentList).OpenParenthesisTkn, } } @@ -4285,6 +4249,7 @@ callable_variable: Method: $3, OpenParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn, Arguments: $4.(*ast.ArgumentList).Arguments, + SeparatorTkns: $4.(*ast.ArgumentList).SeparatorTkns, CloseParenthesisTkn: $4.(*ast.ArgumentList).CloseParenthesisTkn, } } diff --git a/pkg/ast/ast.go b/pkg/ast/ast.go index 526c4e8..b711aaa 100644 --- a/pkg/ast/ast.go +++ b/pkg/ast/ast.go @@ -20,8 +20,6 @@ type Visitor interface { type NodeVisitor interface { Root(n *Root) Nullable(n *Nullable) - Reference(n *Reference) - Variadic(n *Variadic) Parameter(n *Parameter) Identifier(n *Identifier) Argument(n *Argument) diff --git a/pkg/ast/node.go b/pkg/ast/node.go index e3298cb..6283064 100644 --- a/pkg/ast/node.go +++ b/pkg/ast/node.go @@ -42,32 +42,12 @@ func (n *Nullable) Accept(v NodeVisitor) { v.Nullable(n) } -// Reference node -type Reference struct { - Node - AmpersandTkn *token.Token - Var Vertex -} - -func (n *Reference) Accept(v NodeVisitor) { - v.Reference(n) -} - -// Variadic node -type Variadic struct { - Node - VariadicTkn *token.Token - Var Vertex -} - -func (n *Variadic) Accept(v NodeVisitor) { - v.Variadic(n) -} - // Parameter node type Parameter struct { Node Type Vertex + AmpersandTkn *token.Token + VariadicTkn *token.Token Var Vertex EqualTkn *token.Token DefaultValue Vertex @@ -231,6 +211,7 @@ type StmtClass struct { ClassName Vertex OpenParenthesisTkn *token.Token Arguments []Vertex + SeparatorTkns []*token.Token CloseParenthesisTkn *token.Token Extends Vertex Implements Vertex @@ -1131,6 +1112,7 @@ type ExprFunctionCall struct { Function Vertex OpenParenthesisTkn *token.Token Arguments []Vertex + SeparatorTkns []*token.Token CloseParenthesisTkn *token.Token } @@ -1208,6 +1190,7 @@ type ExprMethodCall struct { Method Vertex OpenParenthesisTkn *token.Token Arguments []Vertex + SeparatorTkns []*token.Token CloseParenthesisTkn *token.Token } @@ -1222,6 +1205,7 @@ type ExprNew struct { Class Vertex OpenParenthesisTkn *token.Token Arguments []Vertex + SeparatorTkns []*token.Token CloseParenthesisTkn *token.Token } @@ -1349,6 +1333,7 @@ type ExprStaticCall struct { Call Vertex OpenParenthesisTkn *token.Token Arguments []Vertex + SeparatorTkns []*token.Token CloseParenthesisTkn *token.Token } diff --git a/pkg/ast/traverser/dfs.go b/pkg/ast/traverser/dfs.go index 6e3fe74..d9e198e 100644 --- a/pkg/ast/traverser/dfs.go +++ b/pkg/ast/traverser/dfs.go @@ -40,30 +40,6 @@ func (t *DFS) Traverse(n ast.Vertex) { t.Traverse(nn.Expr) t.visitor.Leave("Expr", true) } - case *ast.Reference: - if nn == nil { - return - } - if !t.visitor.EnterNode(nn) { - return - } - if nn.Var != nil { - t.visitor.Enter("Var", true) - t.Traverse(nn.Var) - t.visitor.Leave("Var", true) - } - case *ast.Variadic: - if nn == nil { - return - } - if !t.visitor.EnterNode(nn) { - return - } - if nn.Var != nil { - t.visitor.Enter("Var", true) - t.Traverse(nn.Var) - t.visitor.Leave("Var", true) - } case *ast.Parameter: if nn == nil { return diff --git a/pkg/ast/visitor/dump.go b/pkg/ast/visitor/dump.go index ea0ae75..d6546f3 100644 --- a/pkg/ast/visitor/dump.go +++ b/pkg/ast/visitor/dump.go @@ -203,18 +203,6 @@ func (v *Dump) Nullable(n *ast.Nullable) { v.printNode(n.GetNode()) } -func (v *Dump) Reference(n *ast.Reference) { - v.printIndentIfNotSingle(v.indent - 1) - v.print("&ast.Reference{\n") - v.printNode(n.GetNode()) -} - -func (v *Dump) Variadic(n *ast.Variadic) { - v.printIndentIfNotSingle(v.indent - 1) - v.print("&ast.Variadic{\n") - v.printNode(n.GetNode()) -} - func (v *Dump) Parameter(n *ast.Parameter) { v.printIndent(v.indent - 1) v.print("&ast.Parameter{\n") diff --git a/pkg/ast/visitor/null.go b/pkg/ast/visitor/null.go index ce4f433..92b9b55 100644 --- a/pkg/ast/visitor/null.go +++ b/pkg/ast/visitor/null.go @@ -30,14 +30,6 @@ func (v *Null) Nullable(_ *ast.Nullable) { // do nothing } -func (v *Null) Reference(_ *ast.Reference) { - // do nothing -} - -func (v *Null) Variadic(_ *ast.Variadic) { - // do nothing -} - func (v *Null) Parameter(_ *ast.Parameter) { // do nothing } diff --git a/pkg/printer/pretty_printer.go b/pkg/printer/pretty_printer.go index eae729a..c263d3f 100644 --- a/pkg/printer/pretty_printer.go +++ b/pkg/printer/pretty_printer.go @@ -64,10 +64,6 @@ func (p *PrettyPrinter) printNode(n ast.Vertex) { p.printNodeRoot(n) case *ast.Identifier: p.printNodeIdentifier(n) - case *ast.Reference: - p.printNodeReference(n) - case *ast.Variadic: - p.printNodeVariadic(n) case *ast.Parameter: p.printNodeParameter(n) case *ast.Nullable: @@ -421,20 +417,6 @@ func (p *PrettyPrinter) printNodeIdentifier(n ast.Vertex) { io.WriteString(p.w, v) } -func (p *PrettyPrinter) printNodeReference(n ast.Vertex) { - nn := n.(*ast.Reference) - - io.WriteString(p.w, "&") - p.Print(nn.Var) -} - -func (p *PrettyPrinter) printNodeVariadic(n ast.Vertex) { - nn := n.(*ast.Variadic) - - io.WriteString(p.w, "...") - p.Print(nn.Var) -} - func (p *PrettyPrinter) printNodeParameter(n ast.Vertex) { nn := n.(*ast.Parameter) diff --git a/pkg/printer/printer.go b/pkg/printer/printer.go index 328e0f9..0109652 100644 --- a/pkg/printer/printer.go +++ b/pkg/printer/printer.go @@ -149,10 +149,6 @@ func (p *Printer) printNode(n ast.Vertex) { p.printNodeRoot(n) case *ast.Identifier: p.printNodeIdentifier(n) - case *ast.Reference: - p.printNodeReference(n) - case *ast.Variadic: - p.printNodeVariadic(n) case *ast.Parameter: p.printNodeParameter(n) case *ast.Nullable: @@ -505,26 +501,6 @@ func (p *Printer) printNodeIdentifier(n ast.Vertex) { p.printFreeFloating(nn, token.End) } -func (p *Printer) printNodeReference(n ast.Vertex) { - nn := n.(*ast.Reference) - p.printFreeFloating(nn, token.Start) - - p.write([]byte("&")) - p.Print(nn.Var) - - p.printFreeFloating(nn, token.End) -} - -func (p *Printer) printNodeVariadic(n ast.Vertex) { - nn := n.(*ast.Variadic) - p.printFreeFloating(nn, token.Start) - - p.write([]byte("...")) - p.Print(nn.Var) - - p.printFreeFloating(nn, token.End) -} - func (p *Printer) printNodeParameter(n ast.Vertex) { nn := n.(*ast.Parameter) p.printFreeFloating(nn, token.Start)