From fe2e097d8f9bf3774720e8f4bb79b6cfd790d3b6 Mon Sep 17 00:00:00 2001 From: Vadym Slizov Date: Sun, 22 Nov 2020 02:03:39 +0200 Subject: [PATCH] [refactoring] update ast structure of "Class" and "Trait" nodes --- internal/php5/php5.go | Bin 286681 -> 287326 bytes internal/php5/php5.y | 111 +++++++++++++++++----------------- internal/php7/php7.go | Bin 237609 -> 237965 bytes internal/php7/php7.y | 105 +++++++++++++++++--------------- pkg/ast/node.go | 24 +++++--- pkg/printer/pretty_printer.go | 2 +- pkg/printer/printer.go | 2 +- 7 files changed, 130 insertions(+), 114 deletions(-) diff --git a/internal/php5/php5.go b/internal/php5/php5.go index 704561a4f8b0cb642ddffb7b4134666177575295..ece4fadf313ae30811db11044fd45f22eb53c3ab 100644 GIT binary patch delta 12867 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 delta 11932 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

aDB~jxS;XU*gNovw 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 diff --git a/internal/php5/php5.y b/internal/php5/php5.y index 1674719..67d3536 100644 --- a/internal/php5/php5.y +++ b/internal/php5/php5.y @@ -1408,33 +1408,38 @@ unticked_function_declaration_statement: unticked_class_declaration_statement: class_entry_type T_STRING extends_from implements_list '{' class_statement_list '}' { - name := &ast.Identifier{ - Node: ast.Node{ - Position: position.NewTokenPosition($2), - }, - IdentifierTkn: $2, - Value: $2.Value, - } switch n := $1.(type) { case *ast.StmtClass : - n.ClassName = name - n.Stmts = $6 + n.Position = position.NewNodeTokenPosition($1, $7) + n.ClassName = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($2), + }, + IdentifierTkn: $2, + Value: $2.Value, + } n.Extends = $3 n.Implements = $4 - - case *ast.StmtTrait : - // TODO: is it possible that trait extend or implement - n.TraitName = name + n.OpenCurlyBracket = $5 n.Stmts = $6 + n.CloseCurlyBracket = $7 + case *ast.StmtTrait : + n.Position = position.NewNodeTokenPosition($1, $7) + n.TraitName = &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($2), + }, + IdentifierTkn: $2, + Value: $2.Value, + } + n.Extends = $3 + n.Implements = $4 + n.OpenCurlyBracket = $5 + n.Stmts = $6 + n.CloseCurlyBracket = $7 } + $$ = $1 - - // save position - $$.GetNode().Position = position.NewNodeTokenPosition($1, $7) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Name, $5.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Stmts, $7.SkippedTokens) } | interface_entry T_STRING interface_extends_list '{' class_statement_list '}' { @@ -1461,59 +1466,57 @@ unticked_class_declaration_statement: class_entry_type: T_CLASS { - $$ = &ast.StmtClass{ast.Node{}, nil, nil, nil, nil, nil, nil} - - // save position - $$.GetNode().Position = position.NewTokenPosition($1) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) + $$ = &ast.StmtClass{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + ClassTkn: $1, + } } | T_ABSTRACT T_CLASS { - classModifier := &ast.Identifier{ + $$ = &ast.StmtClass{ Node: ast.Node{ - Position: position.NewTokenPosition($1), + Position: position.NewTokensPosition($1, $2), }, - IdentifierTkn: $1, - Value: $1.Value, + Modifiers: []ast.Vertex{ + &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + }, + }, + ClassTkn: $2, } - $$ = &ast.StmtClass{ast.Node{}, nil, []ast.Vertex{classModifier}, nil, nil, nil, nil} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.ModifierList, $2.SkippedTokens) } | T_TRAIT { - $$ = &ast.Identifier{ + $$ = &ast.StmtTrait{ Node: ast.Node{ Position: position.NewTokenPosition($1), }, - IdentifierTkn: $1, - Value: $1.Value, + TraitTkn: $1, } } | T_FINAL T_CLASS { - classModifier := &ast.Identifier{ + $$ = &ast.StmtClass{ Node: ast.Node{ - Position: position.NewTokenPosition($1), + Position: position.NewTokensPosition($1, $2), }, - IdentifierTkn: $1, - Value: $1.Value, + Modifiers: []ast.Vertex{ + &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($1), + }, + IdentifierTkn: $1, + Value: $1.Value, + }, + }, + ClassTkn: $2, } - $$ = &ast.StmtClass{ast.Node{}, nil, []ast.Vertex{classModifier}, nil, nil, nil, nil} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $2) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.ModifierList, $2.SkippedTokens) } ; diff --git a/internal/php7/php7.go b/internal/php7/php7.go index c075510a6bb309a7cb71889a29299a2065e1a19c..aa80680dcba01bc0cfbb635bd2683a9b53de5d6d 100644 GIT binary patch delta 11269 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 delta 9684 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 diff --git a/internal/php7/php7.y b/internal/php7/php7.y index b98517d..5577a10 100644 --- a/internal/php7/php7.y +++ b/internal/php7/php7.y @@ -1271,40 +1271,46 @@ is_variadic: class_declaration_statement: class_modifiers T_CLASS T_STRING extends_from implements_list backup_doc_comment '{' class_statement_list '}' { - name := &ast.Identifier{ + $$ = &ast.StmtClass{ Node: ast.Node{ - Position: position.NewTokenPosition($3), + Position: position.NewOptionalListTokensPosition($1, $2, $9), }, - IdentifierTkn: $3, - Value: $3.Value, + Modifiers: $1, + ClassTkn: $2, + ClassName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($3), + }, + IdentifierTkn: $3, + Value: $3.Value, + }, + Extends: $4, + Implements: $5, + OpenCurlyBracket: $7, + Stmts: $8, + CloseCurlyBracket: $9, } - $$ = &ast.StmtClass{ast.Node{}, name, $1, nil, $4, $5, $8} - - // save position - $$.GetNode().Position = position.NewOptionalListTokensPosition($1, $2, $9) - - // save comments - yylex.(*Parser).MoveFreeFloating($1[0], $$) - yylex.(*Parser).setFreeFloating($$, token.ModifierList, $2.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Stmts, $9.SkippedTokens) } | T_CLASS T_STRING extends_from implements_list backup_doc_comment '{' class_statement_list '}' { - name := &ast.Identifier{ + $$ = &ast.StmtClass{ Node: ast.Node{ - Position: position.NewTokenPosition($2), + Position: position.NewTokensPosition($1, $8), }, - IdentifierTkn: $2, - Value: $2.Value, + ClassTkn: $1, + ClassName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($2), + }, + IdentifierTkn: $2, + Value: $2.Value, + }, + Extends: $3, + Implements: $4, + OpenCurlyBracket: $6, + Stmts: $7, + CloseCurlyBracket: $8, } - $$ = &ast.StmtClass{ast.Node{}, name, nil, nil, $3, $4, $7} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $8) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Stmts, $8.SkippedTokens) } ; @@ -1345,22 +1351,22 @@ class_modifier: trait_declaration_statement: T_TRAIT T_STRING backup_doc_comment '{' class_statement_list '}' { - name := &ast.Identifier{ + $$ = &ast.StmtTrait{ Node: ast.Node{ - Position: position.NewTokenPosition($2), + Position: position.NewTokensPosition($1, $6), }, - IdentifierTkn: $2, - Value: $2.Value, + TraitTkn: $1, + TraitName: &ast.Identifier{ + Node: ast.Node{ + Position: position.NewTokenPosition($2), + }, + IdentifierTkn: $2, + Value: $2.Value, + }, + OpenCurlyBracket: $4, + Stmts: $5, + CloseCurlyBracket: $6, } - $$ = &ast.StmtTrait{ast.Node{}, name, $5} - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $6) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Name, $4.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Stmts, $6.SkippedTokens) } ; @@ -2756,19 +2762,18 @@ non_empty_for_exprs: anonymous_class: T_CLASS ctor_arguments extends_from implements_list backup_doc_comment '{' class_statement_list '}' { - if $2 != nil { - $$ = &ast.StmtClass{ast.Node{}, nil, nil, $2.(*ast.ArgumentList), $3, $4, $7} - } else { - $$ = &ast.StmtClass{ast.Node{}, nil, nil, nil, $3, $4, $7} + $$ = &ast.StmtClass{ + Node: ast.Node{ + Position: position.NewTokensPosition($1, $8), + }, + ClassTkn: $1, + ArgumentList: $2, + Extends: $3, + Implements: $4, + OpenCurlyBracket: $6, + Stmts: $7, + CloseCurlyBracket: $8, } - - // save position - $$.GetNode().Position = position.NewTokensPosition($1, $8) - - // save comments - yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Name, $6.SkippedTokens) - yylex.(*Parser).setFreeFloating($$, token.Stmts, $8.SkippedTokens) } ; diff --git a/pkg/ast/node.go b/pkg/ast/node.go index d395f57..cb820b0 100644 --- a/pkg/ast/node.go +++ b/pkg/ast/node.go @@ -238,12 +238,15 @@ func (n *StmtCatch) Accept(v NodeVisitor) { // StmtClass node type StmtClass struct { Node - ClassName Vertex - Modifiers []Vertex - ArgumentList *ArgumentList - Extends *StmtClassExtends - Implements *StmtClassImplements - Stmts []Vertex + Modifiers []Vertex + ClassTkn *token.Token + ClassName Vertex + ArgumentList Vertex + Extends *StmtClassExtends + Implements *StmtClassImplements + OpenCurlyBracket *token.Token + Stmts []Vertex + CloseCurlyBracket *token.Token } func (n *StmtClass) Accept(v NodeVisitor) { @@ -741,8 +744,13 @@ func (n *StmtThrow) Accept(v NodeVisitor) { // StmtTrait node type StmtTrait struct { Node - TraitName Vertex - Stmts []Vertex + TraitTkn *token.Token + TraitName Vertex + Extends *StmtClassExtends + Implements *StmtClassImplements + OpenCurlyBracket *token.Token + Stmts []Vertex + CloseCurlyBracket *token.Token } func (n *StmtTrait) Accept(v NodeVisitor) { diff --git a/pkg/printer/pretty_printer.go b/pkg/printer/pretty_printer.go index b1e411f..943cc10 100644 --- a/pkg/printer/pretty_printer.go +++ b/pkg/printer/pretty_printer.go @@ -1476,7 +1476,7 @@ func (p *PrettyPrinter) printStmtClass(n ast.Vertex) { if nn.ArgumentList != nil { io.WriteString(p.w, "(") - p.joinPrint(", ", nn.ArgumentList.Arguments) + p.joinPrint(", ", nn.ArgumentList.(*ast.ArgumentList).Arguments) io.WriteString(p.w, ")") } diff --git a/pkg/printer/printer.go b/pkg/printer/printer.go index 4925c35..302773a 100644 --- a/pkg/printer/printer.go +++ b/pkg/printer/printer.go @@ -2097,7 +2097,7 @@ func (p *Printer) printStmtClass(n ast.Vertex) { if nn.ArgumentList != nil { p.printFreeFloatingOrDefault(nn.ArgumentList, token.Start, "(") - p.joinPrint(",", nn.ArgumentList.Arguments) + p.joinPrint(",", nn.ArgumentList.(*ast.ArgumentList).Arguments) p.printFreeFloatingOrDefault(nn.ArgumentList, token.End, ")") }