[refactoring] add Parser nodes for use
This commit is contained in:
File diff suppressed because it is too large
Load Diff
914
internal/php7/php7.go
generated
914
internal/php7/php7.go
generated
File diff suppressed because it is too large
Load Diff
@@ -628,42 +628,52 @@ group_use_declaration:
|
||||
{
|
||||
name := &ast.NameName{ast.Node{}, $1}
|
||||
useList := &ast.StmtUseList{ast.Node{}, $4}
|
||||
$$ = &ast.StmtGroupUseList{ast.Node{}, name, useList}
|
||||
useListBrackets := &ast.ParserBrackets{ast.Node{}, useList}
|
||||
useListNsSeparator := &ast.ParserNsSeparator{ast.Node{}, useListBrackets}
|
||||
$$ = &ast.StmtGroupUseList{ast.Node{}, name, useListNsSeparator}
|
||||
|
||||
// save position
|
||||
name.GetNode().Position = position.NewNodeListPosition($1)
|
||||
useList.GetNode().Position = position.NewNodeListPosition($4)
|
||||
useListBrackets.GetNode().Position = position.NewTokensPosition($3, $6)
|
||||
useListNsSeparator.GetNode().Position = position.NewTokensPosition($2, $6)
|
||||
$$.GetNode().Position = position.NewNodeListTokenPosition($1, $6)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).setFreeFloatingTokens(useList, token.Start, append($2.Tokens, $3.Tokens...))
|
||||
if $5 != nil {
|
||||
yylex.(*Parser).setFreeFloatingTokens(useList, token.End, append($5.Tokens, $6.Tokens...))
|
||||
} else {
|
||||
yylex.(*Parser).setFreeFloating(useList, token.End, $6.Tokens)
|
||||
yylex.(*Parser).setFreeFloatingTokens(useList, token.End, $5.Tokens)
|
||||
}
|
||||
yylex.(*Parser).setFreeFloatingTokens(useListBrackets, token.Start, $3.Tokens)
|
||||
yylex.(*Parser).setFreeFloatingTokens(useListBrackets, token.End, $6.Tokens)
|
||||
yylex.(*Parser).setFreeFloating(useListNsSeparator, token.Start, $2.Tokens)
|
||||
|
||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||
}
|
||||
| T_NS_SEPARATOR namespace_name T_NS_SEPARATOR '{' unprefixed_use_declarations possible_comma '}'
|
||||
{
|
||||
name := &ast.NameName{ast.Node{}, $2}
|
||||
prefixNsSeparator := &ast.ParserNsSeparator{ast.Node{}, name}
|
||||
useList := &ast.StmtUseList{ast.Node{}, $5}
|
||||
$$ = &ast.StmtGroupUseList{ast.Node{}, name, useList}
|
||||
useListBrackets := &ast.ParserBrackets{ast.Node{}, useList}
|
||||
useListNsSeparator := &ast.ParserNsSeparator{ast.Node{}, useListBrackets}
|
||||
$$ = &ast.StmtGroupUseList{ast.Node{}, prefixNsSeparator, useListNsSeparator}
|
||||
|
||||
// save position
|
||||
name.GetNode().Position = position.NewNodeListPosition($2)
|
||||
prefixNsSeparator.GetNode().Position = position.NewTokenNodePosition($1, name)
|
||||
useList.GetNode().Position = position.NewNodeListPosition($5)
|
||||
useListBrackets.GetNode().Position = position.NewTokensPosition($4, $7)
|
||||
useListNsSeparator.GetNode().Position = position.NewTokensPosition($3, $7)
|
||||
$$.GetNode().Position = position.NewTokensPosition($1, $7)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).setFreeFloatingTokens(useList, token.Start, append($3.Tokens, $4.Tokens...))
|
||||
yylex.(*Parser).setFreeFloating(prefixNsSeparator, token.Start, $1.Tokens)
|
||||
if $6 != nil {
|
||||
yylex.(*Parser).setFreeFloatingTokens(useList, token.End, append($6.Tokens, $7.Tokens...))
|
||||
} else {
|
||||
yylex.(*Parser).setFreeFloating(useList, token.End, $7.Tokens)
|
||||
yylex.(*Parser).setFreeFloatingTokens(useList, token.End, $6.Tokens)
|
||||
}
|
||||
yylex.(*Parser).setFreeFloatingTokens($$, token.Start, $1.Tokens)
|
||||
yylex.(*Parser).setFreeFloatingTokens(useListBrackets, token.Start, $4.Tokens)
|
||||
yylex.(*Parser).setFreeFloatingTokens(useListBrackets, token.End, $7.Tokens)
|
||||
yylex.(*Parser).setFreeFloating(useListNsSeparator, token.Start, $3.Tokens)
|
||||
|
||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||
}
|
||||
@@ -674,42 +684,52 @@ mixed_group_use_declaration:
|
||||
{
|
||||
name := &ast.NameName{ast.Node{}, $1}
|
||||
useList := &ast.StmtUseList{ast.Node{}, $4}
|
||||
$$ = &ast.StmtGroupUseList{ast.Node{}, name, useList}
|
||||
useListBrackets := &ast.ParserBrackets{ast.Node{}, useList}
|
||||
useListNsSeparator := &ast.ParserNsSeparator{ast.Node{}, useListBrackets}
|
||||
$$ = &ast.StmtGroupUseList{ast.Node{}, name, useListNsSeparator}
|
||||
|
||||
// save position
|
||||
name.GetNode().Position = position.NewNodeListPosition($1)
|
||||
useList.GetNode().Position = position.NewNodeListPosition($4)
|
||||
useListBrackets.GetNode().Position = position.NewTokensPosition($3, $6)
|
||||
useListNsSeparator.GetNode().Position = position.NewTokensPosition($2, $6)
|
||||
$$.GetNode().Position = position.NewNodeListTokenPosition($1, $6)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).setFreeFloatingTokens(useList, token.Start, append($2.Tokens, $3.Tokens...))
|
||||
if $5 != nil {
|
||||
yylex.(*Parser).setFreeFloatingTokens(useList, token.End, append($5.Tokens, $6.Tokens...))
|
||||
} else {
|
||||
yylex.(*Parser).setFreeFloatingTokens(useList, token.End, $6.Tokens)
|
||||
yylex.(*Parser).setFreeFloatingTokens(useList, token.End, $5.Tokens)
|
||||
}
|
||||
yylex.(*Parser).setFreeFloatingTokens(useListBrackets, token.Start, $3.Tokens)
|
||||
yylex.(*Parser).setFreeFloatingTokens(useListBrackets, token.End, $6.Tokens)
|
||||
yylex.(*Parser).setFreeFloating(useListNsSeparator, token.Start, $2.Tokens)
|
||||
|
||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||
}
|
||||
| T_NS_SEPARATOR namespace_name T_NS_SEPARATOR '{' inline_use_declarations possible_comma '}'
|
||||
{
|
||||
name := &ast.NameName{ast.Node{}, $2}
|
||||
prefixNsSeparator := &ast.ParserNsSeparator{ast.Node{}, name}
|
||||
useList := &ast.StmtUseList{ast.Node{}, $5}
|
||||
$$ = &ast.StmtGroupUseList{ast.Node{}, name, useList}
|
||||
useListBrackets := &ast.ParserBrackets{ast.Node{}, useList}
|
||||
useListNsSeparator := &ast.ParserNsSeparator{ast.Node{}, useListBrackets}
|
||||
$$ = &ast.StmtGroupUseList{ast.Node{}, prefixNsSeparator, useListNsSeparator}
|
||||
|
||||
// save position
|
||||
name.GetNode().Position = position.NewNodeListPosition($2)
|
||||
prefixNsSeparator.GetNode().Position = position.NewTokenNodePosition($1, name)
|
||||
useList.GetNode().Position = position.NewNodeListPosition($5)
|
||||
useListBrackets.GetNode().Position = position.NewTokensPosition($4, $7)
|
||||
useListNsSeparator.GetNode().Position = position.NewTokensPosition($3, $7)
|
||||
$$.GetNode().Position = position.NewTokensPosition($1, $7)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).setFreeFloatingTokens(useList, token.Start, append($3.Tokens, $4.Tokens...))
|
||||
yylex.(*Parser).setFreeFloating(prefixNsSeparator, token.Start, $1.Tokens)
|
||||
if $6 != nil {
|
||||
yylex.(*Parser).setFreeFloatingTokens(useList, token.End, append($6.Tokens, $7.Tokens...))
|
||||
} else {
|
||||
yylex.(*Parser).setFreeFloating(useList, token.End, $7.Tokens)
|
||||
yylex.(*Parser).setFreeFloatingTokens(useList, token.End, $6.Tokens)
|
||||
}
|
||||
yylex.(*Parser).setFreeFloatingTokens($$, token.Start, $1.Tokens)
|
||||
yylex.(*Parser).setFreeFloatingTokens(useListBrackets, token.Start, $4.Tokens)
|
||||
yylex.(*Parser).setFreeFloatingTokens(useListBrackets, token.End, $7.Tokens)
|
||||
yylex.(*Parser).setFreeFloating(useListNsSeparator, token.Start, $3.Tokens)
|
||||
|
||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||
}
|
||||
@@ -814,15 +834,17 @@ unprefixed_use_declaration:
|
||||
{
|
||||
name := &ast.NameName{ast.Node{}, $1}
|
||||
alias := &ast.Identifier{ast.Node{}, $3.Value}
|
||||
$$ = &ast.StmtUseDeclaration{ast.Node{}, name, alias}
|
||||
asAlias := &ast.ParserAs{ast.Node{}, alias}
|
||||
$$ = &ast.StmtUseDeclaration{ast.Node{}, name, asAlias}
|
||||
|
||||
// save position
|
||||
name.GetNode().Position = position.NewNodeListPosition($1)
|
||||
alias.GetNode().Position = position.NewTokenPosition($3)
|
||||
asAlias.GetNode().Position = position.NewTokensPosition($2, $3)
|
||||
$$.GetNode().Position = position.NewNodeListTokenPosition($1, $3)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).setFreeFloating(name, token.End, $2.Tokens)
|
||||
yylex.(*Parser).setFreeFloating(asAlias, token.Start, $2.Tokens)
|
||||
yylex.(*Parser).setFreeFloating(alias, token.Start, $3.Tokens)
|
||||
|
||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||
@@ -838,10 +860,14 @@ use_declaration:
|
||||
}
|
||||
| T_NS_SEPARATOR unprefixed_use_declaration
|
||||
{
|
||||
$$ = $2;
|
||||
$$ = &ast.ParserNsSeparator{ast.Node{}, $2}
|
||||
|
||||
// save position
|
||||
$2.GetNode().Position = position.NewTokenNodePosition($1, $2)
|
||||
$$.GetNode().Position = position.NewTokenNodePosition($1, $2)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).setFreeFloatingTokens($$, token.Start, $1.Tokens)
|
||||
yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens)
|
||||
|
||||
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
|
||||
}
|
||||
|
||||
@@ -9,6 +9,8 @@ import (
|
||||
"github.com/z7zmey/php-parser/internal/php7"
|
||||
"github.com/z7zmey/php-parser/internal/scanner"
|
||||
"github.com/z7zmey/php-parser/pkg/ast"
|
||||
"github.com/z7zmey/php-parser/pkg/ast/traverser"
|
||||
"github.com/z7zmey/php-parser/pkg/ast/visitor"
|
||||
"github.com/z7zmey/php-parser/pkg/errors"
|
||||
"github.com/z7zmey/php-parser/pkg/position"
|
||||
)
|
||||
@@ -9082,7 +9084,7 @@ func TestPhp7(t *testing.T) {
|
||||
Position: &position.Position{
|
||||
StartLine: 162,
|
||||
EndLine: 162,
|
||||
StartPos: 3376,
|
||||
StartPos: 3375,
|
||||
EndPos: 3379,
|
||||
},
|
||||
},
|
||||
@@ -9092,7 +9094,7 @@ func TestPhp7(t *testing.T) {
|
||||
Position: &position.Position{
|
||||
StartLine: 162,
|
||||
EndLine: 162,
|
||||
StartPos: 3376,
|
||||
StartPos: 3375,
|
||||
EndPos: 3379,
|
||||
},
|
||||
},
|
||||
@@ -9137,7 +9139,7 @@ func TestPhp7(t *testing.T) {
|
||||
Position: &position.Position{
|
||||
StartLine: 163,
|
||||
EndLine: 163,
|
||||
StartPos: 3386,
|
||||
StartPos: 3385,
|
||||
EndPos: 3396,
|
||||
},
|
||||
},
|
||||
@@ -9147,7 +9149,7 @@ func TestPhp7(t *testing.T) {
|
||||
Position: &position.Position{
|
||||
StartLine: 163,
|
||||
EndLine: 163,
|
||||
StartPos: 3386,
|
||||
StartPos: 3385,
|
||||
EndPos: 3396,
|
||||
},
|
||||
},
|
||||
@@ -9453,7 +9455,7 @@ func TestPhp7(t *testing.T) {
|
||||
Position: &position.Position{
|
||||
StartLine: 166,
|
||||
EndLine: 166,
|
||||
StartPos: 3452,
|
||||
StartPos: 3451,
|
||||
EndPos: 3455,
|
||||
},
|
||||
},
|
||||
@@ -9573,7 +9575,7 @@ func TestPhp7(t *testing.T) {
|
||||
Position: &position.Position{
|
||||
StartLine: 167,
|
||||
EndLine: 167,
|
||||
StartPos: 3483,
|
||||
StartPos: 3482,
|
||||
EndPos: 3493,
|
||||
},
|
||||
},
|
||||
@@ -9693,7 +9695,7 @@ func TestPhp7(t *testing.T) {
|
||||
Position: &position.Position{
|
||||
StartLine: 168,
|
||||
EndLine: 168,
|
||||
StartPos: 3511,
|
||||
StartPos: 3510,
|
||||
EndPos: 3514,
|
||||
},
|
||||
},
|
||||
@@ -9813,7 +9815,7 @@ func TestPhp7(t *testing.T) {
|
||||
Position: &position.Position{
|
||||
StartLine: 169,
|
||||
EndLine: 169,
|
||||
StartPos: 3539,
|
||||
StartPos: 3538,
|
||||
EndPos: 3549,
|
||||
},
|
||||
},
|
||||
@@ -19597,6 +19599,7 @@ func TestPhp7(t *testing.T) {
|
||||
php7parser := php7.NewParser(lexer, nil)
|
||||
php7parser.Parse()
|
||||
actual := php7parser.GetRootNode()
|
||||
traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual)
|
||||
assert.DeepEqual(t, expected, actual)
|
||||
}
|
||||
|
||||
@@ -19735,6 +19738,7 @@ func TestPhp5Strings(t *testing.T) {
|
||||
php7parser := php7.NewParser(lexer, nil)
|
||||
php7parser.Parse()
|
||||
actual := php7parser.GetRootNode()
|
||||
traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual)
|
||||
assert.DeepEqual(t, expected, actual)
|
||||
}
|
||||
|
||||
@@ -19962,6 +19966,7 @@ CAD;
|
||||
php7parser := php7.NewParser(lexer, nil)
|
||||
php7parser.Parse()
|
||||
actual := php7parser.GetRootNode()
|
||||
traverser.NewDFS(new(visitor.FilterParserNodes)).Traverse(actual)
|
||||
assert.DeepEqual(t, expected, actual)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user