[refactoring] update ast structure of "MagicConstant" and "String" nodes

This commit is contained in:
Vadym Slizov
2020-11-20 23:53:58 +02:00
parent e6a23dfa3a
commit 3bda40e8ce
5 changed files with 1374 additions and 1349 deletions
+300 -290
View File
File diff suppressed because it is too large Load Diff
+91 -81
View File
@@ -4020,15 +4020,19 @@ combined_scalar_offset:
}
| T_CONSTANT_ENCAPSED_STRING '[' dim_offset ']'
{
str := &ast.ScalarString{ast.Node{}, $1.Value}
str := &ast.ScalarString{
Node: ast.Node{
Position: position.NewTokenPosition($1),
},
StringTkn: $1,
Value: $1.Value,
}
$$ = &ast.ExprArrayDimFetch{ast.Node{}, str, $3}
// save position
str.GetNode().Position = position.NewTokenPosition($1)
$$.GetNode().Position = position.NewNodeTokenPosition(str, $4)
// save comments
yylex.(*Parser).setFreeFloating(str, token.Start, $1.SkippedTokens)
yylex.(*Parser).setFreeFloatingTokens($$, token.Var, $2.SkippedTokens)
yylex.(*Parser).setFreeFloatingTokens($$, token.Expr, $4.SkippedTokens)
}
@@ -4517,83 +4521,83 @@ common_scalar:
}
| T_CONSTANT_ENCAPSED_STRING
{
$$ = &ast.ScalarString{ast.Node{}, $1.Value}
// save position
$$.GetNode().Position = position.NewTokenPosition($1)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
$$ = &ast.ScalarString{
Node: ast.Node{
Position: position.NewTokenPosition($1),
},
StringTkn: $1,
Value: $1.Value,
}
}
| T_LINE
{
$$ = &ast.ScalarMagicConstant{ast.Node{}, $1.Value}
// save position
$$.GetNode().Position = position.NewTokenPosition($1)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
$$ = &ast.ScalarMagicConstant{
Node: ast.Node{
Position: position.NewTokenPosition($1),
},
MagicConstTkn: $1,
Value: $1.Value,
}
}
| T_FILE
{
$$ = &ast.ScalarMagicConstant{ast.Node{}, $1.Value}
// save position
$$.GetNode().Position = position.NewTokenPosition($1)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
$$ = &ast.ScalarMagicConstant{
Node: ast.Node{
Position: position.NewTokenPosition($1),
},
MagicConstTkn: $1,
Value: $1.Value,
}
}
| T_DIR
{
$$ = &ast.ScalarMagicConstant{ast.Node{}, $1.Value}
// save position
$$.GetNode().Position = position.NewTokenPosition($1)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
$$ = &ast.ScalarMagicConstant{
Node: ast.Node{
Position: position.NewTokenPosition($1),
},
MagicConstTkn: $1,
Value: $1.Value,
}
}
| T_TRAIT_C
{
$$ = &ast.ScalarMagicConstant{ast.Node{}, $1.Value}
// save position
$$.GetNode().Position = position.NewTokenPosition($1)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
$$ = &ast.ScalarMagicConstant{
Node: ast.Node{
Position: position.NewTokenPosition($1),
},
MagicConstTkn: $1,
Value: $1.Value,
}
}
| T_METHOD_C
{
$$ = &ast.ScalarMagicConstant{ast.Node{}, $1.Value}
// save position
$$.GetNode().Position = position.NewTokenPosition($1)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
$$ = &ast.ScalarMagicConstant{
Node: ast.Node{
Position: position.NewTokenPosition($1),
},
MagicConstTkn: $1,
Value: $1.Value,
}
}
| T_FUNC_C
{
$$ = &ast.ScalarMagicConstant{ast.Node{}, $1.Value}
// save position
$$.GetNode().Position = position.NewTokenPosition($1)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
$$ = &ast.ScalarMagicConstant{
Node: ast.Node{
Position: position.NewTokenPosition($1),
},
MagicConstTkn: $1,
Value: $1.Value,
}
}
| T_NS_C
{
$$ = &ast.ScalarMagicConstant{ast.Node{}, $1.Value}
// save position
$$.GetNode().Position = position.NewTokenPosition($1)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
$$ = &ast.ScalarMagicConstant{
Node: ast.Node{
Position: position.NewTokenPosition($1),
},
MagicConstTkn: $1,
Value: $1.Value,
}
}
| T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC
{
@@ -4734,13 +4738,13 @@ static_scalar_value:
}
| T_CLASS_C
{
$$ = &ast.ScalarMagicConstant{ast.Node{}, $1.Value}
// save position
$$.GetNode().Position = position.NewTokenPosition($1)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
$$ = &ast.ScalarMagicConstant{
Node: ast.Node{
Position: position.NewTokenPosition($1),
},
MagicConstTkn: $1,
Value: $1.Value,
}
}
| static_operation
{
@@ -5213,13 +5217,13 @@ scalar:
}
| T_CLASS_C
{
$$ = &ast.ScalarMagicConstant{ast.Node{}, $1.Value}
// save position
$$.GetNode().Position = position.NewTokenPosition($1)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
$$ = &ast.ScalarMagicConstant{
Node: ast.Node{
Position: position.NewTokenPosition($1),
},
MagicConstTkn: $1,
Value: $1.Value,
}
}
;
@@ -6151,13 +6155,13 @@ encaps_var:
encaps_var_offset:
T_STRING
{
$$ = &ast.ScalarString{ast.Node{}, $1.Value}
// save position
$$.GetNode().Position = position.NewTokenPosition($1)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
$$ = &ast.ScalarString{
Node: ast.Node{
Position: position.NewTokenPosition($1),
},
StringTkn: $1,
Value: $1.Value,
}
}
| T_NUM_STRING
{
@@ -6171,7 +6175,13 @@ encaps_var_offset:
Value: $1.Value,
}
} else {
$$ = &ast.ScalarString{ast.Node{}, $1.Value}
$$ = &ast.ScalarString{
Node: ast.Node{
Position: position.NewTokenPosition($1),
},
StringTkn: $1,
Value: $1.Value,
}
}
// save position
+99 -98
View File
@@ -347,7 +347,7 @@ const yyEofCode = 1
const yyErrCode = 2
const yyInitialStackSize = 16
// line internal/php7/php7.y:4988
// line internal/php7/php7.y:4989
// line yacctab:1
var yyExca = [...]int{
@@ -6541,13 +6541,13 @@ yydefault:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3933
{
yyVAL.node = &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value}
// save position
yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token)
// save comments
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens)
yyVAL.node = &ast.ScalarString{
Node: ast.Node{
Position: position.NewTokenPosition(yyDollar[1].token),
},
StringTkn: yyDollar[1].token,
Value: yyDollar[1].token.Value,
}
}
case 402:
yyDollar = yyS[yypt-1 : yypt+1]
@@ -6577,97 +6577,97 @@ yydefault:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3966
{
yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value}
// save position
yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token)
// save comments
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens)
yyVAL.node = &ast.ScalarMagicConstant{
Node: ast.Node{
Position: position.NewTokenPosition(yyDollar[1].token),
},
MagicConstTkn: yyDollar[1].token,
Value: yyDollar[1].token.Value,
}
}
case 405:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3976
{
yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value}
// save position
yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token)
// save comments
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens)
yyVAL.node = &ast.ScalarMagicConstant{
Node: ast.Node{
Position: position.NewTokenPosition(yyDollar[1].token),
},
MagicConstTkn: yyDollar[1].token,
Value: yyDollar[1].token.Value,
}
}
case 406:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3986
{
yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value}
// save position
yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token)
// save comments
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens)
yyVAL.node = &ast.ScalarMagicConstant{
Node: ast.Node{
Position: position.NewTokenPosition(yyDollar[1].token),
},
MagicConstTkn: yyDollar[1].token,
Value: yyDollar[1].token.Value,
}
}
case 407:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:3996
{
yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value}
// save position
yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token)
// save comments
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens)
yyVAL.node = &ast.ScalarMagicConstant{
Node: ast.Node{
Position: position.NewTokenPosition(yyDollar[1].token),
},
MagicConstTkn: yyDollar[1].token,
Value: yyDollar[1].token.Value,
}
}
case 408:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4006
{
yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value}
// save position
yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token)
// save comments
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens)
yyVAL.node = &ast.ScalarMagicConstant{
Node: ast.Node{
Position: position.NewTokenPosition(yyDollar[1].token),
},
MagicConstTkn: yyDollar[1].token,
Value: yyDollar[1].token.Value,
}
}
case 409:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4016
{
yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value}
// save position
yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token)
// save comments
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens)
yyVAL.node = &ast.ScalarMagicConstant{
Node: ast.Node{
Position: position.NewTokenPosition(yyDollar[1].token),
},
MagicConstTkn: yyDollar[1].token,
Value: yyDollar[1].token.Value,
}
}
case 410:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4026
{
yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value}
// save position
yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token)
// save comments
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens)
yyVAL.node = &ast.ScalarMagicConstant{
Node: ast.Node{
Position: position.NewTokenPosition(yyDollar[1].token),
},
MagicConstTkn: yyDollar[1].token,
Value: yyDollar[1].token.Value,
}
}
case 411:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4036
{
yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value}
// save position
yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token)
// save comments
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens)
yyVAL.node = &ast.ScalarMagicConstant{
Node: ast.Node{
Position: position.NewTokenPosition(yyDollar[1].token),
},
MagicConstTkn: yyDollar[1].token,
Value: yyDollar[1].token.Value,
}
}
case 412:
yyDollar = yyS[yypt-3 : yypt+1]
@@ -7497,13 +7497,13 @@ yydefault:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4792
{
yyVAL.node = &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value}
// save position
yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token)
// save comments
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens)
yyVAL.node = &ast.ScalarString{
Node: ast.Node{
Position: position.NewTokenPosition(yyDollar[1].token),
},
StringTkn: yyDollar[1].token,
Value: yyDollar[1].token.Value,
}
}
case 482:
yyDollar = yyS[yypt-1 : yypt+1]
@@ -7519,14 +7519,14 @@ yydefault:
Value: yyDollar[1].token.Value,
}
} else {
yyVAL.node = &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value}
yyVAL.node = &ast.ScalarString{
Node: ast.Node{
Position: position.NewTokenPosition(yyDollar[1].token),
},
StringTkn: yyDollar[1].token,
Value: yyDollar[1].token.Value,
}
}
// save position
yyVAL.node.GetNode().Position = position.NewTokenPosition(yyDollar[1].token)
// save comments
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens)
}
case 483:
yyDollar = yyS[yypt-2 : yypt+1]
@@ -7544,20 +7544,21 @@ yydefault:
Value: yyDollar[2].token.Value,
}
yyVAL.node = &ast.ExprUnaryMinus{ast.Node{}, lnumber}
} else {
yyDollar[2].token.Value = append([]byte("-"), yyDollar[2].token.Value...)
yyVAL.node = &ast.ScalarString{ast.Node{}, yyDollar[2].token.Value}
}
// save position
yyVAL.node.GetNode().Position = position.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)
// save comments
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.SkippedTokens)
} else {
yyVAL.node = &ast.ScalarString{
Node: ast.Node{
Position: position.NewTokensPosition(yyDollar[1].token, yyDollar[2].token),
},
MinusTkn: yyDollar[1].token,
StringTkn: yyDollar[2].token,
Value: append([]byte("-"), yyDollar[2].token.Value...),
}
}
}
case 484:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4848
// line internal/php7/php7.y:4849
{
identifier := &ast.Identifier{
Node: ast.Node{
@@ -7576,7 +7577,7 @@ yydefault:
}
case 485:
yyDollar = yyS[yypt-5 : yypt+1]
// line internal/php7/php7.y:4868
// line internal/php7/php7.y:4869
{
yyVAL.node = &ast.ExprIsset{ast.Node{}, yyDollar[3].list}
@@ -7594,7 +7595,7 @@ yydefault:
}
case 486:
yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4884
// line internal/php7/php7.y:4885
{
exprBrackets := &ast.ParserBrackets{
Node: ast.Node{
@@ -7616,7 +7617,7 @@ yydefault:
}
case 487:
yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4904
// line internal/php7/php7.y:4905
{
yyVAL.node = &ast.ExprInclude{ast.Node{}, yyDollar[2].node}
@@ -7628,7 +7629,7 @@ yydefault:
}
case 488:
yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4914
// line internal/php7/php7.y:4915
{
yyVAL.node = &ast.ExprIncludeOnce{ast.Node{}, yyDollar[2].node}
@@ -7640,7 +7641,7 @@ yydefault:
}
case 489:
yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php7/php7.y:4924
// line internal/php7/php7.y:4925
{
exprBrackets := &ast.ParserBrackets{
Node: ast.Node{
@@ -7662,7 +7663,7 @@ yydefault:
}
case 490:
yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4944
// line internal/php7/php7.y:4945
{
yyVAL.node = &ast.ExprRequire{ast.Node{}, yyDollar[2].node}
@@ -7674,7 +7675,7 @@ yydefault:
}
case 491:
yyDollar = yyS[yypt-2 : yypt+1]
// line internal/php7/php7.y:4954
// line internal/php7/php7.y:4955
{
yyVAL.node = &ast.ExprRequireOnce{ast.Node{}, yyDollar[2].node}
@@ -7686,13 +7687,13 @@ yydefault:
}
case 492:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4967
// line internal/php7/php7.y:4968
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
}
case 493:
yyDollar = yyS[yypt-3 : yypt+1]
// line internal/php7/php7.y:4971
// line internal/php7/php7.y:4972
{
yyVAL.list = append(yyDollar[1].list, yyDollar[3].node)
@@ -7701,7 +7702,7 @@ yydefault:
}
case 494:
yyDollar = yyS[yypt-1 : yypt+1]
// line internal/php7/php7.y:4981
// line internal/php7/php7.y:4982
{
yyVAL.node = yyDollar[1].node
}
+87 -86
View File
@@ -3931,13 +3931,13 @@ dereferencable_scalar:
}
| T_CONSTANT_ENCAPSED_STRING
{
$$ = &ast.ScalarString{ast.Node{}, $1.Value}
// save position
$$.GetNode().Position = position.NewTokenPosition($1)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
$$ = &ast.ScalarString{
Node: ast.Node{
Position: position.NewTokenPosition($1),
},
StringTkn: $1,
Value: $1.Value,
}
}
;
@@ -3964,83 +3964,83 @@ scalar:
}
| T_LINE
{
$$ = &ast.ScalarMagicConstant{ast.Node{}, $1.Value}
// save position
$$.GetNode().Position = position.NewTokenPosition($1)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
$$ = &ast.ScalarMagicConstant{
Node: ast.Node{
Position: position.NewTokenPosition($1),
},
MagicConstTkn: $1,
Value: $1.Value,
}
}
| T_FILE
{
$$ = &ast.ScalarMagicConstant{ast.Node{}, $1.Value}
// save position
$$.GetNode().Position = position.NewTokenPosition($1)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
$$ = &ast.ScalarMagicConstant{
Node: ast.Node{
Position: position.NewTokenPosition($1),
},
MagicConstTkn: $1,
Value: $1.Value,
}
}
| T_DIR
{
$$ = &ast.ScalarMagicConstant{ast.Node{}, $1.Value}
// save position
$$.GetNode().Position = position.NewTokenPosition($1)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
$$ = &ast.ScalarMagicConstant{
Node: ast.Node{
Position: position.NewTokenPosition($1),
},
MagicConstTkn: $1,
Value: $1.Value,
}
}
| T_TRAIT_C
{
$$ = &ast.ScalarMagicConstant{ast.Node{}, $1.Value}
// save position
$$.GetNode().Position = position.NewTokenPosition($1)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
$$ = &ast.ScalarMagicConstant{
Node: ast.Node{
Position: position.NewTokenPosition($1),
},
MagicConstTkn: $1,
Value: $1.Value,
}
}
| T_METHOD_C
{
$$ = &ast.ScalarMagicConstant{ast.Node{}, $1.Value}
// save position
$$.GetNode().Position = position.NewTokenPosition($1)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
$$ = &ast.ScalarMagicConstant{
Node: ast.Node{
Position: position.NewTokenPosition($1),
},
MagicConstTkn: $1,
Value: $1.Value,
}
}
| T_FUNC_C
{
$$ = &ast.ScalarMagicConstant{ast.Node{}, $1.Value}
// save position
$$.GetNode().Position = position.NewTokenPosition($1)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
$$ = &ast.ScalarMagicConstant{
Node: ast.Node{
Position: position.NewTokenPosition($1),
},
MagicConstTkn: $1,
Value: $1.Value,
}
}
| T_NS_C
{
$$ = &ast.ScalarMagicConstant{ast.Node{}, $1.Value}
// save position
$$.GetNode().Position = position.NewTokenPosition($1)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
$$ = &ast.ScalarMagicConstant{
Node: ast.Node{
Position: position.NewTokenPosition($1),
},
MagicConstTkn: $1,
Value: $1.Value,
}
}
| T_CLASS_C
{
$$ = &ast.ScalarMagicConstant{ast.Node{}, $1.Value}
// save position
$$.GetNode().Position = position.NewTokenPosition($1)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
$$ = &ast.ScalarMagicConstant{
Node: ast.Node{
Position: position.NewTokenPosition($1),
},
MagicConstTkn: $1,
Value: $1.Value,
}
}
| T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC
{
@@ -4790,13 +4790,13 @@ encaps_var:
encaps_var_offset:
T_STRING
{
$$ = &ast.ScalarString{ast.Node{}, $1.Value}
// save position
$$.GetNode().Position = position.NewTokenPosition($1)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
$$ = &ast.ScalarString{
Node: ast.Node{
Position: position.NewTokenPosition($1),
},
StringTkn: $1,
Value: $1.Value,
}
}
| T_NUM_STRING
{
@@ -4810,14 +4810,14 @@ encaps_var_offset:
Value: $1.Value,
}
} else {
$$ = &ast.ScalarString{ast.Node{}, $1.Value}
$$ = &ast.ScalarString{
Node: ast.Node{
Position: position.NewTokenPosition($1),
},
StringTkn: $1,
Value: $1.Value,
}
}
// save position
$$.GetNode().Position = position.NewTokenPosition($1)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
}
| '-' T_NUM_STRING
{
@@ -4833,16 +4833,17 @@ encaps_var_offset:
Value: $2.Value,
}
$$ = &ast.ExprUnaryMinus{ast.Node{}, lnumber}
} else {
$2.Value = append([]byte("-"), $2.Value...)
$$ = &ast.ScalarString{ast.Node{}, $2.Value}
}
// save position
$$.GetNode().Position = position.NewTokensPosition($1, $2)
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens)
} else {
$$ = &ast.ScalarString{
Node: ast.Node{
Position: position.NewTokensPosition($1, $2),
},
MinusTkn: $1,
StringTkn: $2,
Value: append([]byte("-"), $2.Value...),
}
}
}
| T_VARIABLE
{
+3
View File
@@ -172,6 +172,7 @@ func (n *ScalarLnumber) Accept(v NodeVisitor) {
// ScalarMagicConstant node
type ScalarMagicConstant struct {
Node
MagicConstTkn *token.Token
Value []byte
}
@@ -182,6 +183,8 @@ func (n *ScalarMagicConstant) Accept(v NodeVisitor) {
// ScalarString node
type ScalarString struct {
Node
MinusTkn *token.Token
StringTkn *token.Token
Value []byte
}