[refactoring] update use ast structure

This commit is contained in:
Vadym Slizov
2020-08-03 21:22:53 +02:00
parent 88dfd32d9e
commit feebb017c4
21 changed files with 4604 additions and 3695 deletions

File diff suppressed because it is too large Load Diff

897
internal/php7/php7.go generated

File diff suppressed because it is too large Load Diff

View File

@@ -528,58 +528,61 @@ top_statement:
}
| T_USE mixed_group_use_declaration ';'
{
$$ = $2
$$ = &ast.StmtUse{ast.Node{}, $2}
// save position
$$.GetNode().Position = position.NewTokensPosition($1, $3)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens)
yylex.(*Parser).setFreeFloating($$, token.UseDeclarationList, $3.Tokens)
yylex.(*Parser).setToken($$, token.SemiColon, $3.Tokens)
yylex.(*Parser).setFreeFloatingTokens($$, token.End, $3.Tokens)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
| T_USE use_type group_use_declaration ';'
{
$3.(*ast.StmtGroupUse).UseType = $2
$$ = $3
useType := &ast.StmtUseType{ast.Node{}, $2, $3}
$$ = &ast.StmtUse{ast.Node{}, useType}
// save position
useType.GetNode().Position = position.NewNodesPosition($2, $3)
$$.GetNode().Position = position.NewTokensPosition($1, $4)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens)
yylex.(*Parser).setFreeFloating($$, token.UseDeclarationList, $4.Tokens)
yylex.(*Parser).setToken($$, token.SemiColon, $4.Tokens)
yylex.(*Parser).setFreeFloatingTokens($$, token.End, $4.Tokens)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
| T_USE use_declarations ';'
{
$$ = &ast.StmtUseList{ast.Node{}, nil, $2}
useList := &ast.StmtUseList{ast.Node{}, $2}
$$ = &ast.StmtUse{ast.Node{}, useList}
// save position
useList.GetNode().Position = position.NewNodeListPosition($2)
$$.GetNode().Position = position.NewTokensPosition($1, $3)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens)
yylex.(*Parser).setFreeFloating($$, token.UseDeclarationList, $3.Tokens)
yylex.(*Parser).setToken($$, token.SemiColon, $3.Tokens)
yylex.(*Parser).setFreeFloatingTokens($$, token.End, $3.Tokens)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
| T_USE use_type use_declarations ';'
{
$$ = &ast.StmtUseList{ast.Node{}, $2, $3}
useList := &ast.StmtUseList{ast.Node{}, $3}
useType := &ast.StmtUseType{ast.Node{}, $2, useList}
$$ = &ast.StmtUse{ast.Node{}, useType}
// save position
useList.GetNode().Position = position.NewNodeListPosition($3)
useType.GetNode().Position = position.NewNodesPosition($2, useList)
$$.GetNode().Position = position.NewTokensPosition($1, $4)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens)
yylex.(*Parser).setFreeFloating($$, token.UseDeclarationList, $4.Tokens)
yylex.(*Parser).setToken($$, token.SemiColon, $4.Tokens)
yylex.(*Parser).setFreeFloatingTokens($$, token.End, $4.Tokens)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
@@ -630,20 +633,20 @@ group_use_declaration:
namespace_name T_NS_SEPARATOR '{' unprefixed_use_declarations possible_comma '}'
{
name := &ast.NameName{ast.Node{}, $1}
$$ = &ast.StmtGroupUse{ast.Node{}, nil, name, $4}
useList := &ast.StmtUseList{ast.Node{}, $4}
$$ = &ast.StmtGroupUseList{ast.Node{}, name, useList}
// save position
name.GetNode().Position = position.NewNodeListPosition($1)
useList.GetNode().Position = position.NewNodeListPosition($4)
$$.GetNode().Position = position.NewNodeListTokenPosition($1, $6)
// save comments
yylex.(*Parser).MoveFreeFloating($1[0], name)
yylex.(*Parser).setFreeFloating(name, token.End, $2.Tokens)
yylex.(*Parser).setFreeFloating($$, token.Slash, $3.Tokens)
yylex.(*Parser).setFreeFloatingTokens(useList, token.Start, append($2.Tokens, $3.Tokens...))
if $5 != nil {
yylex.(*Parser).setFreeFloating($$, token.Stmts, append($5.Tokens, $6.Tokens...))
yylex.(*Parser).setFreeFloatingTokens(useList, token.End, append($5.Tokens, $6.Tokens...))
} else {
yylex.(*Parser).setFreeFloating($$, token.Stmts, $6.Tokens)
yylex.(*Parser).setFreeFloating(useList, token.End, $6.Tokens)
}
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
@@ -651,22 +654,22 @@ group_use_declaration:
| T_NS_SEPARATOR namespace_name T_NS_SEPARATOR '{' unprefixed_use_declarations possible_comma '}'
{
name := &ast.NameName{ast.Node{}, $2}
$$ = &ast.StmtGroupUse{ast.Node{}, nil, name, $5}
useList := &ast.StmtUseList{ast.Node{}, $5}
$$ = &ast.StmtGroupUseList{ast.Node{}, name, useList}
// save position
name.GetNode().Position = position.NewNodeListPosition($2)
useList.GetNode().Position = position.NewNodeListPosition($5)
$$.GetNode().Position = position.NewTokensPosition($1, $7)
// save comments
yylex.(*Parser).setFreeFloating($$, token.UseType, $1.Tokens)
yylex.(*Parser).MoveFreeFloating($2[0], name)
yylex.(*Parser).setFreeFloating(name, token.End, $3.Tokens)
yylex.(*Parser).setFreeFloating($$, token.Slash, $4.Tokens)
yylex.(*Parser).setFreeFloatingTokens(useList, token.Start, append($3.Tokens, $4.Tokens...))
if $6 != nil {
yylex.(*Parser).setFreeFloating($$, token.Stmts, append($6.Tokens, $7.Tokens...))
yylex.(*Parser).setFreeFloatingTokens(useList, token.End, append($6.Tokens, $7.Tokens...))
} else {
yylex.(*Parser).setFreeFloating($$, token.Stmts, $7.Tokens)
yylex.(*Parser).setFreeFloating(useList, token.End, $7.Tokens)
}
yylex.(*Parser).setFreeFloatingTokens($$, token.Start, $1.Tokens)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
@@ -676,20 +679,20 @@ mixed_group_use_declaration:
namespace_name T_NS_SEPARATOR '{' inline_use_declarations possible_comma '}'
{
name := &ast.NameName{ast.Node{}, $1}
$$ = &ast.StmtGroupUse{ast.Node{}, nil, name, $4}
useList := &ast.StmtUseList{ast.Node{}, $4}
$$ = &ast.StmtGroupUseList{ast.Node{}, name, useList}
// save position
name.GetNode().Position = position.NewNodeListPosition($1)
useList.GetNode().Position = position.NewNodeListPosition($4)
$$.GetNode().Position = position.NewNodeListTokenPosition($1, $6)
// save comments
yylex.(*Parser).MoveFreeFloating($1[0], name)
yylex.(*Parser).setFreeFloating(name, token.End, $2.Tokens)
yylex.(*Parser).setFreeFloating($$, token.Slash, $3.Tokens)
yylex.(*Parser).setFreeFloatingTokens(useList, token.Start, append($2.Tokens, $3.Tokens...))
if $5 != nil {
yylex.(*Parser).setFreeFloating($$, token.Stmts, append($5.Tokens, $6.Tokens...))
yylex.(*Parser).setFreeFloatingTokens(useList, token.End, append($5.Tokens, $6.Tokens...))
} else {
yylex.(*Parser).setFreeFloating($$, token.Stmts, $6.Tokens)
yylex.(*Parser).setFreeFloatingTokens(useList, token.End, $6.Tokens)
}
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
@@ -697,22 +700,22 @@ mixed_group_use_declaration:
| T_NS_SEPARATOR namespace_name T_NS_SEPARATOR '{' inline_use_declarations possible_comma '}'
{
name := &ast.NameName{ast.Node{}, $2}
$$ = &ast.StmtGroupUse{ast.Node{}, nil, name, $5}
useList := &ast.StmtUseList{ast.Node{}, $5}
$$ = &ast.StmtGroupUseList{ast.Node{}, name, useList}
// save position
name.GetNode().Position = position.NewNodeListPosition($2)
useList.GetNode().Position = position.NewNodeListPosition($5)
$$.GetNode().Position = position.NewTokensPosition($1, $7)
// save comments
yylex.(*Parser).setFreeFloatingTokens($$, token.Use, $1.Tokens)
yylex.(*Parser).MoveFreeFloating($2[0], name)
yylex.(*Parser).setFreeFloating(name, token.End, $3.Tokens)
yylex.(*Parser).setFreeFloating($$, token.Slash, $4.Tokens)
yylex.(*Parser).setFreeFloatingTokens(useList, token.Start, append($3.Tokens, $4.Tokens...))
if $6 != nil {
yylex.(*Parser).setFreeFloating($$, token.Stmts, append($6.Tokens, $7.Tokens...))
yylex.(*Parser).setFreeFloatingTokens(useList, token.End, append($6.Tokens, $7.Tokens...))
} else {
yylex.(*Parser).setFreeFloating($$, token.Stmts, $7.Tokens)
yylex.(*Parser).setFreeFloating(useList, token.End, $7.Tokens)
}
yylex.(*Parser).setFreeFloatingTokens($$, token.Start, $1.Tokens)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
@@ -792,8 +795,10 @@ inline_use_declaration:
}
| use_type unprefixed_use_declaration
{
$2.(*ast.StmtUse).UseType = $1
$$ = $2
$$ = &ast.StmtUseType{ast.Node{}, $1, $2}
// save position
$$.GetNode().Position = position.NewNodesPosition($1, $2)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
@@ -803,14 +808,11 @@ unprefixed_use_declaration:
namespace_name
{
name := &ast.NameName{ast.Node{}, $1}
$$ = &ast.StmtUse{ast.Node{}, nil, name, nil}
$$ = &ast.StmtUseDeclaration{ast.Node{}, name, nil}
// save position
name.GetNode().Position = position.NewNodeListPosition($1)
$$.GetNode().Position = position.NewNodeListPosition($1)
// save comments
yylex.(*Parser).MoveFreeFloating($1[0], name)
$$.GetNode().Position = position.NewNodePosition(name)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
@@ -818,7 +820,7 @@ unprefixed_use_declaration:
{
name := &ast.NameName{ast.Node{}, $1}
alias := &ast.Identifier{ast.Node{}, $3.Value}
$$ = &ast.StmtUse{ast.Node{}, nil, name, alias}
$$ = &ast.StmtUseDeclaration{ast.Node{}, name, alias}
// save position
name.GetNode().Position = position.NewNodeListPosition($1)
@@ -826,7 +828,6 @@ unprefixed_use_declaration:
$$.GetNode().Position = position.NewNodeListTokenPosition($1, $3)
// save comments
yylex.(*Parser).MoveFreeFloating($1[0], name)
yylex.(*Parser).setFreeFloating(name, token.End, $2.Tokens)
yylex.(*Parser).setFreeFloating(alias, token.Start, $3.Tokens)
@@ -839,9 +840,6 @@ use_declaration:
{
$$ = $1
// save coments
yylex.(*Parser).MoveFreeFloating($1.(*ast.StmtUse).Use, $$)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
| T_NS_SEPARATOR unprefixed_use_declaration
@@ -849,8 +847,7 @@ use_declaration:
$$ = $2;
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens)
yylex.(*Parser).setToken($$, token.Slash, $1.Tokens)
yylex.(*Parser).setFreeFloatingTokens($$, token.Start, $1.Tokens)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}

File diff suppressed because it is too large Load Diff