[refactoring] update ast structure of "ShellExec", "StaticCall", "StaticPropertyFetch" and "Ternary" nodes
This commit is contained in:
715
internal/php5/php5.go
generated
715
internal/php5/php5.go
generated
File diff suppressed because it is too large
Load Diff
@@ -3789,27 +3789,28 @@ expr_without_variable:
|
||||
}
|
||||
| expr '?' expr ':' expr
|
||||
{
|
||||
$$ = &ast.ExprTernary{ast.Node{}, $1, $3, $5}
|
||||
|
||||
// save position
|
||||
$$.GetNode().Position = position.NewNodesPosition($1, $5)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).MoveFreeFloating($1, $$)
|
||||
yylex.(*Parser).setFreeFloating($$, token.Cond, $2.SkippedTokens)
|
||||
yylex.(*Parser).setFreeFloating($$, token.True, $4.SkippedTokens)
|
||||
$$ = &ast.ExprTernary{
|
||||
Node: ast.Node{
|
||||
Position: position.NewNodesPosition($1, $5),
|
||||
},
|
||||
Condition: $1,
|
||||
QuestionTkn: $2,
|
||||
IfTrue: $3,
|
||||
ColonTkn: $4,
|
||||
IfFalse: $5,
|
||||
}
|
||||
}
|
||||
| expr '?' ':' expr
|
||||
{
|
||||
$$ = &ast.ExprTernary{ast.Node{}, $1, nil, $4}
|
||||
|
||||
// save position
|
||||
$$.GetNode().Position = position.NewNodesPosition($1, $4)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).MoveFreeFloating($1, $$)
|
||||
yylex.(*Parser).setFreeFloating($$, token.Cond, $2.SkippedTokens)
|
||||
yylex.(*Parser).setFreeFloating($$, token.True, $3.SkippedTokens)
|
||||
$$ = &ast.ExprTernary{
|
||||
Node: ast.Node{
|
||||
Position: position.NewNodesPosition($1, $4),
|
||||
},
|
||||
Condition: $1,
|
||||
QuestionTkn: $2,
|
||||
ColonTkn: $3,
|
||||
IfFalse: $4,
|
||||
}
|
||||
}
|
||||
| internal_functions_in_yacc
|
||||
{
|
||||
@@ -3933,13 +3934,14 @@ expr_without_variable:
|
||||
}
|
||||
| '`' backticks_expr '`'
|
||||
{
|
||||
$$ = &ast.ExprShellExec{ast.Node{}, $2}
|
||||
|
||||
// save position
|
||||
$$.GetNode().Position = position.NewTokensPosition($1, $3)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
|
||||
$$ = &ast.ExprShellExec{
|
||||
Node: ast.Node{
|
||||
Position: position.NewTokensPosition($1, $3),
|
||||
},
|
||||
OpenBacktickTkn: $1,
|
||||
Parts: $2,
|
||||
CloseBacktickTkn: $3,
|
||||
}
|
||||
}
|
||||
| T_PRINT expr
|
||||
{
|
||||
@@ -4305,47 +4307,59 @@ function_call:
|
||||
}
|
||||
| class_name T_PAAMAYIM_NEKUDOTAYIM variable_name function_call_parameter_list
|
||||
{
|
||||
$$ = &ast.ExprStaticCall{ast.Node{}, $1, $3, $4.(*ast.ArgumentList)}
|
||||
|
||||
// save position
|
||||
$$.GetNode().Position = position.NewNodesPosition($1, $4)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).MoveFreeFloating($1, $$)
|
||||
yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens)
|
||||
$$ = &ast.ExprStaticCall{
|
||||
Node: ast.Node{
|
||||
Position: position.NewNodesPosition($1, $4),
|
||||
},
|
||||
Class: $1,
|
||||
DoubleColonTkn: $2,
|
||||
Call: $3,
|
||||
OpenParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn,
|
||||
Arguments: $4.(*ast.ArgumentList).Arguments,
|
||||
CloseParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn,
|
||||
}
|
||||
}
|
||||
| class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects function_call_parameter_list
|
||||
{
|
||||
$$ = &ast.ExprStaticCall{ast.Node{}, $1, $3, $4.(*ast.ArgumentList)}
|
||||
|
||||
// save position
|
||||
$$.GetNode().Position = position.NewNodesPosition($1, $4)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).MoveFreeFloating($1, $$)
|
||||
yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens)
|
||||
$$ = &ast.ExprStaticCall{
|
||||
Node: ast.Node{
|
||||
Position: position.NewNodesPosition($1, $4),
|
||||
},
|
||||
Class: $1,
|
||||
DoubleColonTkn: $2,
|
||||
Call: $3,
|
||||
OpenParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn,
|
||||
Arguments: $4.(*ast.ArgumentList).Arguments,
|
||||
CloseParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn,
|
||||
}
|
||||
}
|
||||
| variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_name function_call_parameter_list
|
||||
{
|
||||
$$ = &ast.ExprStaticCall{ast.Node{}, $1, $3, $4.(*ast.ArgumentList)}
|
||||
|
||||
// save position
|
||||
$$.GetNode().Position = position.NewNodesPosition($1, $4)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).MoveFreeFloating($1, $$)
|
||||
yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens)
|
||||
$$ = &ast.ExprStaticCall{
|
||||
Node: ast.Node{
|
||||
Position: position.NewNodesPosition($1, $4),
|
||||
},
|
||||
Class: $1,
|
||||
DoubleColonTkn: $2,
|
||||
Call: $3,
|
||||
OpenParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn,
|
||||
Arguments: $4.(*ast.ArgumentList).Arguments,
|
||||
CloseParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn,
|
||||
}
|
||||
}
|
||||
| variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects function_call_parameter_list
|
||||
{
|
||||
$$ = &ast.ExprStaticCall{ast.Node{}, $1, $3, $4.(*ast.ArgumentList)}
|
||||
|
||||
// save position
|
||||
$$.GetNode().Position = position.NewNodesPosition($1, $4)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).MoveFreeFloating($1, $$)
|
||||
yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens)
|
||||
$$ = &ast.ExprStaticCall{
|
||||
Node: ast.Node{
|
||||
Position: position.NewNodesPosition($1, $4),
|
||||
},
|
||||
Class: $1,
|
||||
DoubleColonTkn: $2,
|
||||
Call: $3,
|
||||
OpenParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn,
|
||||
Arguments: $4.(*ast.ArgumentList).Arguments,
|
||||
CloseParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn,
|
||||
}
|
||||
}
|
||||
| variable_without_objects function_call_parameter_list
|
||||
{
|
||||
@@ -5145,27 +5159,28 @@ static_operation:
|
||||
}
|
||||
| static_scalar_value '?' ':' static_scalar_value
|
||||
{
|
||||
$$ = &ast.ExprTernary{ast.Node{}, $1, nil, $4}
|
||||
|
||||
// save position
|
||||
$$.GetNode().Position = position.NewNodesPosition($1, $4)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).MoveFreeFloating($1, $$)
|
||||
yylex.(*Parser).setFreeFloating($$, token.Cond, $2.SkippedTokens)
|
||||
yylex.(*Parser).setFreeFloating($$, token.True, $3.SkippedTokens)
|
||||
$$ = &ast.ExprTernary{
|
||||
Node: ast.Node{
|
||||
Position: position.NewNodesPosition($1, $4),
|
||||
},
|
||||
Condition: $1,
|
||||
QuestionTkn: $2,
|
||||
ColonTkn: $3,
|
||||
IfFalse: $4,
|
||||
}
|
||||
}
|
||||
| static_scalar_value '?' static_scalar_value ':' static_scalar_value
|
||||
{
|
||||
$$ = &ast.ExprTernary{ast.Node{}, $1, $3, $5}
|
||||
|
||||
// save position
|
||||
$$.GetNode().Position = position.NewNodesPosition($1, $5)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).MoveFreeFloating($1, $$)
|
||||
yylex.(*Parser).setFreeFloating($$, token.Cond, $2.SkippedTokens)
|
||||
yylex.(*Parser).setFreeFloating($$, token.True, $4.SkippedTokens)
|
||||
$$ = &ast.ExprTernary{
|
||||
Node: ast.Node{
|
||||
Position: position.NewNodesPosition($1, $5),
|
||||
},
|
||||
Condition: $1,
|
||||
QuestionTkn: $2,
|
||||
IfTrue: $3,
|
||||
ColonTkn: $4,
|
||||
IfFalse: $5,
|
||||
}
|
||||
}
|
||||
| '+' static_scalar_value
|
||||
{
|
||||
@@ -5674,25 +5689,25 @@ variable_without_objects:
|
||||
static_member:
|
||||
class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects
|
||||
{
|
||||
$$ = &ast.ExprStaticPropertyFetch{ast.Node{}, $1, $3}
|
||||
|
||||
// save position
|
||||
$$.GetNode().Position = position.NewNodesPosition($1, $3)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).MoveFreeFloating($1, $$)
|
||||
yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens)
|
||||
$$ = &ast.ExprStaticPropertyFetch{
|
||||
Node: ast.Node{
|
||||
Position: position.NewNodesPosition($1, $3),
|
||||
},
|
||||
Class: $1,
|
||||
DoubleColonTkn: $2,
|
||||
Property: $3,
|
||||
}
|
||||
}
|
||||
| variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects
|
||||
{
|
||||
$$ = &ast.ExprStaticPropertyFetch{ast.Node{}, $1, $3}
|
||||
|
||||
// save position
|
||||
$$.GetNode().Position = position.NewNodesPosition($1, $3)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).MoveFreeFloating($1, $$)
|
||||
yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens)
|
||||
$$ = &ast.ExprStaticPropertyFetch{
|
||||
Node: ast.Node{
|
||||
Position: position.NewNodesPosition($1, $3),
|
||||
},
|
||||
Class: $1,
|
||||
DoubleColonTkn: $2,
|
||||
Property: $3,
|
||||
}
|
||||
}
|
||||
;
|
||||
|
||||
|
||||
440
internal/php7/php7.go
generated
440
internal/php7/php7.go
generated
File diff suppressed because it is too large
Load Diff
@@ -3424,27 +3424,28 @@ expr_without_variable:
|
||||
}
|
||||
| expr '?' expr ':' expr
|
||||
{
|
||||
$$ = &ast.ExprTernary{ast.Node{}, $1, $3, $5}
|
||||
|
||||
// save position
|
||||
$$.GetNode().Position = position.NewNodesPosition($1, $5)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).MoveFreeFloating($1, $$)
|
||||
yylex.(*Parser).setFreeFloating($$, token.Cond, $2.SkippedTokens)
|
||||
yylex.(*Parser).setFreeFloating($$, token.True, $4.SkippedTokens)
|
||||
$$ = &ast.ExprTernary{
|
||||
Node: ast.Node{
|
||||
Position: position.NewNodesPosition($1, $5),
|
||||
},
|
||||
Condition: $1,
|
||||
QuestionTkn: $2,
|
||||
IfTrue: $3,
|
||||
ColonTkn: $4,
|
||||
IfFalse: $5,
|
||||
}
|
||||
}
|
||||
| expr '?' ':' expr
|
||||
{
|
||||
$$ = &ast.ExprTernary{ast.Node{}, $1, nil, $4}
|
||||
|
||||
// save position
|
||||
$$.GetNode().Position = position.NewNodesPosition($1, $4)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).MoveFreeFloating($1, $$)
|
||||
yylex.(*Parser).setFreeFloating($$, token.Cond, $2.SkippedTokens)
|
||||
yylex.(*Parser).setFreeFloating($$, token.True, $3.SkippedTokens)
|
||||
$$ = &ast.ExprTernary{
|
||||
Node: ast.Node{
|
||||
Position: position.NewNodesPosition($1, $4),
|
||||
},
|
||||
Condition: $1,
|
||||
QuestionTkn: $2,
|
||||
ColonTkn: $3,
|
||||
IfFalse: $4,
|
||||
}
|
||||
}
|
||||
| expr T_COALESCE expr
|
||||
{
|
||||
@@ -3571,13 +3572,14 @@ expr_without_variable:
|
||||
}
|
||||
| '`' backticks_expr '`'
|
||||
{
|
||||
$$ = &ast.ExprShellExec{ast.Node{}, $2}
|
||||
|
||||
// save position
|
||||
$$.GetNode().Position = position.NewTokensPosition($1, $3)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
|
||||
$$ = &ast.ExprShellExec{
|
||||
Node: ast.Node{
|
||||
Position: position.NewTokensPosition($1, $3),
|
||||
},
|
||||
OpenBacktickTkn: $1,
|
||||
Parts: $2,
|
||||
CloseBacktickTkn: $3,
|
||||
}
|
||||
}
|
||||
| T_PRINT expr
|
||||
{
|
||||
@@ -3795,25 +3797,31 @@ function_call:
|
||||
}
|
||||
| class_name T_PAAMAYIM_NEKUDOTAYIM member_name argument_list
|
||||
{
|
||||
$$ = &ast.ExprStaticCall{ast.Node{}, $1, $3, $4.(*ast.ArgumentList)}
|
||||
|
||||
// save position
|
||||
$$.GetNode().Position = position.NewNodesPosition($1, $4)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).MoveFreeFloating($1, $$)
|
||||
yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens)
|
||||
$$ = &ast.ExprStaticCall{
|
||||
Node: ast.Node{
|
||||
Position: position.NewNodesPosition($1, $4),
|
||||
},
|
||||
Class: $1,
|
||||
DoubleColonTkn: $2,
|
||||
Call: $3,
|
||||
OpenParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn,
|
||||
Arguments: $4.(*ast.ArgumentList).Arguments,
|
||||
CloseParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn,
|
||||
}
|
||||
}
|
||||
| variable_class_name T_PAAMAYIM_NEKUDOTAYIM member_name argument_list
|
||||
{
|
||||
$$ = &ast.ExprStaticCall{ast.Node{}, $1, $3, $4.(*ast.ArgumentList)}
|
||||
|
||||
// save position
|
||||
$$.GetNode().Position = position.NewNodesPosition($1, $4)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).MoveFreeFloating($1, $$)
|
||||
yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens)
|
||||
$$ = &ast.ExprStaticCall{
|
||||
Node: ast.Node{
|
||||
Position: position.NewNodesPosition($1, $4),
|
||||
},
|
||||
Class: $1,
|
||||
DoubleColonTkn: $2,
|
||||
Call: $3,
|
||||
OpenParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn,
|
||||
Arguments: $4.(*ast.ArgumentList).Arguments,
|
||||
CloseParenthesisTkn: $4.(*ast.ArgumentList).OpenParenthesisTkn,
|
||||
}
|
||||
}
|
||||
| callable_expr argument_list
|
||||
{
|
||||
@@ -4368,25 +4376,25 @@ simple_variable:
|
||||
static_member:
|
||||
class_name T_PAAMAYIM_NEKUDOTAYIM simple_variable
|
||||
{
|
||||
$$ = &ast.ExprStaticPropertyFetch{ast.Node{}, $1, $3}
|
||||
|
||||
// save position
|
||||
$$.GetNode().Position = position.NewNodesPosition($1, $3)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).MoveFreeFloating($1, $$)
|
||||
yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens)
|
||||
$$ = &ast.ExprStaticPropertyFetch{
|
||||
Node: ast.Node{
|
||||
Position: position.NewNodesPosition($1, $3),
|
||||
},
|
||||
Class: $1,
|
||||
DoubleColonTkn: $2,
|
||||
Property: $3,
|
||||
}
|
||||
}
|
||||
| variable_class_name T_PAAMAYIM_NEKUDOTAYIM simple_variable
|
||||
{
|
||||
$$ = &ast.ExprStaticPropertyFetch{ast.Node{}, $1, $3}
|
||||
|
||||
// save position
|
||||
$$.GetNode().Position = position.NewNodesPosition($1, $3)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).MoveFreeFloating($1, $$)
|
||||
yylex.(*Parser).setFreeFloating($$, token.Name, $2.SkippedTokens)
|
||||
$$ = &ast.ExprStaticPropertyFetch{
|
||||
Node: ast.Node{
|
||||
Position: position.NewNodesPosition($1, $3),
|
||||
},
|
||||
Class: $1,
|
||||
DoubleColonTkn: $2,
|
||||
Property: $3,
|
||||
}
|
||||
}
|
||||
;
|
||||
|
||||
@@ -4432,25 +4440,25 @@ new_variable:
|
||||
}
|
||||
| class_name T_PAAMAYIM_NEKUDOTAYIM simple_variable
|
||||
{
|
||||
$$ = &ast.ExprStaticPropertyFetch{ast.Node{}, $1, $3}
|
||||
|
||||
// save position
|
||||
$$.GetNode().Position = position.NewNodesPosition($1, $3)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).MoveFreeFloating($1, $$)
|
||||
yylex.(*Parser).setFreeFloating($$, token.Var, $2.SkippedTokens)
|
||||
$$ = &ast.ExprStaticPropertyFetch{
|
||||
Node: ast.Node{
|
||||
Position: position.NewNodesPosition($1, $3),
|
||||
},
|
||||
Class: $1,
|
||||
DoubleColonTkn: $2,
|
||||
Property: $3,
|
||||
}
|
||||
}
|
||||
| new_variable T_PAAMAYIM_NEKUDOTAYIM simple_variable
|
||||
{
|
||||
$$ = &ast.ExprStaticPropertyFetch{ast.Node{}, $1, $3}
|
||||
|
||||
// save position
|
||||
$$.GetNode().Position = position.NewNodesPosition($1, $3)
|
||||
|
||||
// save comments
|
||||
yylex.(*Parser).MoveFreeFloating($1, $$)
|
||||
yylex.(*Parser).setFreeFloating($$, token.Var, $2.SkippedTokens)
|
||||
$$ = &ast.ExprStaticPropertyFetch{
|
||||
Node: ast.Node{
|
||||
Position: position.NewNodesPosition($1, $3),
|
||||
},
|
||||
Class: $1,
|
||||
DoubleColonTkn: $2,
|
||||
Property: $3,
|
||||
}
|
||||
}
|
||||
;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user