diff --git a/cmd/php-parser/main.go b/cmd/php-parser/main.go
index 569dd30..33d03e0 100644
--- a/cmd/php-parser/main.go
+++ b/cmd/php-parser/main.go
@@ -13,8 +13,8 @@ import (
"github.com/pkg/profile"
"github.com/yookoala/realpath"
- "github.com/z7zmey/php-parser/pkg/parser"
"github.com/z7zmey/php-parser/pkg/ast/visitor"
+ "github.com/z7zmey/php-parser/pkg/parser"
)
var wg sync.WaitGroup
diff --git a/internal/php5/parser.go b/internal/php5/parser.go
index 060be97..d4ec16d 100644
--- a/internal/php5/parser.go
+++ b/internal/php5/parser.go
@@ -2,6 +2,7 @@ package php5
import (
"bytes"
+ "fmt"
"github.com/z7zmey/php-parser/internal/positionbuilder"
"github.com/z7zmey/php-parser/internal/scanner"
@@ -132,10 +133,25 @@ func (l *Parser) GetFreeFloatingToken(t *scanner.Token) []token.Token {
return []token.Token{}
}
- tokens := make([]token.Token, len(t.Tokens))
- copy(tokens, t.Tokens)
+ return []token.Token{
+ {
+ ID: token.ID(t.ID),
+ Value: t.Value,
+ },
+ }
+}
- return tokens
+func (l *Parser) addDollarToken(v ast.Vertex) {
+ if l.Lexer.GetWithFreeFloating() == false {
+ return
+ }
+
+ l.setFreeFloating(v, token.Dollar, []token.Token{
+ {
+ ID: token.ID('$'),
+ Value: []byte("$"),
+ },
+ })
}
func (l *Parser) splitSemiColonAndPhpCloseTag(htmlNode ast.Vertex, prevNode ast.Vertex) {
@@ -159,6 +175,8 @@ func (l *Parser) splitSemiColonAndPhpCloseTag(htmlNode ast.Vertex, prevNode ast.
}
vlen := len(semiColon[0].Value)
+ fmt.Printf("vlen: %q\n", string(semiColon[0].Value))
+
tlen := 2
if bytes.HasSuffix(semiColon[0].Value, []byte("?>\n")) {
tlen = 3
diff --git a/internal/php5/php5.go b/internal/php5/php5.go
index 0b7071c..b63ef14 100644
--- a/internal/php5/php5.go
+++ b/internal/php5/php5.go
@@ -346,7 +346,7 @@ const yyEofCode = 1
const yyErrCode = 2
const yyInitialStackSize = 16
-// line internal/php5/php5.y:7171
+// line internal/php5/php5.y:7193
type simpleIndirectReference struct {
all []*ast.ExprVariable
@@ -3589,6 +3589,7 @@ yydefault:
yylex.(*Parser).setFreeFloating(catchNode, token.Start, yyDollar[1].token.Tokens)
yylex.(*Parser).setFreeFloating(catchNode, token.Catch, yyDollar[2].token.Tokens)
yylex.(*Parser).setFreeFloating(variable, token.Start, yyDollar[4].token.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating(catchNode, token.Var, yyDollar[5].token.Tokens)
yylex.(*Parser).setFreeFloating(catchNode, token.Cond, yyDollar[6].token.Tokens)
yylex.(*Parser).setFreeFloating(catchNode, token.Stmts, yyDollar[8].token.Tokens)
@@ -3597,7 +3598,7 @@ yydefault:
}
case 77:
yyDollar = yyS[yypt-0 : yypt+1]
-// line internal/php5/php5.y:1444
+// line internal/php5/php5.y:1445
{
yyVAL.node = nil
@@ -3605,7 +3606,7 @@ yydefault:
}
case 78:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:1450
+// line internal/php5/php5.y:1451
{
yyVAL.node = &ast.StmtFinally{ast.Node{}, yyDollar[3].list}
@@ -3621,7 +3622,7 @@ yydefault:
}
case 79:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:1467
+// line internal/php5/php5.y:1468
{
yyVAL.list = yyDollar[1].list
@@ -3629,7 +3630,7 @@ yydefault:
}
case 80:
yyDollar = yyS[yypt-0 : yypt+1]
-// line internal/php5/php5.y:1473
+// line internal/php5/php5.y:1474
{
yyVAL.list = []ast.Vertex{}
@@ -3637,7 +3638,7 @@ yydefault:
}
case 81:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:1482
+// line internal/php5/php5.y:1483
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
@@ -3645,7 +3646,7 @@ yydefault:
}
case 82:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:1488
+// line internal/php5/php5.y:1489
{
yyVAL.list = append(yyDollar[1].list, yyDollar[2].node)
@@ -3653,7 +3654,7 @@ yydefault:
}
case 83:
yyDollar = yyS[yypt-8 : yypt+1]
-// line internal/php5/php5.y:1497
+// line internal/php5/php5.y:1498
{
identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[4].token.Value, isDollar)}
variable := &ast.ExprVariable{ast.Node{}, identifier}
@@ -3668,6 +3669,7 @@ yydefault:
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.Tokens)
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Catch, yyDollar[2].token.Tokens)
yylex.(*Parser).setFreeFloating(variable, token.Start, yyDollar[4].token.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Var, yyDollar[5].token.Tokens)
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Cond, yyDollar[6].token.Tokens)
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Stmts, yyDollar[8].token.Tokens)
@@ -3676,7 +3678,7 @@ yydefault:
}
case 84:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:1521
+// line internal/php5/php5.y:1523
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
@@ -3684,7 +3686,7 @@ yydefault:
}
case 85:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:1527
+// line internal/php5/php5.y:1529
{
yyVAL.list = append(yyDollar[1].list, yyDollar[3].node)
@@ -3695,7 +3697,7 @@ yydefault:
}
case 86:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:1539
+// line internal/php5/php5.y:1541
{
yyVAL.node = yyDollar[1].node
@@ -3703,7 +3705,7 @@ yydefault:
}
case 87:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:1548
+// line internal/php5/php5.y:1550
{
yyVAL.node = yyDollar[1].node
@@ -3711,7 +3713,7 @@ yydefault:
}
case 88:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:1557
+// line internal/php5/php5.y:1559
{
yyVAL.node = yyDollar[1].node
@@ -3719,31 +3721,31 @@ yydefault:
}
case 89:
yyDollar = yyS[yypt-0 : yypt+1]
-// line internal/php5/php5.y:1566
+// line internal/php5/php5.y:1568
{
yyVAL.token = nil
}
case 90:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:1570
+// line internal/php5/php5.y:1572
{
yyVAL.token = yyDollar[1].token
}
case 91:
yyDollar = yyS[yypt-0 : yypt+1]
-// line internal/php5/php5.y:1577
+// line internal/php5/php5.y:1579
{
yyVAL.token = nil
}
case 92:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:1581
+// line internal/php5/php5.y:1583
{
yyVAL.token = yyDollar[1].token
}
case 93:
yyDollar = yyS[yypt-9 : yypt+1]
-// line internal/php5/php5.y:1588
+// line internal/php5/php5.y:1590
{
name := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value}
yyVAL.node = &ast.StmtFunction{ast.Node{}, yyDollar[2].token != nil, name, yyDollar[5].list, nil, yyDollar[8].list}
@@ -3769,7 +3771,7 @@ yydefault:
}
case 94:
yyDollar = yyS[yypt-7 : yypt+1]
-// line internal/php5/php5.y:1615
+// line internal/php5/php5.y:1617
{
name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value}
switch n := yyDollar[1].node.(type) {
@@ -3799,7 +3801,7 @@ yydefault:
}
case 95:
yyDollar = yyS[yypt-6 : yypt+1]
-// line internal/php5/php5.y:1643
+// line internal/php5/php5.y:1645
{
name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value}
yyVAL.node = &ast.StmtInterface{ast.Node{}, name, yyDollar[3].InterfaceExtends, yyDollar[5].list}
@@ -3818,7 +3820,7 @@ yydefault:
}
case 96:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:1664
+// line internal/php5/php5.y:1666
{
yyVAL.node = &ast.StmtClass{ast.Node{}, nil, nil, nil, nil, nil, nil}
@@ -3832,7 +3834,7 @@ yydefault:
}
case 97:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:1676
+// line internal/php5/php5.y:1678
{
classModifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value}
yyVAL.node = &ast.StmtClass{ast.Node{}, nil, []ast.Vertex{classModifier}, nil, nil, nil, nil}
@@ -3849,7 +3851,7 @@ yydefault:
}
case 98:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:1691
+// line internal/php5/php5.y:1693
{
yyVAL.node = &ast.StmtTrait{ast.Node{}, nil, nil}
@@ -3863,7 +3865,7 @@ yydefault:
}
case 99:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:1703
+// line internal/php5/php5.y:1705
{
classModifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value}
yyVAL.node = &ast.StmtClass{ast.Node{}, nil, []ast.Vertex{classModifier}, nil, nil, nil, nil}
@@ -3880,7 +3882,7 @@ yydefault:
}
case 100:
yyDollar = yyS[yypt-0 : yypt+1]
-// line internal/php5/php5.y:1721
+// line internal/php5/php5.y:1723
{
yyVAL.ClassExtends = nil
@@ -3888,7 +3890,7 @@ yydefault:
}
case 101:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:1727
+// line internal/php5/php5.y:1729
{
yyVAL.ClassExtends = &ast.StmtClassExtends{ast.Node{}, yyDollar[2].node}
@@ -3902,13 +3904,13 @@ yydefault:
}
case 102:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:1742
+// line internal/php5/php5.y:1744
{
yyVAL.token = yyDollar[1].token
}
case 103:
yyDollar = yyS[yypt-0 : yypt+1]
-// line internal/php5/php5.y:1749
+// line internal/php5/php5.y:1751
{
yyVAL.InterfaceExtends = nil
@@ -3916,7 +3918,7 @@ yydefault:
}
case 104:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:1755
+// line internal/php5/php5.y:1757
{
yyVAL.InterfaceExtends = &ast.StmtInterfaceExtends{ast.Node{}, yyDollar[2].list}
@@ -3930,7 +3932,7 @@ yydefault:
}
case 105:
yyDollar = yyS[yypt-0 : yypt+1]
-// line internal/php5/php5.y:1770
+// line internal/php5/php5.y:1772
{
yyVAL.ClassImplements = nil
@@ -3938,7 +3940,7 @@ yydefault:
}
case 106:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:1776
+// line internal/php5/php5.y:1778
{
yyVAL.ClassImplements = &ast.StmtClassImplements{ast.Node{}, yyDollar[2].list}
@@ -3952,7 +3954,7 @@ yydefault:
}
case 107:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:1791
+// line internal/php5/php5.y:1793
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
@@ -3960,7 +3962,7 @@ yydefault:
}
case 108:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:1797
+// line internal/php5/php5.y:1799
{
yyVAL.list = append(yyDollar[1].list, yyDollar[3].node)
@@ -3971,7 +3973,7 @@ yydefault:
}
case 109:
yyDollar = yyS[yypt-0 : yypt+1]
-// line internal/php5/php5.y:1809
+// line internal/php5/php5.y:1811
{
yyVAL.node = nil
@@ -3979,7 +3981,7 @@ yydefault:
}
case 110:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:1815
+// line internal/php5/php5.y:1817
{
yyVAL.node = yyDollar[2].node
@@ -3990,7 +3992,7 @@ yydefault:
}
case 111:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:1827
+// line internal/php5/php5.y:1829
{
yyVAL.node = yyDollar[1].node
@@ -3998,7 +4000,7 @@ yydefault:
}
case 112:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:1833
+// line internal/php5/php5.y:1835
{
yyVAL.node = &ast.ExprReference{ast.Node{}, yyDollar[2].node}
@@ -4012,7 +4014,7 @@ yydefault:
}
case 113:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:1845
+// line internal/php5/php5.y:1847
{
yyVAL.node = &ast.ExprList{ast.Node{}, yyDollar[3].list}
@@ -4028,7 +4030,7 @@ yydefault:
}
case 114:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:1862
+// line internal/php5/php5.y:1864
{
yyVAL.node = &ast.StmtFor{ast.Node{}, nil, nil, nil, yyDollar[1].node}
@@ -4039,7 +4041,7 @@ yydefault:
}
case 115:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:1871
+// line internal/php5/php5.y:1873
{
stmtList := &ast.StmtStmtList{ast.Node{}, yyDollar[2].list}
yyVAL.node = &ast.StmtAltFor{ast.Node{}, nil, nil, nil, stmtList}
@@ -4058,7 +4060,7 @@ yydefault:
}
case 116:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:1891
+// line internal/php5/php5.y:1893
{
yyVAL.node = &ast.StmtForeach{ast.Node{}, nil, nil, nil, yyDollar[1].node}
@@ -4069,7 +4071,7 @@ yydefault:
}
case 117:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:1900
+// line internal/php5/php5.y:1902
{
stmtList := &ast.StmtStmtList{ast.Node{}, yyDollar[2].list}
yyVAL.node = &ast.StmtAltForeach{ast.Node{}, nil, nil, nil, stmtList}
@@ -4088,7 +4090,7 @@ yydefault:
}
case 118:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:1921
+// line internal/php5/php5.y:1923
{
yyVAL.node = &ast.StmtDeclare{ast.Node{}, false, nil, yyDollar[1].node}
@@ -4099,7 +4101,7 @@ yydefault:
}
case 119:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:1930
+// line internal/php5/php5.y:1932
{
stmtList := &ast.StmtStmtList{ast.Node{}, yyDollar[2].list}
yyVAL.node = &ast.StmtDeclare{ast.Node{}, true, nil, stmtList}
@@ -4118,7 +4120,7 @@ yydefault:
}
case 120:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:1951
+// line internal/php5/php5.y:1953
{
name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value}
constant := &ast.StmtConstant{ast.Node{}, name, yyDollar[3].node}
@@ -4136,7 +4138,7 @@ yydefault:
}
case 121:
yyDollar = yyS[yypt-5 : yypt+1]
-// line internal/php5/php5.y:1967
+// line internal/php5/php5.y:1969
{
name := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value}
constant := &ast.StmtConstant{ast.Node{}, name, yyDollar[5].node}
@@ -4155,7 +4157,7 @@ yydefault:
}
case 122:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:1988
+// line internal/php5/php5.y:1990
{
caseList := &ast.StmtCaseList{ast.Node{}, yyDollar[2].list}
yyVAL.node = &ast.StmtSwitch{ast.Node{}, nil, caseList}
@@ -4172,7 +4174,7 @@ yydefault:
}
case 123:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:2003
+// line internal/php5/php5.y:2005
{
caseList := &ast.StmtCaseList{ast.Node{}, yyDollar[3].list}
yyVAL.node = &ast.StmtSwitch{ast.Node{}, nil, caseList}
@@ -4190,7 +4192,7 @@ yydefault:
}
case 124:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:2019
+// line internal/php5/php5.y:2021
{
caseList := &ast.StmtCaseList{ast.Node{}, yyDollar[2].list}
yyVAL.node = &ast.StmtAltSwitch{ast.Node{}, nil, caseList}
@@ -4209,7 +4211,7 @@ yydefault:
}
case 125:
yyDollar = yyS[yypt-5 : yypt+1]
-// line internal/php5/php5.y:2036
+// line internal/php5/php5.y:2038
{
caseList := &ast.StmtCaseList{ast.Node{}, yyDollar[3].list}
@@ -4230,7 +4232,7 @@ yydefault:
}
case 126:
yyDollar = yyS[yypt-0 : yypt+1]
-// line internal/php5/php5.y:2059
+// line internal/php5/php5.y:2061
{
yyVAL.list = []ast.Vertex{}
@@ -4238,7 +4240,7 @@ yydefault:
}
case 127:
yyDollar = yyS[yypt-5 : yypt+1]
-// line internal/php5/php5.y:2065
+// line internal/php5/php5.y:2067
{
_case := &ast.StmtCase{ast.Node{}, yyDollar[3].node, yyDollar[5].list}
yyVAL.list = append(yyDollar[1].list, _case)
@@ -4255,7 +4257,7 @@ yydefault:
}
case 128:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:2080
+// line internal/php5/php5.y:2082
{
_default := &ast.StmtDefault{ast.Node{}, yyDollar[4].list}
yyVAL.list = append(yyDollar[1].list, _default)
@@ -4272,19 +4274,19 @@ yydefault:
}
case 129:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:2099
+// line internal/php5/php5.y:2101
{
yyVAL.token = yyDollar[1].token
}
case 130:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:2103
+// line internal/php5/php5.y:2105
{
yyVAL.token = yyDollar[1].token
}
case 131:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:2111
+// line internal/php5/php5.y:2113
{
yyVAL.node = &ast.StmtWhile{ast.Node{}, nil, yyDollar[1].node}
@@ -4295,7 +4297,7 @@ yydefault:
}
case 132:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:2120
+// line internal/php5/php5.y:2122
{
stmtList := &ast.StmtStmtList{ast.Node{}, yyDollar[2].list}
yyVAL.node = &ast.StmtAltWhile{ast.Node{}, nil, stmtList}
@@ -4314,7 +4316,7 @@ yydefault:
}
case 133:
yyDollar = yyS[yypt-0 : yypt+1]
-// line internal/php5/php5.y:2142
+// line internal/php5/php5.y:2144
{
yyVAL.list = nil
@@ -4322,7 +4324,7 @@ yydefault:
}
case 134:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:2148
+// line internal/php5/php5.y:2150
{
_elseIf := &ast.StmtElseIf{ast.Node{}, yyDollar[3].node, yyDollar[4].node}
yyVAL.list = append(yyDollar[1].list, _elseIf)
@@ -4345,7 +4347,7 @@ yydefault:
}
case 135:
yyDollar = yyS[yypt-0 : yypt+1]
-// line internal/php5/php5.y:2171
+// line internal/php5/php5.y:2173
{
yyVAL.list = nil
@@ -4353,7 +4355,7 @@ yydefault:
}
case 136:
yyDollar = yyS[yypt-5 : yypt+1]
-// line internal/php5/php5.y:2177
+// line internal/php5/php5.y:2179
{
stmts := &ast.StmtStmtList{ast.Node{}, yyDollar[5].list}
_elseIf := &ast.StmtAltElseIf{ast.Node{}, yyDollar[3].node, stmts}
@@ -4379,7 +4381,7 @@ yydefault:
}
case 137:
yyDollar = yyS[yypt-0 : yypt+1]
-// line internal/php5/php5.y:2203
+// line internal/php5/php5.y:2205
{
yyVAL.node = nil
@@ -4387,7 +4389,7 @@ yydefault:
}
case 138:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:2209
+// line internal/php5/php5.y:2211
{
yyVAL.node = &ast.StmtElse{ast.Node{}, yyDollar[2].node}
@@ -4401,7 +4403,7 @@ yydefault:
}
case 139:
yyDollar = yyS[yypt-0 : yypt+1]
-// line internal/php5/php5.y:2225
+// line internal/php5/php5.y:2227
{
yyVAL.node = nil
@@ -4409,7 +4411,7 @@ yydefault:
}
case 140:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:2231
+// line internal/php5/php5.y:2233
{
stmts := &ast.StmtStmtList{ast.Node{}, yyDollar[3].list}
yyVAL.node = &ast.StmtAltElse{ast.Node{}, stmts}
@@ -4426,7 +4428,7 @@ yydefault:
}
case 141:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:2250
+// line internal/php5/php5.y:2252
{
yyVAL.list = yyDollar[1].list
@@ -4434,7 +4436,7 @@ yydefault:
}
case 142:
yyDollar = yyS[yypt-0 : yypt+1]
-// line internal/php5/php5.y:2256
+// line internal/php5/php5.y:2258
{
yyVAL.list = nil
@@ -4442,7 +4444,7 @@ yydefault:
}
case 143:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:2265
+// line internal/php5/php5.y:2267
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
@@ -4450,7 +4452,7 @@ yydefault:
}
case 144:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:2271
+// line internal/php5/php5.y:2273
{
yyVAL.list = append(yyDollar[1].list, yyDollar[3].node)
@@ -4461,7 +4463,7 @@ yydefault:
}
case 145:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:2283
+// line internal/php5/php5.y:2285
{
identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[4].token.Value, isDollar)}
variable := &ast.ExprVariable{ast.Node{}, identifier}
@@ -4491,6 +4493,7 @@ yydefault:
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Ampersand, yyDollar[3].token.Tokens)
}
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Variadic, yyDollar[4].token.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
// normalize
if yyDollar[3].token == nil {
@@ -4510,7 +4513,7 @@ yydefault:
}
case 146:
yyDollar = yyS[yypt-6 : yypt+1]
-// line internal/php5/php5.y:2327
+// line internal/php5/php5.y:2330
{
identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[4].token.Value, isDollar)}
variable := &ast.ExprVariable{ast.Node{}, identifier}
@@ -4541,6 +4544,7 @@ yydefault:
}
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Variadic, yyDollar[4].token.Tokens)
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Var, yyDollar[5].token.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
// normalize
if yyDollar[3].token == nil {
@@ -4560,7 +4564,7 @@ yydefault:
}
case 147:
yyDollar = yyS[yypt-0 : yypt+1]
-// line internal/php5/php5.y:2376
+// line internal/php5/php5.y:2380
{
yyVAL.node = nil
@@ -4568,7 +4572,7 @@ yydefault:
}
case 148:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:2382
+// line internal/php5/php5.y:2386
{
yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value}
@@ -4582,7 +4586,7 @@ yydefault:
}
case 149:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:2394
+// line internal/php5/php5.y:2398
{
yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value}
@@ -4596,7 +4600,7 @@ yydefault:
}
case 150:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:2406
+// line internal/php5/php5.y:2410
{
yyVAL.node = yyDollar[1].node
@@ -4604,7 +4608,7 @@ yydefault:
}
case 151:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:2416
+// line internal/php5/php5.y:2420
{
yyVAL.node = &ast.ArgumentList{ast.Node{}, nil}
@@ -4619,7 +4623,7 @@ yydefault:
}
case 152:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:2429
+// line internal/php5/php5.y:2433
{
yyVAL.node = &ast.ArgumentList{ast.Node{}, yyDollar[2].list}
@@ -4634,7 +4638,7 @@ yydefault:
}
case 153:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:2442
+// line internal/php5/php5.y:2446
{
arg := &ast.Argument{ast.Node{}, false, false, yyDollar[2].node}
yyVAL.node = &ast.ArgumentList{ast.Node{}, []ast.Vertex{arg}}
@@ -4651,7 +4655,7 @@ yydefault:
}
case 154:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:2461
+// line internal/php5/php5.y:2465
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
@@ -4659,7 +4663,7 @@ yydefault:
}
case 155:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:2467
+// line internal/php5/php5.y:2471
{
yyVAL.list = append(yyDollar[1].list, yyDollar[3].node)
@@ -4670,7 +4674,7 @@ yydefault:
}
case 156:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:2479
+// line internal/php5/php5.y:2483
{
yyVAL.node = &ast.Argument{ast.Node{}, false, false, yyDollar[1].node}
@@ -4684,7 +4688,7 @@ yydefault:
}
case 157:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:2491
+// line internal/php5/php5.y:2495
{
yyVAL.node = &ast.Argument{ast.Node{}, false, false, yyDollar[1].node}
@@ -4698,7 +4702,7 @@ yydefault:
}
case 158:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:2503
+// line internal/php5/php5.y:2507
{
yyVAL.node = &ast.Argument{ast.Node{}, false, true, yyDollar[2].node}
@@ -4712,7 +4716,7 @@ yydefault:
}
case 159:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:2515
+// line internal/php5/php5.y:2519
{
yyVAL.node = &ast.Argument{ast.Node{}, true, false, yyDollar[2].node}
@@ -4726,7 +4730,7 @@ yydefault:
}
case 160:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:2530
+// line internal/php5/php5.y:2534
{
yyVAL.list = append(yyDollar[1].list, yyDollar[3].node)
@@ -4737,7 +4741,7 @@ yydefault:
}
case 161:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:2539
+// line internal/php5/php5.y:2543
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
@@ -4745,7 +4749,7 @@ yydefault:
}
case 162:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:2549
+// line internal/php5/php5.y:2553
{
name := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[1].token.Value, isDollar)}
yyVAL.node = &ast.ExprVariable{ast.Node{}, name}
@@ -4756,12 +4760,13 @@ yydefault:
// save comments
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.Tokens)
+ yylex.(*Parser).addDollarToken(yyVAL.node)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
case 163:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:2563
+// line internal/php5/php5.y:2568
{
yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[2].node}
@@ -4776,7 +4781,7 @@ yydefault:
}
case 164:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:2576
+// line internal/php5/php5.y:2581
{
yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[3].node}
@@ -4793,7 +4798,7 @@ yydefault:
}
case 165:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:2595
+// line internal/php5/php5.y:2600
{
identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[3].token.Value, isDollar)}
variable := &ast.ExprVariable{ast.Node{}, identifier}
@@ -4807,13 +4812,14 @@ yydefault:
// save comments
yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), token.End, yyDollar[2].token.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating(staticVar, token.Start, yyDollar[3].token.Tokens)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
case 166:
yyDollar = yyS[yypt-5 : yypt+1]
-// line internal/php5/php5.y:2613
+// line internal/php5/php5.y:2619
{
identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[3].token.Value, isDollar)}
variable := &ast.ExprVariable{ast.Node{}, identifier}
@@ -4827,6 +4833,7 @@ yydefault:
// save comments
yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), token.End, yyDollar[2].token.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating(staticVar, token.Start, yyDollar[3].token.Tokens)
yylex.(*Parser).setFreeFloating(staticVar, token.Var, yyDollar[4].token.Tokens)
@@ -4834,7 +4841,7 @@ yydefault:
}
case 167:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:2632
+// line internal/php5/php5.y:2639
{
identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[1].token.Value, isDollar)}
variable := &ast.ExprVariable{ast.Node{}, identifier}
@@ -4847,13 +4854,14 @@ yydefault:
staticVar.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)
// save comments
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating(staticVar, token.Start, yyDollar[1].token.Tokens)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
case 168:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:2649
+// line internal/php5/php5.y:2657
{
identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[1].token.Value, isDollar)}
variable := &ast.ExprVariable{ast.Node{}, identifier}
@@ -4866,6 +4874,7 @@ yydefault:
staticVar.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)
// save comments
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating(staticVar, token.Start, yyDollar[1].token.Tokens)
yylex.(*Parser).setFreeFloating(staticVar, token.Var, yyDollar[2].token.Tokens)
@@ -4873,7 +4882,7 @@ yydefault:
}
case 169:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:2671
+// line internal/php5/php5.y:2680
{
yyVAL.list = append(yyDollar[1].list, yyDollar[2].node)
@@ -4881,7 +4890,7 @@ yydefault:
}
case 170:
yyDollar = yyS[yypt-0 : yypt+1]
-// line internal/php5/php5.y:2677
+// line internal/php5/php5.y:2686
{
yyVAL.list = []ast.Vertex{}
@@ -4889,7 +4898,7 @@ yydefault:
}
case 171:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:2687
+// line internal/php5/php5.y:2696
{
yyVAL.node = &ast.StmtPropertyList{ast.Node{}, yyDollar[1].list, nil, yyDollar[2].list}
@@ -4905,7 +4914,7 @@ yydefault:
}
case 172:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:2701
+// line internal/php5/php5.y:2710
{
yyVAL.node = yyDollar[1].node
@@ -4920,7 +4929,7 @@ yydefault:
}
case 173:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:2714
+// line internal/php5/php5.y:2723
{
yyVAL.node = yyDollar[1].node
@@ -4928,7 +4937,7 @@ yydefault:
}
case 174:
yyDollar = yyS[yypt-8 : yypt+1]
-// line internal/php5/php5.y:2720
+// line internal/php5/php5.y:2729
{
name := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value}
yyVAL.node = &ast.StmtClassMethod{ast.Node{}, yyDollar[3].token != nil, name, yyDollar[1].list, yyDollar[6].list, nil, yyDollar[8].node}
@@ -4961,7 +4970,7 @@ yydefault:
}
case 175:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:2754
+// line internal/php5/php5.y:2763
{
yyVAL.node = &ast.StmtTraitUse{ast.Node{}, yyDollar[2].list, yyDollar[3].node}
@@ -4975,7 +4984,7 @@ yydefault:
}
case 176:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:2769
+// line internal/php5/php5.y:2778
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
@@ -4983,7 +4992,7 @@ yydefault:
}
case 177:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:2775
+// line internal/php5/php5.y:2784
{
yyVAL.list = append(yyDollar[1].list, yyDollar[3].node)
@@ -4994,7 +5003,7 @@ yydefault:
}
case 178:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:2787
+// line internal/php5/php5.y:2796
{
yyVAL.node = &ast.StmtNop{ast.Node{}}
@@ -5008,7 +5017,7 @@ yydefault:
}
case 179:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:2799
+// line internal/php5/php5.y:2808
{
yyVAL.node = &ast.StmtTraitAdaptationList{ast.Node{}, yyDollar[2].list}
@@ -5022,7 +5031,7 @@ yydefault:
}
case 180:
yyDollar = yyS[yypt-0 : yypt+1]
-// line internal/php5/php5.y:2814
+// line internal/php5/php5.y:2823
{
yyVAL.list = nil
@@ -5030,7 +5039,7 @@ yydefault:
}
case 181:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:2820
+// line internal/php5/php5.y:2829
{
yyVAL.list = yyDollar[1].list
@@ -5038,7 +5047,7 @@ yydefault:
}
case 182:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:2829
+// line internal/php5/php5.y:2838
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
@@ -5046,7 +5055,7 @@ yydefault:
}
case 183:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:2835
+// line internal/php5/php5.y:2844
{
yyVAL.list = append(yyDollar[1].list, yyDollar[2].node)
@@ -5054,7 +5063,7 @@ yydefault:
}
case 184:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:2844
+// line internal/php5/php5.y:2853
{
yyVAL.node = yyDollar[1].node
@@ -5066,7 +5075,7 @@ yydefault:
}
case 185:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:2854
+// line internal/php5/php5.y:2863
{
yyVAL.node = yyDollar[1].node
@@ -5078,7 +5087,7 @@ yydefault:
}
case 186:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:2867
+// line internal/php5/php5.y:2876
{
yyVAL.node = &ast.StmtTraitUsePrecedence{ast.Node{}, yyDollar[1].node, yyDollar[3].list}
@@ -5093,7 +5102,7 @@ yydefault:
}
case 187:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:2883
+// line internal/php5/php5.y:2892
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
@@ -5101,7 +5110,7 @@ yydefault:
}
case 188:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:2889
+// line internal/php5/php5.y:2898
{
yyVAL.list = append(yyDollar[1].list, yyDollar[3].node)
@@ -5112,7 +5121,7 @@ yydefault:
}
case 189:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:2901
+// line internal/php5/php5.y:2910
{
name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value}
yyVAL.node = &ast.StmtTraitMethodRef{ast.Node{}, nil, name}
@@ -5128,7 +5137,7 @@ yydefault:
}
case 190:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:2915
+// line internal/php5/php5.y:2924
{
yyVAL.node = yyDollar[1].node
@@ -5136,7 +5145,7 @@ yydefault:
}
case 191:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:2924
+// line internal/php5/php5.y:2933
{
target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value}
yyVAL.node = &ast.StmtTraitMethodRef{ast.Node{}, yyDollar[1].node, target}
@@ -5154,7 +5163,7 @@ yydefault:
}
case 192:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:2943
+// line internal/php5/php5.y:2952
{
alias := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value}
yyVAL.node = &ast.StmtTraitUseAlias{ast.Node{}, yyDollar[1].node, yyDollar[3].node, alias}
@@ -5172,7 +5181,7 @@ yydefault:
}
case 193:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:2959
+// line internal/php5/php5.y:2968
{
yyVAL.node = &ast.StmtTraitUseAlias{ast.Node{}, yyDollar[1].node, yyDollar[3].node, nil}
@@ -5187,7 +5196,7 @@ yydefault:
}
case 194:
yyDollar = yyS[yypt-0 : yypt+1]
-// line internal/php5/php5.y:2975
+// line internal/php5/php5.y:2984
{
yyVAL.node = nil
@@ -5195,7 +5204,7 @@ yydefault:
}
case 195:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:2981
+// line internal/php5/php5.y:2990
{
yyVAL.node = yyDollar[1].node
@@ -5203,7 +5212,7 @@ yydefault:
}
case 196:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:2990
+// line internal/php5/php5.y:2999
{
yyVAL.node = &ast.StmtNop{ast.Node{}}
@@ -5218,7 +5227,7 @@ yydefault:
}
case 197:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3003
+// line internal/php5/php5.y:3012
{
yyVAL.node = &ast.StmtStmtList{ast.Node{}, yyDollar[2].list}
@@ -5233,7 +5242,7 @@ yydefault:
}
case 198:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:3019
+// line internal/php5/php5.y:3028
{
yyVAL.list = yyDollar[1].list
@@ -5241,7 +5250,7 @@ yydefault:
}
case 199:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:3025
+// line internal/php5/php5.y:3034
{
modifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value}
yyVAL.list = []ast.Vertex{modifier}
@@ -5256,7 +5265,7 @@ yydefault:
}
case 200:
yyDollar = yyS[yypt-0 : yypt+1]
-// line internal/php5/php5.y:3041
+// line internal/php5/php5.y:3050
{
yyVAL.list = nil
@@ -5264,7 +5273,7 @@ yydefault:
}
case 201:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:3047
+// line internal/php5/php5.y:3056
{
yyVAL.list = yyDollar[1].list
@@ -5272,7 +5281,7 @@ yydefault:
}
case 202:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:3056
+// line internal/php5/php5.y:3065
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
@@ -5280,7 +5289,7 @@ yydefault:
}
case 203:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:3062
+// line internal/php5/php5.y:3071
{
yyVAL.list = append(yyDollar[1].list, yyDollar[2].node)
@@ -5288,7 +5297,7 @@ yydefault:
}
case 204:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:3071
+// line internal/php5/php5.y:3080
{
yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value}
@@ -5302,7 +5311,7 @@ yydefault:
}
case 205:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:3083
+// line internal/php5/php5.y:3092
{
yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value}
@@ -5316,7 +5325,7 @@ yydefault:
}
case 206:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:3095
+// line internal/php5/php5.y:3104
{
yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value}
@@ -5330,7 +5339,7 @@ yydefault:
}
case 207:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:3107
+// line internal/php5/php5.y:3116
{
yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value}
@@ -5344,7 +5353,7 @@ yydefault:
}
case 208:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:3119
+// line internal/php5/php5.y:3128
{
yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value}
@@ -5358,7 +5367,7 @@ yydefault:
}
case 209:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:3131
+// line internal/php5/php5.y:3140
{
yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value}
@@ -5372,7 +5381,7 @@ yydefault:
}
case 210:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3146
+// line internal/php5/php5.y:3155
{
identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[3].token.Value, isDollar)}
variable := &ast.ExprVariable{ast.Node{}, identifier}
@@ -5385,6 +5394,7 @@ yydefault:
property.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)
// save comments
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), token.End, yyDollar[2].token.Tokens)
yylex.(*Parser).setFreeFloating(property, token.Start, yyDollar[3].token.Tokens)
@@ -5392,7 +5402,7 @@ yydefault:
}
case 211:
yyDollar = yyS[yypt-5 : yypt+1]
-// line internal/php5/php5.y:3164
+// line internal/php5/php5.y:3174
{
identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[3].token.Value, isDollar)}
variable := &ast.ExprVariable{ast.Node{}, identifier}
@@ -5406,6 +5416,7 @@ yydefault:
// save comments
yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), token.End, yyDollar[2].token.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating(property, token.Start, yyDollar[3].token.Tokens)
yylex.(*Parser).setFreeFloating(property, token.Var, yyDollar[4].token.Tokens)
@@ -5413,7 +5424,7 @@ yydefault:
}
case 212:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:3183
+// line internal/php5/php5.y:3194
{
identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[1].token.Value, isDollar)}
variable := &ast.ExprVariable{ast.Node{}, identifier}
@@ -5426,13 +5437,14 @@ yydefault:
property.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)
// save comments
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating(property, token.Start, yyDollar[1].token.Tokens)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
case 213:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3200
+// line internal/php5/php5.y:3212
{
identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[1].token.Value, isDollar)}
variable := &ast.ExprVariable{ast.Node{}, identifier}
@@ -5445,6 +5457,7 @@ yydefault:
property.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)
// save comments
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating(property, token.Start, yyDollar[2].token.Tokens)
yylex.(*Parser).setFreeFloating(property, token.Var, yyDollar[2].token.Tokens)
@@ -5452,7 +5465,7 @@ yydefault:
}
case 214:
yyDollar = yyS[yypt-5 : yypt+1]
-// line internal/php5/php5.y:3221
+// line internal/php5/php5.y:3234
{
name := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value}
constant := &ast.StmtConstant{ast.Node{}, name, yyDollar[5].node}
@@ -5475,7 +5488,7 @@ yydefault:
}
case 215:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:3242
+// line internal/php5/php5.y:3255
{
name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value}
constant := &ast.StmtConstant{ast.Node{}, name, yyDollar[4].node}
@@ -5495,7 +5508,7 @@ yydefault:
}
case 216:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3263
+// line internal/php5/php5.y:3276
{
yyVAL.list = append(yyDollar[1].list, yyDollar[3].node)
@@ -5506,7 +5519,7 @@ yydefault:
}
case 217:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:3272
+// line internal/php5/php5.y:3285
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
@@ -5514,7 +5527,7 @@ yydefault:
}
case 218:
yyDollar = yyS[yypt-0 : yypt+1]
-// line internal/php5/php5.y:3282
+// line internal/php5/php5.y:3295
{
yyVAL.list = nil
@@ -5522,7 +5535,7 @@ yydefault:
}
case 219:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:3288
+// line internal/php5/php5.y:3301
{
yyVAL.list = yyDollar[1].list
@@ -5530,7 +5543,7 @@ yydefault:
}
case 220:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3297
+// line internal/php5/php5.y:3310
{
yyVAL.list = append(yyDollar[1].list, yyDollar[3].node)
@@ -5541,7 +5554,7 @@ yydefault:
}
case 221:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:3306
+// line internal/php5/php5.y:3319
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
@@ -5549,7 +5562,7 @@ yydefault:
}
case 222:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:3315
+// line internal/php5/php5.y:3328
{
yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...)
@@ -5557,7 +5570,7 @@ yydefault:
}
case 223:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:3321
+// line internal/php5/php5.y:3334
{
yyVAL.list = yyDollar[1].list
@@ -5565,7 +5578,7 @@ yydefault:
}
case 224:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:3330
+// line internal/php5/php5.y:3343
{
fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node}
yyVAL.list = append(yyDollar[1].list, fetch)
@@ -5581,7 +5594,7 @@ yydefault:
}
case 225:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3344
+// line internal/php5/php5.y:3357
{
fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[2].node}
yyVAL.list = []ast.Vertex{fetch}
@@ -5597,7 +5610,7 @@ yydefault:
}
case 226:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:3361
+// line internal/php5/php5.y:3374
{
yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...)
@@ -5605,7 +5618,7 @@ yydefault:
}
case 227:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:3367
+// line internal/php5/php5.y:3380
{
yyVAL.list = yyDollar[1].list
@@ -5613,7 +5626,7 @@ yydefault:
}
case 228:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:3373
+// line internal/php5/php5.y:3386
{
yyVAL.list = yyDollar[1].list
@@ -5621,7 +5634,7 @@ yydefault:
}
case 229:
yyDollar = yyS[yypt-0 : yypt+1]
-// line internal/php5/php5.y:3382
+// line internal/php5/php5.y:3395
{
yyVAL.list = nil
@@ -5629,7 +5642,7 @@ yydefault:
}
case 230:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:3388
+// line internal/php5/php5.y:3401
{
yyVAL.list = yyDollar[1].list
@@ -5637,7 +5650,7 @@ yydefault:
}
case 231:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3397
+// line internal/php5/php5.y:3410
{
if yyDollar[3].node != nil {
@@ -5655,7 +5668,7 @@ yydefault:
}
case 232:
yyDollar = yyS[yypt-6 : yypt+1]
-// line internal/php5/php5.y:3416
+// line internal/php5/php5.y:3429
{
listNode := &ast.ExprList{ast.Node{}, yyDollar[3].list}
yyVAL.node = &ast.ExprAssign{ast.Node{}, listNode, yyDollar[6].node}
@@ -5674,7 +5687,7 @@ yydefault:
}
case 233:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3433
+// line internal/php5/php5.y:3446
{
yyVAL.node = &ast.ExprAssign{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -5689,7 +5702,7 @@ yydefault:
}
case 234:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:3446
+// line internal/php5/php5.y:3459
{
yyVAL.node = &ast.ExprAssignReference{ast.Node{}, yyDollar[1].node, yyDollar[4].node}
@@ -5705,7 +5718,7 @@ yydefault:
}
case 235:
yyDollar = yyS[yypt-6 : yypt+1]
-// line internal/php5/php5.y:3460
+// line internal/php5/php5.y:3473
{
var _new *ast.ExprNew
@@ -5734,7 +5747,7 @@ yydefault:
}
case 236:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:3487
+// line internal/php5/php5.y:3500
{
yyVAL.node = &ast.ExprClone{ast.Node{}, yyDollar[2].node}
@@ -5748,7 +5761,7 @@ yydefault:
}
case 237:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3499
+// line internal/php5/php5.y:3512
{
yyVAL.node = &ast.ExprAssignPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -5762,7 +5775,7 @@ yydefault:
}
case 238:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3511
+// line internal/php5/php5.y:3524
{
yyVAL.node = &ast.ExprAssignMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -5777,7 +5790,7 @@ yydefault:
}
case 239:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3524
+// line internal/php5/php5.y:3537
{
yyVAL.node = &ast.ExprAssignMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -5792,7 +5805,7 @@ yydefault:
}
case 240:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3537
+// line internal/php5/php5.y:3550
{
yyVAL.node = &ast.ExprAssignPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -5807,7 +5820,7 @@ yydefault:
}
case 241:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3550
+// line internal/php5/php5.y:3563
{
yyVAL.node = &ast.ExprAssignDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -5822,7 +5835,7 @@ yydefault:
}
case 242:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3563
+// line internal/php5/php5.y:3576
{
yyVAL.node = &ast.ExprAssignConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -5837,7 +5850,7 @@ yydefault:
}
case 243:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3576
+// line internal/php5/php5.y:3589
{
yyVAL.node = &ast.ExprAssignMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -5852,7 +5865,7 @@ yydefault:
}
case 244:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3589
+// line internal/php5/php5.y:3602
{
yyVAL.node = &ast.ExprAssignBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -5867,7 +5880,7 @@ yydefault:
}
case 245:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3602
+// line internal/php5/php5.y:3615
{
yyVAL.node = &ast.ExprAssignBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -5882,7 +5895,7 @@ yydefault:
}
case 246:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3615
+// line internal/php5/php5.y:3628
{
yyVAL.node = &ast.ExprAssignBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -5897,7 +5910,7 @@ yydefault:
}
case 247:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3628
+// line internal/php5/php5.y:3641
{
yyVAL.node = &ast.ExprAssignShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -5912,7 +5925,7 @@ yydefault:
}
case 248:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3641
+// line internal/php5/php5.y:3654
{
yyVAL.node = &ast.ExprAssignShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -5927,7 +5940,7 @@ yydefault:
}
case 249:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:3654
+// line internal/php5/php5.y:3667
{
yyVAL.node = &ast.ExprPostInc{ast.Node{}, yyDollar[1].node}
@@ -5942,7 +5955,7 @@ yydefault:
}
case 250:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:3667
+// line internal/php5/php5.y:3680
{
yyVAL.node = &ast.ExprPreInc{ast.Node{}, yyDollar[2].node}
@@ -5956,7 +5969,7 @@ yydefault:
}
case 251:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:3679
+// line internal/php5/php5.y:3692
{
yyVAL.node = &ast.ExprPostDec{ast.Node{}, yyDollar[1].node}
@@ -5971,7 +5984,7 @@ yydefault:
}
case 252:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:3692
+// line internal/php5/php5.y:3705
{
yyVAL.node = &ast.ExprPreDec{ast.Node{}, yyDollar[2].node}
@@ -5985,7 +5998,7 @@ yydefault:
}
case 253:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3704
+// line internal/php5/php5.y:3717
{
yyVAL.node = &ast.ExprBinaryBooleanOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6000,7 +6013,7 @@ yydefault:
}
case 254:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3717
+// line internal/php5/php5.y:3730
{
yyVAL.node = &ast.ExprBinaryBooleanAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6015,7 +6028,7 @@ yydefault:
}
case 255:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3730
+// line internal/php5/php5.y:3743
{
yyVAL.node = &ast.ExprBinaryLogicalOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6030,7 +6043,7 @@ yydefault:
}
case 256:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3743
+// line internal/php5/php5.y:3756
{
yyVAL.node = &ast.ExprBinaryLogicalAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6045,7 +6058,7 @@ yydefault:
}
case 257:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3756
+// line internal/php5/php5.y:3769
{
yyVAL.node = &ast.ExprBinaryLogicalXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6060,7 +6073,7 @@ yydefault:
}
case 258:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3769
+// line internal/php5/php5.y:3782
{
yyVAL.node = &ast.ExprBinaryBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6075,7 +6088,7 @@ yydefault:
}
case 259:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3782
+// line internal/php5/php5.y:3795
{
yyVAL.node = &ast.ExprBinaryBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6090,7 +6103,7 @@ yydefault:
}
case 260:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3795
+// line internal/php5/php5.y:3808
{
yyVAL.node = &ast.ExprBinaryBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6105,7 +6118,7 @@ yydefault:
}
case 261:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3808
+// line internal/php5/php5.y:3821
{
yyVAL.node = &ast.ExprBinaryConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6120,7 +6133,7 @@ yydefault:
}
case 262:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3821
+// line internal/php5/php5.y:3834
{
yyVAL.node = &ast.ExprBinaryPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6135,7 +6148,7 @@ yydefault:
}
case 263:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3834
+// line internal/php5/php5.y:3847
{
yyVAL.node = &ast.ExprBinaryMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6150,7 +6163,7 @@ yydefault:
}
case 264:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3847
+// line internal/php5/php5.y:3860
{
yyVAL.node = &ast.ExprBinaryMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6165,7 +6178,7 @@ yydefault:
}
case 265:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3860
+// line internal/php5/php5.y:3873
{
yyVAL.node = &ast.ExprBinaryPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6180,7 +6193,7 @@ yydefault:
}
case 266:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3873
+// line internal/php5/php5.y:3886
{
yyVAL.node = &ast.ExprBinaryDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6195,7 +6208,7 @@ yydefault:
}
case 267:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3886
+// line internal/php5/php5.y:3899
{
yyVAL.node = &ast.ExprBinaryMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6210,7 +6223,7 @@ yydefault:
}
case 268:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3899
+// line internal/php5/php5.y:3912
{
yyVAL.node = &ast.ExprBinaryShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6225,7 +6238,7 @@ yydefault:
}
case 269:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3912
+// line internal/php5/php5.y:3925
{
yyVAL.node = &ast.ExprBinaryShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6240,7 +6253,7 @@ yydefault:
}
case 270:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:3925
+// line internal/php5/php5.y:3938
{
yyVAL.node = &ast.ExprUnaryPlus{ast.Node{}, yyDollar[2].node}
@@ -6254,7 +6267,7 @@ yydefault:
}
case 271:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:3937
+// line internal/php5/php5.y:3950
{
yyVAL.node = &ast.ExprUnaryMinus{ast.Node{}, yyDollar[2].node}
@@ -6268,7 +6281,7 @@ yydefault:
}
case 272:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:3949
+// line internal/php5/php5.y:3962
{
yyVAL.node = &ast.ExprBooleanNot{ast.Node{}, yyDollar[2].node}
@@ -6282,7 +6295,7 @@ yydefault:
}
case 273:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:3961
+// line internal/php5/php5.y:3974
{
yyVAL.node = &ast.ExprBitwiseNot{ast.Node{}, yyDollar[2].node}
@@ -6296,7 +6309,7 @@ yydefault:
}
case 274:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3973
+// line internal/php5/php5.y:3986
{
yyVAL.node = &ast.ExprBinaryIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6311,7 +6324,7 @@ yydefault:
}
case 275:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3986
+// line internal/php5/php5.y:3999
{
yyVAL.node = &ast.ExprBinaryNotIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6326,7 +6339,7 @@ yydefault:
}
case 276:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:3999
+// line internal/php5/php5.y:4012
{
yyVAL.node = &ast.ExprBinaryEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6341,7 +6354,7 @@ yydefault:
}
case 277:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:4012
+// line internal/php5/php5.y:4025
{
yyVAL.node = &ast.ExprBinaryNotEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6357,7 +6370,7 @@ yydefault:
}
case 278:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:4026
+// line internal/php5/php5.y:4039
{
yyVAL.node = &ast.ExprBinarySmaller{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6372,7 +6385,7 @@ yydefault:
}
case 279:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:4039
+// line internal/php5/php5.y:4052
{
yyVAL.node = &ast.ExprBinarySmallerOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6387,7 +6400,7 @@ yydefault:
}
case 280:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:4052
+// line internal/php5/php5.y:4065
{
yyVAL.node = &ast.ExprBinaryGreater{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6402,7 +6415,7 @@ yydefault:
}
case 281:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:4065
+// line internal/php5/php5.y:4078
{
yyVAL.node = &ast.ExprBinaryGreaterOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6417,7 +6430,7 @@ yydefault:
}
case 282:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:4078
+// line internal/php5/php5.y:4091
{
yyVAL.node = &ast.ExprInstanceOf{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6432,7 +6445,7 @@ yydefault:
}
case 283:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:4091
+// line internal/php5/php5.y:4104
{
yyVAL.node = yyDollar[1].node
@@ -6445,7 +6458,7 @@ yydefault:
}
case 284:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:4100
+// line internal/php5/php5.y:4113
{
yyVAL.node = yyDollar[1].node
@@ -6453,7 +6466,7 @@ yydefault:
}
case 285:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:4106
+// line internal/php5/php5.y:4119
{
yyVAL.node = yyDollar[2].node
@@ -6487,7 +6500,7 @@ yydefault:
}
case 286:
yyDollar = yyS[yypt-5 : yypt+1]
-// line internal/php5/php5.y:4138
+// line internal/php5/php5.y:4151
{
yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[5].node}
@@ -6503,7 +6516,7 @@ yydefault:
}
case 287:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:4152
+// line internal/php5/php5.y:4165
{
yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, nil, yyDollar[4].node}
@@ -6519,7 +6532,7 @@ yydefault:
}
case 288:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:4166
+// line internal/php5/php5.y:4179
{
yyVAL.node = yyDollar[1].node
@@ -6527,7 +6540,7 @@ yydefault:
}
case 289:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:4172
+// line internal/php5/php5.y:4185
{
yyVAL.node = &ast.ExprCastInt{ast.Node{}, yyDollar[2].node}
@@ -6542,7 +6555,7 @@ yydefault:
}
case 290:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:4185
+// line internal/php5/php5.y:4198
{
yyVAL.node = &ast.ExprCastDouble{ast.Node{}, yyDollar[2].node}
@@ -6557,7 +6570,7 @@ yydefault:
}
case 291:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:4198
+// line internal/php5/php5.y:4211
{
yyVAL.node = &ast.ExprCastString{ast.Node{}, yyDollar[2].node}
@@ -6572,7 +6585,7 @@ yydefault:
}
case 292:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:4211
+// line internal/php5/php5.y:4224
{
yyVAL.node = &ast.ExprCastArray{ast.Node{}, yyDollar[2].node}
@@ -6587,7 +6600,7 @@ yydefault:
}
case 293:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:4224
+// line internal/php5/php5.y:4237
{
yyVAL.node = &ast.ExprCastObject{ast.Node{}, yyDollar[2].node}
@@ -6602,7 +6615,7 @@ yydefault:
}
case 294:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:4237
+// line internal/php5/php5.y:4250
{
yyVAL.node = &ast.ExprCastBool{ast.Node{}, yyDollar[2].node}
@@ -6617,7 +6630,7 @@ yydefault:
}
case 295:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:4250
+// line internal/php5/php5.y:4263
{
yyVAL.node = &ast.ExprCastUnset{ast.Node{}, yyDollar[2].node}
@@ -6632,7 +6645,7 @@ yydefault:
}
case 296:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:4263
+// line internal/php5/php5.y:4276
{
e := yyDollar[2].node.(*ast.ExprExit)
yyVAL.node = yyDollar[2].node
@@ -6655,7 +6668,7 @@ yydefault:
}
case 297:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:4284
+// line internal/php5/php5.y:4297
{
yyVAL.node = &ast.ExprErrorSuppress{ast.Node{}, yyDollar[2].node}
@@ -6669,7 +6682,7 @@ yydefault:
}
case 298:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:4296
+// line internal/php5/php5.y:4309
{
yyVAL.node = yyDollar[1].node
@@ -6677,7 +6690,7 @@ yydefault:
}
case 299:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:4302
+// line internal/php5/php5.y:4315
{
yyVAL.node = yyDollar[1].node
@@ -6685,7 +6698,7 @@ yydefault:
}
case 300:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:4308
+// line internal/php5/php5.y:4321
{
yyVAL.node = yyDollar[1].node
@@ -6693,7 +6706,7 @@ yydefault:
}
case 301:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:4314
+// line internal/php5/php5.y:4327
{
yyVAL.node = &ast.ExprShellExec{ast.Node{}, yyDollar[2].list}
@@ -6707,7 +6720,7 @@ yydefault:
}
case 302:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:4326
+// line internal/php5/php5.y:4339
{
yyVAL.node = &ast.ExprPrint{ast.Node{}, yyDollar[2].node}
@@ -6721,7 +6734,7 @@ yydefault:
}
case 303:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:4338
+// line internal/php5/php5.y:4351
{
yyVAL.node = &ast.ExprYield{ast.Node{}, nil, nil}
@@ -6735,7 +6748,7 @@ yydefault:
}
case 304:
yyDollar = yyS[yypt-9 : yypt+1]
-// line internal/php5/php5.y:4350
+// line internal/php5/php5.y:4363
{
yyVAL.node = &ast.ExprClosure{ast.Node{}, yyDollar[2].token != nil, false, yyDollar[4].list, yyDollar[6].ClosureUse, nil, yyDollar[8].list}
@@ -6764,7 +6777,7 @@ yydefault:
}
case 305:
yyDollar = yyS[yypt-10 : yypt+1]
-// line internal/php5/php5.y:4376
+// line internal/php5/php5.y:4389
{
yyVAL.node = &ast.ExprClosure{ast.Node{}, yyDollar[3].token != nil, true, yyDollar[5].list, yyDollar[7].ClosureUse, nil, yyDollar[9].list}
@@ -6794,7 +6807,7 @@ yydefault:
}
case 306:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:4406
+// line internal/php5/php5.y:4419
{
yyVAL.node = &ast.ExprYield{ast.Node{}, nil, yyDollar[2].node}
@@ -6808,7 +6821,7 @@ yydefault:
}
case 307:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:4418
+// line internal/php5/php5.y:4431
{
yyVAL.node = &ast.ExprYield{ast.Node{}, nil, yyDollar[2].node}
@@ -6822,21 +6835,6 @@ yydefault:
}
case 308:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:4430
- {
- yyVAL.node = &ast.ExprYield{ast.Node{}, yyDollar[2].node, yyDollar[4].node}
-
- // save position
- yyVAL.node.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[4].node)
-
- // save comments
- yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.Tokens)
- yylex.(*Parser).setFreeFloating(yyVAL.node, token.Expr, yyDollar[3].token.Tokens)
-
- yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
- }
- case 309:
- yyDollar = yyS[yypt-4 : yypt+1]
// line internal/php5/php5.y:4443
{
yyVAL.node = &ast.ExprYield{ast.Node{}, yyDollar[2].node, yyDollar[4].node}
@@ -6850,9 +6848,24 @@ yydefault:
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
+ case 309:
+ yyDollar = yyS[yypt-4 : yypt+1]
+// line internal/php5/php5.y:4456
+ {
+ yyVAL.node = &ast.ExprYield{ast.Node{}, yyDollar[2].node, yyDollar[4].node}
+
+ // save position
+ yyVAL.node.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[4].node)
+
+ // save comments
+ yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.Tokens)
+ yylex.(*Parser).setFreeFloating(yyVAL.node, token.Expr, yyDollar[3].token.Tokens)
+
+ yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
+ }
case 310:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:4459
+// line internal/php5/php5.y:4472
{
yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6868,7 +6881,7 @@ yydefault:
}
case 311:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:4473
+// line internal/php5/php5.y:4486
{
yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6884,7 +6897,7 @@ yydefault:
}
case 312:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:4487
+// line internal/php5/php5.y:4500
{
str := &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value}
yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, str, yyDollar[3].node}
@@ -6902,7 +6915,7 @@ yydefault:
}
case 313:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:4503
+// line internal/php5/php5.y:4516
{
yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6918,7 +6931,7 @@ yydefault:
}
case 314:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:4520
+// line internal/php5/php5.y:4533
{
yyVAL.node = &ast.ExprArray{ast.Node{}, yyDollar[3].list}
@@ -6934,7 +6947,7 @@ yydefault:
}
case 315:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:4534
+// line internal/php5/php5.y:4547
{
yyVAL.node = &ast.ExprShortArray{ast.Node{}, yyDollar[2].list}
@@ -6949,13 +6962,13 @@ yydefault:
}
case 316:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:4550
+// line internal/php5/php5.y:4563
{
yyVAL.token = yyDollar[1].token
}
case 317:
yyDollar = yyS[yypt-0 : yypt+1]
-// line internal/php5/php5.y:4557
+// line internal/php5/php5.y:4570
{
yyVAL.ClosureUse = nil
@@ -6963,7 +6976,7 @@ yydefault:
}
case 318:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:4563
+// line internal/php5/php5.y:4576
{
yyVAL.ClosureUse = &ast.ExprClosureUse{ast.Node{}, yyDollar[3].list}
@@ -6979,7 +6992,7 @@ yydefault:
}
case 319:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:4580
+// line internal/php5/php5.y:4593
{
identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[3].token.Value, isDollar)}
variable := &ast.ExprVariable{ast.Node{}, identifier}
@@ -6992,12 +7005,13 @@ yydefault:
// save comments
yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), token.End, yyDollar[2].token.Tokens)
yylex.(*Parser).setFreeFloating(variable, token.Start, yyDollar[3].token.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
case 320:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:4596
+// line internal/php5/php5.y:4610
{
identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[4].token.Value, isDollar)}
variable := &ast.ExprVariable{ast.Node{}, identifier}
@@ -7013,12 +7027,13 @@ yydefault:
yylex.(*Parser).setFreeFloating(lastNode(yyDollar[1].list), token.End, yyDollar[2].token.Tokens)
yylex.(*Parser).setFreeFloating(reference, token.Start, yyDollar[3].token.Tokens)
yylex.(*Parser).setFreeFloating(variable, token.Start, yyDollar[4].token.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
case 321:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:4615
+// line internal/php5/php5.y:4630
{
identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[1].token.Value, isDollar)}
variable := &ast.ExprVariable{ast.Node{}, identifier}
@@ -7030,12 +7045,13 @@ yydefault:
// save comments
yylex.(*Parser).setFreeFloating(variable, token.Start, yyDollar[1].token.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
case 322:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:4630
+// line internal/php5/php5.y:4646
{
identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[2].token.Value, isDollar)}
variable := &ast.ExprVariable{ast.Node{}, identifier}
@@ -7050,12 +7066,13 @@ yydefault:
// save comments
yylex.(*Parser).setFreeFloating(reference, token.Start, yyDollar[1].token.Tokens)
yylex.(*Parser).setFreeFloating(variable, token.Start, yyDollar[2].token.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
case 323:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:4651
+// line internal/php5/php5.y:4668
{
name := &ast.NameName{ast.Node{}, yyDollar[1].list}
yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, name, yyDollar[2].node.(*ast.ArgumentList)}
@@ -7071,7 +7088,7 @@ yydefault:
}
case 324:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:4665
+// line internal/php5/php5.y:4682
{
funcName := &ast.NameRelative{ast.Node{}, yyDollar[3].list}
yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, funcName, yyDollar[4].node.(*ast.ArgumentList)}
@@ -7088,7 +7105,7 @@ yydefault:
}
case 325:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:4680
+// line internal/php5/php5.y:4697
{
funcName := &ast.NameFullyQualified{ast.Node{}, yyDollar[2].list}
yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, funcName, yyDollar[3].node.(*ast.ArgumentList)}
@@ -7104,7 +7121,7 @@ yydefault:
}
case 326:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:4694
+// line internal/php5/php5.y:4711
{
yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)}
@@ -7119,7 +7136,7 @@ yydefault:
}
case 327:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:4707
+// line internal/php5/php5.y:4724
{
yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)}
@@ -7134,7 +7151,7 @@ yydefault:
}
case 328:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:4720
+// line internal/php5/php5.y:4737
{
yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)}
@@ -7149,7 +7166,7 @@ yydefault:
}
case 329:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:4733
+// line internal/php5/php5.y:4750
{
yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)}
@@ -7164,7 +7181,7 @@ yydefault:
}
case 330:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:4746
+// line internal/php5/php5.y:4763
{
yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, yyDollar[1].node, yyDollar[2].node.(*ast.ArgumentList)}
@@ -7178,7 +7195,7 @@ yydefault:
}
case 331:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:4761
+// line internal/php5/php5.y:4778
{
yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value}
@@ -7192,7 +7209,7 @@ yydefault:
}
case 332:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:4773
+// line internal/php5/php5.y:4790
{
yyVAL.node = &ast.NameName{ast.Node{}, yyDollar[1].list}
@@ -7206,7 +7223,7 @@ yydefault:
}
case 333:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:4785
+// line internal/php5/php5.y:4802
{
yyVAL.node = &ast.NameRelative{ast.Node{}, yyDollar[3].list}
@@ -7221,7 +7238,7 @@ yydefault:
}
case 334:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:4798
+// line internal/php5/php5.y:4815
{
yyVAL.node = &ast.NameFullyQualified{ast.Node{}, yyDollar[2].list}
@@ -7235,7 +7252,7 @@ yydefault:
}
case 335:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:4813
+// line internal/php5/php5.y:4830
{
yyVAL.node = &ast.NameName{ast.Node{}, yyDollar[1].list}
@@ -7249,7 +7266,7 @@ yydefault:
}
case 336:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:4825
+// line internal/php5/php5.y:4842
{
yyVAL.node = &ast.NameRelative{ast.Node{}, yyDollar[3].list}
@@ -7264,7 +7281,7 @@ yydefault:
}
case 337:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:4838
+// line internal/php5/php5.y:4855
{
yyVAL.node = &ast.NameFullyQualified{ast.Node{}, yyDollar[2].list}
@@ -7278,7 +7295,7 @@ yydefault:
}
case 338:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:4853
+// line internal/php5/php5.y:4870
{
yyVAL.node = yyDollar[1].node
@@ -7286,7 +7303,7 @@ yydefault:
}
case 339:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:4859
+// line internal/php5/php5.y:4876
{
yyVAL.node = yyDollar[1].node
@@ -7294,7 +7311,7 @@ yydefault:
}
case 340:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:4868
+// line internal/php5/php5.y:4885
{
yyVAL.node = yyDollar[1].node
@@ -7337,7 +7354,7 @@ yydefault:
}
case 341:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:4909
+// line internal/php5/php5.y:4926
{
yyVAL.node = yyDollar[1].node
@@ -7345,7 +7362,7 @@ yydefault:
}
case 342:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:4919
+// line internal/php5/php5.y:4936
{
yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...)
@@ -7353,7 +7370,7 @@ yydefault:
}
case 343:
yyDollar = yyS[yypt-0 : yypt+1]
-// line internal/php5/php5.y:4925
+// line internal/php5/php5.y:4942
{
yyVAL.list = []ast.Vertex{}
@@ -7361,7 +7378,7 @@ yydefault:
}
case 344:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:4935
+// line internal/php5/php5.y:4952
{
yyVAL.list = yyDollar[2].list
@@ -7372,7 +7389,7 @@ yydefault:
}
case 345:
yyDollar = yyS[yypt-0 : yypt+1]
-// line internal/php5/php5.y:4947
+// line internal/php5/php5.y:4964
{
yyVAL.node = &ast.ExprExit{ast.Node{}, false, nil}
@@ -7380,7 +7397,7 @@ yydefault:
}
case 346:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:4953
+// line internal/php5/php5.y:4970
{
yyVAL.node = &ast.ExprExit{ast.Node{}, false, nil}
@@ -7395,7 +7412,7 @@ yydefault:
}
case 347:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:4966
+// line internal/php5/php5.y:4983
{
yyVAL.node = &ast.ExprExit{ast.Node{}, false, yyDollar[1].node}
@@ -7416,7 +7433,7 @@ yydefault:
}
case 348:
yyDollar = yyS[yypt-0 : yypt+1]
-// line internal/php5/php5.y:4986
+// line internal/php5/php5.y:5003
{
yyVAL.list = []ast.Vertex{}
@@ -7424,7 +7441,7 @@ yydefault:
}
case 349:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:4992
+// line internal/php5/php5.y:5009
{
part := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[1].token.Value}
yyVAL.list = []ast.Vertex{part}
@@ -7436,7 +7453,7 @@ yydefault:
}
case 350:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:5002
+// line internal/php5/php5.y:5019
{
yyVAL.list = yyDollar[1].list
@@ -7444,7 +7461,7 @@ yydefault:
}
case 351:
yyDollar = yyS[yypt-0 : yypt+1]
-// line internal/php5/php5.y:5011
+// line internal/php5/php5.y:5028
{
yyVAL.node = nil
@@ -7452,7 +7469,7 @@ yydefault:
}
case 352:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:5017
+// line internal/php5/php5.y:5034
{
yyVAL.node = yyDollar[1].node
@@ -7460,7 +7477,7 @@ yydefault:
}
case 353:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:5026
+// line internal/php5/php5.y:5043
{
yyVAL.node = &ast.ScalarLnumber{ast.Node{}, yyDollar[1].token.Value}
@@ -7474,7 +7491,7 @@ yydefault:
}
case 354:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:5038
+// line internal/php5/php5.y:5055
{
yyVAL.node = &ast.ScalarDnumber{ast.Node{}, yyDollar[1].token.Value}
@@ -7488,7 +7505,7 @@ yydefault:
}
case 355:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:5050
+// line internal/php5/php5.y:5067
{
yyVAL.node = &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value}
@@ -7502,7 +7519,7 @@ yydefault:
}
case 356:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:5062
+// line internal/php5/php5.y:5079
{
yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value}
@@ -7516,7 +7533,7 @@ yydefault:
}
case 357:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:5074
+// line internal/php5/php5.y:5091
{
yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value}
@@ -7530,7 +7547,7 @@ yydefault:
}
case 358:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:5086
+// line internal/php5/php5.y:5103
{
yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value}
@@ -7544,7 +7561,7 @@ yydefault:
}
case 359:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:5098
+// line internal/php5/php5.y:5115
{
yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value}
@@ -7558,7 +7575,7 @@ yydefault:
}
case 360:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:5110
+// line internal/php5/php5.y:5127
{
yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value}
@@ -7572,7 +7589,7 @@ yydefault:
}
case 361:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:5122
+// line internal/php5/php5.y:5139
{
yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value}
@@ -7586,7 +7603,7 @@ yydefault:
}
case 362:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:5134
+// line internal/php5/php5.y:5151
{
yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value}
@@ -7600,7 +7617,7 @@ yydefault:
}
case 363:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5146
+// line internal/php5/php5.y:5163
{
encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[2].token.Value}
yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, []ast.Vertex{encapsed}}
@@ -7616,7 +7633,7 @@ yydefault:
}
case 364:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:5160
+// line internal/php5/php5.y:5177
{
yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, nil}
@@ -7630,7 +7647,7 @@ yydefault:
}
case 365:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5175
+// line internal/php5/php5.y:5192
{
target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value}
yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target}
@@ -7648,7 +7665,7 @@ yydefault:
}
case 366:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:5194
+// line internal/php5/php5.y:5211
{
yyVAL.node = yyDollar[1].node
@@ -7656,7 +7673,7 @@ yydefault:
}
case 367:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:5203
+// line internal/php5/php5.y:5220
{
yyVAL.node = yyDollar[1].node
@@ -7664,7 +7681,7 @@ yydefault:
}
case 368:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:5209
+// line internal/php5/php5.y:5226
{
yyVAL.node = yyDollar[1].node
@@ -7672,7 +7689,7 @@ yydefault:
}
case 369:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:5215
+// line internal/php5/php5.y:5232
{
name := &ast.NameName{ast.Node{}, yyDollar[1].list}
yyVAL.node = &ast.ExprConstFetch{ast.Node{}, name}
@@ -7688,7 +7705,7 @@ yydefault:
}
case 370:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5229
+// line internal/php5/php5.y:5246
{
name := &ast.NameRelative{ast.Node{}, yyDollar[3].list}
yyVAL.node = &ast.ExprConstFetch{ast.Node{}, name}
@@ -7705,7 +7722,7 @@ yydefault:
}
case 371:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:5244
+// line internal/php5/php5.y:5261
{
name := &ast.NameFullyQualified{ast.Node{}, yyDollar[2].list}
yyVAL.node = &ast.ExprConstFetch{ast.Node{}, name}
@@ -7721,7 +7738,7 @@ yydefault:
}
case 372:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:5258
+// line internal/php5/php5.y:5275
{
yyVAL.node = &ast.ExprArray{ast.Node{}, yyDollar[3].list}
@@ -7737,7 +7754,7 @@ yydefault:
}
case 373:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5272
+// line internal/php5/php5.y:5289
{
yyVAL.node = &ast.ExprShortArray{ast.Node{}, yyDollar[2].list}
@@ -7752,7 +7769,7 @@ yydefault:
}
case 374:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:5285
+// line internal/php5/php5.y:5302
{
yyVAL.node = yyDollar[1].node
@@ -7760,7 +7777,7 @@ yydefault:
}
case 375:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:5291
+// line internal/php5/php5.y:5308
{
yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value}
@@ -7774,7 +7791,7 @@ yydefault:
}
case 376:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:5303
+// line internal/php5/php5.y:5320
{
yyVAL.node = yyDollar[1].node
@@ -7782,7 +7799,7 @@ yydefault:
}
case 377:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:5312
+// line internal/php5/php5.y:5329
{
yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -7798,7 +7815,7 @@ yydefault:
}
case 378:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5326
+// line internal/php5/php5.y:5343
{
yyVAL.node = &ast.ExprBinaryPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -7813,7 +7830,7 @@ yydefault:
}
case 379:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5339
+// line internal/php5/php5.y:5356
{
yyVAL.node = &ast.ExprBinaryMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -7828,7 +7845,7 @@ yydefault:
}
case 380:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5352
+// line internal/php5/php5.y:5369
{
yyVAL.node = &ast.ExprBinaryMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -7843,7 +7860,7 @@ yydefault:
}
case 381:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5365
+// line internal/php5/php5.y:5382
{
yyVAL.node = &ast.ExprBinaryPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -7858,7 +7875,7 @@ yydefault:
}
case 382:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5378
+// line internal/php5/php5.y:5395
{
yyVAL.node = &ast.ExprBinaryDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -7873,7 +7890,7 @@ yydefault:
}
case 383:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5391
+// line internal/php5/php5.y:5408
{
yyVAL.node = &ast.ExprBinaryMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -7888,7 +7905,7 @@ yydefault:
}
case 384:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:5404
+// line internal/php5/php5.y:5421
{
yyVAL.node = &ast.ExprBooleanNot{ast.Node{}, yyDollar[2].node}
@@ -7902,7 +7919,7 @@ yydefault:
}
case 385:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:5416
+// line internal/php5/php5.y:5433
{
yyVAL.node = &ast.ExprBitwiseNot{ast.Node{}, yyDollar[2].node}
@@ -7916,7 +7933,7 @@ yydefault:
}
case 386:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5428
+// line internal/php5/php5.y:5445
{
yyVAL.node = &ast.ExprBinaryBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -7931,7 +7948,7 @@ yydefault:
}
case 387:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5441
+// line internal/php5/php5.y:5458
{
yyVAL.node = &ast.ExprBinaryBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -7946,7 +7963,7 @@ yydefault:
}
case 388:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5454
+// line internal/php5/php5.y:5471
{
yyVAL.node = &ast.ExprBinaryBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -7961,7 +7978,7 @@ yydefault:
}
case 389:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5467
+// line internal/php5/php5.y:5484
{
yyVAL.node = &ast.ExprBinaryShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -7976,7 +7993,7 @@ yydefault:
}
case 390:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5480
+// line internal/php5/php5.y:5497
{
yyVAL.node = &ast.ExprBinaryShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -7991,7 +8008,7 @@ yydefault:
}
case 391:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5493
+// line internal/php5/php5.y:5510
{
yyVAL.node = &ast.ExprBinaryConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -8006,7 +8023,7 @@ yydefault:
}
case 392:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5506
+// line internal/php5/php5.y:5523
{
yyVAL.node = &ast.ExprBinaryLogicalXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -8021,7 +8038,7 @@ yydefault:
}
case 393:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5519
+// line internal/php5/php5.y:5536
{
yyVAL.node = &ast.ExprBinaryLogicalAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -8036,7 +8053,7 @@ yydefault:
}
case 394:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5532
+// line internal/php5/php5.y:5549
{
yyVAL.node = &ast.ExprBinaryLogicalOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -8051,7 +8068,7 @@ yydefault:
}
case 395:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5545
+// line internal/php5/php5.y:5562
{
yyVAL.node = &ast.ExprBinaryBooleanAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -8066,7 +8083,7 @@ yydefault:
}
case 396:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5558
+// line internal/php5/php5.y:5575
{
yyVAL.node = &ast.ExprBinaryBooleanOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -8081,7 +8098,7 @@ yydefault:
}
case 397:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5571
+// line internal/php5/php5.y:5588
{
yyVAL.node = &ast.ExprBinaryIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -8096,7 +8113,7 @@ yydefault:
}
case 398:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5584
+// line internal/php5/php5.y:5601
{
yyVAL.node = &ast.ExprBinaryNotIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -8111,7 +8128,7 @@ yydefault:
}
case 399:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5597
+// line internal/php5/php5.y:5614
{
yyVAL.node = &ast.ExprBinaryEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -8126,7 +8143,7 @@ yydefault:
}
case 400:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5610
+// line internal/php5/php5.y:5627
{
yyVAL.node = &ast.ExprBinaryNotEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -8142,7 +8159,7 @@ yydefault:
}
case 401:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5624
+// line internal/php5/php5.y:5641
{
yyVAL.node = &ast.ExprBinarySmaller{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -8157,7 +8174,7 @@ yydefault:
}
case 402:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5637
+// line internal/php5/php5.y:5654
{
yyVAL.node = &ast.ExprBinaryGreater{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -8172,7 +8189,7 @@ yydefault:
}
case 403:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5650
+// line internal/php5/php5.y:5667
{
yyVAL.node = &ast.ExprBinarySmallerOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -8187,7 +8204,7 @@ yydefault:
}
case 404:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5663
+// line internal/php5/php5.y:5680
{
yyVAL.node = &ast.ExprBinaryGreaterOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -8202,7 +8219,7 @@ yydefault:
}
case 405:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:5676
+// line internal/php5/php5.y:5693
{
yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, nil, yyDollar[4].node}
@@ -8218,7 +8235,7 @@ yydefault:
}
case 406:
yyDollar = yyS[yypt-5 : yypt+1]
-// line internal/php5/php5.y:5690
+// line internal/php5/php5.y:5707
{
yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[5].node}
@@ -8234,7 +8251,7 @@ yydefault:
}
case 407:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:5704
+// line internal/php5/php5.y:5721
{
yyVAL.node = &ast.ExprUnaryPlus{ast.Node{}, yyDollar[2].node}
@@ -8248,7 +8265,7 @@ yydefault:
}
case 408:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:5716
+// line internal/php5/php5.y:5733
{
yyVAL.node = &ast.ExprUnaryMinus{ast.Node{}, yyDollar[2].node}
@@ -8262,7 +8279,7 @@ yydefault:
}
case 409:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5728
+// line internal/php5/php5.y:5745
{
yyVAL.node = yyDollar[2].node
@@ -8274,7 +8291,7 @@ yydefault:
}
case 410:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:5741
+// line internal/php5/php5.y:5758
{
yyVAL.node = yyDollar[1].node
@@ -8282,7 +8299,7 @@ yydefault:
}
case 411:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:5747
+// line internal/php5/php5.y:5764
{
name := &ast.NameName{ast.Node{}, yyDollar[1].list}
yyVAL.node = &ast.ExprConstFetch{ast.Node{}, name}
@@ -8298,7 +8315,7 @@ yydefault:
}
case 412:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5761
+// line internal/php5/php5.y:5778
{
name := &ast.NameRelative{ast.Node{}, yyDollar[3].list}
yyVAL.node = &ast.ExprConstFetch{ast.Node{}, name}
@@ -8315,7 +8332,7 @@ yydefault:
}
case 413:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:5776
+// line internal/php5/php5.y:5793
{
name := &ast.NameFullyQualified{ast.Node{}, yyDollar[2].list}
yyVAL.node = &ast.ExprConstFetch{ast.Node{}, name}
@@ -8331,7 +8348,7 @@ yydefault:
}
case 414:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:5793
+// line internal/php5/php5.y:5810
{
name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value}
yyVAL.node = &ast.ExprVariable{ast.Node{}, name}
@@ -8347,7 +8364,7 @@ yydefault:
}
case 415:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:5807
+// line internal/php5/php5.y:5824
{
yyVAL.node = yyDollar[1].node
@@ -8355,7 +8372,7 @@ yydefault:
}
case 416:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:5813
+// line internal/php5/php5.y:5830
{
yyVAL.node = yyDollar[1].node
@@ -8363,7 +8380,7 @@ yydefault:
}
case 417:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:5819
+// line internal/php5/php5.y:5836
{
yyVAL.node = yyDollar[1].node
@@ -8371,7 +8388,7 @@ yydefault:
}
case 418:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5825
+// line internal/php5/php5.y:5842
{
yyVAL.node = &ast.ScalarEncapsed{ast.Node{}, yyDollar[2].list}
@@ -8385,7 +8402,7 @@ yydefault:
}
case 419:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5837
+// line internal/php5/php5.y:5854
{
yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, yyDollar[2].list}
@@ -8399,7 +8416,7 @@ yydefault:
}
case 420:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:5849
+// line internal/php5/php5.y:5866
{
yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value}
@@ -8413,7 +8430,7 @@ yydefault:
}
case 421:
yyDollar = yyS[yypt-0 : yypt+1]
-// line internal/php5/php5.y:5864
+// line internal/php5/php5.y:5881
{
yyVAL.list = nil
@@ -8421,7 +8438,7 @@ yydefault:
}
case 422:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:5870
+// line internal/php5/php5.y:5887
{
yyVAL.list = yyDollar[1].list
@@ -8434,19 +8451,19 @@ yydefault:
}
case 423:
yyDollar = yyS[yypt-0 : yypt+1]
-// line internal/php5/php5.y:5884
+// line internal/php5/php5.y:5901
{
yyVAL.token = nil
}
case 424:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:5888
+// line internal/php5/php5.y:5905
{
yyVAL.token = yyDollar[1].token
}
case 425:
yyDollar = yyS[yypt-5 : yypt+1]
-// line internal/php5/php5.y:5895
+// line internal/php5/php5.y:5912
{
arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[3].node, yyDollar[5].node}
yyVAL.list = append(yyDollar[1].list, arrayItem)
@@ -8463,7 +8480,7 @@ yydefault:
}
case 426:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5910
+// line internal/php5/php5.y:5927
{
arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[3].node}
yyVAL.list = append(yyDollar[1].list, arrayItem)
@@ -8479,7 +8496,7 @@ yydefault:
}
case 427:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5924
+// line internal/php5/php5.y:5941
{
arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, yyDollar[3].node}
yyVAL.list = []ast.Vertex{arrayItem}
@@ -8495,7 +8512,7 @@ yydefault:
}
case 428:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:5938
+// line internal/php5/php5.y:5955
{
arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[1].node}
yyVAL.list = []ast.Vertex{arrayItem}
@@ -8510,7 +8527,7 @@ yydefault:
}
case 429:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:5954
+// line internal/php5/php5.y:5971
{
yyVAL.node = yyDollar[1].node
@@ -8518,7 +8535,7 @@ yydefault:
}
case 430:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:5960
+// line internal/php5/php5.y:5977
{
yyVAL.node = yyDollar[1].node
@@ -8526,7 +8543,7 @@ yydefault:
}
case 431:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5969
+// line internal/php5/php5.y:5986
{
yyVAL.node = yyDollar[2].node
@@ -8544,7 +8561,7 @@ yydefault:
}
case 432:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:5985
+// line internal/php5/php5.y:6002
{
yyVAL.node = yyDollar[2].node
@@ -8562,7 +8579,7 @@ yydefault:
}
case 433:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:6005
+// line internal/php5/php5.y:6022
{
yyVAL.node = yyDollar[1].node
@@ -8570,7 +8587,7 @@ yydefault:
}
case 434:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:6015
+// line internal/php5/php5.y:6032
{
yyVAL.node = yyDollar[1].node
@@ -8578,7 +8595,7 @@ yydefault:
}
case 435:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:6024
+// line internal/php5/php5.y:6041
{
yyVAL.node = yyDollar[1].node
@@ -8586,7 +8603,7 @@ yydefault:
}
case 436:
yyDollar = yyS[yypt-5 : yypt+1]
-// line internal/php5/php5.y:6033
+// line internal/php5/php5.y:6050
{
yyVAL.node = yyDollar[1].node
@@ -8646,7 +8663,7 @@ yydefault:
}
case 437:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:6091
+// line internal/php5/php5.y:6108
{
yyVAL.node = yyDollar[1].node
@@ -8654,7 +8671,7 @@ yydefault:
}
case 438:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:6100
+// line internal/php5/php5.y:6117
{
yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...)
@@ -8662,7 +8679,7 @@ yydefault:
}
case 439:
yyDollar = yyS[yypt-0 : yypt+1]
-// line internal/php5/php5.y:6106
+// line internal/php5/php5.y:6123
{
yyVAL.list = []ast.Vertex{}
@@ -8670,7 +8687,7 @@ yydefault:
}
case 440:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:6116
+// line internal/php5/php5.y:6133
{
if yyDollar[3].list != nil {
yyDollar[3].list[0].(*ast.ExprMethodCall).Method = yyDollar[2].list[len(yyDollar[2].list)-1].(*ast.ExprPropertyFetch).Property
@@ -8686,7 +8703,7 @@ yydefault:
}
case 441:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:6133
+// line internal/php5/php5.y:6150
{
fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node}
yyVAL.list = append(yyDollar[1].list, fetch)
@@ -8702,7 +8719,7 @@ yydefault:
}
case 442:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:6147
+// line internal/php5/php5.y:6164
{
fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node}
yyVAL.list = []ast.Vertex{yyDollar[1].node, fetch}
@@ -8718,7 +8735,7 @@ yydefault:
}
case 443:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:6164
+// line internal/php5/php5.y:6181
{
yyVAL.node = &ast.ExprMethodCall{ast.Node{}, nil, nil, yyDollar[1].node.(*ast.ArgumentList)}
@@ -8729,7 +8746,7 @@ yydefault:
}
case 444:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:6176
+// line internal/php5/php5.y:6193
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
@@ -8737,7 +8754,7 @@ yydefault:
}
case 445:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:6182
+// line internal/php5/php5.y:6199
{
yyVAL.list = yyDollar[1].list
@@ -8745,7 +8762,7 @@ yydefault:
}
case 446:
yyDollar = yyS[yypt-0 : yypt+1]
-// line internal/php5/php5.y:6188
+// line internal/php5/php5.y:6205
{
yyVAL.list = nil
@@ -8753,7 +8770,7 @@ yydefault:
}
case 447:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:6197
+// line internal/php5/php5.y:6214
{
yyVAL.node = yyDollar[1].node
@@ -8761,7 +8778,7 @@ yydefault:
}
case 448:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:6203
+// line internal/php5/php5.y:6220
{
yyDollar[1].simpleIndirectReference.last.VarName = yyDollar[2].node
@@ -8775,7 +8792,7 @@ yydefault:
}
case 449:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:6218
+// line internal/php5/php5.y:6235
{
yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -8790,7 +8807,7 @@ yydefault:
}
case 450:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:6231
+// line internal/php5/php5.y:6248
{
yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -8805,7 +8822,7 @@ yydefault:
}
case 451:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:6247
+// line internal/php5/php5.y:6264
{
yyVAL.node = yyDollar[1].node
@@ -8813,7 +8830,7 @@ yydefault:
}
case 452:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:6256
+// line internal/php5/php5.y:6273
{
yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -8829,7 +8846,7 @@ yydefault:
}
case 453:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:6270
+// line internal/php5/php5.y:6287
{
yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -8845,7 +8862,7 @@ yydefault:
}
case 454:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:6287
+// line internal/php5/php5.y:6304
{
yyVAL.node = yyDollar[1].node
@@ -8853,7 +8870,7 @@ yydefault:
}
case 455:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:6293
+// line internal/php5/php5.y:6310
{
yyVAL.node = yyDollar[1].node
@@ -8861,7 +8878,7 @@ yydefault:
}
case 456:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:6299
+// line internal/php5/php5.y:6316
{
yyVAL.node = yyDollar[1].node
@@ -8869,7 +8886,7 @@ yydefault:
}
case 457:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:6309
+// line internal/php5/php5.y:6326
{
yyVAL.node = yyDollar[1].node
@@ -8877,7 +8894,7 @@ yydefault:
}
case 458:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:6315
+// line internal/php5/php5.y:6332
{
yyDollar[1].simpleIndirectReference.last.VarName = yyDollar[2].node
@@ -8891,7 +8908,7 @@ yydefault:
}
case 459:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:6327
+// line internal/php5/php5.y:6344
{
yyVAL.node = yyDollar[1].node
@@ -8899,7 +8916,7 @@ yydefault:
}
case 460:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:6336
+// line internal/php5/php5.y:6353
{
yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -8915,7 +8932,7 @@ yydefault:
}
case 461:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:6350
+// line internal/php5/php5.y:6367
{
yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -8931,7 +8948,7 @@ yydefault:
}
case 462:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:6364
+// line internal/php5/php5.y:6381
{
yyVAL.node = yyDollar[1].node
@@ -8939,7 +8956,7 @@ yydefault:
}
case 463:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:6374
+// line internal/php5/php5.y:6391
{
name := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[1].token.Value, isDollar)}
yyVAL.node = &ast.ExprVariable{ast.Node{}, name}
@@ -8950,12 +8967,13 @@ yydefault:
// save comments
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.Tokens)
+ yylex.(*Parser).addDollarToken(yyVAL.node)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
case 464:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:6388
+// line internal/php5/php5.y:6406
{
yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[3].node}
@@ -8972,7 +8990,7 @@ yydefault:
}
case 465:
yyDollar = yyS[yypt-0 : yypt+1]
-// line internal/php5/php5.y:6406
+// line internal/php5/php5.y:6424
{
yyVAL.node = nil
@@ -8980,7 +8998,7 @@ yydefault:
}
case 466:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:6412
+// line internal/php5/php5.y:6430
{
yyVAL.node = yyDollar[1].node
@@ -8988,7 +9006,7 @@ yydefault:
}
case 467:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:6422
+// line internal/php5/php5.y:6440
{
yyVAL.list = yyDollar[1].list
@@ -8996,7 +9014,7 @@ yydefault:
}
case 468:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:6428
+// line internal/php5/php5.y:6446
{
fetch := &ast.ExprPropertyFetch{ast.Node{}, nil, yyDollar[1].node}
yyVAL.list = []ast.Vertex{fetch}
@@ -9008,7 +9026,7 @@ yydefault:
}
case 469:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:6441
+// line internal/php5/php5.y:6459
{
fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node}
yyVAL.list = append(yyDollar[1].list, fetch)
@@ -9024,7 +9042,7 @@ yydefault:
}
case 470:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:6455
+// line internal/php5/php5.y:6473
{
fetch := &ast.ExprArrayDimFetch{ast.Node{}, nil, yyDollar[3].node}
yyVAL.list = append(yyDollar[1].list, fetch)
@@ -9040,7 +9058,7 @@ yydefault:
}
case 471:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:6469
+// line internal/php5/php5.y:6487
{
fetch := &ast.ExprPropertyFetch{ast.Node{}, nil, yyDollar[1].node}
yyVAL.list = []ast.Vertex{fetch}
@@ -9052,7 +9070,7 @@ yydefault:
}
case 472:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:6482
+// line internal/php5/php5.y:6500
{
yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value}
@@ -9066,7 +9084,7 @@ yydefault:
}
case 473:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:6494
+// line internal/php5/php5.y:6512
{
yyVAL.node = yyDollar[2].node
@@ -9081,7 +9099,7 @@ yydefault:
}
case 474:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:6510
+// line internal/php5/php5.y:6528
{
n := &ast.ExprVariable{ast.Node{}, nil}
yyVAL.simpleIndirectReference = simpleIndirectReference{[]*ast.ExprVariable{n}, n}
@@ -9097,7 +9115,7 @@ yydefault:
}
case 475:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:6524
+// line internal/php5/php5.y:6542
{
n := &ast.ExprVariable{ast.Node{}, nil}
@@ -9117,7 +9135,7 @@ yydefault:
}
case 476:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:6545
+// line internal/php5/php5.y:6563
{
if len(yyDollar[1].list) == 0 {
yyDollar[1].list = []ast.Vertex{&ast.ExprArrayItem{ast.Node{}, false, nil, nil}}
@@ -9132,7 +9150,7 @@ yydefault:
}
case 477:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:6558
+// line internal/php5/php5.y:6576
{
if yyDollar[1].node.(*ast.ExprArrayItem).Key == nil && yyDollar[1].node.(*ast.ExprArrayItem).Val == nil {
yyVAL.list = []ast.Vertex{}
@@ -9144,7 +9162,7 @@ yydefault:
}
case 478:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:6572
+// line internal/php5/php5.y:6590
{
yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[1].node}
@@ -9158,7 +9176,7 @@ yydefault:
}
case 479:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:6584
+// line internal/php5/php5.y:6602
{
listNode := &ast.ExprList{ast.Node{}, yyDollar[3].list}
yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, listNode}
@@ -9176,7 +9194,7 @@ yydefault:
}
case 480:
yyDollar = yyS[yypt-0 : yypt+1]
-// line internal/php5/php5.y:6600
+// line internal/php5/php5.y:6618
{
yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, nil}
@@ -9184,7 +9202,7 @@ yydefault:
}
case 481:
yyDollar = yyS[yypt-0 : yypt+1]
-// line internal/php5/php5.y:6610
+// line internal/php5/php5.y:6628
{
yyVAL.list = []ast.Vertex{}
@@ -9192,7 +9210,7 @@ yydefault:
}
case 482:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:6616
+// line internal/php5/php5.y:6634
{
yyVAL.list = yyDollar[1].list
@@ -9209,7 +9227,7 @@ yydefault:
}
case 483:
yyDollar = yyS[yypt-5 : yypt+1]
-// line internal/php5/php5.y:6634
+// line internal/php5/php5.y:6652
{
arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[3].node, yyDollar[5].node}
yyVAL.list = append(yyDollar[1].list, arrayItem)
@@ -9226,7 +9244,7 @@ yydefault:
}
case 484:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:6649
+// line internal/php5/php5.y:6667
{
arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[3].node}
yyVAL.list = append(yyDollar[1].list, arrayItem)
@@ -9242,7 +9260,7 @@ yydefault:
}
case 485:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:6663
+// line internal/php5/php5.y:6681
{
arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, yyDollar[3].node}
yyVAL.list = []ast.Vertex{arrayItem}
@@ -9258,7 +9276,7 @@ yydefault:
}
case 486:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:6677
+// line internal/php5/php5.y:6695
{
arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[1].node}
yyVAL.list = []ast.Vertex{arrayItem}
@@ -9273,7 +9291,7 @@ yydefault:
}
case 487:
yyDollar = yyS[yypt-6 : yypt+1]
-// line internal/php5/php5.y:6690
+// line internal/php5/php5.y:6708
{
reference := &ast.ExprReference{ast.Node{}, yyDollar[6].node}
arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[3].node, reference}
@@ -9293,7 +9311,7 @@ yydefault:
}
case 488:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:6708
+// line internal/php5/php5.y:6726
{
reference := &ast.ExprReference{ast.Node{}, yyDollar[4].node}
arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, reference}
@@ -9311,7 +9329,7 @@ yydefault:
}
case 489:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:6724
+// line internal/php5/php5.y:6742
{
reference := &ast.ExprReference{ast.Node{}, yyDollar[4].node}
arrayItem := &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, reference}
@@ -9330,7 +9348,7 @@ yydefault:
}
case 490:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:6741
+// line internal/php5/php5.y:6759
{
reference := &ast.ExprReference{ast.Node{}, yyDollar[2].node}
arrayItem := &ast.ExprArrayItem{ast.Node{}, false, nil, reference}
@@ -9347,7 +9365,7 @@ yydefault:
}
case 491:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:6759
+// line internal/php5/php5.y:6777
{
yyVAL.list = append(yyDollar[1].list, yyDollar[2].node)
@@ -9355,7 +9373,7 @@ yydefault:
}
case 492:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:6765
+// line internal/php5/php5.y:6783
{
encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[2].token.Value}
yyVAL.list = append(yyDollar[1].list, encapsed)
@@ -9370,7 +9388,7 @@ yydefault:
}
case 493:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:6778
+// line internal/php5/php5.y:6796
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
@@ -9378,7 +9396,7 @@ yydefault:
}
case 494:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:6784
+// line internal/php5/php5.y:6802
{
encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[1].token.Value}
yyVAL.list = []ast.Vertex{encapsed, yyDollar[2].node}
@@ -9393,7 +9411,7 @@ yydefault:
}
case 495:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:6800
+// line internal/php5/php5.y:6818
{
name := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[1].token.Value, isDollar)}
yyVAL.node = &ast.ExprVariable{ast.Node{}, name}
@@ -9404,12 +9422,13 @@ yydefault:
// save comments
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.Tokens)
+ yylex.(*Parser).addDollarToken(yyVAL.node)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
case 496:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:6814
+// line internal/php5/php5.y:6833
{
identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[1].token.Value, isDollar)}
variable := &ast.ExprVariable{ast.Node{}, identifier}
@@ -9421,6 +9440,7 @@ yydefault:
yyVAL.node.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)
// save comments
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Var, append(yyDollar[2].token.Tokens, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)...))
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Expr, append(yyDollar[4].token.Tokens, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)...))
@@ -9428,7 +9448,7 @@ yydefault:
}
case 497:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:6831
+// line internal/php5/php5.y:6851
{
identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[1].token.Value, isDollar)}
variable := &ast.ExprVariable{ast.Node{}, identifier}
@@ -9442,6 +9462,7 @@ yydefault:
yyVAL.node.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)
// save comments
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Var, yyDollar[2].token.Tokens)
yylex.(*Parser).setFreeFloating(fetch, token.Start, yyDollar[3].token.Tokens)
@@ -9449,7 +9470,7 @@ yydefault:
}
case 498:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:6850
+// line internal/php5/php5.y:6871
{
variable := &ast.ExprVariable{ast.Node{}, yyDollar[2].node}
@@ -9466,7 +9487,7 @@ yydefault:
}
case 499:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:6865
+// line internal/php5/php5.y:6886
{
name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value}
variable := &ast.ExprVariable{ast.Node{}, name}
@@ -9485,7 +9506,7 @@ yydefault:
}
case 500:
yyDollar = yyS[yypt-6 : yypt+1]
-// line internal/php5/php5.y:6882
+// line internal/php5/php5.y:6903
{
identifier := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value}
variable := &ast.ExprVariable{ast.Node{}, identifier}
@@ -9506,7 +9527,7 @@ yydefault:
}
case 501:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:6901
+// line internal/php5/php5.y:6922
{
yyVAL.node = yyDollar[2].node
@@ -9518,7 +9539,7 @@ yydefault:
}
case 502:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:6914
+// line internal/php5/php5.y:6935
{
yyVAL.node = &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value}
@@ -9532,7 +9553,7 @@ yydefault:
}
case 503:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:6926
+// line internal/php5/php5.y:6947
{
// TODO: add option to handle 64 bit integer
if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil {
@@ -9551,7 +9572,7 @@ yydefault:
}
case 504:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:6943
+// line internal/php5/php5.y:6964
{
identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[1].token.Value, isDollar)}
yyVAL.node = &ast.ExprVariable{ast.Node{}, identifier}
@@ -9562,12 +9583,13 @@ yydefault:
// save comments
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.Tokens)
+ yylex.(*Parser).addDollarToken(yyVAL.node)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
case 505:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:6960
+// line internal/php5/php5.y:6982
{
yyVAL.node = &ast.ExprIsset{ast.Node{}, yyDollar[3].list}
@@ -9583,7 +9605,7 @@ yydefault:
}
case 506:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:6974
+// line internal/php5/php5.y:6996
{
yyVAL.node = &ast.ExprEmpty{ast.Node{}, yyDollar[3].node}
@@ -9599,7 +9621,7 @@ yydefault:
}
case 507:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:6988
+// line internal/php5/php5.y:7010
{
yyVAL.node = &ast.ExprEmpty{ast.Node{}, yyDollar[3].node}
@@ -9615,7 +9637,7 @@ yydefault:
}
case 508:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:7002
+// line internal/php5/php5.y:7024
{
yyVAL.node = &ast.ExprInclude{ast.Node{}, yyDollar[2].node}
@@ -9629,7 +9651,7 @@ yydefault:
}
case 509:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:7014
+// line internal/php5/php5.y:7036
{
yyVAL.node = &ast.ExprIncludeOnce{ast.Node{}, yyDollar[2].node}
@@ -9643,7 +9665,7 @@ yydefault:
}
case 510:
yyDollar = yyS[yypt-4 : yypt+1]
-// line internal/php5/php5.y:7026
+// line internal/php5/php5.y:7048
{
yyVAL.node = &ast.ExprEval{ast.Node{}, yyDollar[3].node}
@@ -9659,7 +9681,7 @@ yydefault:
}
case 511:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:7040
+// line internal/php5/php5.y:7062
{
yyVAL.node = &ast.ExprRequire{ast.Node{}, yyDollar[2].node}
@@ -9673,7 +9695,7 @@ yydefault:
}
case 512:
yyDollar = yyS[yypt-2 : yypt+1]
-// line internal/php5/php5.y:7052
+// line internal/php5/php5.y:7074
{
yyVAL.node = &ast.ExprRequireOnce{ast.Node{}, yyDollar[2].node}
@@ -9687,7 +9709,7 @@ yydefault:
}
case 513:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:7067
+// line internal/php5/php5.y:7089
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
@@ -9695,7 +9717,7 @@ yydefault:
}
case 514:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:7073
+// line internal/php5/php5.y:7095
{
yyVAL.list = append(yyDollar[1].list, yyDollar[3].node)
@@ -9706,7 +9728,7 @@ yydefault:
}
case 515:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:7085
+// line internal/php5/php5.y:7107
{
yyVAL.node = yyDollar[1].node
@@ -9714,7 +9736,7 @@ yydefault:
}
case 516:
yyDollar = yyS[yypt-1 : yypt+1]
-// line internal/php5/php5.y:7091
+// line internal/php5/php5.y:7113
{
yyVAL.node = yyDollar[1].node
@@ -9722,7 +9744,7 @@ yydefault:
}
case 517:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:7100
+// line internal/php5/php5.y:7122
{
target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value}
yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target}
@@ -9740,7 +9762,7 @@ yydefault:
}
case 518:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:7116
+// line internal/php5/php5.y:7138
{
target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value}
yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target}
@@ -9758,7 +9780,7 @@ yydefault:
}
case 519:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:7135
+// line internal/php5/php5.y:7157
{
target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value}
yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target}
@@ -9776,7 +9798,7 @@ yydefault:
}
case 520:
yyDollar = yyS[yypt-3 : yypt+1]
-// line internal/php5/php5.y:7154
+// line internal/php5/php5.y:7176
{
target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value}
yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target}
diff --git a/internal/php5/php5.y b/internal/php5/php5.y
index fc42063..082430d 100644
--- a/internal/php5/php5.y
+++ b/internal/php5/php5.y
@@ -1431,6 +1431,7 @@ catch_statement:
yylex.(*Parser).setFreeFloating(catchNode, token.Start, $1.Tokens)
yylex.(*Parser).setFreeFloating(catchNode, token.Catch, $2.Tokens)
yylex.(*Parser).setFreeFloating(variable, token.Start, $4.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating(catchNode, token.Var, $5.Tokens)
yylex.(*Parser).setFreeFloating(catchNode, token.Cond, $6.Tokens)
yylex.(*Parser).setFreeFloating(catchNode, token.Stmts, $8.Tokens)
@@ -1508,6 +1509,7 @@ additional_catch:
yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens)
yylex.(*Parser).setFreeFloating($$, token.Catch, $2.Tokens)
yylex.(*Parser).setFreeFloating(variable, token.Start, $4.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating($$, token.Var, $5.Tokens)
yylex.(*Parser).setFreeFloating($$, token.Cond, $6.Tokens)
yylex.(*Parser).setFreeFloating($$, token.Stmts, $8.Tokens)
@@ -2309,6 +2311,7 @@ parameter:
yylex.(*Parser).setFreeFloating($$, token.Ampersand, $3.Tokens)
}
yylex.(*Parser).setFreeFloating($$, token.Variadic, $4.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
// normalize
if $3 == nil {
@@ -2354,6 +2357,7 @@ parameter:
}
yylex.(*Parser).setFreeFloating($$, token.Variadic, $4.Tokens)
yylex.(*Parser).setFreeFloating($$, token.Var, $5.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
// normalize
if $3 == nil {
@@ -2556,6 +2560,7 @@ global_var:
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens)
+ yylex.(*Parser).addDollarToken($$)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
@@ -2605,6 +2610,7 @@ static_var_list:
// save comments
yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating(staticVar, token.Start, $3.Tokens)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
@@ -2623,6 +2629,7 @@ static_var_list:
// save comments
yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating(staticVar, token.Start, $3.Tokens)
yylex.(*Parser).setFreeFloating(staticVar, token.Var, $4.Tokens)
@@ -2641,6 +2648,7 @@ static_var_list:
staticVar.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1)
// save comments
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating(staticVar, token.Start, $1.Tokens)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
@@ -2658,6 +2666,7 @@ static_var_list:
staticVar.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)
// save comments
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating(staticVar, token.Start, $1.Tokens)
yylex.(*Parser).setFreeFloating(staticVar, token.Var, $2.Tokens)
@@ -3155,6 +3164,7 @@ class_variable_declaration:
property.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($3)
// save comments
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens)
yylex.(*Parser).setFreeFloating(property, token.Start, $3.Tokens)
@@ -3174,6 +3184,7 @@ class_variable_declaration:
// save comments
yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating(property, token.Start, $3.Tokens)
yylex.(*Parser).setFreeFloating(property, token.Var, $4.Tokens)
@@ -3192,6 +3203,7 @@ class_variable_declaration:
property.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenPosition($1)
// save comments
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating(property, token.Start, $1.Tokens)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
@@ -3209,6 +3221,7 @@ class_variable_declaration:
property.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)
// save comments
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating(property, token.Start, $2.Tokens)
yylex.(*Parser).setFreeFloating(property, token.Var, $2.Tokens)
@@ -4589,6 +4602,7 @@ lexical_var_list:
// save comments
yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens)
yylex.(*Parser).setFreeFloating(variable, token.Start, $3.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
@@ -4608,6 +4622,7 @@ lexical_var_list:
yylex.(*Parser).setFreeFloating(lastNode($1), token.End, $2.Tokens)
yylex.(*Parser).setFreeFloating(reference, token.Start, $3.Tokens)
yylex.(*Parser).setFreeFloating(variable, token.Start, $4.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
@@ -4623,6 +4638,7 @@ lexical_var_list:
// save comments
yylex.(*Parser).setFreeFloating(variable, token.Start, $1.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
@@ -4641,6 +4657,7 @@ lexical_var_list:
// save comments
yylex.(*Parser).setFreeFloating(reference, token.Start, $1.Tokens)
yylex.(*Parser).setFreeFloating(variable, token.Start, $2.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
@@ -6381,6 +6398,7 @@ compound_variable:
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens)
+ yylex.(*Parser).addDollarToken($$)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
@@ -6807,6 +6825,7 @@ encaps_var:
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens)
+ yylex.(*Parser).addDollarToken($$)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
@@ -6822,6 +6841,7 @@ encaps_var:
$$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)
// save comments
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating($$, token.Var, append($2.Tokens, yylex.(*Parser).GetFreeFloatingToken($2)...))
yylex.(*Parser).setFreeFloating($$, token.Expr, append($4.Tokens, yylex.(*Parser).GetFreeFloatingToken($4)...))
@@ -6841,6 +6861,7 @@ encaps_var:
$$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)
// save comments
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating($$, token.Var, $2.Tokens)
yylex.(*Parser).setFreeFloating(fetch, token.Start, $3.Tokens)
@@ -6950,6 +6971,7 @@ encaps_var_offset:
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens)
+ yylex.(*Parser).addDollarToken($$)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
diff --git a/internal/php7/parser.go b/internal/php7/parser.go
index cb42f54..a960984 100644
--- a/internal/php7/parser.go
+++ b/internal/php7/parser.go
@@ -131,10 +131,25 @@ func (l *Parser) GetFreeFloatingToken(t *scanner.Token) []token.Token {
return []token.Token{}
}
- tokens := make([]token.Token, len(t.Tokens))
- copy(tokens, t.Tokens)
+ return []token.Token{
+ {
+ ID: token.ID(t.ID),
+ Value: t.Value,
+ },
+ }
+}
- return tokens
+func (l *Parser) addDollarToken(v ast.Vertex) {
+ if l.Lexer.GetWithFreeFloating() == false {
+ return
+ }
+
+ l.setFreeFloating(v, token.Dollar, []token.Token{
+ {
+ ID: token.ID('$'),
+ Value: []byte("$"),
+ },
+ })
}
func (l *Parser) splitSemiColonAndPhpCloseTag(htmlNode ast.Vertex, prevNode ast.Vertex) {
diff --git a/internal/php7/parser_test.go b/internal/php7/parser_test.go
index 25490fc..bceae9c 100644
--- a/internal/php7/parser_test.go
+++ b/internal/php7/parser_test.go
@@ -982,7 +982,7 @@ func TestPhp7ParameterNode(t *testing.T) {
EndPos: 51,
},
},
- ReturnsRef: false,
+ ReturnsRef: false,
FunctionName: &ast.Identifier{
Node: ast.Node{
Position: &position.Position{
@@ -1183,7 +1183,7 @@ func TestPhp7ParameterNode(t *testing.T) {
EndPos: 117,
},
},
- ReturnsRef: false,
+ ReturnsRef: false,
MethodName: &ast.Identifier{
Node: ast.Node{
Position: &position.Position{
@@ -1397,8 +1397,8 @@ func TestPhp7ParameterNode(t *testing.T) {
EndPos: 162,
},
},
- ReturnsRef: false,
- Static: false,
+ ReturnsRef: false,
+ Static: false,
Params: []ast.Vertex{
&ast.Parameter{
Node: ast.Node{
@@ -1577,8 +1577,8 @@ func TestPhp7ParameterNode(t *testing.T) {
EndPos: 214,
},
},
- Static: true,
- ReturnsRef: false,
+ Static: true,
+ ReturnsRef: false,
Params: []ast.Vertex{
&ast.Parameter{
Node: ast.Node{
@@ -4376,7 +4376,7 @@ func TestStmtClassMethod_SimpleClassMethod(t *testing.T) {
EndPos: 31,
},
},
- ReturnsRef: false,
+ ReturnsRef: false,
MethodName: &ast.Identifier{
Node: ast.Node{
Position: &position.Position{
@@ -4454,7 +4454,7 @@ func TestStmtClassMethod_PrivateProtectedClassMethod(t *testing.T) {
EndPos: 45,
},
},
- ReturnsRef: false,
+ ReturnsRef: false,
MethodName: &ast.Identifier{
Node: ast.Node{
Position: &position.Position{
@@ -4511,7 +4511,7 @@ func TestStmtClassMethod_PrivateProtectedClassMethod(t *testing.T) {
EndPos: 73,
},
},
- ReturnsRef: false,
+ ReturnsRef: false,
MethodName: &ast.Identifier{
Node: ast.Node{
Position: &position.Position{
@@ -4602,7 +4602,7 @@ func TestStmtClassMethod_Php7ClassMethod(t *testing.T) {
EndPos: 52,
},
},
- ReturnsRef: true,
+ ReturnsRef: true,
MethodName: &ast.Identifier{
Node: ast.Node{
Position: &position.Position{
@@ -4740,7 +4740,7 @@ func TestStmtClassMethod_AbstractClassMethod(t *testing.T) {
EndPos: 54,
},
},
- ReturnsRef: false,
+ ReturnsRef: false,
MethodName: &ast.Identifier{
Node: ast.Node{
Position: &position.Position{
@@ -4854,7 +4854,7 @@ func TestStmtClassMethod_Php7AbstractClassMethod(t *testing.T) {
EndPos: 51,
},
},
- ReturnsRef: false,
+ ReturnsRef: false,
MethodName: &ast.Identifier{
Node: ast.Node{
Position: &position.Position{
@@ -7300,7 +7300,7 @@ func TestStmtFunction(t *testing.T) {
EndPos: 20,
},
},
- ReturnsRef: false,
+ ReturnsRef: false,
FunctionName: &ast.Identifier{
Node: ast.Node{
Position: &position.Position{
@@ -7345,7 +7345,7 @@ func TestStmtFunction_Return(t *testing.T) {
EndPos: 27,
},
},
- ReturnsRef: false,
+ ReturnsRef: false,
FunctionName: &ast.Identifier{
Node: ast.Node{
Position: &position.Position{
@@ -7401,7 +7401,7 @@ func TestStmtFunction_ReturnVar(t *testing.T) {
EndPos: 51,
},
},
- ReturnsRef: false,
+ ReturnsRef: false,
FunctionName: &ast.Identifier{
Node: ast.Node{
Position: &position.Position{
@@ -7568,7 +7568,7 @@ func TestStmtFunction_Ref(t *testing.T) {
EndPos: 30,
},
},
- ReturnsRef: true,
+ ReturnsRef: true,
FunctionName: &ast.Identifier{
Node: ast.Node{
Position: &position.Position{
@@ -7635,7 +7635,7 @@ func TestStmtFunction_ReturnType(t *testing.T) {
EndPos: 27,
},
},
- ReturnsRef: true,
+ ReturnsRef: true,
FunctionName: &ast.Identifier{
Node: ast.Node{
Position: &position.Position{
@@ -14535,8 +14535,8 @@ func TestExprArrowFunction(t *testing.T) {
EndPos: 13,
},
},
- ReturnsRef: false,
- Static: false,
+ ReturnsRef: false,
+ Static: false,
Expr: &ast.ExprVariable{
Node: ast.Node{
Position: &position.Position{
@@ -14600,8 +14600,8 @@ func TestExprArrowFunction_ReturnType(t *testing.T) {
EndPos: 22,
},
},
- Static: false,
- ReturnsRef: true,
+ Static: false,
+ ReturnsRef: true,
ReturnType: &ast.NameName{
Node: ast.Node{
Position: &position.Position{
@@ -15080,9 +15080,9 @@ func TestExprClosure(t *testing.T) {
EndPos: 15,
},
},
- ReturnsRef: false,
- Static: false,
- Stmts: []ast.Vertex{},
+ ReturnsRef: false,
+ Static: false,
+ Stmts: []ast.Vertex{},
},
},
},
@@ -15125,8 +15125,8 @@ func TestExprClosure_Use(t *testing.T) {
EndPos: 36,
},
},
- ReturnsRef: false,
- Static: false,
+ ReturnsRef: false,
+ Static: false,
Params: []ast.Vertex{
&ast.Parameter{
Node: ast.Node{
@@ -15302,8 +15302,8 @@ func TestExprClosure_Use2(t *testing.T) {
EndPos: 36,
},
},
- ReturnsRef: false,
- Static: false,
+ ReturnsRef: false,
+ Static: false,
Params: []ast.Vertex{
&ast.Parameter{
Node: ast.Node{
@@ -15479,8 +15479,8 @@ func TestExprClosure_ReturnType(t *testing.T) {
EndPos: 22,
},
},
- ReturnsRef: false,
- Static: false,
+ ReturnsRef: false,
+ Static: false,
ReturnType: &ast.NameName{
Node: ast.Node{
Position: &position.Position{
diff --git a/internal/php7/php7.go b/internal/php7/php7.go
index 9a3f30a..0900ad3 100644
--- a/internal/php7/php7.go
+++ b/internal/php7/php7.go
@@ -346,7 +346,7 @@ const yyEofCode = 1
const yyErrCode = 2
const yyInitialStackSize = 16
-// line internal/php7/php7.y:5655
+// line internal/php7/php7.y:5671
// line yacctab:1
var yyExca = [...]int{
@@ -3724,6 +3724,7 @@ yydefault:
yylex.(*Parser).setFreeFloating(catch, token.Start, yyDollar[2].token.Tokens)
yylex.(*Parser).setFreeFloating(catch, token.Catch, yyDollar[3].token.Tokens)
yylex.(*Parser).setFreeFloating(variable, token.Start, yyDollar[5].token.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating(catch, token.Var, yyDollar[6].token.Tokens)
yylex.(*Parser).setFreeFloating(catch, token.Cond, yyDollar[7].token.Tokens)
yylex.(*Parser).setFreeFloating(catch, token.Stmts, yyDollar[9].token.Tokens)
@@ -3732,7 +3733,7 @@ yydefault:
}
case 158:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:1380
+ // line internal/php7/php7.y:1381
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
@@ -3740,7 +3741,7 @@ yydefault:
}
case 159:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:1386
+ // line internal/php7/php7.y:1387
{
yyVAL.list = append(yyDollar[1].list, yyDollar[3].node)
@@ -3751,7 +3752,7 @@ yydefault:
}
case 160:
yyDollar = yyS[yypt-0 : yypt+1]
- // line internal/php7/php7.y:1398
+ // line internal/php7/php7.y:1399
{
yyVAL.node = nil
@@ -3759,7 +3760,7 @@ yydefault:
}
case 161:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:1404
+ // line internal/php7/php7.y:1405
{
yyVAL.node = &ast.StmtFinally{ast.Node{}, yyDollar[3].list}
@@ -3775,7 +3776,7 @@ yydefault:
}
case 162:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:1421
+ // line internal/php7/php7.y:1422
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
@@ -3783,7 +3784,7 @@ yydefault:
}
case 163:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:1427
+ // line internal/php7/php7.y:1428
{
yyVAL.list = append(yyDollar[1].list, yyDollar[3].node)
@@ -3794,7 +3795,7 @@ yydefault:
}
case 164:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:1439
+ // line internal/php7/php7.y:1440
{
yyVAL.node = yyDollar[1].node
@@ -3802,7 +3803,7 @@ yydefault:
}
case 165:
yyDollar = yyS[yypt-11 : yypt+1]
- // line internal/php7/php7.y:1448
+ // line internal/php7/php7.y:1449
{
name := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value}
yyVAL.node = &ast.StmtFunction{ast.Node{}, yyDollar[2].token != nil, name, yyDollar[6].list, yyDollar[8].node, yyDollar[10].list}
@@ -3838,31 +3839,31 @@ yydefault:
}
case 166:
yyDollar = yyS[yypt-0 : yypt+1]
- // line internal/php7/php7.y:1484
+ // line internal/php7/php7.y:1485
{
yyVAL.token = nil
}
case 167:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:1488
+ // line internal/php7/php7.y:1489
{
yyVAL.token = yyDollar[1].token
}
case 168:
yyDollar = yyS[yypt-0 : yypt+1]
- // line internal/php7/php7.y:1495
+ // line internal/php7/php7.y:1496
{
yyVAL.token = nil
}
case 169:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:1499
+ // line internal/php7/php7.y:1500
{
yyVAL.token = yyDollar[1].token
}
case 170:
yyDollar = yyS[yypt-9 : yypt+1]
- // line internal/php7/php7.y:1506
+ // line internal/php7/php7.y:1507
{
name := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value}
yyVAL.node = &ast.StmtClass{ast.Node{}, name, yyDollar[1].list, nil, yyDollar[4].ClassExtends, yyDollar[5].ClassImplements, yyDollar[8].list}
@@ -3882,7 +3883,7 @@ yydefault:
}
case 171:
yyDollar = yyS[yypt-8 : yypt+1]
- // line internal/php7/php7.y:1524
+ // line internal/php7/php7.y:1525
{
name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value}
yyVAL.node = &ast.StmtClass{ast.Node{}, name, nil, nil, yyDollar[3].ClassExtends, yyDollar[4].ClassImplements, yyDollar[7].list}
@@ -3901,7 +3902,7 @@ yydefault:
}
case 172:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:1544
+ // line internal/php7/php7.y:1545
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
@@ -3909,7 +3910,7 @@ yydefault:
}
case 173:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:1550
+ // line internal/php7/php7.y:1551
{
yyVAL.list = append(yyDollar[1].list, yyDollar[2].node)
@@ -3917,7 +3918,7 @@ yydefault:
}
case 174:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:1559
+ // line internal/php7/php7.y:1560
{
yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value}
@@ -3931,7 +3932,7 @@ yydefault:
}
case 175:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:1571
+ // line internal/php7/php7.y:1572
{
yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value}
@@ -3945,7 +3946,7 @@ yydefault:
}
case 176:
yyDollar = yyS[yypt-6 : yypt+1]
- // line internal/php7/php7.y:1586
+ // line internal/php7/php7.y:1587
{
name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value}
yyVAL.node = &ast.StmtTrait{ast.Node{}, name, yyDollar[5].list}
@@ -3964,7 +3965,7 @@ yydefault:
}
case 177:
yyDollar = yyS[yypt-7 : yypt+1]
- // line internal/php7/php7.y:1606
+ // line internal/php7/php7.y:1607
{
name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value}
yyVAL.node = &ast.StmtInterface{ast.Node{}, name, yyDollar[3].InterfaceExtends, yyDollar[6].list}
@@ -3983,7 +3984,7 @@ yydefault:
}
case 178:
yyDollar = yyS[yypt-0 : yypt+1]
- // line internal/php7/php7.y:1626
+ // line internal/php7/php7.y:1627
{
yyVAL.ClassExtends = nil
@@ -3991,7 +3992,7 @@ yydefault:
}
case 179:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:1632
+ // line internal/php7/php7.y:1633
{
yyVAL.ClassExtends = &ast.StmtClassExtends{ast.Node{}, yyDollar[2].node}
@@ -4005,7 +4006,7 @@ yydefault:
}
case 180:
yyDollar = yyS[yypt-0 : yypt+1]
- // line internal/php7/php7.y:1647
+ // line internal/php7/php7.y:1648
{
yyVAL.InterfaceExtends = nil
@@ -4013,7 +4014,7 @@ yydefault:
}
case 181:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:1653
+ // line internal/php7/php7.y:1654
{
yyVAL.InterfaceExtends = &ast.StmtInterfaceExtends{ast.Node{}, yyDollar[2].list}
@@ -4027,7 +4028,7 @@ yydefault:
}
case 182:
yyDollar = yyS[yypt-0 : yypt+1]
- // line internal/php7/php7.y:1668
+ // line internal/php7/php7.y:1669
{
yyVAL.ClassImplements = nil
@@ -4035,7 +4036,7 @@ yydefault:
}
case 183:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:1674
+ // line internal/php7/php7.y:1675
{
yyVAL.ClassImplements = &ast.StmtClassImplements{ast.Node{}, yyDollar[2].list}
@@ -4049,7 +4050,7 @@ yydefault:
}
case 184:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:1689
+ // line internal/php7/php7.y:1690
{
yyVAL.node = yyDollar[1].node
@@ -4057,7 +4058,7 @@ yydefault:
}
case 185:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:1695
+ // line internal/php7/php7.y:1696
{
yyVAL.node = &ast.ExprReference{ast.Node{}, yyDollar[2].node}
@@ -4071,7 +4072,7 @@ yydefault:
}
case 186:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:1707
+ // line internal/php7/php7.y:1708
{
yyVAL.node = &ast.ExprList{ast.Node{}, yyDollar[3].list}
@@ -4087,7 +4088,7 @@ yydefault:
}
case 187:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:1721
+ // line internal/php7/php7.y:1722
{
yyVAL.node = &ast.ExprShortList{ast.Node{}, yyDollar[2].list}
@@ -4102,7 +4103,7 @@ yydefault:
}
case 188:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:1737
+ // line internal/php7/php7.y:1738
{
yyVAL.node = &ast.StmtFor{ast.Node{}, nil, nil, nil, yyDollar[1].node}
@@ -4113,7 +4114,7 @@ yydefault:
}
case 189:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:1746
+ // line internal/php7/php7.y:1747
{
stmtList := &ast.StmtStmtList{ast.Node{}, yyDollar[2].list}
yyVAL.node = &ast.StmtAltFor{ast.Node{}, nil, nil, nil, stmtList}
@@ -4132,7 +4133,7 @@ yydefault:
}
case 190:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:1766
+ // line internal/php7/php7.y:1767
{
yyVAL.node = &ast.StmtForeach{ast.Node{}, nil, nil, nil, yyDollar[1].node}
@@ -4143,7 +4144,7 @@ yydefault:
}
case 191:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:1775
+ // line internal/php7/php7.y:1776
{
stmtList := &ast.StmtStmtList{ast.Node{}, yyDollar[2].list}
yyVAL.node = &ast.StmtAltForeach{ast.Node{}, nil, nil, nil, stmtList}
@@ -4162,7 +4163,7 @@ yydefault:
}
case 192:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:1795
+ // line internal/php7/php7.y:1796
{
yyVAL.node = &ast.StmtDeclare{ast.Node{}, false, nil, yyDollar[1].node}
@@ -4173,7 +4174,7 @@ yydefault:
}
case 193:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:1804
+ // line internal/php7/php7.y:1805
{
stmtList := &ast.StmtStmtList{ast.Node{}, yyDollar[2].list}
yyVAL.node = &ast.StmtDeclare{ast.Node{}, true, nil, stmtList}
@@ -4192,7 +4193,7 @@ yydefault:
}
case 194:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:1824
+ // line internal/php7/php7.y:1825
{
caseList := &ast.StmtCaseList{ast.Node{}, yyDollar[2].list}
yyVAL.node = &ast.StmtSwitch{ast.Node{}, nil, caseList}
@@ -4209,7 +4210,7 @@ yydefault:
}
case 195:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:1839
+ // line internal/php7/php7.y:1840
{
caseList := &ast.StmtCaseList{ast.Node{}, yyDollar[3].list}
yyVAL.node = &ast.StmtSwitch{ast.Node{}, nil, caseList}
@@ -4227,7 +4228,7 @@ yydefault:
}
case 196:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:1855
+ // line internal/php7/php7.y:1856
{
caseList := &ast.StmtCaseList{ast.Node{}, yyDollar[2].list}
yyVAL.node = &ast.StmtAltSwitch{ast.Node{}, nil, caseList}
@@ -4246,7 +4247,7 @@ yydefault:
}
case 197:
yyDollar = yyS[yypt-5 : yypt+1]
- // line internal/php7/php7.y:1872
+ // line internal/php7/php7.y:1873
{
caseList := &ast.StmtCaseList{ast.Node{}, yyDollar[3].list}
@@ -4267,7 +4268,7 @@ yydefault:
}
case 198:
yyDollar = yyS[yypt-0 : yypt+1]
- // line internal/php7/php7.y:1894
+ // line internal/php7/php7.y:1895
{
yyVAL.list = []ast.Vertex{}
@@ -4275,7 +4276,7 @@ yydefault:
}
case 199:
yyDollar = yyS[yypt-5 : yypt+1]
- // line internal/php7/php7.y:1900
+ // line internal/php7/php7.y:1901
{
_case := &ast.StmtCase{ast.Node{}, yyDollar[3].node, yyDollar[5].list}
yyVAL.list = append(yyDollar[1].list, _case)
@@ -4292,7 +4293,7 @@ yydefault:
}
case 200:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:1915
+ // line internal/php7/php7.y:1916
{
_default := &ast.StmtDefault{ast.Node{}, yyDollar[4].list}
yyVAL.list = append(yyDollar[1].list, _default)
@@ -4309,19 +4310,19 @@ yydefault:
}
case 201:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:1933
+ // line internal/php7/php7.y:1934
{
yyVAL.token = yyDollar[1].token
}
case 202:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:1937
+ // line internal/php7/php7.y:1938
{
yyVAL.token = yyDollar[1].token
}
case 203:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:1944
+ // line internal/php7/php7.y:1945
{
yyVAL.node = &ast.StmtWhile{ast.Node{}, nil, yyDollar[1].node}
@@ -4332,7 +4333,7 @@ yydefault:
}
case 204:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:1953
+ // line internal/php7/php7.y:1954
{
stmtList := &ast.StmtStmtList{ast.Node{}, yyDollar[2].list}
yyVAL.node = &ast.StmtAltWhile{ast.Node{}, nil, stmtList}
@@ -4351,7 +4352,7 @@ yydefault:
}
case 205:
yyDollar = yyS[yypt-5 : yypt+1]
- // line internal/php7/php7.y:1973
+ // line internal/php7/php7.y:1974
{
yyVAL.node = &ast.StmtIf{ast.Node{}, yyDollar[3].node, yyDollar[5].node, nil, nil}
@@ -4367,7 +4368,7 @@ yydefault:
}
case 206:
yyDollar = yyS[yypt-6 : yypt+1]
- // line internal/php7/php7.y:1987
+ // line internal/php7/php7.y:1988
{
_elseIf := &ast.StmtElseIf{ast.Node{}, yyDollar[4].node, yyDollar[6].node}
yyDollar[1].node.(*ast.StmtIf).ElseIf = append(yyDollar[1].node.(*ast.StmtIf).ElseIf, _elseIf)
@@ -4387,7 +4388,7 @@ yydefault:
}
case 207:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:2008
+ // line internal/php7/php7.y:2009
{
yyVAL.node = yyDollar[1].node
@@ -4395,7 +4396,7 @@ yydefault:
}
case 208:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:2014
+ // line internal/php7/php7.y:2015
{
_else := &ast.StmtElse{ast.Node{}, yyDollar[3].node}
yyDollar[1].node.(*ast.StmtIf).Else = _else
@@ -4413,7 +4414,7 @@ yydefault:
}
case 209:
yyDollar = yyS[yypt-6 : yypt+1]
- // line internal/php7/php7.y:2033
+ // line internal/php7/php7.y:2034
{
stmts := &ast.StmtStmtList{ast.Node{}, yyDollar[6].list}
yyVAL.node = &ast.StmtAltIf{ast.Node{}, yyDollar[3].node, stmts, nil, nil}
@@ -4432,7 +4433,7 @@ yydefault:
}
case 210:
yyDollar = yyS[yypt-7 : yypt+1]
- // line internal/php7/php7.y:2050
+ // line internal/php7/php7.y:2051
{
stmts := &ast.StmtStmtList{ast.Node{}, yyDollar[7].list}
_elseIf := &ast.StmtAltElseIf{ast.Node{}, yyDollar[4].node, stmts}
@@ -4454,7 +4455,7 @@ yydefault:
}
case 211:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:2073
+ // line internal/php7/php7.y:2074
{
yyVAL.node = yyDollar[1].node
@@ -4470,7 +4471,7 @@ yydefault:
}
case 212:
yyDollar = yyS[yypt-6 : yypt+1]
- // line internal/php7/php7.y:2087
+ // line internal/php7/php7.y:2088
{
stmts := &ast.StmtStmtList{ast.Node{}, yyDollar[4].list}
_else := &ast.StmtAltElse{ast.Node{}, stmts}
@@ -4494,7 +4495,7 @@ yydefault:
}
case 213:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:2112
+ // line internal/php7/php7.y:2113
{
yyVAL.list = yyDollar[1].list
@@ -4502,7 +4503,7 @@ yydefault:
}
case 214:
yyDollar = yyS[yypt-0 : yypt+1]
- // line internal/php7/php7.y:2118
+ // line internal/php7/php7.y:2119
{
yyVAL.list = nil
@@ -4510,7 +4511,7 @@ yydefault:
}
case 215:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:2127
+ // line internal/php7/php7.y:2128
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
@@ -4518,7 +4519,7 @@ yydefault:
}
case 216:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:2133
+ // line internal/php7/php7.y:2134
{
yyVAL.list = append(yyDollar[1].list, yyDollar[3].node)
@@ -4529,7 +4530,7 @@ yydefault:
}
case 217:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:2145
+ // line internal/php7/php7.y:2146
{
identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[4].token.Value, isDollar)}
variable := &ast.ExprVariable{ast.Node{}, identifier}
@@ -4560,6 +4561,8 @@ yydefault:
}
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Variadic, yyDollar[4].token.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
+
// normalize
if yyDollar[3].token == nil {
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Ampersand, yyVAL.node.GetNode().Tokens[token.Variadic])
@@ -4578,7 +4581,7 @@ yydefault:
}
case 218:
yyDollar = yyS[yypt-6 : yypt+1]
- // line internal/php7/php7.y:2189
+ // line internal/php7/php7.y:2192
{
identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[4].token.Value, isDollar)}
variable := &ast.ExprVariable{ast.Node{}, identifier}
@@ -4610,6 +4613,8 @@ yydefault:
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Variadic, yyDollar[4].token.Tokens)
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Var, yyDollar[5].token.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
+
// normalize
if yyDollar[3].token == nil {
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Ampersand, yyVAL.node.GetNode().Tokens[token.Variadic])
@@ -4628,7 +4633,7 @@ yydefault:
}
case 219:
yyDollar = yyS[yypt-0 : yypt+1]
- // line internal/php7/php7.y:2237
+ // line internal/php7/php7.y:2242
{
yyVAL.node = nil
@@ -4636,7 +4641,7 @@ yydefault:
}
case 220:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:2243
+ // line internal/php7/php7.y:2248
{
yyVAL.node = yyDollar[1].node
@@ -4644,7 +4649,7 @@ yydefault:
}
case 221:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:2252
+ // line internal/php7/php7.y:2257
{
yyVAL.node = yyDollar[1].node
@@ -4652,7 +4657,7 @@ yydefault:
}
case 222:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:2258
+ // line internal/php7/php7.y:2263
{
yyVAL.node = &ast.Nullable{ast.Node{}, yyDollar[2].node}
@@ -4666,7 +4671,7 @@ yydefault:
}
case 223:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:2273
+ // line internal/php7/php7.y:2278
{
yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value}
@@ -4680,7 +4685,7 @@ yydefault:
}
case 224:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:2285
+ // line internal/php7/php7.y:2290
{
yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value}
@@ -4694,7 +4699,7 @@ yydefault:
}
case 225:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:2297
+ // line internal/php7/php7.y:2302
{
yyVAL.node = yyDollar[1].node
@@ -4702,7 +4707,7 @@ yydefault:
}
case 226:
yyDollar = yyS[yypt-0 : yypt+1]
- // line internal/php7/php7.y:2306
+ // line internal/php7/php7.y:2311
{
yyVAL.node = nil
@@ -4710,7 +4715,7 @@ yydefault:
}
case 227:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:2312
+ // line internal/php7/php7.y:2317
{
yyVAL.node = yyDollar[2].node
@@ -4721,7 +4726,7 @@ yydefault:
}
case 228:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:2324
+ // line internal/php7/php7.y:2329
{
yyVAL.node = &ast.ArgumentList{ast.Node{}, nil}
@@ -4736,7 +4741,7 @@ yydefault:
}
case 229:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:2337
+ // line internal/php7/php7.y:2342
{
yyVAL.node = &ast.ArgumentList{ast.Node{}, yyDollar[2].list}
@@ -4755,7 +4760,7 @@ yydefault:
}
case 230:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:2357
+ // line internal/php7/php7.y:2362
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
@@ -4763,7 +4768,7 @@ yydefault:
}
case 231:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:2363
+ // line internal/php7/php7.y:2368
{
yyVAL.list = append(yyDollar[1].list, yyDollar[3].node)
@@ -4774,7 +4779,7 @@ yydefault:
}
case 232:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:2375
+ // line internal/php7/php7.y:2380
{
yyVAL.node = &ast.Argument{ast.Node{}, false, false, yyDollar[1].node}
@@ -4788,7 +4793,7 @@ yydefault:
}
case 233:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:2387
+ // line internal/php7/php7.y:2392
{
yyVAL.node = &ast.Argument{ast.Node{}, true, false, yyDollar[2].node}
@@ -4802,7 +4807,7 @@ yydefault:
}
case 234:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:2402
+ // line internal/php7/php7.y:2407
{
yyVAL.list = append(yyDollar[1].list, yyDollar[3].node)
@@ -4813,7 +4818,7 @@ yydefault:
}
case 235:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:2411
+ // line internal/php7/php7.y:2416
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
@@ -4821,7 +4826,7 @@ yydefault:
}
case 236:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:2420
+ // line internal/php7/php7.y:2425
{
yyVAL.node = yyDollar[1].node
@@ -4829,7 +4834,7 @@ yydefault:
}
case 237:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:2429
+ // line internal/php7/php7.y:2434
{
yyVAL.list = append(yyDollar[1].list, yyDollar[3].node)
@@ -4840,7 +4845,7 @@ yydefault:
}
case 238:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:2438
+ // line internal/php7/php7.y:2443
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
@@ -4848,7 +4853,7 @@ yydefault:
}
case 239:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:2447
+ // line internal/php7/php7.y:2452
{
identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[1].token.Value, isDollar)}
variable := &ast.ExprVariable{ast.Node{}, identifier}
@@ -4861,12 +4866,13 @@ yydefault:
// save comments
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
case 240:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:2463
+ // line internal/php7/php7.y:2469
{
identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[1].token.Value, isDollar)}
variable := &ast.ExprVariable{ast.Node{}, identifier}
@@ -4879,13 +4885,14 @@ yydefault:
// save comments
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Var, yyDollar[2].token.Tokens)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
case 241:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:2483
+ // line internal/php7/php7.y:2490
{
yyVAL.list = append(yyDollar[1].list, yyDollar[2].node)
@@ -4893,7 +4900,7 @@ yydefault:
}
case 242:
yyDollar = yyS[yypt-0 : yypt+1]
- // line internal/php7/php7.y:2489
+ // line internal/php7/php7.y:2496
{
yyVAL.list = []ast.Vertex{}
@@ -4901,7 +4908,7 @@ yydefault:
}
case 243:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:2498
+ // line internal/php7/php7.y:2505
{
yyVAL.node = &ast.StmtPropertyList{ast.Node{}, yyDollar[1].list, yyDollar[2].node, yyDollar[3].list}
@@ -4917,7 +4924,7 @@ yydefault:
}
case 244:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:2512
+ // line internal/php7/php7.y:2519
{
yyVAL.node = &ast.StmtClassConstList{ast.Node{}, yyDollar[1].list, yyDollar[3].list}
@@ -4938,7 +4945,7 @@ yydefault:
}
case 245:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:2531
+ // line internal/php7/php7.y:2538
{
yyVAL.node = &ast.StmtTraitUse{ast.Node{}, yyDollar[2].list, yyDollar[3].node}
@@ -4952,7 +4959,7 @@ yydefault:
}
case 246:
yyDollar = yyS[yypt-10 : yypt+1]
- // line internal/php7/php7.y:2543
+ // line internal/php7/php7.y:2550
{
name := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value}
yyVAL.node = &ast.StmtClassMethod{ast.Node{}, yyDollar[3].token != nil, name, yyDollar[1].list, yyDollar[7].list, yyDollar[9].node, yyDollar[10].node}
@@ -4989,7 +4996,7 @@ yydefault:
}
case 247:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:2580
+ // line internal/php7/php7.y:2587
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
@@ -4997,7 +5004,7 @@ yydefault:
}
case 248:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:2586
+ // line internal/php7/php7.y:2593
{
yyVAL.list = append(yyDollar[1].list, yyDollar[3].node)
@@ -5008,7 +5015,7 @@ yydefault:
}
case 249:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:2598
+ // line internal/php7/php7.y:2605
{
yyVAL.node = &ast.StmtNop{ast.Node{}}
@@ -5022,7 +5029,7 @@ yydefault:
}
case 250:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:2611
+ // line internal/php7/php7.y:2618
{
yyVAL.node = &ast.StmtTraitAdaptationList{ast.Node{}, nil}
@@ -5036,7 +5043,7 @@ yydefault:
}
case 251:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:2623
+ // line internal/php7/php7.y:2630
{
yyVAL.node = &ast.StmtTraitAdaptationList{ast.Node{}, yyDollar[2].list}
@@ -5050,7 +5057,7 @@ yydefault:
}
case 252:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:2638
+ // line internal/php7/php7.y:2645
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
@@ -5058,7 +5065,7 @@ yydefault:
}
case 253:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:2644
+ // line internal/php7/php7.y:2651
{
yyVAL.list = append(yyDollar[1].list, yyDollar[2].node)
@@ -5066,7 +5073,7 @@ yydefault:
}
case 254:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:2653
+ // line internal/php7/php7.y:2660
{
yyVAL.node = yyDollar[1].node
@@ -5078,7 +5085,7 @@ yydefault:
}
case 255:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:2663
+ // line internal/php7/php7.y:2670
{
yyVAL.node = yyDollar[1].node
@@ -5090,7 +5097,7 @@ yydefault:
}
case 256:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:2676
+ // line internal/php7/php7.y:2683
{
yyVAL.node = &ast.StmtTraitUsePrecedence{ast.Node{}, yyDollar[1].node, yyDollar[3].list}
@@ -5105,7 +5112,7 @@ yydefault:
}
case 257:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:2692
+ // line internal/php7/php7.y:2699
{
alias := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value}
yyVAL.node = &ast.StmtTraitUseAlias{ast.Node{}, yyDollar[1].node, nil, alias}
@@ -5123,7 +5130,7 @@ yydefault:
}
case 258:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:2708
+ // line internal/php7/php7.y:2715
{
alias := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value}
yyVAL.node = &ast.StmtTraitUseAlias{ast.Node{}, yyDollar[1].node, nil, alias}
@@ -5141,7 +5148,7 @@ yydefault:
}
case 259:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:2724
+ // line internal/php7/php7.y:2731
{
alias := &ast.Identifier{ast.Node{}, yyDollar[4].token.Value}
yyVAL.node = &ast.StmtTraitUseAlias{ast.Node{}, yyDollar[1].node, yyDollar[3].node, alias}
@@ -5159,7 +5166,7 @@ yydefault:
}
case 260:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:2740
+ // line internal/php7/php7.y:2747
{
yyVAL.node = &ast.StmtTraitUseAlias{ast.Node{}, yyDollar[1].node, yyDollar[3].node, nil}
@@ -5174,7 +5181,7 @@ yydefault:
}
case 261:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:2756
+ // line internal/php7/php7.y:2763
{
name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value}
yyVAL.node = &ast.StmtTraitMethodRef{ast.Node{}, nil, name}
@@ -5190,7 +5197,7 @@ yydefault:
}
case 262:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:2770
+ // line internal/php7/php7.y:2777
{
yyVAL.node = yyDollar[1].node
@@ -5198,7 +5205,7 @@ yydefault:
}
case 263:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:2779
+ // line internal/php7/php7.y:2786
{
target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value}
yyVAL.node = &ast.StmtTraitMethodRef{ast.Node{}, yyDollar[1].node, target}
@@ -5216,7 +5223,7 @@ yydefault:
}
case 264:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:2798
+ // line internal/php7/php7.y:2805
{
yyVAL.node = &ast.StmtNop{ast.Node{}}
@@ -5231,7 +5238,7 @@ yydefault:
}
case 265:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:2811
+ // line internal/php7/php7.y:2818
{
yyVAL.node = &ast.StmtStmtList{ast.Node{}, yyDollar[2].list}
@@ -5246,7 +5253,7 @@ yydefault:
}
case 266:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:2827
+ // line internal/php7/php7.y:2834
{
yyVAL.list = yyDollar[1].list
@@ -5254,7 +5261,7 @@ yydefault:
}
case 267:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:2833
+ // line internal/php7/php7.y:2840
{
modifier := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value}
yyVAL.list = []ast.Vertex{modifier}
@@ -5269,7 +5276,7 @@ yydefault:
}
case 268:
yyDollar = yyS[yypt-0 : yypt+1]
- // line internal/php7/php7.y:2849
+ // line internal/php7/php7.y:2856
{
yyVAL.list = nil
@@ -5277,7 +5284,7 @@ yydefault:
}
case 269:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:2855
+ // line internal/php7/php7.y:2862
{
yyVAL.list = yyDollar[1].list
@@ -5285,7 +5292,7 @@ yydefault:
}
case 270:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:2864
+ // line internal/php7/php7.y:2871
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
@@ -5293,7 +5300,7 @@ yydefault:
}
case 271:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:2870
+ // line internal/php7/php7.y:2877
{
yyVAL.list = append(yyDollar[1].list, yyDollar[2].node)
@@ -5301,7 +5308,7 @@ yydefault:
}
case 272:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:2879
+ // line internal/php7/php7.y:2886
{
yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value}
@@ -5315,7 +5322,7 @@ yydefault:
}
case 273:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:2891
+ // line internal/php7/php7.y:2898
{
yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value}
@@ -5329,7 +5336,7 @@ yydefault:
}
case 274:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:2903
+ // line internal/php7/php7.y:2910
{
yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value}
@@ -5343,7 +5350,7 @@ yydefault:
}
case 275:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:2915
+ // line internal/php7/php7.y:2922
{
yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value}
@@ -5357,7 +5364,7 @@ yydefault:
}
case 276:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:2927
+ // line internal/php7/php7.y:2934
{
yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value}
@@ -5371,7 +5378,7 @@ yydefault:
}
case 277:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:2939
+ // line internal/php7/php7.y:2946
{
yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value}
@@ -5385,7 +5392,7 @@ yydefault:
}
case 278:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:2954
+ // line internal/php7/php7.y:2961
{
yyVAL.list = append(yyDollar[1].list, yyDollar[3].node)
@@ -5396,7 +5403,7 @@ yydefault:
}
case 279:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:2963
+ // line internal/php7/php7.y:2970
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
@@ -5404,7 +5411,7 @@ yydefault:
}
case 280:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:2972
+ // line internal/php7/php7.y:2979
{
identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[1].token.Value, isDollar)}
variable := &ast.ExprVariable{ast.Node{}, identifier}
@@ -5417,12 +5424,13 @@ yydefault:
// save comments
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
case 281:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:2988
+ // line internal/php7/php7.y:2996
{
identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[1].token.Value, isDollar)}
variable := &ast.ExprVariable{ast.Node{}, identifier}
@@ -5435,13 +5443,14 @@ yydefault:
// save comments
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Var, yyDollar[2].token.Tokens)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
case 282:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3008
+ // line internal/php7/php7.y:3017
{
yyVAL.list = append(yyDollar[1].list, yyDollar[3].node)
@@ -5452,7 +5461,7 @@ yydefault:
}
case 283:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:3017
+ // line internal/php7/php7.y:3026
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
@@ -5460,7 +5469,7 @@ yydefault:
}
case 284:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:3026
+ // line internal/php7/php7.y:3035
{
name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value}
yyVAL.node = &ast.StmtConstant{ast.Node{}, name, yyDollar[3].node}
@@ -5477,7 +5486,7 @@ yydefault:
}
case 285:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:3044
+ // line internal/php7/php7.y:3053
{
name := &ast.Identifier{ast.Node{}, yyDollar[1].token.Value}
yyVAL.node = &ast.StmtConstant{ast.Node{}, name, yyDollar[3].node}
@@ -5494,7 +5503,7 @@ yydefault:
}
case 286:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3062
+ // line internal/php7/php7.y:3071
{
yyVAL.list = append(yyDollar[1].list, yyDollar[3].node)
@@ -5505,7 +5514,7 @@ yydefault:
}
case 287:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:3071
+ // line internal/php7/php7.y:3080
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
@@ -5513,7 +5522,7 @@ yydefault:
}
case 288:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:3080
+ // line internal/php7/php7.y:3089
{
yyVAL.node = yyDollar[1].node
@@ -5521,7 +5530,7 @@ yydefault:
}
case 289:
yyDollar = yyS[yypt-0 : yypt+1]
- // line internal/php7/php7.y:3089
+ // line internal/php7/php7.y:3098
{
yyVAL.list = nil
@@ -5529,7 +5538,7 @@ yydefault:
}
case 290:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:3095
+ // line internal/php7/php7.y:3104
{
yyVAL.list = yyDollar[1].list
@@ -5537,7 +5546,7 @@ yydefault:
}
case 291:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3104
+ // line internal/php7/php7.y:3113
{
yyVAL.list = append(yyDollar[1].list, yyDollar[3].node)
@@ -5548,7 +5557,7 @@ yydefault:
}
case 292:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:3113
+ // line internal/php7/php7.y:3122
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
@@ -5556,7 +5565,7 @@ yydefault:
}
case 293:
yyDollar = yyS[yypt-8 : yypt+1]
- // line internal/php7/php7.y:3122
+ // line internal/php7/php7.y:3131
{
if yyDollar[2].node != nil {
yyVAL.node = &ast.StmtClass{ast.Node{}, nil, nil, yyDollar[2].node.(*ast.ArgumentList), yyDollar[3].ClassExtends, yyDollar[4].ClassImplements, yyDollar[7].list}
@@ -5576,7 +5585,7 @@ yydefault:
}
case 294:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3143
+ // line internal/php7/php7.y:3152
{
if yyDollar[3].node != nil {
yyVAL.node = &ast.ExprNew{ast.Node{}, yyDollar[2].node, yyDollar[3].node.(*ast.ArgumentList)}
@@ -5593,7 +5602,7 @@ yydefault:
}
case 295:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:3158
+ // line internal/php7/php7.y:3167
{
yyVAL.node = &ast.ExprNew{ast.Node{}, yyDollar[2].node, nil}
@@ -5607,7 +5616,7 @@ yydefault:
}
case 296:
yyDollar = yyS[yypt-6 : yypt+1]
- // line internal/php7/php7.y:3173
+ // line internal/php7/php7.y:3182
{
listNode := &ast.ExprList{ast.Node{}, yyDollar[3].list}
yyVAL.node = &ast.ExprAssign{ast.Node{}, listNode, yyDollar[6].node}
@@ -5626,7 +5635,7 @@ yydefault:
}
case 297:
yyDollar = yyS[yypt-5 : yypt+1]
- // line internal/php7/php7.y:3190
+ // line internal/php7/php7.y:3199
{
shortList := &ast.ExprShortList{ast.Node{}, yyDollar[2].list}
yyVAL.node = &ast.ExprAssign{ast.Node{}, shortList, yyDollar[5].node}
@@ -5644,7 +5653,7 @@ yydefault:
}
case 298:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3206
+ // line internal/php7/php7.y:3215
{
yyVAL.node = &ast.ExprAssign{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -5659,7 +5668,7 @@ yydefault:
}
case 299:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:3219
+ // line internal/php7/php7.y:3228
{
yyVAL.node = &ast.ExprAssignReference{ast.Node{}, yyDollar[1].node, yyDollar[4].node}
@@ -5675,7 +5684,7 @@ yydefault:
}
case 300:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:3233
+ // line internal/php7/php7.y:3242
{
yyVAL.node = &ast.ExprClone{ast.Node{}, yyDollar[2].node}
@@ -5689,7 +5698,7 @@ yydefault:
}
case 301:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3245
+ // line internal/php7/php7.y:3254
{
yyVAL.node = &ast.ExprAssignPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -5704,7 +5713,7 @@ yydefault:
}
case 302:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3258
+ // line internal/php7/php7.y:3267
{
yyVAL.node = &ast.ExprAssignMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -5719,7 +5728,7 @@ yydefault:
}
case 303:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3271
+ // line internal/php7/php7.y:3280
{
yyVAL.node = &ast.ExprAssignMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -5734,7 +5743,7 @@ yydefault:
}
case 304:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3284
+ // line internal/php7/php7.y:3293
{
yyVAL.node = &ast.ExprAssignPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -5749,7 +5758,7 @@ yydefault:
}
case 305:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3297
+ // line internal/php7/php7.y:3306
{
yyVAL.node = &ast.ExprAssignDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -5764,7 +5773,7 @@ yydefault:
}
case 306:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3310
+ // line internal/php7/php7.y:3319
{
yyVAL.node = &ast.ExprAssignConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -5779,7 +5788,7 @@ yydefault:
}
case 307:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3323
+ // line internal/php7/php7.y:3332
{
yyVAL.node = &ast.ExprAssignMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -5794,7 +5803,7 @@ yydefault:
}
case 308:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3336
+ // line internal/php7/php7.y:3345
{
yyVAL.node = &ast.ExprAssignBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -5809,7 +5818,7 @@ yydefault:
}
case 309:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3349
+ // line internal/php7/php7.y:3358
{
yyVAL.node = &ast.ExprAssignBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -5824,7 +5833,7 @@ yydefault:
}
case 310:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3362
+ // line internal/php7/php7.y:3371
{
yyVAL.node = &ast.ExprAssignBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -5839,7 +5848,7 @@ yydefault:
}
case 311:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3375
+ // line internal/php7/php7.y:3384
{
yyVAL.node = &ast.ExprAssignShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -5854,7 +5863,7 @@ yydefault:
}
case 312:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3388
+ // line internal/php7/php7.y:3397
{
yyVAL.node = &ast.ExprAssignShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -5869,7 +5878,7 @@ yydefault:
}
case 313:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3401
+ // line internal/php7/php7.y:3410
{
yyVAL.node = &ast.ExprAssignCoalesce{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -5884,7 +5893,7 @@ yydefault:
}
case 314:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:3414
+ // line internal/php7/php7.y:3423
{
yyVAL.node = &ast.ExprPostInc{ast.Node{}, yyDollar[1].node}
@@ -5899,7 +5908,7 @@ yydefault:
}
case 315:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:3427
+ // line internal/php7/php7.y:3436
{
yyVAL.node = &ast.ExprPreInc{ast.Node{}, yyDollar[2].node}
@@ -5913,7 +5922,7 @@ yydefault:
}
case 316:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:3439
+ // line internal/php7/php7.y:3448
{
yyVAL.node = &ast.ExprPostDec{ast.Node{}, yyDollar[1].node}
@@ -5928,7 +5937,7 @@ yydefault:
}
case 317:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:3452
+ // line internal/php7/php7.y:3461
{
yyVAL.node = &ast.ExprPreDec{ast.Node{}, yyDollar[2].node}
@@ -5942,7 +5951,7 @@ yydefault:
}
case 318:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3464
+ // line internal/php7/php7.y:3473
{
yyVAL.node = &ast.ExprBinaryBooleanOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -5957,7 +5966,7 @@ yydefault:
}
case 319:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3477
+ // line internal/php7/php7.y:3486
{
yyVAL.node = &ast.ExprBinaryBooleanAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -5972,7 +5981,7 @@ yydefault:
}
case 320:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3490
+ // line internal/php7/php7.y:3499
{
yyVAL.node = &ast.ExprBinaryLogicalOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -5987,7 +5996,7 @@ yydefault:
}
case 321:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3503
+ // line internal/php7/php7.y:3512
{
yyVAL.node = &ast.ExprBinaryLogicalAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6002,7 +6011,7 @@ yydefault:
}
case 322:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3516
+ // line internal/php7/php7.y:3525
{
yyVAL.node = &ast.ExprBinaryLogicalXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6017,7 +6026,7 @@ yydefault:
}
case 323:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3529
+ // line internal/php7/php7.y:3538
{
yyVAL.node = &ast.ExprBinaryBitwiseOr{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6032,7 +6041,7 @@ yydefault:
}
case 324:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3542
+ // line internal/php7/php7.y:3551
{
yyVAL.node = &ast.ExprBinaryBitwiseAnd{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6047,7 +6056,7 @@ yydefault:
}
case 325:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3555
+ // line internal/php7/php7.y:3564
{
yyVAL.node = &ast.ExprBinaryBitwiseXor{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6062,7 +6071,7 @@ yydefault:
}
case 326:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3568
+ // line internal/php7/php7.y:3577
{
yyVAL.node = &ast.ExprBinaryConcat{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6077,7 +6086,7 @@ yydefault:
}
case 327:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3581
+ // line internal/php7/php7.y:3590
{
yyVAL.node = &ast.ExprBinaryPlus{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6092,7 +6101,7 @@ yydefault:
}
case 328:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3594
+ // line internal/php7/php7.y:3603
{
yyVAL.node = &ast.ExprBinaryMinus{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6107,7 +6116,7 @@ yydefault:
}
case 329:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3607
+ // line internal/php7/php7.y:3616
{
yyVAL.node = &ast.ExprBinaryMul{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6122,7 +6131,7 @@ yydefault:
}
case 330:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3620
+ // line internal/php7/php7.y:3629
{
yyVAL.node = &ast.ExprBinaryPow{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6137,7 +6146,7 @@ yydefault:
}
case 331:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3633
+ // line internal/php7/php7.y:3642
{
yyVAL.node = &ast.ExprBinaryDiv{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6152,7 +6161,7 @@ yydefault:
}
case 332:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3646
+ // line internal/php7/php7.y:3655
{
yyVAL.node = &ast.ExprBinaryMod{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6167,7 +6176,7 @@ yydefault:
}
case 333:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3659
+ // line internal/php7/php7.y:3668
{
yyVAL.node = &ast.ExprBinaryShiftLeft{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6182,7 +6191,7 @@ yydefault:
}
case 334:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3672
+ // line internal/php7/php7.y:3681
{
yyVAL.node = &ast.ExprBinaryShiftRight{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6197,7 +6206,7 @@ yydefault:
}
case 335:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:3685
+ // line internal/php7/php7.y:3694
{
yyVAL.node = &ast.ExprUnaryPlus{ast.Node{}, yyDollar[2].node}
@@ -6211,7 +6220,7 @@ yydefault:
}
case 336:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:3697
+ // line internal/php7/php7.y:3706
{
yyVAL.node = &ast.ExprUnaryMinus{ast.Node{}, yyDollar[2].node}
@@ -6225,7 +6234,7 @@ yydefault:
}
case 337:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:3709
+ // line internal/php7/php7.y:3718
{
yyVAL.node = &ast.ExprBooleanNot{ast.Node{}, yyDollar[2].node}
@@ -6239,7 +6248,7 @@ yydefault:
}
case 338:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:3721
+ // line internal/php7/php7.y:3730
{
yyVAL.node = &ast.ExprBitwiseNot{ast.Node{}, yyDollar[2].node}
@@ -6253,7 +6262,7 @@ yydefault:
}
case 339:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3733
+ // line internal/php7/php7.y:3742
{
yyVAL.node = &ast.ExprBinaryIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6268,7 +6277,7 @@ yydefault:
}
case 340:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3746
+ // line internal/php7/php7.y:3755
{
yyVAL.node = &ast.ExprBinaryNotIdentical{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6283,7 +6292,7 @@ yydefault:
}
case 341:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3759
+ // line internal/php7/php7.y:3768
{
yyVAL.node = &ast.ExprBinaryEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6298,7 +6307,7 @@ yydefault:
}
case 342:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3772
+ // line internal/php7/php7.y:3781
{
yyVAL.node = &ast.ExprBinaryNotEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6314,7 +6323,7 @@ yydefault:
}
case 343:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3786
+ // line internal/php7/php7.y:3795
{
yyVAL.node = &ast.ExprBinarySmaller{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6329,7 +6338,7 @@ yydefault:
}
case 344:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3799
+ // line internal/php7/php7.y:3808
{
yyVAL.node = &ast.ExprBinarySmallerOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6344,7 +6353,7 @@ yydefault:
}
case 345:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3812
+ // line internal/php7/php7.y:3821
{
yyVAL.node = &ast.ExprBinaryGreater{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6359,7 +6368,7 @@ yydefault:
}
case 346:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3825
+ // line internal/php7/php7.y:3834
{
yyVAL.node = &ast.ExprBinaryGreaterOrEqual{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6374,7 +6383,7 @@ yydefault:
}
case 347:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3838
+ // line internal/php7/php7.y:3847
{
yyVAL.node = &ast.ExprBinarySpaceship{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6389,7 +6398,7 @@ yydefault:
}
case 348:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3851
+ // line internal/php7/php7.y:3860
{
yyVAL.node = &ast.ExprInstanceOf{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6404,7 +6413,7 @@ yydefault:
}
case 349:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3864
+ // line internal/php7/php7.y:3873
{
yyVAL.node = yyDollar[2].node
@@ -6416,7 +6425,7 @@ yydefault:
}
case 350:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:3874
+ // line internal/php7/php7.y:3883
{
yyVAL.node = yyDollar[1].node
@@ -6424,7 +6433,7 @@ yydefault:
}
case 351:
yyDollar = yyS[yypt-5 : yypt+1]
- // line internal/php7/php7.y:3880
+ // line internal/php7/php7.y:3889
{
yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[5].node}
@@ -6440,7 +6449,7 @@ yydefault:
}
case 352:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:3894
+ // line internal/php7/php7.y:3903
{
yyVAL.node = &ast.ExprTernary{ast.Node{}, yyDollar[1].node, nil, yyDollar[4].node}
@@ -6456,7 +6465,7 @@ yydefault:
}
case 353:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:3908
+ // line internal/php7/php7.y:3917
{
yyVAL.node = &ast.ExprBinaryCoalesce{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -6471,7 +6480,7 @@ yydefault:
}
case 354:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:3921
+ // line internal/php7/php7.y:3930
{
yyVAL.node = yyDollar[1].node
@@ -6479,7 +6488,7 @@ yydefault:
}
case 355:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:3927
+ // line internal/php7/php7.y:3936
{
yyVAL.node = &ast.ExprCastInt{ast.Node{}, yyDollar[2].node}
@@ -6494,7 +6503,7 @@ yydefault:
}
case 356:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:3940
+ // line internal/php7/php7.y:3949
{
yyVAL.node = &ast.ExprCastDouble{ast.Node{}, yyDollar[2].node}
@@ -6509,7 +6518,7 @@ yydefault:
}
case 357:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:3953
+ // line internal/php7/php7.y:3962
{
yyVAL.node = &ast.ExprCastString{ast.Node{}, yyDollar[2].node}
@@ -6524,7 +6533,7 @@ yydefault:
}
case 358:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:3966
+ // line internal/php7/php7.y:3975
{
yyVAL.node = &ast.ExprCastArray{ast.Node{}, yyDollar[2].node}
@@ -6539,7 +6548,7 @@ yydefault:
}
case 359:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:3979
+ // line internal/php7/php7.y:3988
{
yyVAL.node = &ast.ExprCastObject{ast.Node{}, yyDollar[2].node}
@@ -6554,7 +6563,7 @@ yydefault:
}
case 360:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:3992
+ // line internal/php7/php7.y:4001
{
yyVAL.node = &ast.ExprCastBool{ast.Node{}, yyDollar[2].node}
@@ -6569,7 +6578,7 @@ yydefault:
}
case 361:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:4005
+ // line internal/php7/php7.y:4014
{
yyVAL.node = &ast.ExprCastUnset{ast.Node{}, yyDollar[2].node}
@@ -6584,7 +6593,7 @@ yydefault:
}
case 362:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:4018
+ // line internal/php7/php7.y:4027
{
var e *ast.ExprExit
if yyDollar[2].node != nil {
@@ -6613,7 +6622,7 @@ yydefault:
}
case 363:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:4045
+ // line internal/php7/php7.y:4054
{
yyVAL.node = &ast.ExprErrorSuppress{ast.Node{}, yyDollar[2].node}
@@ -6627,7 +6636,7 @@ yydefault:
}
case 364:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4057
+ // line internal/php7/php7.y:4066
{
yyVAL.node = yyDollar[1].node
@@ -6635,7 +6644,7 @@ yydefault:
}
case 365:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:4063
+ // line internal/php7/php7.y:4072
{
yyVAL.node = &ast.ExprShellExec{ast.Node{}, yyDollar[2].list}
@@ -6649,7 +6658,7 @@ yydefault:
}
case 366:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:4075
+ // line internal/php7/php7.y:4084
{
yyVAL.node = &ast.ExprPrint{ast.Node{}, yyDollar[2].node}
@@ -6663,7 +6672,7 @@ yydefault:
}
case 367:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4087
+ // line internal/php7/php7.y:4096
{
yyVAL.node = &ast.ExprYield{ast.Node{}, nil, nil}
@@ -6677,7 +6686,7 @@ yydefault:
}
case 368:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:4099
+ // line internal/php7/php7.y:4108
{
yyVAL.node = &ast.ExprYield{ast.Node{}, nil, yyDollar[2].node}
@@ -6691,7 +6700,7 @@ yydefault:
}
case 369:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:4111
+ // line internal/php7/php7.y:4120
{
yyVAL.node = &ast.ExprYield{ast.Node{}, yyDollar[2].node, yyDollar[4].node}
@@ -6706,7 +6715,7 @@ yydefault:
}
case 370:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:4124
+ // line internal/php7/php7.y:4133
{
yyVAL.node = &ast.ExprYieldFrom{ast.Node{}, yyDollar[2].node}
@@ -6720,7 +6729,7 @@ yydefault:
}
case 371:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4136
+ // line internal/php7/php7.y:4145
{
yyVAL.node = yyDollar[1].node
@@ -6728,7 +6737,7 @@ yydefault:
}
case 372:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:4142
+ // line internal/php7/php7.y:4151
{
yyVAL.node = yyDollar[2].node
@@ -6751,7 +6760,7 @@ yydefault:
}
case 373:
yyDollar = yyS[yypt-11 : yypt+1]
- // line internal/php7/php7.y:4165
+ // line internal/php7/php7.y:4174
{
yyVAL.node = &ast.ExprClosure{ast.Node{}, yyDollar[2].token != nil, false, yyDollar[5].list, yyDollar[7].ClosureUse, yyDollar[8].node, yyDollar[10].list}
@@ -6788,7 +6797,7 @@ yydefault:
}
case 374:
yyDollar = yyS[yypt-9 : yypt+1]
- // line internal/php7/php7.y:4197
+ // line internal/php7/php7.y:4206
{
yyVAL.node = &ast.ExprArrowFunction{ast.Node{}, yyDollar[2].token != nil, false, yyDollar[4].list, yyDollar[6].node, yyDollar[9].node}
@@ -6820,7 +6829,7 @@ yydefault:
}
case 375:
yyDollar = yyS[yypt-0 : yypt+1]
- // line internal/php7/php7.y:4228
+ // line internal/php7/php7.y:4237
{
yyVAL.str = yylex.(*Parser).Lexer.GetPhpDocComment()
yylex.(*Parser).Lexer.SetPhpDocComment("")
@@ -6829,19 +6838,19 @@ yydefault:
}
case 376:
yyDollar = yyS[yypt-0 : yypt+1]
- // line internal/php7/php7.y:4238
+ // line internal/php7/php7.y:4247
{
yyVAL.token = nil
}
case 377:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4242
+ // line internal/php7/php7.y:4251
{
yyVAL.token = yyDollar[1].token
}
case 378:
yyDollar = yyS[yypt-0 : yypt+1]
- // line internal/php7/php7.y:4249
+ // line internal/php7/php7.y:4258
{
yyVAL.ClosureUse = nil
@@ -6849,7 +6858,7 @@ yydefault:
}
case 379:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:4255
+ // line internal/php7/php7.y:4264
{
yyVAL.ClosureUse = &ast.ExprClosureUse{ast.Node{}, yyDollar[3].list}
@@ -6865,7 +6874,7 @@ yydefault:
}
case 380:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:4272
+ // line internal/php7/php7.y:4281
{
yyVAL.list = append(yyDollar[1].list, yyDollar[3].node)
@@ -6876,7 +6885,7 @@ yydefault:
}
case 381:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4281
+ // line internal/php7/php7.y:4290
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
@@ -6884,7 +6893,7 @@ yydefault:
}
case 382:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4290
+ // line internal/php7/php7.y:4299
{
identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[1].token.Value, isDollar)}
yyVAL.node = &ast.ExprVariable{ast.Node{}, identifier}
@@ -6895,12 +6904,13 @@ yydefault:
// save comments
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.Tokens)
+ yylex.(*Parser).addDollarToken(yyVAL.node)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
case 383:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:4304
+ // line internal/php7/php7.y:4314
{
identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[2].token.Value, isDollar)}
variable := &ast.ExprVariable{ast.Node{}, identifier}
@@ -6914,12 +6924,13 @@ yydefault:
// save comments
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.Tokens)
yylex.(*Parser).setFreeFloating(variable, token.Start, yyDollar[2].token.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
case 384:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:4324
+ // line internal/php7/php7.y:4335
{
yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, yyDollar[1].node, yyDollar[2].node.(*ast.ArgumentList)}
@@ -6933,7 +6944,7 @@ yydefault:
}
case 385:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:4336
+ // line internal/php7/php7.y:4347
{
yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)}
@@ -6948,7 +6959,7 @@ yydefault:
}
case 386:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:4349
+ // line internal/php7/php7.y:4360
{
yyVAL.node = &ast.ExprStaticCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)}
@@ -6963,7 +6974,7 @@ yydefault:
}
case 387:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:4362
+ // line internal/php7/php7.y:4373
{
yyVAL.node = &ast.ExprFunctionCall{ast.Node{}, yyDollar[1].node, yyDollar[2].node.(*ast.ArgumentList)}
@@ -6977,7 +6988,7 @@ yydefault:
}
case 388:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4377
+ // line internal/php7/php7.y:4388
{
yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value}
@@ -6991,7 +7002,7 @@ yydefault:
}
case 389:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4389
+ // line internal/php7/php7.y:4400
{
yyVAL.node = yyDollar[1].node
@@ -6999,7 +7010,7 @@ yydefault:
}
case 390:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4398
+ // line internal/php7/php7.y:4409
{
yyVAL.node = yyDollar[1].node
@@ -7007,7 +7018,7 @@ yydefault:
}
case 391:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4404
+ // line internal/php7/php7.y:4415
{
yyVAL.node = yyDollar[1].node
@@ -7015,7 +7026,7 @@ yydefault:
}
case 392:
yyDollar = yyS[yypt-0 : yypt+1]
- // line internal/php7/php7.y:4413
+ // line internal/php7/php7.y:4424
{
yyVAL.node = nil
@@ -7023,7 +7034,7 @@ yydefault:
}
case 393:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:4419
+ // line internal/php7/php7.y:4430
{
yyVAL.node = &ast.ExprExit{ast.Node{}, false, yyDollar[2].node}
@@ -7038,7 +7049,7 @@ yydefault:
}
case 394:
yyDollar = yyS[yypt-0 : yypt+1]
- // line internal/php7/php7.y:4435
+ // line internal/php7/php7.y:4446
{
yyVAL.list = []ast.Vertex{}
@@ -7046,7 +7057,7 @@ yydefault:
}
case 395:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4441
+ // line internal/php7/php7.y:4452
{
part := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[1].token.Value}
yyVAL.list = []ast.Vertex{part}
@@ -7058,7 +7069,7 @@ yydefault:
}
case 396:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4451
+ // line internal/php7/php7.y:4462
{
yyVAL.list = yyDollar[1].list
@@ -7066,7 +7077,7 @@ yydefault:
}
case 397:
yyDollar = yyS[yypt-0 : yypt+1]
- // line internal/php7/php7.y:4460
+ // line internal/php7/php7.y:4471
{
yyVAL.node = nil
@@ -7074,7 +7085,7 @@ yydefault:
}
case 398:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4466
+ // line internal/php7/php7.y:4477
{
yyVAL.node = yyDollar[1].node
@@ -7082,7 +7093,7 @@ yydefault:
}
case 399:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:4475
+ // line internal/php7/php7.y:4486
{
yyVAL.node = &ast.ExprArray{ast.Node{}, yyDollar[3].list}
@@ -7098,7 +7109,7 @@ yydefault:
}
case 400:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:4489
+ // line internal/php7/php7.y:4500
{
yyVAL.node = &ast.ExprShortArray{ast.Node{}, yyDollar[2].list}
@@ -7113,7 +7124,7 @@ yydefault:
}
case 401:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4502
+ // line internal/php7/php7.y:4513
{
yyVAL.node = &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value}
@@ -7127,7 +7138,7 @@ yydefault:
}
case 402:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4517
+ // line internal/php7/php7.y:4528
{
yyVAL.node = &ast.ScalarLnumber{ast.Node{}, yyDollar[1].token.Value}
@@ -7141,7 +7152,7 @@ yydefault:
}
case 403:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4529
+ // line internal/php7/php7.y:4540
{
yyVAL.node = &ast.ScalarDnumber{ast.Node{}, yyDollar[1].token.Value}
@@ -7155,7 +7166,7 @@ yydefault:
}
case 404:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4541
+ // line internal/php7/php7.y:4552
{
yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value}
@@ -7169,7 +7180,7 @@ yydefault:
}
case 405:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4553
+ // line internal/php7/php7.y:4564
{
yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value}
@@ -7183,7 +7194,7 @@ yydefault:
}
case 406:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4565
+ // line internal/php7/php7.y:4576
{
yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value}
@@ -7197,7 +7208,7 @@ yydefault:
}
case 407:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4577
+ // line internal/php7/php7.y:4588
{
yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value}
@@ -7211,7 +7222,7 @@ yydefault:
}
case 408:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4589
+ // line internal/php7/php7.y:4600
{
yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value}
@@ -7225,7 +7236,7 @@ yydefault:
}
case 409:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4601
+ // line internal/php7/php7.y:4612
{
yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value}
@@ -7239,7 +7250,7 @@ yydefault:
}
case 410:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4613
+ // line internal/php7/php7.y:4624
{
yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value}
@@ -7253,7 +7264,7 @@ yydefault:
}
case 411:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4625
+ // line internal/php7/php7.y:4636
{
yyVAL.node = &ast.ScalarMagicConstant{ast.Node{}, yyDollar[1].token.Value}
@@ -7267,7 +7278,7 @@ yydefault:
}
case 412:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:4637
+ // line internal/php7/php7.y:4648
{
encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[2].token.Value}
yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, []ast.Vertex{encapsed}}
@@ -7283,7 +7294,7 @@ yydefault:
}
case 413:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:4651
+ // line internal/php7/php7.y:4662
{
yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, nil}
@@ -7297,7 +7308,7 @@ yydefault:
}
case 414:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:4663
+ // line internal/php7/php7.y:4674
{
yyVAL.node = &ast.ScalarEncapsed{ast.Node{}, yyDollar[2].list}
@@ -7311,7 +7322,7 @@ yydefault:
}
case 415:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:4675
+ // line internal/php7/php7.y:4686
{
yyVAL.node = &ast.ScalarHeredoc{ast.Node{}, yyDollar[1].token.Value, yyDollar[2].list}
@@ -7325,7 +7336,7 @@ yydefault:
}
case 416:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4687
+ // line internal/php7/php7.y:4698
{
yyVAL.node = yyDollar[1].node
@@ -7333,7 +7344,7 @@ yydefault:
}
case 417:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4693
+ // line internal/php7/php7.y:4704
{
yyVAL.node = yyDollar[1].node
@@ -7341,7 +7352,7 @@ yydefault:
}
case 418:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4702
+ // line internal/php7/php7.y:4713
{
yyVAL.node = &ast.ExprConstFetch{ast.Node{}, yyDollar[1].node}
@@ -7355,7 +7366,7 @@ yydefault:
}
case 419:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:4714
+ // line internal/php7/php7.y:4725
{
target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value}
yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target}
@@ -7373,7 +7384,7 @@ yydefault:
}
case 420:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:4730
+ // line internal/php7/php7.y:4741
{
target := &ast.Identifier{ast.Node{}, yyDollar[3].token.Value}
yyVAL.node = &ast.ExprClassConstFetch{ast.Node{}, yyDollar[1].node, target}
@@ -7391,7 +7402,7 @@ yydefault:
}
case 421:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4749
+ // line internal/php7/php7.y:4760
{
yyVAL.node = yyDollar[1].node
@@ -7399,7 +7410,7 @@ yydefault:
}
case 422:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4755
+ // line internal/php7/php7.y:4766
{
yyVAL.node = yyDollar[1].node
@@ -7407,7 +7418,7 @@ yydefault:
}
case 423:
yyDollar = yyS[yypt-0 : yypt+1]
- // line internal/php7/php7.y:4764
+ // line internal/php7/php7.y:4775
{
yyVAL.node = nil
@@ -7415,7 +7426,7 @@ yydefault:
}
case 424:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4770
+ // line internal/php7/php7.y:4781
{
yyVAL.node = yyDollar[1].node
@@ -7423,7 +7434,7 @@ yydefault:
}
case 425:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4779
+ // line internal/php7/php7.y:4790
{
yyVAL.node = yyDollar[1].node
@@ -7431,7 +7442,7 @@ yydefault:
}
case 426:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4788
+ // line internal/php7/php7.y:4799
{
yyVAL.node = yyDollar[1].node
@@ -7439,7 +7450,7 @@ yydefault:
}
case 427:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:4794
+ // line internal/php7/php7.y:4805
{
yyVAL.node = yyDollar[2].node
@@ -7451,7 +7462,7 @@ yydefault:
}
case 428:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4804
+ // line internal/php7/php7.y:4815
{
yyVAL.node = yyDollar[1].node
@@ -7459,7 +7470,7 @@ yydefault:
}
case 429:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4813
+ // line internal/php7/php7.y:4824
{
yyVAL.node = yyDollar[1].node
@@ -7467,7 +7478,7 @@ yydefault:
}
case 430:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:4819
+ // line internal/php7/php7.y:4830
{
yyVAL.node = yyDollar[2].node
@@ -7479,7 +7490,7 @@ yydefault:
}
case 431:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4829
+ // line internal/php7/php7.y:4840
{
yyVAL.node = yyDollar[1].node
@@ -7487,7 +7498,7 @@ yydefault:
}
case 432:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4838
+ // line internal/php7/php7.y:4849
{
yyVAL.node = yyDollar[1].node
@@ -7495,7 +7506,7 @@ yydefault:
}
case 433:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:4844
+ // line internal/php7/php7.y:4855
{
yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -7511,7 +7522,7 @@ yydefault:
}
case 434:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:4858
+ // line internal/php7/php7.y:4869
{
yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -7527,7 +7538,7 @@ yydefault:
}
case 435:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:4872
+ // line internal/php7/php7.y:4883
{
yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -7543,7 +7554,7 @@ yydefault:
}
case 436:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:4886
+ // line internal/php7/php7.y:4897
{
yyVAL.node = &ast.ExprMethodCall{ast.Node{}, yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*ast.ArgumentList)}
@@ -7558,7 +7569,7 @@ yydefault:
}
case 437:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4899
+ // line internal/php7/php7.y:4910
{
yyVAL.node = yyDollar[1].node
@@ -7566,7 +7577,7 @@ yydefault:
}
case 438:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4908
+ // line internal/php7/php7.y:4919
{
yyVAL.node = yyDollar[1].node
@@ -7574,7 +7585,7 @@ yydefault:
}
case 439:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4914
+ // line internal/php7/php7.y:4925
{
yyVAL.node = yyDollar[1].node
@@ -7582,7 +7593,7 @@ yydefault:
}
case 440:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:4920
+ // line internal/php7/php7.y:4931
{
yyVAL.node = &ast.ExprPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -7597,7 +7608,7 @@ yydefault:
}
case 441:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:4936
+ // line internal/php7/php7.y:4947
{
name := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[1].token.Value, isDollar)}
yyVAL.node = &ast.ExprVariable{ast.Node{}, name}
@@ -7608,12 +7619,13 @@ yydefault:
// save comments
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.Tokens)
+ yylex.(*Parser).addDollarToken(yyVAL.node)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
case 442:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:4950
+ // line internal/php7/php7.y:4962
{
yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[3].node}
@@ -7630,7 +7642,7 @@ yydefault:
}
case 443:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:4965
+ // line internal/php7/php7.y:4977
{
yyVAL.node = &ast.ExprVariable{ast.Node{}, yyDollar[2].node}
@@ -7645,7 +7657,7 @@ yydefault:
}
case 444:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:4981
+ // line internal/php7/php7.y:4993
{
yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -7660,7 +7672,7 @@ yydefault:
}
case 445:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:4994
+ // line internal/php7/php7.y:5006
{
yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -7675,7 +7687,7 @@ yydefault:
}
case 446:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:5010
+ // line internal/php7/php7.y:5022
{
yyVAL.node = yyDollar[1].node
@@ -7683,7 +7695,7 @@ yydefault:
}
case 447:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:5016
+ // line internal/php7/php7.y:5028
{
yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -7699,7 +7711,7 @@ yydefault:
}
case 448:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:5030
+ // line internal/php7/php7.y:5042
{
yyVAL.node = &ast.ExprArrayDimFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -7715,7 +7727,7 @@ yydefault:
}
case 449:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:5044
+ // line internal/php7/php7.y:5056
{
yyVAL.node = &ast.ExprPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -7730,7 +7742,7 @@ yydefault:
}
case 450:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:5057
+ // line internal/php7/php7.y:5069
{
yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -7745,7 +7757,7 @@ yydefault:
}
case 451:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:5070
+ // line internal/php7/php7.y:5082
{
yyVAL.node = &ast.ExprStaticPropertyFetch{ast.Node{}, yyDollar[1].node, yyDollar[3].node}
@@ -7760,7 +7772,7 @@ yydefault:
}
case 452:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:5086
+ // line internal/php7/php7.y:5098
{
yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value}
@@ -7774,7 +7786,7 @@ yydefault:
}
case 453:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:5098
+ // line internal/php7/php7.y:5110
{
yyVAL.node = yyDollar[2].node
@@ -7786,7 +7798,7 @@ yydefault:
}
case 454:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:5108
+ // line internal/php7/php7.y:5120
{
yyVAL.node = yyDollar[1].node
@@ -7794,7 +7806,7 @@ yydefault:
}
case 455:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:5117
+ // line internal/php7/php7.y:5129
{
yyVAL.node = &ast.Identifier{ast.Node{}, yyDollar[1].token.Value}
@@ -7808,7 +7820,7 @@ yydefault:
}
case 456:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:5129
+ // line internal/php7/php7.y:5141
{
yyVAL.node = yyDollar[2].node
@@ -7820,7 +7832,7 @@ yydefault:
}
case 457:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:5139
+ // line internal/php7/php7.y:5151
{
yyVAL.node = yyDollar[1].node
@@ -7828,7 +7840,7 @@ yydefault:
}
case 458:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:5148
+ // line internal/php7/php7.y:5160
{
yyVAL.list = yyDollar[1].list
@@ -7836,7 +7848,7 @@ yydefault:
}
case 459:
yyDollar = yyS[yypt-0 : yypt+1]
- // line internal/php7/php7.y:5157
+ // line internal/php7/php7.y:5169
{
yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, nil}
@@ -7844,7 +7856,7 @@ yydefault:
}
case 460:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:5163
+ // line internal/php7/php7.y:5175
{
yyVAL.node = yyDollar[1].node
@@ -7852,7 +7864,7 @@ yydefault:
}
case 461:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:5172
+ // line internal/php7/php7.y:5184
{
if len(yyDollar[1].list) == 0 {
yyDollar[1].list = []ast.Vertex{&ast.ExprArrayItem{ast.Node{}, false, nil, nil}}
@@ -7867,7 +7879,7 @@ yydefault:
}
case 462:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:5185
+ // line internal/php7/php7.y:5197
{
if yyDollar[1].node.(*ast.ExprArrayItem).Key == nil && yyDollar[1].node.(*ast.ExprArrayItem).Val == nil {
yyVAL.list = []ast.Vertex{}
@@ -7879,7 +7891,7 @@ yydefault:
}
case 463:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:5198
+ // line internal/php7/php7.y:5210
{
yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, yyDollar[3].node}
@@ -7894,7 +7906,7 @@ yydefault:
}
case 464:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:5211
+ // line internal/php7/php7.y:5223
{
yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, yyDollar[1].node}
@@ -7908,7 +7920,7 @@ yydefault:
}
case 465:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:5223
+ // line internal/php7/php7.y:5235
{
reference := &ast.ExprReference{ast.Node{}, yyDollar[4].node}
yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, yyDollar[1].node, reference}
@@ -7926,7 +7938,7 @@ yydefault:
}
case 466:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:5239
+ // line internal/php7/php7.y:5251
{
reference := &ast.ExprReference{ast.Node{}, yyDollar[2].node}
yyVAL.node = &ast.ExprArrayItem{ast.Node{}, false, nil, reference}
@@ -7942,7 +7954,7 @@ yydefault:
}
case 467:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:5253
+ // line internal/php7/php7.y:5265
{
yyVAL.node = &ast.ExprArrayItem{ast.Node{}, true, nil, yyDollar[2].node}
@@ -7956,7 +7968,7 @@ yydefault:
}
case 468:
yyDollar = yyS[yypt-6 : yypt+1]
- // line internal/php7/php7.y:5265
+ // line internal/php7/php7.y:5277
{
// TODO: Cannot use list() as standalone expression
listNode := &ast.ExprList{ast.Node{}, yyDollar[5].list}
@@ -7977,7 +7989,7 @@ yydefault:
}
case 469:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:5284
+ // line internal/php7/php7.y:5296
{
// TODO: Cannot use list() as standalone expression
listNode := &ast.ExprList{ast.Node{}, yyDollar[3].list}
@@ -7996,7 +8008,7 @@ yydefault:
}
case 470:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:5304
+ // line internal/php7/php7.y:5316
{
yyVAL.list = append(yyDollar[1].list, yyDollar[2].node)
@@ -8004,7 +8016,7 @@ yydefault:
}
case 471:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:5310
+ // line internal/php7/php7.y:5322
{
encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[2].token.Value}
yyVAL.list = append(yyDollar[1].list, encapsed)
@@ -8019,7 +8031,7 @@ yydefault:
}
case 472:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:5323
+ // line internal/php7/php7.y:5335
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
@@ -8027,7 +8039,7 @@ yydefault:
}
case 473:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:5329
+ // line internal/php7/php7.y:5341
{
encapsed := &ast.ScalarEncapsedStringPart{ast.Node{}, yyDollar[1].token.Value}
yyVAL.list = []ast.Vertex{encapsed, yyDollar[2].node}
@@ -8042,7 +8054,7 @@ yydefault:
}
case 474:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:5345
+ // line internal/php7/php7.y:5357
{
name := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[1].token.Value, isDollar)}
yyVAL.node = &ast.ExprVariable{ast.Node{}, name}
@@ -8053,12 +8065,13 @@ yydefault:
// save comments
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.Tokens)
+ yylex.(*Parser).addDollarToken(yyVAL.node)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
case 475:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:5359
+ // line internal/php7/php7.y:5372
{
identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[1].token.Value, isDollar)}
variable := &ast.ExprVariable{ast.Node{}, identifier}
@@ -8070,6 +8083,7 @@ yydefault:
yyVAL.node.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)
// save comments
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Var, append(yyDollar[2].token.Tokens, yylex.(*Parser).GetFreeFloatingToken(yyDollar[2].token)...))
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Expr, append(yyDollar[4].token.Tokens, yylex.(*Parser).GetFreeFloatingToken(yyDollar[4].token)...))
@@ -8077,7 +8091,7 @@ yydefault:
}
case 476:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:5376
+ // line internal/php7/php7.y:5390
{
identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[1].token.Value, isDollar)}
variable := &ast.ExprVariable{ast.Node{}, identifier}
@@ -8091,6 +8105,7 @@ yydefault:
yyVAL.node.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)
// save comments
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Var, yyDollar[2].token.Tokens)
yylex.(*Parser).setFreeFloating(fetch, token.Start, yyDollar[3].token.Tokens)
@@ -8098,7 +8113,7 @@ yydefault:
}
case 477:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:5395
+ // line internal/php7/php7.y:5410
{
variable := &ast.ExprVariable{ast.Node{}, yyDollar[2].node}
@@ -8115,7 +8130,7 @@ yydefault:
}
case 478:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:5410
+ // line internal/php7/php7.y:5425
{
name := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value}
variable := &ast.ExprVariable{ast.Node{}, name}
@@ -8134,7 +8149,7 @@ yydefault:
}
case 479:
yyDollar = yyS[yypt-6 : yypt+1]
- // line internal/php7/php7.y:5427
+ // line internal/php7/php7.y:5442
{
identifier := &ast.Identifier{ast.Node{}, yyDollar[2].token.Value}
variable := &ast.ExprVariable{ast.Node{}, identifier}
@@ -8155,7 +8170,7 @@ yydefault:
}
case 480:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:5446
+ // line internal/php7/php7.y:5461
{
yyVAL.node = yyDollar[2].node
@@ -8167,7 +8182,7 @@ yydefault:
}
case 481:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:5459
+ // line internal/php7/php7.y:5474
{
yyVAL.node = &ast.ScalarString{ast.Node{}, yyDollar[1].token.Value}
@@ -8181,7 +8196,7 @@ yydefault:
}
case 482:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:5471
+ // line internal/php7/php7.y:5486
{
// TODO: add option to handle 64 bit integer
if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil {
@@ -8200,7 +8215,7 @@ yydefault:
}
case 483:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:5488
+ // line internal/php7/php7.y:5503
{
var lnumber *ast.ScalarLnumber
// TODO: add option to handle 64 bit integer
@@ -8228,7 +8243,7 @@ yydefault:
}
case 484:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:5514
+ // line internal/php7/php7.y:5529
{
identifier := &ast.Identifier{ast.Node{}, bytes.TrimLeftFunc(yyDollar[1].token.Value, isDollar)}
yyVAL.node = &ast.ExprVariable{ast.Node{}, identifier}
@@ -8239,12 +8254,13 @@ yydefault:
// save comments
yylex.(*Parser).setFreeFloating(yyVAL.node, token.Start, yyDollar[1].token.Tokens)
+ yylex.(*Parser).addDollarToken(yyVAL.node)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
case 485:
yyDollar = yyS[yypt-5 : yypt+1]
- // line internal/php7/php7.y:5531
+ // line internal/php7/php7.y:5547
{
yyVAL.node = &ast.ExprIsset{ast.Node{}, yyDollar[3].list}
@@ -8264,7 +8280,7 @@ yydefault:
}
case 486:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:5549
+ // line internal/php7/php7.y:5565
{
yyVAL.node = &ast.ExprEmpty{ast.Node{}, yyDollar[3].node}
@@ -8280,7 +8296,7 @@ yydefault:
}
case 487:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:5563
+ // line internal/php7/php7.y:5579
{
yyVAL.node = &ast.ExprInclude{ast.Node{}, yyDollar[2].node}
@@ -8294,7 +8310,7 @@ yydefault:
}
case 488:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:5575
+ // line internal/php7/php7.y:5591
{
yyVAL.node = &ast.ExprIncludeOnce{ast.Node{}, yyDollar[2].node}
@@ -8308,7 +8324,7 @@ yydefault:
}
case 489:
yyDollar = yyS[yypt-4 : yypt+1]
- // line internal/php7/php7.y:5587
+ // line internal/php7/php7.y:5603
{
yyVAL.node = &ast.ExprEval{ast.Node{}, yyDollar[3].node}
@@ -8324,7 +8340,7 @@ yydefault:
}
case 490:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:5601
+ // line internal/php7/php7.y:5617
{
yyVAL.node = &ast.ExprRequire{ast.Node{}, yyDollar[2].node}
@@ -8338,7 +8354,7 @@ yydefault:
}
case 491:
yyDollar = yyS[yypt-2 : yypt+1]
- // line internal/php7/php7.y:5613
+ // line internal/php7/php7.y:5629
{
yyVAL.node = &ast.ExprRequireOnce{ast.Node{}, yyDollar[2].node}
@@ -8352,7 +8368,7 @@ yydefault:
}
case 492:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:5628
+ // line internal/php7/php7.y:5644
{
yyVAL.list = []ast.Vertex{yyDollar[1].node}
@@ -8360,7 +8376,7 @@ yydefault:
}
case 493:
yyDollar = yyS[yypt-3 : yypt+1]
- // line internal/php7/php7.y:5634
+ // line internal/php7/php7.y:5650
{
yyVAL.list = append(yyDollar[1].list, yyDollar[3].node)
@@ -8371,7 +8387,7 @@ yydefault:
}
case 494:
yyDollar = yyS[yypt-1 : yypt+1]
- // line internal/php7/php7.y:5646
+ // line internal/php7/php7.y:5662
{
yyVAL.node = yyDollar[1].node
diff --git a/internal/php7/php7.y b/internal/php7/php7.y
index 9f08fa4..cd147ff 100644
--- a/internal/php7/php7.y
+++ b/internal/php7/php7.y
@@ -1368,6 +1368,7 @@ catch_list:
yylex.(*Parser).setFreeFloating(catch, token.Start, $2.Tokens)
yylex.(*Parser).setFreeFloating(catch, token.Catch, $3.Tokens)
yylex.(*Parser).setFreeFloating(variable, token.Start, $5.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating(catch, token.Var, $6.Tokens)
yylex.(*Parser).setFreeFloating(catch, token.Cond, $7.Tokens)
yylex.(*Parser).setFreeFloating(catch, token.Stmts, $9.Tokens)
@@ -2172,6 +2173,8 @@ parameter:
}
yylex.(*Parser).setFreeFloating($$, token.Variadic, $4.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
+
// normalize
if $3 == nil {
yylex.(*Parser).setFreeFloating($$, token.Ampersand, $$.GetNode().Tokens[token.Variadic]); delete($$.GetNode().Tokens, token.Variadic)
@@ -2217,6 +2220,8 @@ parameter:
yylex.(*Parser).setFreeFloating($$, token.Variadic, $4.Tokens)
yylex.(*Parser).setFreeFloating($$, token.Var, $5.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
+
// normalize
if $3 == nil {
yylex.(*Parser).setFreeFloating($$, token.Ampersand, $$.GetNode().Tokens[token.Variadic]); delete($$.GetNode().Tokens, token.Variadic)
@@ -2456,6 +2461,7 @@ static_var:
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
@@ -2472,6 +2478,7 @@ static_var:
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating($$, token.Var, $2.Tokens)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
@@ -2981,6 +2988,7 @@ property:
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
@@ -2997,6 +3005,7 @@ property:
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating($$, token.Var, $2.Tokens)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
@@ -4297,6 +4306,7 @@ lexical_var:
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens)
+ yylex.(*Parser).addDollarToken($$)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
@@ -4314,6 +4324,7 @@ lexical_var:
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens)
yylex.(*Parser).setFreeFloating(variable, token.Start, $2.Tokens)
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
@@ -4943,6 +4954,7 @@ simple_variable:
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens)
+ yylex.(*Parser).addDollarToken($$)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
@@ -5352,6 +5364,7 @@ encaps_var:
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens)
+ yylex.(*Parser).addDollarToken($$)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
@@ -5367,6 +5380,7 @@ encaps_var:
$$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)
// save comments
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating($$, token.Var, append($2.Tokens, yylex.(*Parser).GetFreeFloatingToken($2)...))
yylex.(*Parser).setFreeFloating($$, token.Expr, append($4.Tokens, yylex.(*Parser).GetFreeFloatingToken($4)...))
@@ -5386,6 +5400,7 @@ encaps_var:
$$.GetNode().Position = yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)
// save comments
+ yylex.(*Parser).addDollarToken(variable)
yylex.(*Parser).setFreeFloating($$, token.Var, $2.Tokens)
yylex.(*Parser).setFreeFloating(fetch, token.Start, $3.Tokens)
@@ -5521,6 +5536,7 @@ encaps_var_offset:
// save comments
yylex.(*Parser).setFreeFloating($$, token.Start, $1.Tokens)
+ yylex.(*Parser).addDollarToken($$)
yylex.(*Parser).returnTokenToPool(yyDollar, &yyVAL)
}
diff --git a/internal/scanner/scanner.go b/internal/scanner/scanner.go
index 3764cec..0d411e1 100644
--- a/internal/scanner/scanner.go
+++ b/internal/scanner/scanner.go
@@ -22867,6 +22867,7 @@ func (lex *Lexer) Lex(lval Lval) int {
token.Tokens = lex.Tokens
token.Value = lex.data[lex.ts:lex.te]
+ token.ID = tok
lval.Token(token)
diff --git a/internal/scanner/scanner.rl b/internal/scanner/scanner.rl
index 5eec481..d9195f2 100644
--- a/internal/scanner/scanner.rl
+++ b/internal/scanner/scanner.rl
@@ -510,6 +510,7 @@ func (lex *Lexer) Lex(lval Lval) int {
token.Tokens = lex.Tokens
token.Value = lex.data[lex.ts:lex.te]
+ token.ID = tok
lval.Token(token)
diff --git a/internal/scanner/token.go b/internal/scanner/token.go
index d45a12e..7c07126 100644
--- a/internal/scanner/token.go
+++ b/internal/scanner/token.go
@@ -6,6 +6,7 @@ import (
// Token value returned by lexer
type Token struct {
+ ID TokenID
Value []byte
Tokens []token.Token
StartLine int
diff --git a/pkg/ast/visitor/namespace_resolver.go b/pkg/ast/visitor/namespace_resolver.go
index f79378c..3029c5c 100644
--- a/pkg/ast/visitor/namespace_resolver.go
+++ b/pkg/ast/visitor/namespace_resolver.go
@@ -27,7 +27,7 @@ func NewNamespaceResolver() *NamespaceResolver {
func (nsr *NamespaceResolver) EnterNode(n ast.Vertex) bool {
n.Accept(nsr)
-
+
if !nsr.goDeep {
nsr.goDeep = true
return false
@@ -54,7 +54,7 @@ func (nsr *NamespaceResolver) StmtUseList(n *ast.StmtUseList) {
for _, nn := range n.Uses {
nsr.AddAlias(useType, nn, nil)
}
-
+
nsr.goDeep = false
}
diff --git a/pkg/ast/visitor/namespace_resolver_test.go b/pkg/ast/visitor/namespace_resolver_test.go
index 61ed537..607aa9e 100644
--- a/pkg/ast/visitor/namespace_resolver_test.go
+++ b/pkg/ast/visitor/namespace_resolver_test.go
@@ -194,8 +194,8 @@ func TestResolveInstanceCatch(t *testing.T) {
nameBC,
nameF,
},
- Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("foo")}},
- Stmts: []ast.Vertex{},
+ Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("foo")}},
+ Stmts: []ast.Vertex{},
},
},
},
@@ -407,7 +407,7 @@ func TestResolveClassName(t *testing.T) {
nameBC := &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("B")}, &ast.NameNamePart{Value: []byte("C")}}}
class := &ast.StmtClass{
- ClassName: &ast.Identifier{Value: []byte("A")},
+ ClassName: &ast.Identifier{Value: []byte("A")},
Extends: &ast.StmtClassExtends{
ClassName: nameAB,
},
@@ -472,8 +472,8 @@ func TestResolveInterfaceName(t *testing.T) {
func TestResolveTraitName(t *testing.T) {
traitNode := &ast.StmtTrait{
- TraitName: &ast.Identifier{Value: []byte("A")},
- Stmts: []ast.Vertex{},
+ TraitName: &ast.Identifier{Value: []byte("A")},
+ Stmts: []ast.Vertex{},
}
stxTree := &ast.StmtStmtList{
@@ -498,14 +498,14 @@ func TestResolveFunctionName(t *testing.T) {
nameBC := &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("B")}, &ast.NameNamePart{Value: []byte("C")}}}
functionNode := &ast.StmtFunction{
- ReturnsRef: false,
- FunctionName: &ast.Identifier{Value: []byte("A")},
+ ReturnsRef: false,
+ FunctionName: &ast.Identifier{Value: []byte("A")},
Params: []ast.Vertex{
&ast.Parameter{
- ByRef: false,
- Variadic: false,
- Type: nameAB,
- Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("foo")}},
+ ByRef: false,
+ Variadic: false,
+ Type: nameAB,
+ Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("foo")}},
},
},
ReturnType: &ast.Nullable{Expr: nameBC},
@@ -536,14 +536,14 @@ func TestResolveMethodName(t *testing.T) {
nameBC := &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("B")}, &ast.NameNamePart{Value: []byte("C")}}}
methodNode := &ast.StmtClassMethod{
- ReturnsRef: false,
- MethodName: &ast.Identifier{Value: []byte("A")},
+ ReturnsRef: false,
+ MethodName: &ast.Identifier{Value: []byte("A")},
Params: []ast.Vertex{
&ast.Parameter{
- ByRef: false,
- Variadic: false,
- Type: nameAB,
- Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("foo")}},
+ ByRef: false,
+ Variadic: false,
+ Type: nameAB,
+ Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("foo")}},
},
},
ReturnType: &ast.Nullable{Expr: nameBC},
@@ -569,14 +569,14 @@ func TestResolveClosureName(t *testing.T) {
nameBC := &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("B")}, &ast.NameNamePart{Value: []byte("C")}}}
closureNode := &ast.ExprClosure{
- ReturnsRef: false,
- Static: false,
+ ReturnsRef: false,
+ Static: false,
Params: []ast.Vertex{
&ast.Parameter{
- ByRef: false,
- Variadic: false,
- Type: nameAB,
- Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("foo")}},
+ ByRef: false,
+ Variadic: false,
+ Type: nameAB,
+ Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("foo")}},
},
},
ClosureUse: nil,
@@ -600,12 +600,12 @@ func TestResolveConstantsName(t *testing.T) {
nameAB := &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("A")}, &ast.NameNamePart{Value: []byte("B")}}}
constantB := &ast.StmtConstant{
- ConstantName: &ast.Identifier{Value: []byte("B")},
- Expr: &ast.ScalarLnumber{Value: []byte("1")},
+ ConstantName: &ast.Identifier{Value: []byte("B")},
+ Expr: &ast.ScalarLnumber{Value: []byte("1")},
}
constantC := &ast.StmtConstant{
- ConstantName: &ast.Identifier{Value: []byte("C")},
- Expr: &ast.ScalarLnumber{Value: []byte("1")},
+ ConstantName: &ast.Identifier{Value: []byte("C")},
+ Expr: &ast.ScalarLnumber{Value: []byte("1")},
}
stxTree := &ast.StmtStmtList{
@@ -644,12 +644,12 @@ func TestResolveNamespaces(t *testing.T) {
relativeNameCE := &ast.NameRelative{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("C")}, &ast.NameNamePart{Value: []byte("E")}}}
constantB := &ast.StmtConstant{
- ConstantName: &ast.Identifier{Value: []byte("B")},
- Expr: &ast.ScalarLnumber{Value: []byte("1")},
+ ConstantName: &ast.Identifier{Value: []byte("B")},
+ Expr: &ast.ScalarLnumber{Value: []byte("1")},
}
constantC := &ast.StmtConstant{
- ConstantName: &ast.Identifier{Value: []byte("C")},
- Expr: &ast.ScalarLnumber{Value: []byte("1")},
+ ConstantName: &ast.Identifier{Value: []byte("C")},
+ Expr: &ast.ScalarLnumber{Value: []byte("1")},
}
stxTree := &ast.StmtStmtList{
diff --git a/printer/pretty_printer.go b/pkg/printer/pretty_printer.go
similarity index 54%
rename from printer/pretty_printer.go
rename to pkg/printer/pretty_printer.go
index 95de96f..37a1a71 100644
--- a/printer/pretty_printer.go
+++ b/pkg/printer/pretty_printer.go
@@ -4,15 +4,7 @@ import (
"io"
"strings"
- "github.com/z7zmey/php-parser/node/stmt"
-
- "github.com/z7zmey/php-parser/node"
- "github.com/z7zmey/php-parser/node/expr"
- "github.com/z7zmey/php-parser/node/expr/assign"
- "github.com/z7zmey/php-parser/node/expr/binary"
- "github.com/z7zmey/php-parser/node/expr/cast"
- "github.com/z7zmey/php-parser/node/name"
- "github.com/z7zmey/php-parser/node/scalar"
+ "github.com/z7zmey/php-parser/pkg/ast"
)
type PrettyPrinter struct {
@@ -30,11 +22,11 @@ func NewPrettyPrinter(w io.Writer, indentStr string) *PrettyPrinter {
}
}
-func (p *PrettyPrinter) Print(n node.Node) {
+func (p *PrettyPrinter) Print(n ast.Vertex) {
p.printNode(n)
}
-func (p *PrettyPrinter) joinPrint(glue string, nn []node.Node) {
+func (p *PrettyPrinter) joinPrint(glue string, nn []ast.Vertex) {
for k, n := range nn {
if k > 0 {
io.WriteString(p.w, glue)
@@ -44,7 +36,7 @@ func (p *PrettyPrinter) joinPrint(glue string, nn []node.Node) {
}
}
-func (p *PrettyPrinter) printNodes(nn []node.Node) {
+func (p *PrettyPrinter) printNodes(nn []ast.Vertex) {
p.indentDepth++
l := len(nn) - 1
for k, n := range nn {
@@ -63,367 +55,367 @@ func (p *PrettyPrinter) printIndent() {
}
}
-func (p *PrettyPrinter) printNode(n node.Node) {
+func (p *PrettyPrinter) printNode(n ast.Vertex) {
switch n.(type) {
// node
- case *node.Root:
+ case *ast.Root:
p.printNodeRoot(n)
- case *node.Identifier:
+ case *ast.Identifier:
p.printNodeIdentifier(n)
- case *node.Parameter:
+ case *ast.Parameter:
p.printNodeParameter(n)
- case *node.Nullable:
+ case *ast.Nullable:
p.printNodeNullable(n)
- case *node.Argument:
+ case *ast.Argument:
p.printNodeArgument(n)
// name
- case *name.NamePart:
+ case *ast.NameNamePart:
p.printNameNamePart(n)
- case *name.Name:
+ case *ast.NameName:
p.printNameName(n)
- case *name.FullyQualified:
+ case *ast.NameFullyQualified:
p.printNameFullyQualified(n)
- case *name.Relative:
+ case *ast.NameRelative:
p.printNameRelative(n)
// scalar
- case *scalar.Lnumber:
+ case *ast.ScalarLnumber:
p.printScalarLNumber(n)
- case *scalar.Dnumber:
+ case *ast.ScalarDnumber:
p.printScalarDNumber(n)
- case *scalar.String:
+ case *ast.ScalarString:
p.printScalarString(n)
- case *scalar.EncapsedStringPart:
+ case *ast.ScalarEncapsedStringPart:
p.printScalarEncapsedStringPart(n)
- case *scalar.Encapsed:
+ case *ast.ScalarEncapsed:
p.printScalarEncapsed(n)
- case *scalar.Heredoc:
+ case *ast.ScalarHeredoc:
p.printScalarHeredoc(n)
- case *scalar.MagicConstant:
+ case *ast.ScalarMagicConstant:
p.printScalarMagicConstant(n)
// assign
- case *assign.Assign:
- p.printAssign(n)
- case *assign.Reference:
- p.printReference(n)
- case *assign.BitwiseAnd:
+ case *ast.ExprAssign:
+ p.printAssignAssign(n)
+ case *ast.ExprAssignReference:
+ p.printAssignReference(n)
+ case *ast.ExprAssignBitwiseAnd:
p.printAssignBitwiseAnd(n)
- case *assign.BitwiseOr:
+ case *ast.ExprAssignBitwiseOr:
p.printAssignBitwiseOr(n)
- case *assign.BitwiseXor:
+ case *ast.ExprAssignBitwiseXor:
p.printAssignBitwiseXor(n)
- case *assign.Concat:
+ case *ast.ExprAssignConcat:
p.printAssignConcat(n)
- case *assign.Div:
+ case *ast.ExprAssignDiv:
p.printAssignDiv(n)
- case *assign.Minus:
+ case *ast.ExprAssignMinus:
p.printAssignMinus(n)
- case *assign.Mod:
+ case *ast.ExprAssignMod:
p.printAssignMod(n)
- case *assign.Mul:
+ case *ast.ExprAssignMul:
p.printAssignMul(n)
- case *assign.Plus:
+ case *ast.ExprAssignPlus:
p.printAssignPlus(n)
- case *assign.Pow:
+ case *ast.ExprAssignPow:
p.printAssignPow(n)
- case *assign.ShiftLeft:
+ case *ast.ExprAssignShiftLeft:
p.printAssignShiftLeft(n)
- case *assign.ShiftRight:
+ case *ast.ExprAssignShiftRight:
p.printAssignShiftRight(n)
// binary
- case *binary.BitwiseAnd:
+ case *ast.ExprBinaryBitwiseAnd:
p.printBinaryBitwiseAnd(n)
- case *binary.BitwiseOr:
+ case *ast.ExprBinaryBitwiseOr:
p.printBinaryBitwiseOr(n)
- case *binary.BitwiseXor:
+ case *ast.ExprBinaryBitwiseXor:
p.printBinaryBitwiseXor(n)
- case *binary.BooleanAnd:
+ case *ast.ExprBinaryBooleanAnd:
p.printBinaryBooleanAnd(n)
- case *binary.BooleanOr:
+ case *ast.ExprBinaryBooleanOr:
p.printBinaryBooleanOr(n)
- case *binary.Coalesce:
+ case *ast.ExprBinaryCoalesce:
p.printBinaryCoalesce(n)
- case *binary.Concat:
+ case *ast.ExprBinaryConcat:
p.printBinaryConcat(n)
- case *binary.Div:
+ case *ast.ExprBinaryDiv:
p.printBinaryDiv(n)
- case *binary.Equal:
+ case *ast.ExprBinaryEqual:
p.printBinaryEqual(n)
- case *binary.GreaterOrEqual:
+ case *ast.ExprBinaryGreaterOrEqual:
p.printBinaryGreaterOrEqual(n)
- case *binary.Greater:
+ case *ast.ExprBinaryGreater:
p.printBinaryGreater(n)
- case *binary.Identical:
+ case *ast.ExprBinaryIdentical:
p.printBinaryIdentical(n)
- case *binary.LogicalAnd:
+ case *ast.ExprBinaryLogicalAnd:
p.printBinaryLogicalAnd(n)
- case *binary.LogicalOr:
+ case *ast.ExprBinaryLogicalOr:
p.printBinaryLogicalOr(n)
- case *binary.LogicalXor:
+ case *ast.ExprBinaryLogicalXor:
p.printBinaryLogicalXor(n)
- case *binary.Minus:
+ case *ast.ExprBinaryMinus:
p.printBinaryMinus(n)
- case *binary.Mod:
+ case *ast.ExprBinaryMod:
p.printBinaryMod(n)
- case *binary.Mul:
+ case *ast.ExprBinaryMul:
p.printBinaryMul(n)
- case *binary.NotEqual:
+ case *ast.ExprBinaryNotEqual:
p.printBinaryNotEqual(n)
- case *binary.NotIdentical:
+ case *ast.ExprBinaryNotIdentical:
p.printBinaryNotIdentical(n)
- case *binary.Plus:
+ case *ast.ExprBinaryPlus:
p.printBinaryPlus(n)
- case *binary.Pow:
+ case *ast.ExprBinaryPow:
p.printBinaryPow(n)
- case *binary.ShiftLeft:
+ case *ast.ExprBinaryShiftLeft:
p.printBinaryShiftLeft(n)
- case *binary.ShiftRight:
+ case *ast.ExprBinaryShiftRight:
p.printBinaryShiftRight(n)
- case *binary.SmallerOrEqual:
+ case *ast.ExprBinarySmallerOrEqual:
p.printBinarySmallerOrEqual(n)
- case *binary.Smaller:
+ case *ast.ExprBinarySmaller:
p.printBinarySmaller(n)
- case *binary.Spaceship:
+ case *ast.ExprBinarySpaceship:
p.printBinarySpaceship(n)
// cast
- case *cast.Array:
+ case *ast.ExprCastArray:
p.printArray(n)
- case *cast.Bool:
+ case *ast.ExprCastBool:
p.printBool(n)
- case *cast.Double:
+ case *ast.ExprCastDouble:
p.printDouble(n)
- case *cast.Int:
+ case *ast.ExprCastInt:
p.printInt(n)
- case *cast.Object:
+ case *ast.ExprCastObject:
p.printObject(n)
- case *cast.String:
+ case *ast.ExprCastString:
p.printString(n)
- case *cast.Unset:
+ case *ast.ExprCastUnset:
p.printUnset(n)
// expr
- case *expr.ArrayDimFetch:
+ case *ast.ExprArrayDimFetch:
p.printExprArrayDimFetch(n)
- case *expr.ArrayItem:
+ case *ast.ExprArrayItem:
p.printExprArrayItem(n)
- case *expr.Array:
+ case *ast.ExprArray:
p.printExprArray(n)
- case *expr.BitwiseNot:
+ case *ast.ExprBitwiseNot:
p.printExprBitwiseNot(n)
- case *expr.BooleanNot:
+ case *ast.ExprBooleanNot:
p.printExprBooleanNot(n)
- case *expr.ClassConstFetch:
+ case *ast.ExprClassConstFetch:
p.printExprClassConstFetch(n)
- case *expr.Clone:
+ case *ast.ExprClone:
p.printExprClone(n)
- case *expr.ClosureUse:
+ case *ast.ExprClosureUse:
p.printExprClosureUse(n)
- case *expr.Closure:
+ case *ast.ExprClosure:
p.printExprClosure(n)
- case *expr.ConstFetch:
+ case *ast.ExprConstFetch:
p.printExprConstFetch(n)
- case *expr.Empty:
+ case *ast.ExprEmpty:
p.printExprEmpty(n)
- case *expr.ErrorSuppress:
+ case *ast.ExprErrorSuppress:
p.printExprErrorSuppress(n)
- case *expr.Eval:
+ case *ast.ExprEval:
p.printExprEval(n)
- case *expr.Exit:
+ case *ast.ExprExit:
p.printExprExit(n)
- case *expr.FunctionCall:
+ case *ast.ExprFunctionCall:
p.printExprFunctionCall(n)
- case *expr.Include:
+ case *ast.ExprInclude:
p.printExprInclude(n)
- case *expr.IncludeOnce:
+ case *ast.ExprIncludeOnce:
p.printExprIncludeOnce(n)
- case *expr.InstanceOf:
+ case *ast.ExprInstanceOf:
p.printExprInstanceOf(n)
- case *expr.Isset:
+ case *ast.ExprIsset:
p.printExprIsset(n)
- case *expr.List:
+ case *ast.ExprList:
p.printExprList(n)
- case *expr.MethodCall:
+ case *ast.ExprMethodCall:
p.printExprMethodCall(n)
- case *expr.New:
+ case *ast.ExprNew:
p.printExprNew(n)
- case *expr.PostDec:
+ case *ast.ExprPostDec:
p.printExprPostDec(n)
- case *expr.PostInc:
+ case *ast.ExprPostInc:
p.printExprPostInc(n)
- case *expr.PreDec:
+ case *ast.ExprPreDec:
p.printExprPreDec(n)
- case *expr.PreInc:
+ case *ast.ExprPreInc:
p.printExprPreInc(n)
- case *expr.Print:
+ case *ast.ExprPrint:
p.printExprPrint(n)
- case *expr.PropertyFetch:
+ case *ast.ExprPropertyFetch:
p.printExprPropertyFetch(n)
- case *expr.Reference:
+ case *ast.ExprReference:
p.printExprReference(n)
- case *expr.Require:
+ case *ast.ExprRequire:
p.printExprRequire(n)
- case *expr.RequireOnce:
+ case *ast.ExprRequireOnce:
p.printExprRequireOnce(n)
- case *expr.ShellExec:
+ case *ast.ExprShellExec:
p.printExprShellExec(n)
- case *expr.ShortArray:
+ case *ast.ExprShortArray:
p.printExprShortArray(n)
- case *expr.ShortList:
+ case *ast.ExprShortList:
p.printExprShortList(n)
- case *expr.StaticCall:
+ case *ast.ExprStaticCall:
p.printExprStaticCall(n)
- case *expr.StaticPropertyFetch:
+ case *ast.ExprStaticPropertyFetch:
p.printExprStaticPropertyFetch(n)
- case *expr.Ternary:
+ case *ast.ExprTernary:
p.printExprTernary(n)
- case *expr.UnaryMinus:
+ case *ast.ExprUnaryMinus:
p.printExprUnaryMinus(n)
- case *expr.UnaryPlus:
+ case *ast.ExprUnaryPlus:
p.printExprUnaryPlus(n)
- case *expr.Variable:
+ case *ast.ExprVariable:
p.printExprVariable(n)
- case *expr.YieldFrom:
+ case *ast.ExprYieldFrom:
p.printExprYieldFrom(n)
- case *expr.Yield:
+ case *ast.ExprYield:
p.printExprYield(n)
// stmt
- case *stmt.AltElseIf:
+ case *ast.StmtAltElseIf:
p.printStmtAltElseIf(n)
- case *stmt.AltElse:
+ case *ast.StmtAltElse:
p.printStmtAltElse(n)
- case *stmt.AltFor:
+ case *ast.StmtAltFor:
p.printStmtAltFor(n)
- case *stmt.AltForeach:
+ case *ast.StmtAltForeach:
p.printStmtAltForeach(n)
- case *stmt.AltIf:
+ case *ast.StmtAltIf:
p.printStmtAltIf(n)
- case *stmt.AltSwitch:
+ case *ast.StmtAltSwitch:
p.printStmtAltSwitch(n)
- case *stmt.AltWhile:
+ case *ast.StmtAltWhile:
p.printStmtAltWhile(n)
- case *stmt.Break:
+ case *ast.StmtBreak:
p.printStmtBreak(n)
- case *stmt.Case:
+ case *ast.StmtCase:
p.printStmtCase(n)
- case *stmt.Catch:
+ case *ast.StmtCatch:
p.printStmtCatch(n)
- case *stmt.ClassMethod:
+ case *ast.StmtClassMethod:
p.printStmtClassMethod(n)
- case *stmt.Class:
+ case *ast.StmtClass:
p.printStmtClass(n)
- case *stmt.ClassConstList:
+ case *ast.StmtClassConstList:
p.printStmtClassConstList(n)
- case *stmt.Constant:
+ case *ast.StmtConstant:
p.printStmtConstant(n)
- case *stmt.Continue:
+ case *ast.StmtContinue:
p.printStmtContinue(n)
- case *stmt.Declare:
+ case *ast.StmtDeclare:
p.printStmtDeclare(n)
- case *stmt.Default:
+ case *ast.StmtDefault:
p.printStmtDefault(n)
- case *stmt.Do:
+ case *ast.StmtDo:
p.printStmtDo(n)
- case *stmt.Echo:
+ case *ast.StmtEcho:
p.printStmtEcho(n)
- case *stmt.ElseIf:
+ case *ast.StmtElseIf:
p.printStmtElseif(n)
- case *stmt.Else:
+ case *ast.StmtElse:
p.printStmtElse(n)
- case *stmt.Expression:
+ case *ast.StmtExpression:
p.printStmtExpression(n)
- case *stmt.Finally:
+ case *ast.StmtFinally:
p.printStmtFinally(n)
- case *stmt.For:
+ case *ast.StmtFor:
p.printStmtFor(n)
- case *stmt.Foreach:
+ case *ast.StmtForeach:
p.printStmtForeach(n)
- case *stmt.Function:
+ case *ast.StmtFunction:
p.printStmtFunction(n)
- case *stmt.Global:
+ case *ast.StmtGlobal:
p.printStmtGlobal(n)
- case *stmt.Goto:
+ case *ast.StmtGoto:
p.printStmtGoto(n)
- case *stmt.GroupUse:
+ case *ast.StmtGroupUse:
p.printStmtGroupUse(n)
- case *stmt.HaltCompiler:
+ case *ast.StmtHaltCompiler:
p.printStmtHaltCompiler(n)
- case *stmt.If:
+ case *ast.StmtIf:
p.printStmtIf(n)
- case *stmt.InlineHtml:
+ case *ast.StmtInlineHtml:
p.printStmtInlineHTML(n)
- case *stmt.Interface:
+ case *ast.StmtInterface:
p.printStmtInterface(n)
- case *stmt.Label:
+ case *ast.StmtLabel:
p.printStmtLabel(n)
- case *stmt.Namespace:
+ case *ast.StmtNamespace:
p.printStmtNamespace(n)
- case *stmt.Nop:
+ case *ast.StmtNop:
p.printStmtNop(n)
- case *stmt.PropertyList:
+ case *ast.StmtPropertyList:
p.printStmtPropertyList(n)
- case *stmt.Property:
+ case *ast.StmtProperty:
p.printStmtProperty(n)
- case *stmt.Return:
+ case *ast.StmtReturn:
p.printStmtReturn(n)
- case *stmt.StaticVar:
+ case *ast.StmtStaticVar:
p.printStmtStaticVar(n)
- case *stmt.Static:
+ case *ast.StmtStatic:
p.printStmtStatic(n)
- case *stmt.StmtList:
+ case *ast.StmtStmtList:
p.printStmtStmtList(n)
- case *stmt.Switch:
+ case *ast.StmtSwitch:
p.printStmtSwitch(n)
- case *stmt.Throw:
+ case *ast.StmtThrow:
p.printStmtThrow(n)
- case *stmt.TraitMethodRef:
+ case *ast.StmtTraitMethodRef:
p.printStmtTraitMethodRef(n)
- case *stmt.TraitUseAlias:
+ case *ast.StmtTraitUseAlias:
p.printStmtTraitUseAlias(n)
- case *stmt.TraitUsePrecedence:
+ case *ast.StmtTraitUsePrecedence:
p.printStmtTraitUsePrecedence(n)
- case *stmt.TraitUse:
+ case *ast.StmtTraitUse:
p.printStmtTraitUse(n)
- case *stmt.Trait:
+ case *ast.StmtTrait:
p.printStmtTrait(n)
- case *stmt.Try:
+ case *ast.StmtTry:
p.printStmtTry(n)
- case *stmt.Unset:
+ case *ast.StmtUnset:
p.printStmtUnset(n)
- case *stmt.UseList:
+ case *ast.StmtUseList:
p.printStmtUseList(n)
- case *stmt.Use:
+ case *ast.StmtUse:
p.printStmtUse(n)
- case *stmt.While:
+ case *ast.StmtWhile:
p.printStmtWhile(n)
}
}
// node
-func (p *PrettyPrinter) printNodeRoot(n node.Node) {
- v := n.(*node.Root)
+func (p *PrettyPrinter) printNodeRoot(n ast.Vertex) {
+ v := n.(*ast.Root)
if len(v.Stmts) > 0 {
firstStmt := v.Stmts[0]
v.Stmts = v.Stmts[1:]
switch fs := firstStmt.(type) {
- case *stmt.InlineHtml:
- io.WriteString(p.w, fs.Value)
+ case *ast.StmtInlineHtml:
+ io.WriteString(p.w, string(fs.Value))
io.WriteString(p.w, " 0 {
@@ -506,8 +498,8 @@ func (p *PrettyPrinter) printNameName(n node.Node) {
}
}
-func (p *PrettyPrinter) printNameFullyQualified(n node.Node) {
- nn := n.(*name.FullyQualified)
+func (p *PrettyPrinter) printNameFullyQualified(n ast.Vertex) {
+ nn := n.(*ast.NameFullyQualified)
for _, part := range nn.Parts {
io.WriteString(p.w, "\\")
@@ -515,8 +507,8 @@ func (p *PrettyPrinter) printNameFullyQualified(n node.Node) {
}
}
-func (p *PrettyPrinter) printNameRelative(n node.Node) {
- nn := n.(*name.Relative)
+func (p *PrettyPrinter) printNameRelative(n ast.Vertex) {
+ nn := n.(*ast.NameRelative)
io.WriteString(p.w, "namespace")
for _, part := range nn.Parts {
@@ -527,34 +519,34 @@ func (p *PrettyPrinter) printNameRelative(n node.Node) {
// scalar
-func (p *PrettyPrinter) printScalarLNumber(n node.Node) {
- v := n.(*scalar.Lnumber).Value
+func (p *PrettyPrinter) printScalarLNumber(n ast.Vertex) {
+ v := string(n.(*ast.ScalarLnumber).Value)
io.WriteString(p.w, v)
}
-func (p *PrettyPrinter) printScalarDNumber(n node.Node) {
- v := n.(*scalar.Dnumber).Value
+func (p *PrettyPrinter) printScalarDNumber(n ast.Vertex) {
+ v := string(n.(*ast.ScalarDnumber).Value)
io.WriteString(p.w, v)
}
-func (p *PrettyPrinter) printScalarString(n node.Node) {
- v := n.(*scalar.String).Value
+func (p *PrettyPrinter) printScalarString(n ast.Vertex) {
+ v := string(n.(*ast.ScalarString).Value)
io.WriteString(p.w, v)
}
-func (p *PrettyPrinter) printScalarEncapsedStringPart(n node.Node) {
- v := n.(*scalar.EncapsedStringPart).Value
+func (p *PrettyPrinter) printScalarEncapsedStringPart(n ast.Vertex) {
+ v := string(n.(*ast.ScalarEncapsedStringPart).Value)
io.WriteString(p.w, v)
}
-func (p *PrettyPrinter) printScalarEncapsed(n node.Node) {
- nn := n.(*scalar.Encapsed)
+func (p *PrettyPrinter) printScalarEncapsed(n ast.Vertex) {
+ nn := n.(*ast.ScalarEncapsed)
io.WriteString(p.w, "\"")
for _, part := range nn.Parts {
switch part.(type) {
- case *scalar.EncapsedStringPart:
+ case *ast.ScalarEncapsedStringPart:
p.Print(part)
default:
io.WriteString(p.w, "{")
@@ -566,14 +558,14 @@ func (p *PrettyPrinter) printScalarEncapsed(n node.Node) {
io.WriteString(p.w, "\"")
}
-func (p *PrettyPrinter) printScalarHeredoc(n node.Node) {
- nn := n.(*scalar.Heredoc)
+func (p *PrettyPrinter) printScalarHeredoc(n ast.Vertex) {
+ nn := n.(*ast.ScalarHeredoc)
- io.WriteString(p.w, nn.Label)
+ io.WriteString(p.w, string(nn.Label))
for _, part := range nn.Parts {
switch part.(type) {
- case *scalar.EncapsedStringPart:
+ case *ast.ScalarEncapsedStringPart:
p.Print(part)
default:
io.WriteString(p.w, "{")
@@ -582,326 +574,326 @@ func (p *PrettyPrinter) printScalarHeredoc(n node.Node) {
}
}
- io.WriteString(p.w, strings.Trim(nn.Label, "<\"'\n"))
+ io.WriteString(p.w, strings.Trim(string(nn.Label), "<\"'\n"))
}
-func (p *PrettyPrinter) printScalarMagicConstant(n node.Node) {
- v := n.(*scalar.MagicConstant).Value
+func (p *PrettyPrinter) printScalarMagicConstant(n ast.Vertex) {
+ v := string(n.(*ast.ScalarMagicConstant).Value)
io.WriteString(p.w, v)
}
// Assign
-func (p *PrettyPrinter) printAssign(n node.Node) {
- nn := n.(*assign.Assign)
- p.Print(nn.Variable)
+func (p *PrettyPrinter) printAssignAssign(n ast.Vertex) {
+ nn := n.(*ast.ExprAssign)
+ p.Print(nn.Var)
io.WriteString(p.w, " = ")
- p.Print(nn.Expression)
+ p.Print(nn.Expr)
}
-func (p *PrettyPrinter) printReference(n node.Node) {
- nn := n.(*assign.Reference)
- p.Print(nn.Variable)
+func (p *PrettyPrinter) printAssignReference(n ast.Vertex) {
+ nn := n.(*ast.ExprAssignReference)
+ p.Print(nn.Var)
io.WriteString(p.w, " =& ")
- p.Print(nn.Expression)
+ p.Print(nn.Expr)
}
-func (p *PrettyPrinter) printAssignBitwiseAnd(n node.Node) {
- nn := n.(*assign.BitwiseAnd)
- p.Print(nn.Variable)
+func (p *PrettyPrinter) printAssignBitwiseAnd(n ast.Vertex) {
+ nn := n.(*ast.ExprAssignBitwiseAnd)
+ p.Print(nn.Var)
io.WriteString(p.w, " &= ")
- p.Print(nn.Expression)
+ p.Print(nn.Expr)
}
-func (p *PrettyPrinter) printAssignBitwiseOr(n node.Node) {
- nn := n.(*assign.BitwiseOr)
- p.Print(nn.Variable)
+func (p *PrettyPrinter) printAssignBitwiseOr(n ast.Vertex) {
+ nn := n.(*ast.ExprAssignBitwiseOr)
+ p.Print(nn.Var)
io.WriteString(p.w, " |= ")
- p.Print(nn.Expression)
+ p.Print(nn.Expr)
}
-func (p *PrettyPrinter) printAssignBitwiseXor(n node.Node) {
- nn := n.(*assign.BitwiseXor)
- p.Print(nn.Variable)
+func (p *PrettyPrinter) printAssignBitwiseXor(n ast.Vertex) {
+ nn := n.(*ast.ExprAssignBitwiseXor)
+ p.Print(nn.Var)
io.WriteString(p.w, " ^= ")
- p.Print(nn.Expression)
+ p.Print(nn.Expr)
}
-func (p *PrettyPrinter) printAssignConcat(n node.Node) {
- nn := n.(*assign.Concat)
- p.Print(nn.Variable)
+func (p *PrettyPrinter) printAssignConcat(n ast.Vertex) {
+ nn := n.(*ast.ExprAssignConcat)
+ p.Print(nn.Var)
io.WriteString(p.w, " .= ")
- p.Print(nn.Expression)
+ p.Print(nn.Expr)
}
-func (p *PrettyPrinter) printAssignDiv(n node.Node) {
- nn := n.(*assign.Div)
- p.Print(nn.Variable)
+func (p *PrettyPrinter) printAssignDiv(n ast.Vertex) {
+ nn := n.(*ast.ExprAssignDiv)
+ p.Print(nn.Var)
io.WriteString(p.w, " /= ")
- p.Print(nn.Expression)
+ p.Print(nn.Expr)
}
-func (p *PrettyPrinter) printAssignMinus(n node.Node) {
- nn := n.(*assign.Minus)
- p.Print(nn.Variable)
+func (p *PrettyPrinter) printAssignMinus(n ast.Vertex) {
+ nn := n.(*ast.ExprAssignMinus)
+ p.Print(nn.Var)
io.WriteString(p.w, " -= ")
- p.Print(nn.Expression)
+ p.Print(nn.Expr)
}
-func (p *PrettyPrinter) printAssignMod(n node.Node) {
- nn := n.(*assign.Mod)
- p.Print(nn.Variable)
+func (p *PrettyPrinter) printAssignMod(n ast.Vertex) {
+ nn := n.(*ast.ExprAssignMod)
+ p.Print(nn.Var)
io.WriteString(p.w, " %= ")
- p.Print(nn.Expression)
+ p.Print(nn.Expr)
}
-func (p *PrettyPrinter) printAssignMul(n node.Node) {
- nn := n.(*assign.Mul)
- p.Print(nn.Variable)
+func (p *PrettyPrinter) printAssignMul(n ast.Vertex) {
+ nn := n.(*ast.ExprAssignMul)
+ p.Print(nn.Var)
io.WriteString(p.w, " *= ")
- p.Print(nn.Expression)
+ p.Print(nn.Expr)
}
-func (p *PrettyPrinter) printAssignPlus(n node.Node) {
- nn := n.(*assign.Plus)
- p.Print(nn.Variable)
+func (p *PrettyPrinter) printAssignPlus(n ast.Vertex) {
+ nn := n.(*ast.ExprAssignPlus)
+ p.Print(nn.Var)
io.WriteString(p.w, " += ")
- p.Print(nn.Expression)
+ p.Print(nn.Expr)
}
-func (p *PrettyPrinter) printAssignPow(n node.Node) {
- nn := n.(*assign.Pow)
- p.Print(nn.Variable)
+func (p *PrettyPrinter) printAssignPow(n ast.Vertex) {
+ nn := n.(*ast.ExprAssignPow)
+ p.Print(nn.Var)
io.WriteString(p.w, " **= ")
- p.Print(nn.Expression)
+ p.Print(nn.Expr)
}
-func (p *PrettyPrinter) printAssignShiftLeft(n node.Node) {
- nn := n.(*assign.ShiftLeft)
- p.Print(nn.Variable)
+func (p *PrettyPrinter) printAssignShiftLeft(n ast.Vertex) {
+ nn := n.(*ast.ExprAssignShiftLeft)
+ p.Print(nn.Var)
io.WriteString(p.w, " <<= ")
- p.Print(nn.Expression)
+ p.Print(nn.Expr)
}
-func (p *PrettyPrinter) printAssignShiftRight(n node.Node) {
- nn := n.(*assign.ShiftRight)
- p.Print(nn.Variable)
+func (p *PrettyPrinter) printAssignShiftRight(n ast.Vertex) {
+ nn := n.(*ast.ExprAssignShiftRight)
+ p.Print(nn.Var)
io.WriteString(p.w, " >>= ")
- p.Print(nn.Expression)
+ p.Print(nn.Expr)
}
// binary
-func (p *PrettyPrinter) printBinaryBitwiseAnd(n node.Node) {
- nn := n.(*binary.BitwiseAnd)
+func (p *PrettyPrinter) printBinaryBitwiseAnd(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryBitwiseAnd)
p.Print(nn.Left)
io.WriteString(p.w, " & ")
p.Print(nn.Right)
}
-func (p *PrettyPrinter) printBinaryBitwiseOr(n node.Node) {
- nn := n.(*binary.BitwiseOr)
+func (p *PrettyPrinter) printBinaryBitwiseOr(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryBitwiseOr)
p.Print(nn.Left)
io.WriteString(p.w, " | ")
p.Print(nn.Right)
}
-func (p *PrettyPrinter) printBinaryBitwiseXor(n node.Node) {
- nn := n.(*binary.BitwiseXor)
+func (p *PrettyPrinter) printBinaryBitwiseXor(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryBitwiseXor)
p.Print(nn.Left)
io.WriteString(p.w, " ^ ")
p.Print(nn.Right)
}
-func (p *PrettyPrinter) printBinaryBooleanAnd(n node.Node) {
- nn := n.(*binary.BooleanAnd)
+func (p *PrettyPrinter) printBinaryBooleanAnd(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryBooleanAnd)
p.Print(nn.Left)
io.WriteString(p.w, " && ")
p.Print(nn.Right)
}
-func (p *PrettyPrinter) printBinaryBooleanOr(n node.Node) {
- nn := n.(*binary.BooleanOr)
+func (p *PrettyPrinter) printBinaryBooleanOr(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryBooleanOr)
p.Print(nn.Left)
io.WriteString(p.w, " || ")
p.Print(nn.Right)
}
-func (p *PrettyPrinter) printBinaryCoalesce(n node.Node) {
- nn := n.(*binary.Coalesce)
+func (p *PrettyPrinter) printBinaryCoalesce(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryCoalesce)
p.Print(nn.Left)
io.WriteString(p.w, " ?? ")
p.Print(nn.Right)
}
-func (p *PrettyPrinter) printBinaryConcat(n node.Node) {
- nn := n.(*binary.Concat)
+func (p *PrettyPrinter) printBinaryConcat(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryConcat)
p.Print(nn.Left)
io.WriteString(p.w, " . ")
p.Print(nn.Right)
}
-func (p *PrettyPrinter) printBinaryDiv(n node.Node) {
- nn := n.(*binary.Div)
+func (p *PrettyPrinter) printBinaryDiv(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryDiv)
p.Print(nn.Left)
io.WriteString(p.w, " / ")
p.Print(nn.Right)
}
-func (p *PrettyPrinter) printBinaryEqual(n node.Node) {
- nn := n.(*binary.Equal)
+func (p *PrettyPrinter) printBinaryEqual(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryEqual)
p.Print(nn.Left)
io.WriteString(p.w, " == ")
p.Print(nn.Right)
}
-func (p *PrettyPrinter) printBinaryGreaterOrEqual(n node.Node) {
- nn := n.(*binary.GreaterOrEqual)
+func (p *PrettyPrinter) printBinaryGreaterOrEqual(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryGreaterOrEqual)
p.Print(nn.Left)
io.WriteString(p.w, " >= ")
p.Print(nn.Right)
}
-func (p *PrettyPrinter) printBinaryGreater(n node.Node) {
- nn := n.(*binary.Greater)
+func (p *PrettyPrinter) printBinaryGreater(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryGreater)
p.Print(nn.Left)
io.WriteString(p.w, " > ")
p.Print(nn.Right)
}
-func (p *PrettyPrinter) printBinaryIdentical(n node.Node) {
- nn := n.(*binary.Identical)
+func (p *PrettyPrinter) printBinaryIdentical(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryIdentical)
p.Print(nn.Left)
io.WriteString(p.w, " === ")
p.Print(nn.Right)
}
-func (p *PrettyPrinter) printBinaryLogicalAnd(n node.Node) {
- nn := n.(*binary.LogicalAnd)
+func (p *PrettyPrinter) printBinaryLogicalAnd(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryLogicalAnd)
p.Print(nn.Left)
io.WriteString(p.w, " and ")
p.Print(nn.Right)
}
-func (p *PrettyPrinter) printBinaryLogicalOr(n node.Node) {
- nn := n.(*binary.LogicalOr)
+func (p *PrettyPrinter) printBinaryLogicalOr(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryLogicalOr)
p.Print(nn.Left)
io.WriteString(p.w, " or ")
p.Print(nn.Right)
}
-func (p *PrettyPrinter) printBinaryLogicalXor(n node.Node) {
- nn := n.(*binary.LogicalXor)
+func (p *PrettyPrinter) printBinaryLogicalXor(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryLogicalXor)
p.Print(nn.Left)
io.WriteString(p.w, " xor ")
p.Print(nn.Right)
}
-func (p *PrettyPrinter) printBinaryMinus(n node.Node) {
- nn := n.(*binary.Minus)
+func (p *PrettyPrinter) printBinaryMinus(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryMinus)
p.Print(nn.Left)
io.WriteString(p.w, " - ")
p.Print(nn.Right)
}
-func (p *PrettyPrinter) printBinaryMod(n node.Node) {
- nn := n.(*binary.Mod)
+func (p *PrettyPrinter) printBinaryMod(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryMod)
p.Print(nn.Left)
io.WriteString(p.w, " % ")
p.Print(nn.Right)
}
-func (p *PrettyPrinter) printBinaryMul(n node.Node) {
- nn := n.(*binary.Mul)
+func (p *PrettyPrinter) printBinaryMul(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryMul)
p.Print(nn.Left)
io.WriteString(p.w, " * ")
p.Print(nn.Right)
}
-func (p *PrettyPrinter) printBinaryNotEqual(n node.Node) {
- nn := n.(*binary.NotEqual)
+func (p *PrettyPrinter) printBinaryNotEqual(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryNotEqual)
p.Print(nn.Left)
io.WriteString(p.w, " != ")
p.Print(nn.Right)
}
-func (p *PrettyPrinter) printBinaryNotIdentical(n node.Node) {
- nn := n.(*binary.NotIdentical)
+func (p *PrettyPrinter) printBinaryNotIdentical(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryNotIdentical)
p.Print(nn.Left)
io.WriteString(p.w, " !== ")
p.Print(nn.Right)
}
-func (p *PrettyPrinter) printBinaryPlus(n node.Node) {
- nn := n.(*binary.Plus)
+func (p *PrettyPrinter) printBinaryPlus(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryPlus)
p.Print(nn.Left)
io.WriteString(p.w, " + ")
p.Print(nn.Right)
}
-func (p *PrettyPrinter) printBinaryPow(n node.Node) {
- nn := n.(*binary.Pow)
+func (p *PrettyPrinter) printBinaryPow(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryPow)
p.Print(nn.Left)
io.WriteString(p.w, " ** ")
p.Print(nn.Right)
}
-func (p *PrettyPrinter) printBinaryShiftLeft(n node.Node) {
- nn := n.(*binary.ShiftLeft)
+func (p *PrettyPrinter) printBinaryShiftLeft(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryShiftLeft)
p.Print(nn.Left)
io.WriteString(p.w, " << ")
p.Print(nn.Right)
}
-func (p *PrettyPrinter) printBinaryShiftRight(n node.Node) {
- nn := n.(*binary.ShiftRight)
+func (p *PrettyPrinter) printBinaryShiftRight(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryShiftRight)
p.Print(nn.Left)
io.WriteString(p.w, " >> ")
p.Print(nn.Right)
}
-func (p *PrettyPrinter) printBinarySmallerOrEqual(n node.Node) {
- nn := n.(*binary.SmallerOrEqual)
+func (p *PrettyPrinter) printBinarySmallerOrEqual(n ast.Vertex) {
+ nn := n.(*ast.ExprBinarySmallerOrEqual)
p.Print(nn.Left)
io.WriteString(p.w, " <= ")
p.Print(nn.Right)
}
-func (p *PrettyPrinter) printBinarySmaller(n node.Node) {
- nn := n.(*binary.Smaller)
+func (p *PrettyPrinter) printBinarySmaller(n ast.Vertex) {
+ nn := n.(*ast.ExprBinarySmaller)
p.Print(nn.Left)
io.WriteString(p.w, " < ")
p.Print(nn.Right)
}
-func (p *PrettyPrinter) printBinarySpaceship(n node.Node) {
- nn := n.(*binary.Spaceship)
+func (p *PrettyPrinter) printBinarySpaceship(n ast.Vertex) {
+ nn := n.(*ast.ExprBinarySpaceship)
p.Print(nn.Left)
io.WriteString(p.w, " <=> ")
@@ -910,50 +902,50 @@ func (p *PrettyPrinter) printBinarySpaceship(n node.Node) {
// cast
-func (p *PrettyPrinter) printArray(n node.Node) {
- nn := n.(*cast.Array)
+func (p *PrettyPrinter) printArray(n ast.Vertex) {
+ nn := n.(*ast.ExprCastArray)
io.WriteString(p.w, "(array)")
p.Print(nn.Expr)
}
-func (p *PrettyPrinter) printBool(n node.Node) {
- nn := n.(*cast.Bool)
+func (p *PrettyPrinter) printBool(n ast.Vertex) {
+ nn := n.(*ast.ExprCastBool)
io.WriteString(p.w, "(bool)")
p.Print(nn.Expr)
}
-func (p *PrettyPrinter) printDouble(n node.Node) {
- nn := n.(*cast.Double)
+func (p *PrettyPrinter) printDouble(n ast.Vertex) {
+ nn := n.(*ast.ExprCastDouble)
io.WriteString(p.w, "(float)")
p.Print(nn.Expr)
}
-func (p *PrettyPrinter) printInt(n node.Node) {
- nn := n.(*cast.Int)
+func (p *PrettyPrinter) printInt(n ast.Vertex) {
+ nn := n.(*ast.ExprCastInt)
io.WriteString(p.w, "(int)")
p.Print(nn.Expr)
}
-func (p *PrettyPrinter) printObject(n node.Node) {
- nn := n.(*cast.Object)
+func (p *PrettyPrinter) printObject(n ast.Vertex) {
+ nn := n.(*ast.ExprCastObject)
io.WriteString(p.w, "(object)")
p.Print(nn.Expr)
}
-func (p *PrettyPrinter) printString(n node.Node) {
- nn := n.(*cast.String)
+func (p *PrettyPrinter) printString(n ast.Vertex) {
+ nn := n.(*ast.ExprCastString)
io.WriteString(p.w, "(string)")
p.Print(nn.Expr)
}
-func (p *PrettyPrinter) printUnset(n node.Node) {
- nn := n.(*cast.Unset)
+func (p *PrettyPrinter) printUnset(n ast.Vertex) {
+ nn := n.(*ast.ExprCastUnset)
io.WriteString(p.w, "(unset)")
p.Print(nn.Expr)
@@ -961,16 +953,16 @@ func (p *PrettyPrinter) printUnset(n node.Node) {
// expr
-func (p *PrettyPrinter) printExprArrayDimFetch(n node.Node) {
- nn := n.(*expr.ArrayDimFetch)
- p.Print(nn.Variable)
+func (p *PrettyPrinter) printExprArrayDimFetch(n ast.Vertex) {
+ nn := n.(*ast.ExprArrayDimFetch)
+ p.Print(nn.Var)
io.WriteString(p.w, "[")
p.Print(nn.Dim)
io.WriteString(p.w, "]")
}
-func (p *PrettyPrinter) printExprArrayItem(n node.Node) {
- nn := n.(*expr.ArrayItem)
+func (p *PrettyPrinter) printExprArrayItem(n ast.Vertex) {
+ nn := n.(*ast.ExprArrayItem)
if nn.Key != nil {
p.Print(nn.Key)
@@ -980,51 +972,51 @@ func (p *PrettyPrinter) printExprArrayItem(n node.Node) {
p.Print(nn.Val)
}
-func (p *PrettyPrinter) printExprArray(n node.Node) {
- nn := n.(*expr.Array)
+func (p *PrettyPrinter) printExprArray(n ast.Vertex) {
+ nn := n.(*ast.ExprArray)
io.WriteString(p.w, "array(")
p.joinPrint(", ", nn.Items)
io.WriteString(p.w, ")")
}
-func (p *PrettyPrinter) printExprBitwiseNot(n node.Node) {
- nn := n.(*expr.BitwiseNot)
+func (p *PrettyPrinter) printExprBitwiseNot(n ast.Vertex) {
+ nn := n.(*ast.ExprBitwiseNot)
io.WriteString(p.w, "~")
p.Print(nn.Expr)
}
-func (p *PrettyPrinter) printExprBooleanNot(n node.Node) {
- nn := n.(*expr.BooleanNot)
+func (p *PrettyPrinter) printExprBooleanNot(n ast.Vertex) {
+ nn := n.(*ast.ExprBooleanNot)
io.WriteString(p.w, "!")
p.Print(nn.Expr)
}
-func (p *PrettyPrinter) printExprClassConstFetch(n node.Node) {
- nn := n.(*expr.ClassConstFetch)
+func (p *PrettyPrinter) printExprClassConstFetch(n ast.Vertex) {
+ nn := n.(*ast.ExprClassConstFetch)
p.Print(nn.Class)
io.WriteString(p.w, "::")
- io.WriteString(p.w, nn.ConstantName.(*node.Identifier).Value)
+ io.WriteString(p.w, string(nn.ConstantName.(*ast.Identifier).Value))
}
-func (p *PrettyPrinter) printExprClone(n node.Node) {
- nn := n.(*expr.Clone)
+func (p *PrettyPrinter) printExprClone(n ast.Vertex) {
+ nn := n.(*ast.ExprClone)
io.WriteString(p.w, "clone ")
p.Print(nn.Expr)
}
-func (p *PrettyPrinter) printExprClosureUse(n node.Node) {
- nn := n.(*expr.ClosureUse)
+func (p *PrettyPrinter) printExprClosureUse(n ast.Vertex) {
+ nn := n.(*ast.ExprClosureUse)
io.WriteString(p.w, "use (")
p.joinPrint(", ", nn.Uses)
io.WriteString(p.w, ")")
}
-func (p *PrettyPrinter) printExprClosure(n node.Node) {
- nn := n.(*expr.Closure)
+func (p *PrettyPrinter) printExprClosure(n ast.Vertex) {
+ nn := n.(*ast.ExprClosure)
if nn.Static {
io.WriteString(p.w, "static ")
@@ -1057,37 +1049,37 @@ func (p *PrettyPrinter) printExprClosure(n node.Node) {
io.WriteString(p.w, "}")
}
-func (p *PrettyPrinter) printExprConstFetch(n node.Node) {
- nn := n.(*expr.ConstFetch)
+func (p *PrettyPrinter) printExprConstFetch(n ast.Vertex) {
+ nn := n.(*ast.ExprConstFetch)
- p.Print(nn.Constant)
+ p.Print(nn.Const)
}
-func (p *PrettyPrinter) printExprEmpty(n node.Node) {
- nn := n.(*expr.Empty)
+func (p *PrettyPrinter) printExprEmpty(n ast.Vertex) {
+ nn := n.(*ast.ExprEmpty)
io.WriteString(p.w, "empty(")
p.Print(nn.Expr)
io.WriteString(p.w, ")")
}
-func (p *PrettyPrinter) printExprErrorSuppress(n node.Node) {
- nn := n.(*expr.ErrorSuppress)
+func (p *PrettyPrinter) printExprErrorSuppress(n ast.Vertex) {
+ nn := n.(*ast.ExprErrorSuppress)
io.WriteString(p.w, "@")
p.Print(nn.Expr)
}
-func (p *PrettyPrinter) printExprEval(n node.Node) {
- nn := n.(*expr.Eval)
+func (p *PrettyPrinter) printExprEval(n ast.Vertex) {
+ nn := n.(*ast.ExprEval)
io.WriteString(p.w, "eval(")
p.Print(nn.Expr)
io.WriteString(p.w, ")")
}
-func (p *PrettyPrinter) printExprExit(n node.Node) {
- nn := n.(*expr.Exit)
+func (p *PrettyPrinter) printExprExit(n ast.Vertex) {
+ nn := n.(*ast.ExprExit)
if nn.Die {
io.WriteString(p.w, "die(")
@@ -1098,8 +1090,8 @@ func (p *PrettyPrinter) printExprExit(n node.Node) {
io.WriteString(p.w, ")")
}
-func (p *PrettyPrinter) printExprFunctionCall(n node.Node) {
- nn := n.(*expr.FunctionCall)
+func (p *PrettyPrinter) printExprFunctionCall(n ast.Vertex) {
+ nn := n.(*ast.ExprFunctionCall)
p.Print(nn.Function)
io.WriteString(p.w, "(")
@@ -1107,48 +1099,48 @@ func (p *PrettyPrinter) printExprFunctionCall(n node.Node) {
io.WriteString(p.w, ")")
}
-func (p *PrettyPrinter) printExprInclude(n node.Node) {
- nn := n.(*expr.Include)
+func (p *PrettyPrinter) printExprInclude(n ast.Vertex) {
+ nn := n.(*ast.ExprInclude)
io.WriteString(p.w, "include ")
p.Print(nn.Expr)
}
-func (p *PrettyPrinter) printExprIncludeOnce(n node.Node) {
- nn := n.(*expr.IncludeOnce)
+func (p *PrettyPrinter) printExprIncludeOnce(n ast.Vertex) {
+ nn := n.(*ast.ExprIncludeOnce)
io.WriteString(p.w, "include_once ")
p.Print(nn.Expr)
}
-func (p *PrettyPrinter) printExprInstanceOf(n node.Node) {
- nn := n.(*expr.InstanceOf)
+func (p *PrettyPrinter) printExprInstanceOf(n ast.Vertex) {
+ nn := n.(*ast.ExprInstanceOf)
p.Print(nn.Expr)
io.WriteString(p.w, " instanceof ")
p.Print(nn.Class)
}
-func (p *PrettyPrinter) printExprIsset(n node.Node) {
- nn := n.(*expr.Isset)
+func (p *PrettyPrinter) printExprIsset(n ast.Vertex) {
+ nn := n.(*ast.ExprIsset)
io.WriteString(p.w, "isset(")
- p.joinPrint(", ", nn.Variables)
+ p.joinPrint(", ", nn.Vars)
io.WriteString(p.w, ")")
}
-func (p *PrettyPrinter) printExprList(n node.Node) {
- nn := n.(*expr.List)
+func (p *PrettyPrinter) printExprList(n ast.Vertex) {
+ nn := n.(*ast.ExprList)
io.WriteString(p.w, "list(")
p.joinPrint(", ", nn.Items)
io.WriteString(p.w, ")")
}
-func (p *PrettyPrinter) printExprMethodCall(n node.Node) {
- nn := n.(*expr.MethodCall)
+func (p *PrettyPrinter) printExprMethodCall(n ast.Vertex) {
+ nn := n.(*ast.ExprMethodCall)
- p.Print(nn.Variable)
+ p.Print(nn.Var)
io.WriteString(p.w, "->")
p.Print(nn.Method)
io.WriteString(p.w, "(")
@@ -1156,8 +1148,8 @@ func (p *PrettyPrinter) printExprMethodCall(n node.Node) {
io.WriteString(p.w, ")")
}
-func (p *PrettyPrinter) printExprNew(n node.Node) {
- nn := n.(*expr.New)
+func (p *PrettyPrinter) printExprNew(n ast.Vertex) {
+ nn := n.(*ast.ExprNew)
io.WriteString(p.w, "new ")
p.Print(nn.Class)
@@ -1169,78 +1161,78 @@ func (p *PrettyPrinter) printExprNew(n node.Node) {
}
}
-func (p *PrettyPrinter) printExprPostDec(n node.Node) {
- nn := n.(*expr.PostDec)
+func (p *PrettyPrinter) printExprPostDec(n ast.Vertex) {
+ nn := n.(*ast.ExprPostDec)
- p.Print(nn.Variable)
+ p.Print(nn.Var)
io.WriteString(p.w, "--")
}
-func (p *PrettyPrinter) printExprPostInc(n node.Node) {
- nn := n.(*expr.PostInc)
+func (p *PrettyPrinter) printExprPostInc(n ast.Vertex) {
+ nn := n.(*ast.ExprPostInc)
- p.Print(nn.Variable)
+ p.Print(nn.Var)
io.WriteString(p.w, "++")
}
-func (p *PrettyPrinter) printExprPreDec(n node.Node) {
- nn := n.(*expr.PreDec)
+func (p *PrettyPrinter) printExprPreDec(n ast.Vertex) {
+ nn := n.(*ast.ExprPreDec)
io.WriteString(p.w, "--")
- p.Print(nn.Variable)
+ p.Print(nn.Var)
}
-func (p *PrettyPrinter) printExprPreInc(n node.Node) {
- nn := n.(*expr.PreInc)
+func (p *PrettyPrinter) printExprPreInc(n ast.Vertex) {
+ nn := n.(*ast.ExprPreInc)
io.WriteString(p.w, "++")
- p.Print(nn.Variable)
+ p.Print(nn.Var)
}
-func (p *PrettyPrinter) printExprPrint(n node.Node) {
- nn := n.(*expr.Print)
+func (p *PrettyPrinter) printExprPrint(n ast.Vertex) {
+ nn := n.(*ast.ExprPrint)
io.WriteString(p.w, "print(")
p.Print(nn.Expr)
io.WriteString(p.w, ")")
}
-func (p *PrettyPrinter) printExprPropertyFetch(n node.Node) {
- nn := n.(*expr.PropertyFetch)
+func (p *PrettyPrinter) printExprPropertyFetch(n ast.Vertex) {
+ nn := n.(*ast.ExprPropertyFetch)
- p.Print(nn.Variable)
+ p.Print(nn.Var)
io.WriteString(p.w, "->")
p.Print(nn.Property)
}
-func (p *PrettyPrinter) printExprReference(n node.Node) {
- nn := n.(*expr.Reference)
+func (p *PrettyPrinter) printExprReference(n ast.Vertex) {
+ nn := n.(*ast.ExprReference)
io.WriteString(p.w, "&")
- p.Print(nn.Variable)
+ p.Print(nn.Var)
}
-func (p *PrettyPrinter) printExprRequire(n node.Node) {
- nn := n.(*expr.Require)
+func (p *PrettyPrinter) printExprRequire(n ast.Vertex) {
+ nn := n.(*ast.ExprRequire)
io.WriteString(p.w, "require ")
p.Print(nn.Expr)
}
-func (p *PrettyPrinter) printExprRequireOnce(n node.Node) {
- nn := n.(*expr.RequireOnce)
+func (p *PrettyPrinter) printExprRequireOnce(n ast.Vertex) {
+ nn := n.(*ast.ExprRequireOnce)
io.WriteString(p.w, "require_once ")
p.Print(nn.Expr)
}
-func (p *PrettyPrinter) printExprShellExec(n node.Node) {
- nn := n.(*expr.ShellExec)
+func (p *PrettyPrinter) printExprShellExec(n ast.Vertex) {
+ nn := n.(*ast.ExprShellExec)
io.WriteString(p.w, "`")
for _, part := range nn.Parts {
switch part.(type) {
- case *scalar.EncapsedStringPart:
+ case *ast.ScalarEncapsedStringPart:
p.Print(part)
default:
io.WriteString(p.w, "{")
@@ -1251,24 +1243,24 @@ func (p *PrettyPrinter) printExprShellExec(n node.Node) {
io.WriteString(p.w, "`")
}
-func (p *PrettyPrinter) printExprShortArray(n node.Node) {
- nn := n.(*expr.ShortArray)
+func (p *PrettyPrinter) printExprShortArray(n ast.Vertex) {
+ nn := n.(*ast.ExprShortArray)
io.WriteString(p.w, "[")
p.joinPrint(", ", nn.Items)
io.WriteString(p.w, "]")
}
-func (p *PrettyPrinter) printExprShortList(n node.Node) {
- nn := n.(*expr.ShortList)
+func (p *PrettyPrinter) printExprShortList(n ast.Vertex) {
+ nn := n.(*ast.ExprShortList)
io.WriteString(p.w, "[")
p.joinPrint(", ", nn.Items)
io.WriteString(p.w, "]")
}
-func (p *PrettyPrinter) printExprStaticCall(n node.Node) {
- nn := n.(*expr.StaticCall)
+func (p *PrettyPrinter) printExprStaticCall(n ast.Vertex) {
+ nn := n.(*ast.ExprStaticCall)
p.Print(nn.Class)
io.WriteString(p.w, "::")
@@ -1278,16 +1270,16 @@ func (p *PrettyPrinter) printExprStaticCall(n node.Node) {
io.WriteString(p.w, ")")
}
-func (p *PrettyPrinter) printExprStaticPropertyFetch(n node.Node) {
- nn := n.(*expr.StaticPropertyFetch)
+func (p *PrettyPrinter) printExprStaticPropertyFetch(n ast.Vertex) {
+ nn := n.(*ast.ExprStaticPropertyFetch)
p.Print(nn.Class)
io.WriteString(p.w, "::")
p.Print(nn.Property)
}
-func (p *PrettyPrinter) printExprTernary(n node.Node) {
- nn := n.(*expr.Ternary)
+func (p *PrettyPrinter) printExprTernary(n ast.Vertex) {
+ nn := n.(*ast.ExprTernary)
p.Print(nn.Condition)
io.WriteString(p.w, " ?")
@@ -1302,35 +1294,35 @@ func (p *PrettyPrinter) printExprTernary(n node.Node) {
p.Print(nn.IfFalse)
}
-func (p *PrettyPrinter) printExprUnaryMinus(n node.Node) {
- nn := n.(*expr.UnaryMinus)
+func (p *PrettyPrinter) printExprUnaryMinus(n ast.Vertex) {
+ nn := n.(*ast.ExprUnaryMinus)
io.WriteString(p.w, "-")
p.Print(nn.Expr)
}
-func (p *PrettyPrinter) printExprUnaryPlus(n node.Node) {
- nn := n.(*expr.UnaryPlus)
+func (p *PrettyPrinter) printExprUnaryPlus(n ast.Vertex) {
+ nn := n.(*ast.ExprUnaryPlus)
io.WriteString(p.w, "+")
p.Print(nn.Expr)
}
-func (p *PrettyPrinter) printExprVariable(n node.Node) {
- nn := n.(*expr.Variable)
+func (p *PrettyPrinter) printExprVariable(n ast.Vertex) {
+ nn := n.(*ast.ExprVariable)
io.WriteString(p.w, "$")
p.Print(nn.VarName)
}
-func (p *PrettyPrinter) printExprYieldFrom(n node.Node) {
- nn := n.(*expr.YieldFrom)
+func (p *PrettyPrinter) printExprYieldFrom(n ast.Vertex) {
+ nn := n.(*ast.ExprYieldFrom)
io.WriteString(p.w, "yield from ")
p.Print(nn.Expr)
}
-func (p *PrettyPrinter) printExprYield(n node.Node) {
- nn := n.(*expr.Yield)
+func (p *PrettyPrinter) printExprYield(n ast.Vertex) {
+ nn := n.(*ast.ExprYield)
io.WriteString(p.w, "yield ")
@@ -1344,32 +1336,32 @@ func (p *PrettyPrinter) printExprYield(n node.Node) {
// smtm
-func (p *PrettyPrinter) printStmtAltElseIf(n node.Node) {
- nn := n.(*stmt.AltElseIf)
+func (p *PrettyPrinter) printStmtAltElseIf(n ast.Vertex) {
+ nn := n.(*ast.StmtAltElseIf)
io.WriteString(p.w, "elseif (")
p.Print(nn.Cond)
io.WriteString(p.w, ") :")
- if s := nn.Stmt.(*stmt.StmtList).Stmts; len(s) > 0 {
+ if s := nn.Stmt.(*ast.StmtStmtList).Stmts; len(s) > 0 {
io.WriteString(p.w, "\n")
p.printNodes(s)
}
}
-func (p *PrettyPrinter) printStmtAltElse(n node.Node) {
- nn := n.(*stmt.AltElse)
+func (p *PrettyPrinter) printStmtAltElse(n ast.Vertex) {
+ nn := n.(*ast.StmtAltElse)
io.WriteString(p.w, "else :")
- if s := nn.Stmt.(*stmt.StmtList).Stmts; len(s) > 0 {
+ if s := nn.Stmt.(*ast.StmtStmtList).Stmts; len(s) > 0 {
io.WriteString(p.w, "\n")
p.printNodes(s)
}
}
-func (p *PrettyPrinter) printStmtAltFor(n node.Node) {
- nn := n.(*stmt.AltFor)
+func (p *PrettyPrinter) printStmtAltFor(n ast.Vertex) {
+ nn := n.(*ast.StmtAltFor)
io.WriteString(p.w, "for (")
p.joinPrint(", ", nn.Init)
@@ -1379,7 +1371,7 @@ func (p *PrettyPrinter) printStmtAltFor(n node.Node) {
p.joinPrint(", ", nn.Loop)
io.WriteString(p.w, ") :\n")
- s := nn.Stmt.(*stmt.StmtList)
+ s := nn.Stmt.(*ast.StmtStmtList)
p.printNodes(s.Stmts)
io.WriteString(p.w, "\n")
p.printIndent()
@@ -1387,8 +1379,8 @@ func (p *PrettyPrinter) printStmtAltFor(n node.Node) {
io.WriteString(p.w, "endfor;")
}
-func (p *PrettyPrinter) printStmtAltForeach(n node.Node) {
- nn := n.(*stmt.AltForeach)
+func (p *PrettyPrinter) printStmtAltForeach(n ast.Vertex) {
+ nn := n.(*ast.StmtAltForeach)
io.WriteString(p.w, "foreach (")
p.Print(nn.Expr)
@@ -1399,11 +1391,11 @@ func (p *PrettyPrinter) printStmtAltForeach(n node.Node) {
io.WriteString(p.w, " => ")
}
- p.Print(nn.Variable)
+ p.Print(nn.Var)
io.WriteString(p.w, ") :\n")
- s := nn.Stmt.(*stmt.StmtList)
+ s := nn.Stmt.(*ast.StmtStmtList)
p.printNodes(s.Stmts)
io.WriteString(p.w, "\n")
@@ -1411,14 +1403,14 @@ func (p *PrettyPrinter) printStmtAltForeach(n node.Node) {
io.WriteString(p.w, "endforeach;")
}
-func (p *PrettyPrinter) printStmtAltIf(n node.Node) {
- nn := n.(*stmt.AltIf)
+func (p *PrettyPrinter) printStmtAltIf(n ast.Vertex) {
+ nn := n.(*ast.StmtAltIf)
io.WriteString(p.w, "if (")
p.Print(nn.Cond)
io.WriteString(p.w, ") :\n")
- s := nn.Stmt.(*stmt.StmtList)
+ s := nn.Stmt.(*ast.StmtStmtList)
p.printNodes(s.Stmts)
for _, elseif := range nn.ElseIf {
@@ -1438,8 +1430,8 @@ func (p *PrettyPrinter) printStmtAltIf(n node.Node) {
io.WriteString(p.w, "endif;")
}
-func (p *PrettyPrinter) printStmtAltSwitch(n node.Node) {
- nn := n.(*stmt.AltSwitch)
+func (p *PrettyPrinter) printStmtAltSwitch(n ast.Vertex) {
+ nn := n.(*ast.StmtAltSwitch)
io.WriteString(p.w, "switch (")
p.Print(nn.Cond)
@@ -1453,14 +1445,14 @@ func (p *PrettyPrinter) printStmtAltSwitch(n node.Node) {
io.WriteString(p.w, "endswitch;")
}
-func (p *PrettyPrinter) printStmtAltWhile(n node.Node) {
- nn := n.(*stmt.AltWhile)
+func (p *PrettyPrinter) printStmtAltWhile(n ast.Vertex) {
+ nn := n.(*ast.StmtAltWhile)
io.WriteString(p.w, "while (")
p.Print(nn.Cond)
io.WriteString(p.w, ") :\n")
- s := nn.Stmt.(*stmt.StmtList)
+ s := nn.Stmt.(*ast.StmtStmtList)
p.printNodes(s.Stmts)
io.WriteString(p.w, "\n")
@@ -1468,8 +1460,8 @@ func (p *PrettyPrinter) printStmtAltWhile(n node.Node) {
io.WriteString(p.w, "endwhile;")
}
-func (p *PrettyPrinter) printStmtBreak(n node.Node) {
- nn := n.(*stmt.Break)
+func (p *PrettyPrinter) printStmtBreak(n ast.Vertex) {
+ nn := n.(*ast.StmtBreak)
io.WriteString(p.w, "break")
if nn.Expr != nil {
@@ -1480,8 +1472,8 @@ func (p *PrettyPrinter) printStmtBreak(n node.Node) {
io.WriteString(p.w, ";")
}
-func (p *PrettyPrinter) printStmtCase(n node.Node) {
- nn := n.(*stmt.Case)
+func (p *PrettyPrinter) printStmtCase(n ast.Vertex) {
+ nn := n.(*ast.StmtCase)
io.WriteString(p.w, "case ")
p.Print(nn.Cond)
@@ -1493,13 +1485,13 @@ func (p *PrettyPrinter) printStmtCase(n node.Node) {
}
}
-func (p *PrettyPrinter) printStmtCatch(n node.Node) {
- nn := n.(*stmt.Catch)
+func (p *PrettyPrinter) printStmtCatch(n ast.Vertex) {
+ nn := n.(*ast.StmtCatch)
io.WriteString(p.w, "catch (")
p.joinPrint(" | ", nn.Types)
io.WriteString(p.w, " ")
- p.Print(nn.Variable)
+ p.Print(nn.Var)
io.WriteString(p.w, ") {\n")
p.printNodes(nn.Stmts)
io.WriteString(p.w, "\n")
@@ -1507,8 +1499,8 @@ func (p *PrettyPrinter) printStmtCatch(n node.Node) {
io.WriteString(p.w, "}")
}
-func (p *PrettyPrinter) printStmtClassMethod(n node.Node) {
- nn := n.(*stmt.ClassMethod)
+func (p *PrettyPrinter) printStmtClassMethod(n ast.Vertex) {
+ nn := n.(*ast.StmtClassMethod)
if nn.Modifiers != nil {
p.joinPrint(" ", nn.Modifiers)
@@ -1531,7 +1523,7 @@ func (p *PrettyPrinter) printStmtClassMethod(n node.Node) {
}
switch s := nn.Stmt.(type) {
- case *stmt.StmtList:
+ case *ast.StmtStmtList:
io.WriteString(p.w, "\n")
p.printIndent()
io.WriteString(p.w, "{\n")
@@ -1544,8 +1536,8 @@ func (p *PrettyPrinter) printStmtClassMethod(n node.Node) {
}
}
-func (p *PrettyPrinter) printStmtClass(n node.Node) {
- nn := n.(*stmt.Class)
+func (p *PrettyPrinter) printStmtClass(n ast.Vertex) {
+ nn := n.(*ast.StmtClass)
if nn.Modifiers != nil {
p.joinPrint(" ", nn.Modifiers)
@@ -1583,8 +1575,8 @@ func (p *PrettyPrinter) printStmtClass(n node.Node) {
io.WriteString(p.w, "}")
}
-func (p *PrettyPrinter) printStmtClassConstList(n node.Node) {
- nn := n.(*stmt.ClassConstList)
+func (p *PrettyPrinter) printStmtClassConstList(n ast.Vertex) {
+ nn := n.(*ast.StmtClassConstList)
if nn.Modifiers != nil {
p.joinPrint(" ", nn.Modifiers)
@@ -1597,16 +1589,16 @@ func (p *PrettyPrinter) printStmtClassConstList(n node.Node) {
io.WriteString(p.w, ";")
}
-func (p *PrettyPrinter) printStmtConstant(n node.Node) {
- nn := n.(*stmt.Constant)
+func (p *PrettyPrinter) printStmtConstant(n ast.Vertex) {
+ nn := n.(*ast.StmtConstant)
p.Print(nn.ConstantName)
io.WriteString(p.w, " = ")
p.Print(nn.Expr)
}
-func (p *PrettyPrinter) printStmtContinue(n node.Node) {
- nn := n.(*stmt.Continue)
+func (p *PrettyPrinter) printStmtContinue(n ast.Vertex) {
+ nn := n.(*ast.StmtContinue)
io.WriteString(p.w, "continue")
if nn.Expr != nil {
@@ -1617,18 +1609,18 @@ func (p *PrettyPrinter) printStmtContinue(n node.Node) {
io.WriteString(p.w, ";")
}
-func (p *PrettyPrinter) printStmtDeclare(n node.Node) {
- nn := n.(*stmt.Declare)
+func (p *PrettyPrinter) printStmtDeclare(n ast.Vertex) {
+ nn := n.(*ast.StmtDeclare)
io.WriteString(p.w, "declare(")
p.joinPrint(", ", nn.Consts)
io.WriteString(p.w, ")")
switch s := nn.Stmt.(type) {
- case *stmt.Nop:
+ case *ast.StmtNop:
p.Print(s)
break
- case *stmt.StmtList:
+ case *ast.StmtStmtList:
io.WriteString(p.w, " ")
p.Print(s)
default:
@@ -1640,8 +1632,8 @@ func (p *PrettyPrinter) printStmtDeclare(n node.Node) {
}
}
-func (p *PrettyPrinter) printStmtDefault(n node.Node) {
- nn := n.(*stmt.Default)
+func (p *PrettyPrinter) printStmtDefault(n ast.Vertex) {
+ nn := n.(*ast.StmtDefault)
io.WriteString(p.w, "default:")
if len(nn.Stmts) > 0 {
@@ -1650,12 +1642,12 @@ func (p *PrettyPrinter) printStmtDefault(n node.Node) {
}
}
-func (p *PrettyPrinter) printStmtDo(n node.Node) {
- nn := n.(*stmt.Do)
+func (p *PrettyPrinter) printStmtDo(n ast.Vertex) {
+ nn := n.(*ast.StmtDo)
io.WriteString(p.w, "do")
switch s := nn.Stmt.(type) {
- case *stmt.StmtList:
+ case *ast.StmtStmtList:
io.WriteString(p.w, " ")
p.Print(s)
io.WriteString(p.w, " ")
@@ -1674,25 +1666,25 @@ func (p *PrettyPrinter) printStmtDo(n node.Node) {
io.WriteString(p.w, ");")
}
-func (p *PrettyPrinter) printStmtEcho(n node.Node) {
- nn := n.(*stmt.Echo)
+func (p *PrettyPrinter) printStmtEcho(n ast.Vertex) {
+ nn := n.(*ast.StmtEcho)
io.WriteString(p.w, "echo ")
p.joinPrint(", ", nn.Exprs)
io.WriteString(p.w, ";")
}
-func (p *PrettyPrinter) printStmtElseif(n node.Node) {
- nn := n.(*stmt.ElseIf)
+func (p *PrettyPrinter) printStmtElseif(n ast.Vertex) {
+ nn := n.(*ast.StmtElseIf)
io.WriteString(p.w, "elseif (")
p.Print(nn.Cond)
io.WriteString(p.w, ")")
switch s := nn.Stmt.(type) {
- case *stmt.Nop:
+ case *ast.StmtNop:
p.Print(s)
break
- case *stmt.StmtList:
+ case *ast.StmtStmtList:
io.WriteString(p.w, " ")
p.Print(s)
default:
@@ -1704,16 +1696,16 @@ func (p *PrettyPrinter) printStmtElseif(n node.Node) {
}
}
-func (p *PrettyPrinter) printStmtElse(n node.Node) {
- nn := n.(*stmt.Else)
+func (p *PrettyPrinter) printStmtElse(n ast.Vertex) {
+ nn := n.(*ast.StmtElse)
io.WriteString(p.w, "else")
switch s := nn.Stmt.(type) {
- case *stmt.Nop:
+ case *ast.StmtNop:
p.Print(s)
break
- case *stmt.StmtList:
+ case *ast.StmtStmtList:
io.WriteString(p.w, " ")
p.Print(s)
default:
@@ -1725,16 +1717,16 @@ func (p *PrettyPrinter) printStmtElse(n node.Node) {
}
}
-func (p *PrettyPrinter) printStmtExpression(n node.Node) {
- nn := n.(*stmt.Expression)
+func (p *PrettyPrinter) printStmtExpression(n ast.Vertex) {
+ nn := n.(*ast.StmtExpression)
p.Print(nn.Expr)
io.WriteString(p.w, ";")
}
-func (p *PrettyPrinter) printStmtFinally(n node.Node) {
- nn := n.(*stmt.Finally)
+func (p *PrettyPrinter) printStmtFinally(n ast.Vertex) {
+ nn := n.(*ast.StmtFinally)
io.WriteString(p.w, "finally {\n")
p.printNodes(nn.Stmts)
@@ -1743,8 +1735,8 @@ func (p *PrettyPrinter) printStmtFinally(n node.Node) {
io.WriteString(p.w, "}")
}
-func (p *PrettyPrinter) printStmtFor(n node.Node) {
- nn := n.(*stmt.For)
+func (p *PrettyPrinter) printStmtFor(n ast.Vertex) {
+ nn := n.(*ast.StmtFor)
io.WriteString(p.w, "for (")
p.joinPrint(", ", nn.Init)
@@ -1755,10 +1747,10 @@ func (p *PrettyPrinter) printStmtFor(n node.Node) {
io.WriteString(p.w, ")")
switch s := nn.Stmt.(type) {
- case *stmt.Nop:
+ case *ast.StmtNop:
p.Print(s)
break
- case *stmt.StmtList:
+ case *ast.StmtStmtList:
io.WriteString(p.w, " ")
p.Print(s)
default:
@@ -1770,8 +1762,8 @@ func (p *PrettyPrinter) printStmtFor(n node.Node) {
}
}
-func (p *PrettyPrinter) printStmtForeach(n node.Node) {
- nn := n.(*stmt.Foreach)
+func (p *PrettyPrinter) printStmtForeach(n ast.Vertex) {
+ nn := n.(*ast.StmtForeach)
io.WriteString(p.w, "foreach (")
p.Print(nn.Expr)
@@ -1782,14 +1774,14 @@ func (p *PrettyPrinter) printStmtForeach(n node.Node) {
io.WriteString(p.w, " => ")
}
- p.Print(nn.Variable)
+ p.Print(nn.Var)
io.WriteString(p.w, ")")
switch s := nn.Stmt.(type) {
- case *stmt.Nop:
+ case *ast.StmtNop:
p.Print(s)
break
- case *stmt.StmtList:
+ case *ast.StmtStmtList:
io.WriteString(p.w, " ")
p.Print(s)
default:
@@ -1801,8 +1793,8 @@ func (p *PrettyPrinter) printStmtForeach(n node.Node) {
}
}
-func (p *PrettyPrinter) printStmtFunction(n node.Node) {
- nn := n.(*stmt.Function)
+func (p *PrettyPrinter) printStmtFunction(n ast.Vertex) {
+ nn := n.(*ast.StmtFunction)
io.WriteString(p.w, "function ")
@@ -1828,24 +1820,24 @@ func (p *PrettyPrinter) printStmtFunction(n node.Node) {
io.WriteString(p.w, "}")
}
-func (p *PrettyPrinter) printStmtGlobal(n node.Node) {
- nn := n.(*stmt.Global)
+func (p *PrettyPrinter) printStmtGlobal(n ast.Vertex) {
+ nn := n.(*ast.StmtGlobal)
io.WriteString(p.w, "global ")
p.joinPrint(", ", nn.Vars)
io.WriteString(p.w, ";")
}
-func (p *PrettyPrinter) printStmtGoto(n node.Node) {
- nn := n.(*stmt.Goto)
+func (p *PrettyPrinter) printStmtGoto(n ast.Vertex) {
+ nn := n.(*ast.StmtGoto)
io.WriteString(p.w, "goto ")
p.Print(nn.Label)
io.WriteString(p.w, ";")
}
-func (p *PrettyPrinter) printStmtGroupUse(n node.Node) {
- nn := n.(*stmt.GroupUse)
+func (p *PrettyPrinter) printStmtGroupUse(n ast.Vertex) {
+ nn := n.(*ast.StmtGroupUse)
io.WriteString(p.w, "use ")
@@ -1860,22 +1852,22 @@ func (p *PrettyPrinter) printStmtGroupUse(n node.Node) {
io.WriteString(p.w, "};")
}
-func (p *PrettyPrinter) printStmtHaltCompiler(n node.Node) {
+func (p *PrettyPrinter) printStmtHaltCompiler(n ast.Vertex) {
io.WriteString(p.w, "__halt_compiler();")
}
-func (p *PrettyPrinter) printStmtIf(n node.Node) {
- nn := n.(*stmt.If)
+func (p *PrettyPrinter) printStmtIf(n ast.Vertex) {
+ nn := n.(*ast.StmtIf)
io.WriteString(p.w, "if (")
p.Print(nn.Cond)
io.WriteString(p.w, ")")
switch s := nn.Stmt.(type) {
- case *stmt.Nop:
+ case *ast.StmtNop:
p.Print(s)
break
- case *stmt.StmtList:
+ case *ast.StmtStmtList:
io.WriteString(p.w, " ")
p.Print(s)
default:
@@ -1900,16 +1892,16 @@ func (p *PrettyPrinter) printStmtIf(n node.Node) {
}
}
-func (p *PrettyPrinter) printStmtInlineHTML(n node.Node) {
- nn := n.(*stmt.InlineHtml)
+func (p *PrettyPrinter) printStmtInlineHTML(n ast.Vertex) {
+ nn := n.(*ast.StmtInlineHtml)
io.WriteString(p.w, "?>")
- io.WriteString(p.w, nn.Value)
+ io.WriteString(p.w, string(nn.Value))
io.WriteString(p.w, "HTML"},
- &stmt.Expression{
- Expr: &scalar.Heredoc{
- Label: "<<<\"LBL\"\n",
- Parts: []node.Node{
- &scalar.EncapsedStringPart{Value: "hello world\n"},
+ p.Print(&ast.Root{
+ Stmts: []ast.Vertex{
+ &ast.StmtInlineHtml{Value: []byte("
HTML
")},
+ &ast.StmtExpression{
+ Expr: &ast.ScalarHeredoc{
+ Label: []byte("<<<\"LBL\"\n"),
+ Parts: []ast.Vertex{
+ &ast.ScalarEncapsedStringPart{Value: []byte("hello world\n")},
},
},
},
@@ -114,7 +107,7 @@ func TestPrintIdentifier(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&node.Identifier{Value: "test"})
+ p.Print(&ast.Identifier{Value: []byte("test")})
if o.String() != `test` {
t.Errorf("TestPrintIdentifier is failed\n")
@@ -125,12 +118,12 @@ func TestPrintParameter(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&node.Parameter{
+ p.Print(&ast.Parameter{
ByRef: false,
Variadic: true,
- VariableType: &name.FullyQualified{Parts: []node.Node{&name.NamePart{Value: "Foo"}}},
- Variable: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
- DefaultValue: &scalar.String{Value: "'default'"},
+ Type: &ast.NameFullyQualified{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}},
+ Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
+ DefaultValue: &ast.ScalarString{Value: []byte("'default'")},
})
expected := "\\Foo ...$var = 'default'"
@@ -145,13 +138,13 @@ func TestPrintNullable(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&node.Nullable{
- Expr: &node.Parameter{
+ p.Print(&ast.Nullable{
+ Expr: &ast.Parameter{
ByRef: false,
Variadic: true,
- VariableType: &name.FullyQualified{Parts: []node.Node{&name.NamePart{Value: "Foo"}}},
- Variable: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
- DefaultValue: &scalar.String{Value: "'default'"},
+ Type: &ast.NameFullyQualified{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}},
+ Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
+ DefaultValue: &ast.ScalarString{Value: []byte("'default'")},
},
})
@@ -167,10 +160,10 @@ func TestPrintArgument(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&node.Argument{
+ p.Print(&ast.Argument{
IsReference: false,
Variadic: true,
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
})
expected := "...$var"
@@ -184,10 +177,10 @@ func TestPrintArgumentByRef(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&node.Argument{
+ p.Print(&ast.Argument{
IsReference: true,
Variadic: false,
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
})
expected := "&$var"
@@ -204,8 +197,8 @@ func TestPrintNameNamePart(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&name.NamePart{
- Value: "foo",
+ p.Print(&ast.NameNamePart{
+ Value: []byte("foo"),
})
expected := "foo"
@@ -220,13 +213,13 @@ func TestPrintNameName(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&name.Name{
- Parts: []node.Node{
- &name.NamePart{
- Value: "Foo",
+ p.Print(&ast.NameName{
+ Parts: []ast.Vertex{
+ &ast.NameNamePart{
+ Value: []byte("Foo"),
},
- &name.NamePart{
- Value: "Bar",
+ &ast.NameNamePart{
+ Value: []byte("Bar"),
},
},
})
@@ -243,13 +236,13 @@ func TestPrintNameFullyQualified(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&name.FullyQualified{
- Parts: []node.Node{
- &name.NamePart{
- Value: "Foo",
+ p.Print(&ast.NameFullyQualified{
+ Parts: []ast.Vertex{
+ &ast.NameNamePart{
+ Value: []byte("Foo"),
},
- &name.NamePart{
- Value: "Bar",
+ &ast.NameNamePart{
+ Value: []byte("Bar"),
},
},
})
@@ -266,13 +259,13 @@ func TestPrintNameRelative(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&name.Relative{
- Parts: []node.Node{
- &name.NamePart{
- Value: "Foo",
+ p.Print(&ast.NameRelative{
+ Parts: []ast.Vertex{
+ &ast.NameNamePart{
+ Value: []byte("Foo"),
},
- &name.NamePart{
- Value: "Bar",
+ &ast.NameNamePart{
+ Value: []byte("Bar"),
},
},
})
@@ -291,7 +284,7 @@ func TestPrintScalarLNumber(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&scalar.Lnumber{Value: "1"})
+ p.Print(&ast.ScalarLnumber{Value: []byte("1")})
if o.String() != `1` {
t.Errorf("TestPrintScalarLNumber is failed\n")
@@ -302,7 +295,7 @@ func TestPrintScalarDNumber(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&scalar.Dnumber{Value: ".1"})
+ p.Print(&ast.ScalarDnumber{Value: []byte(".1")})
if o.String() != `.1` {
t.Errorf("TestPrintScalarDNumber is failed\n")
@@ -313,7 +306,7 @@ func TestPrintScalarString(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&scalar.String{Value: "'hello world'"})
+ p.Print(&ast.ScalarString{Value: []byte("'hello world'")})
expected := `'hello world'`
actual := o.String()
@@ -327,7 +320,7 @@ func TestPrintScalarEncapsedStringPart(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&scalar.EncapsedStringPart{Value: "hello world"})
+ p.Print(&ast.ScalarEncapsedStringPart{Value: []byte("hello world")})
if o.String() != `hello world` {
t.Errorf("TestPrintScalarEncapsedStringPart is failed\n")
@@ -338,11 +331,11 @@ func TestPrintScalarEncapsed(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&scalar.Encapsed{
- Parts: []node.Node{
- &scalar.EncapsedStringPart{Value: "hello "},
- &expr.Variable{VarName: &node.Identifier{Value: "var"}},
- &scalar.EncapsedStringPart{Value: " world"},
+ p.Print(&ast.ScalarEncapsed{
+ Parts: []ast.Vertex{
+ &ast.ScalarEncapsedStringPart{Value: []byte("hello ")},
+ &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
+ &ast.ScalarEncapsedStringPart{Value: []byte(" world")},
},
})
@@ -355,12 +348,12 @@ func TestPrintScalarHeredoc(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&scalar.Heredoc{
- Label: "<<>= $b`
@@ -652,9 +645,9 @@ func TestPrintBinaryBitwiseAnd(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&binary.BitwiseAnd{
- Left: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Right: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.ExprBinaryBitwiseAnd{
+ Left: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Right: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
})
expected := `$a & $b`
@@ -669,9 +662,9 @@ func TestPrintBinaryBitwiseOr(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&binary.BitwiseOr{
- Left: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Right: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.ExprBinaryBitwiseOr{
+ Left: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Right: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
})
expected := `$a | $b`
@@ -686,9 +679,9 @@ func TestPrintBinaryBitwiseXor(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&binary.BitwiseXor{
- Left: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Right: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.ExprBinaryBitwiseXor{
+ Left: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Right: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
})
expected := `$a ^ $b`
@@ -703,9 +696,9 @@ func TestPrintBinaryBooleanAnd(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&binary.BooleanAnd{
- Left: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Right: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.ExprBinaryBooleanAnd{
+ Left: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Right: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
})
expected := `$a && $b`
@@ -720,9 +713,9 @@ func TestPrintBinaryBooleanOr(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&binary.BooleanOr{
- Left: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Right: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.ExprBinaryBooleanOr{
+ Left: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Right: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
})
expected := `$a || $b`
@@ -737,9 +730,9 @@ func TestPrintBinaryCoalesce(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&binary.Coalesce{
- Left: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Right: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.ExprBinaryCoalesce{
+ Left: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Right: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
})
expected := `$a ?? $b`
@@ -754,9 +747,9 @@ func TestPrintBinaryConcat(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&binary.Concat{
- Left: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Right: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.ExprBinaryConcat{
+ Left: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Right: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
})
expected := `$a . $b`
@@ -771,9 +764,9 @@ func TestPrintBinaryDiv(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&binary.Div{
- Left: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Right: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.ExprBinaryDiv{
+ Left: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Right: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
})
expected := `$a / $b`
@@ -788,9 +781,9 @@ func TestPrintBinaryEqual(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&binary.Equal{
- Left: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Right: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.ExprBinaryEqual{
+ Left: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Right: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
})
expected := `$a == $b`
@@ -805,9 +798,9 @@ func TestPrintBinaryGreaterOrEqual(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&binary.GreaterOrEqual{
- Left: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Right: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.ExprBinaryGreaterOrEqual{
+ Left: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Right: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
})
expected := `$a >= $b`
@@ -822,9 +815,9 @@ func TestPrintBinaryGreater(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&binary.Greater{
- Left: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Right: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.ExprBinaryGreater{
+ Left: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Right: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
})
expected := `$a > $b`
@@ -839,9 +832,9 @@ func TestPrintBinaryIdentical(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&binary.Identical{
- Left: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Right: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.ExprBinaryIdentical{
+ Left: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Right: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
})
expected := `$a === $b`
@@ -856,9 +849,9 @@ func TestPrintBinaryLogicalAnd(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&binary.LogicalAnd{
- Left: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Right: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.ExprBinaryLogicalAnd{
+ Left: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Right: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
})
expected := `$a and $b`
@@ -873,9 +866,9 @@ func TestPrintBinaryLogicalOr(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&binary.LogicalOr{
- Left: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Right: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.ExprBinaryLogicalOr{
+ Left: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Right: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
})
expected := `$a or $b`
@@ -890,9 +883,9 @@ func TestPrintBinaryLogicalXor(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&binary.LogicalXor{
- Left: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Right: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.ExprBinaryLogicalXor{
+ Left: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Right: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
})
expected := `$a xor $b`
@@ -907,9 +900,9 @@ func TestPrintBinaryMinus(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&binary.Minus{
- Left: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Right: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.ExprBinaryMinus{
+ Left: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Right: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
})
expected := `$a - $b`
@@ -924,9 +917,9 @@ func TestPrintBinaryMod(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&binary.Mod{
- Left: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Right: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.ExprBinaryMod{
+ Left: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Right: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
})
expected := `$a % $b`
@@ -941,9 +934,9 @@ func TestPrintBinaryMul(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&binary.Mul{
- Left: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Right: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.ExprBinaryMul{
+ Left: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Right: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
})
expected := `$a * $b`
@@ -958,9 +951,9 @@ func TestPrintBinaryNotEqual(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&binary.NotEqual{
- Left: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Right: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.ExprBinaryNotEqual{
+ Left: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Right: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
})
expected := `$a != $b`
@@ -975,9 +968,9 @@ func TestPrintBinaryNotIdentical(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&binary.NotIdentical{
- Left: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Right: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.ExprBinaryNotIdentical{
+ Left: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Right: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
})
expected := `$a !== $b`
@@ -992,9 +985,9 @@ func TestPrintBinaryPlus(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&binary.Plus{
- Left: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Right: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.ExprBinaryPlus{
+ Left: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Right: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
})
expected := `$a + $b`
@@ -1009,9 +1002,9 @@ func TestPrintBinaryPow(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&binary.Pow{
- Left: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Right: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.ExprBinaryPow{
+ Left: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Right: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
})
expected := `$a ** $b`
@@ -1026,9 +1019,9 @@ func TestPrintBinaryShiftLeft(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&binary.ShiftLeft{
- Left: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Right: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.ExprBinaryShiftLeft{
+ Left: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Right: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
})
expected := `$a << $b`
@@ -1043,9 +1036,9 @@ func TestPrintBinaryShiftRight(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&binary.ShiftRight{
- Left: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Right: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.ExprBinaryShiftRight{
+ Left: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Right: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
})
expected := `$a >> $b`
@@ -1060,9 +1053,9 @@ func TestPrintBinarySmallerOrEqual(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&binary.SmallerOrEqual{
- Left: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Right: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.ExprBinarySmallerOrEqual{
+ Left: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Right: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
})
expected := `$a <= $b`
@@ -1077,9 +1070,9 @@ func TestPrintBinarySmaller(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&binary.Smaller{
- Left: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Right: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.ExprBinarySmaller{
+ Left: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Right: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
})
expected := `$a < $b`
@@ -1094,9 +1087,9 @@ func TestPrintBinarySpaceship(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&binary.Spaceship{
- Left: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Right: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.ExprBinarySpaceship{
+ Left: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Right: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
})
expected := `$a <=> $b`
@@ -1113,8 +1106,8 @@ func TestPrintArray(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&cast.Array{
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
+ p.Print(&ast.ExprCastArray{
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
})
expected := `(array)$var`
@@ -1129,8 +1122,8 @@ func TestPrintBool(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&cast.Bool{
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
+ p.Print(&ast.ExprCastBool{
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
})
expected := `(bool)$var`
@@ -1145,8 +1138,8 @@ func TestPrintDouble(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&cast.Double{
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
+ p.Print(&ast.ExprCastDouble{
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
})
expected := `(float)$var`
@@ -1161,8 +1154,8 @@ func TestPrintInt(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&cast.Int{
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
+ p.Print(&ast.ExprCastInt{
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
})
expected := `(int)$var`
@@ -1177,8 +1170,8 @@ func TestPrintObject(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&cast.Object{
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
+ p.Print(&ast.ExprCastObject{
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
})
expected := `(object)$var`
@@ -1193,8 +1186,8 @@ func TestPrintString(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&cast.String{
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
+ p.Print(&ast.ExprCastString{
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
})
expected := `(string)$var`
@@ -1209,8 +1202,8 @@ func TestPrintUnset(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&cast.Unset{
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
+ p.Print(&ast.ExprCastUnset{
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
})
expected := `(unset)$var`
@@ -1227,9 +1220,9 @@ func TestPrintExprArrayDimFetch(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.ArrayDimFetch{
- Variable: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
- Dim: &scalar.Lnumber{Value: "1"},
+ p.Print(&ast.ExprArrayDimFetch{
+ Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
+ Dim: &ast.ScalarLnumber{Value: []byte("1")},
})
expected := `$var[1]`
@@ -1244,9 +1237,9 @@ func TestPrintExprArrayItemWithKey(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.ArrayItem{
- Key: &scalar.String{Value: "'Hello'"},
- Val: &expr.Variable{VarName: &node.Identifier{Value: "world"}},
+ p.Print(&ast.ExprArrayItem{
+ Key: &ast.ScalarString{Value: []byte("'Hello'")},
+ Val: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("world")}},
})
expected := `'Hello' => $world`
@@ -1261,8 +1254,8 @@ func TestPrintExprArrayItem(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.ArrayItem{
- Val: &expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "world"}}},
+ p.Print(&ast.ExprArrayItem{
+ Val: &ast.ExprReference{Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("world")}}},
})
expected := `&$world`
@@ -1277,18 +1270,18 @@ func TestPrintExprArray(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.Array{
- Items: []node.Node{
- &expr.ArrayItem{
- Key: &scalar.String{Value: "'Hello'"},
- Val: &expr.Variable{VarName: &node.Identifier{Value: "world"}},
+ p.Print(&ast.ExprArray{
+ Items: []ast.Vertex{
+ &ast.ExprArrayItem{
+ Key: &ast.ScalarString{Value: []byte("'Hello'")},
+ Val: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("world")}},
},
- &expr.ArrayItem{
- Key: &scalar.Lnumber{Value: "2"},
- Val: &expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "var"}}},
+ &ast.ExprArrayItem{
+ Key: &ast.ScalarLnumber{Value: []byte("2")},
+ Val: &ast.ExprReference{Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}}},
},
- &expr.ArrayItem{
- Val: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
+ &ast.ExprArrayItem{
+ Val: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
},
},
})
@@ -1305,8 +1298,8 @@ func TestPrintExprBitwiseNot(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.BitwiseNot{
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
+ p.Print(&ast.ExprBitwiseNot{
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
})
expected := `~$var`
@@ -1321,8 +1314,8 @@ func TestPrintExprBooleanNot(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.BooleanNot{
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
+ p.Print(&ast.ExprBooleanNot{
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
})
expected := `!$var`
@@ -1337,9 +1330,9 @@ func TestPrintExprClassConstFetch(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.ClassConstFetch{
- Class: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
- ConstantName: &node.Identifier{Value: "CONST"},
+ p.Print(&ast.ExprClassConstFetch{
+ Class: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
+ ConstantName: &ast.Identifier{Value: []byte("CONST")},
})
expected := `$var::CONST`
@@ -1354,8 +1347,8 @@ func TestPrintExprClone(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.Clone{
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
+ p.Print(&ast.ExprClone{
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
})
expected := `clone $var`
@@ -1370,10 +1363,10 @@ func TestPrintExprClosureUse(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.ClosureUse{
- Uses: []node.Node{
- &expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}},
- &expr.Variable{VarName: &node.Identifier{Value: "bar"}},
+ p.Print(&ast.ExprClosureUse{
+ Uses: []ast.Vertex{
+ &ast.ExprReference{Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("foo")}}},
+ &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("bar")}},
},
})
@@ -1389,27 +1382,27 @@ func TestPrintExprClosure(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Namespace{
- Stmts: []node.Node{
- &expr.Closure{
+ p.Print(&ast.StmtNamespace{
+ Stmts: []ast.Vertex{
+ &ast.ExprClosure{
Static: true,
ReturnsRef: true,
- Params: []node.Node{
- &node.Parameter{
+ Params: []ast.Vertex{
+ &ast.Parameter{
ByRef: true,
Variadic: false,
- Variable: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
+ Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
},
},
- ClosureUse: &expr.ClosureUse{
- Uses: []node.Node{
- &expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
- &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ ClosureUse: &ast.ExprClosureUse{
+ Uses: []ast.Vertex{
+ &ast.ExprReference{Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}}},
+ &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
},
},
- ReturnType: &name.FullyQualified{Parts: []node.Node{&name.NamePart{Value: "Foo"}}},
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
+ ReturnType: &ast.NameFullyQualified{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}},
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}}},
},
},
},
@@ -1431,8 +1424,8 @@ func TestPrintExprConstFetch(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.ConstFetch{
- Constant: &name.Name{Parts: []node.Node{&name.NamePart{Value: "null"}}},
+ p.Print(&ast.ExprConstFetch{
+ Const: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("null")}}},
})
expected := "null"
@@ -1447,7 +1440,7 @@ func TestPrintEmpty(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.Empty{Expr: &expr.Variable{VarName: &node.Identifier{Value: "var"}}})
+ p.Print(&ast.ExprEmpty{Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}}})
expected := `empty($var)`
actual := o.String()
@@ -1461,7 +1454,7 @@ func TestPrettyPrinterrorSuppress(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.ErrorSuppress{Expr: &expr.Variable{VarName: &node.Identifier{Value: "var"}}})
+ p.Print(&ast.ExprErrorSuppress{Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}}})
expected := `@$var`
actual := o.String()
@@ -1475,7 +1468,7 @@ func TestPrintEval(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.Eval{Expr: &expr.Variable{VarName: &node.Identifier{Value: "var"}}})
+ p.Print(&ast.ExprEval{Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}}})
expected := `eval($var)`
actual := o.String()
@@ -1489,7 +1482,7 @@ func TestPrintExit(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.Exit{Die: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "var"}}})
+ p.Print(&ast.ExprExit{Die: false, Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}}})
expected := `exit($var)`
actual := o.String()
@@ -1503,7 +1496,7 @@ func TestPrintDie(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.Exit{Die: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "var"}}})
+ p.Print(&ast.ExprExit{Die: true, Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}}})
expected := `die($var)`
actual := o.String()
@@ -1517,20 +1510,20 @@ func TestPrintFunctionCall(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.FunctionCall{
- Function: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
- ArgumentList: &node.ArgumentList{
- Arguments: []node.Node{
- &node.Argument{
+ p.Print(&ast.ExprFunctionCall{
+ Function: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
+ ArgumentList: &ast.ArgumentList{
+ Arguments: []ast.Vertex{
+ &ast.Argument{
IsReference: true,
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
},
- &node.Argument{
+ &ast.Argument{
Variadic: true,
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
},
- &node.Argument{
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "c"}},
+ &ast.Argument{
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("c")}},
},
},
},
@@ -1548,7 +1541,7 @@ func TestPrintInclude(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.Include{Expr: &scalar.String{Value: "'path'"}})
+ p.Print(&ast.ExprInclude{Expr: &ast.ScalarString{Value: []byte("'path'")}})
expected := `include 'path'`
actual := o.String()
@@ -1562,7 +1555,7 @@ func TestPrintIncludeOnce(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.IncludeOnce{Expr: &scalar.String{Value: "'path'"}})
+ p.Print(&ast.ExprIncludeOnce{Expr: &ast.ScalarString{Value: []byte("'path'")}})
expected := `include_once 'path'`
actual := o.String()
@@ -1576,9 +1569,9 @@ func TestPrintInstanceOf(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.InstanceOf{
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
- Class: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}},
+ p.Print(&ast.ExprInstanceOf{
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
+ Class: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}},
})
expected := `$var instanceof Foo`
@@ -1593,10 +1586,10 @@ func TestPrintIsset(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.Isset{
- Variables: []node.Node{
- &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.ExprIsset{
+ Vars: []ast.Vertex{
+ &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
},
})
@@ -1612,19 +1605,19 @@ func TestPrintList(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.List{
- Items: []node.Node{
- &expr.ArrayItem{
- Val: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
+ p.Print(&ast.ExprList{
+ Items: []ast.Vertex{
+ &ast.ExprArrayItem{
+ Val: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
},
- &expr.ArrayItem{
- Val: &expr.List{
- Items: []node.Node{
- &expr.ArrayItem{
- Val: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ &ast.ExprArrayItem{
+ Val: &ast.ExprList{
+ Items: []ast.Vertex{
+ &ast.ExprArrayItem{
+ Val: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
},
- &expr.ArrayItem{
- Val: &expr.Variable{VarName: &node.Identifier{Value: "c"}},
+ &ast.ExprArrayItem{
+ Val: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("c")}},
},
},
},
@@ -1644,16 +1637,16 @@ func TestPrintMethodCall(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.MethodCall{
- Variable: &expr.Variable{VarName: &node.Identifier{Value: "foo"}},
- Method: &node.Identifier{Value: "bar"},
- ArgumentList: &node.ArgumentList{
- Arguments: []node.Node{
- &node.Argument{
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
+ p.Print(&ast.ExprMethodCall{
+ Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("foo")}},
+ Method: &ast.Identifier{Value: []byte("bar")},
+ ArgumentList: &ast.ArgumentList{
+ Arguments: []ast.Vertex{
+ &ast.Argument{
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
},
- &node.Argument{
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ &ast.Argument{
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
},
},
},
@@ -1671,15 +1664,15 @@ func TestPrintNew(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.New{
- Class: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}},
- ArgumentList: &node.ArgumentList{
- Arguments: []node.Node{
- &node.Argument{
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
+ p.Print(&ast.ExprNew{
+ Class: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}},
+ ArgumentList: &ast.ArgumentList{
+ Arguments: []ast.Vertex{
+ &ast.Argument{
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
},
- &node.Argument{
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ &ast.Argument{
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
},
},
},
@@ -1697,8 +1690,8 @@ func TestPrintPostDec(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.PostDec{
- Variable: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
+ p.Print(&ast.ExprPostDec{
+ Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
})
expected := `$var--`
@@ -1713,8 +1706,8 @@ func TestPrintPostInc(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.PostInc{
- Variable: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
+ p.Print(&ast.ExprPostInc{
+ Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
})
expected := `$var++`
@@ -1729,8 +1722,8 @@ func TestPrintPreDec(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.PreDec{
- Variable: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
+ p.Print(&ast.ExprPreDec{
+ Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
})
expected := `--$var`
@@ -1745,8 +1738,8 @@ func TestPrintPreInc(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.PreInc{
- Variable: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
+ p.Print(&ast.ExprPreInc{
+ Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
})
expected := `++$var`
@@ -1761,7 +1754,7 @@ func TestPrintPrint(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.Print{Expr: &expr.Variable{VarName: &node.Identifier{Value: "var"}}})
+ p.Print(&ast.ExprPrint{Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}}})
expected := `print($var)`
actual := o.String()
@@ -1775,9 +1768,9 @@ func TestPrintPropertyFetch(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.PropertyFetch{
- Variable: &expr.Variable{VarName: &node.Identifier{Value: "foo"}},
- Property: &node.Identifier{Value: "bar"},
+ p.Print(&ast.ExprPropertyFetch{
+ Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("foo")}},
+ Property: &ast.Identifier{Value: []byte("bar")},
})
expected := `$foo->bar`
@@ -1792,8 +1785,8 @@ func TestPrintExprReference(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.Reference{
- Variable: &expr.Variable{VarName: &node.Identifier{Value: "foo"}},
+ p.Print(&ast.ExprReference{
+ Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("foo")}},
})
expected := `&$foo`
@@ -1808,7 +1801,7 @@ func TestPrintRequire(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.Require{Expr: &scalar.String{Value: "'path'"}})
+ p.Print(&ast.ExprRequire{Expr: &ast.ScalarString{Value: []byte("'path'")}})
expected := `require 'path'`
actual := o.String()
@@ -1822,7 +1815,7 @@ func TestPrintRequireOnce(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.RequireOnce{Expr: &scalar.String{Value: "'path'"}})
+ p.Print(&ast.ExprRequireOnce{Expr: &ast.ScalarString{Value: []byte("'path'")}})
expected := `require_once 'path'`
actual := o.String()
@@ -1836,11 +1829,11 @@ func TestPrintShellExec(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.ShellExec{
- Parts: []node.Node{
- &scalar.EncapsedStringPart{Value: "hello "},
- &expr.Variable{VarName: &node.Identifier{Value: "world"}},
- &scalar.EncapsedStringPart{Value: "!"},
+ p.Print(&ast.ExprShellExec{
+ Parts: []ast.Vertex{
+ &ast.ScalarEncapsedStringPart{Value: []byte("hello ")},
+ &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("world")}},
+ &ast.ScalarEncapsedStringPart{Value: []byte("!")},
},
})
@@ -1856,18 +1849,18 @@ func TestPrintExprShortArray(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.ShortArray{
- Items: []node.Node{
- &expr.ArrayItem{
- Key: &scalar.String{Value: "'Hello'"},
- Val: &expr.Variable{VarName: &node.Identifier{Value: "world"}},
+ p.Print(&ast.ExprShortArray{
+ Items: []ast.Vertex{
+ &ast.ExprArrayItem{
+ Key: &ast.ScalarString{Value: []byte("'Hello'")},
+ Val: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("world")}},
},
- &expr.ArrayItem{
- Key: &scalar.Lnumber{Value: "2"},
- Val: &expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "var"}}},
+ &ast.ExprArrayItem{
+ Key: &ast.ScalarLnumber{Value: []byte("2")},
+ Val: &ast.ExprReference{Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}}},
},
- &expr.ArrayItem{
- Val: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
+ &ast.ExprArrayItem{
+ Val: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
},
},
})
@@ -1884,19 +1877,19 @@ func TestPrintShortList(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.ShortList{
- Items: []node.Node{
- &expr.ArrayItem{
- Val: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
+ p.Print(&ast.ExprShortList{
+ Items: []ast.Vertex{
+ &ast.ExprArrayItem{
+ Val: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
},
- &expr.ArrayItem{
- Val: &expr.List{
- Items: []node.Node{
- &expr.ArrayItem{
- Val: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ &ast.ExprArrayItem{
+ Val: &ast.ExprList{
+ Items: []ast.Vertex{
+ &ast.ExprArrayItem{
+ Val: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
},
- &expr.ArrayItem{
- Val: &expr.Variable{VarName: &node.Identifier{Value: "c"}},
+ &ast.ExprArrayItem{
+ Val: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("c")}},
},
},
},
@@ -1916,16 +1909,16 @@ func TestPrintStaticCall(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.StaticCall{
- Class: &node.Identifier{Value: "Foo"},
- Call: &node.Identifier{Value: "bar"},
- ArgumentList: &node.ArgumentList{
- Arguments: []node.Node{
- &node.Argument{
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
+ p.Print(&ast.ExprStaticCall{
+ Class: &ast.Identifier{Value: []byte("Foo")},
+ Call: &ast.Identifier{Value: []byte("bar")},
+ ArgumentList: &ast.ArgumentList{
+ Arguments: []ast.Vertex{
+ &ast.Argument{
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
},
- &node.Argument{
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ &ast.Argument{
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
},
},
},
@@ -1943,9 +1936,9 @@ func TestPrintStaticPropertyFetch(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.StaticPropertyFetch{
- Class: &node.Identifier{Value: "Foo"},
- Property: &expr.Variable{VarName: &node.Identifier{Value: "bar"}},
+ p.Print(&ast.ExprStaticPropertyFetch{
+ Class: &ast.Identifier{Value: []byte("Foo")},
+ Property: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("bar")}},
})
expected := `Foo::$bar`
@@ -1960,9 +1953,9 @@ func TestPrintTernary(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.Ternary{
- Condition: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- IfFalse: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.ExprTernary{
+ Condition: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ IfFalse: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
})
expected := `$a ?: $b`
@@ -1977,10 +1970,10 @@ func TestPrintTernaryFull(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.Ternary{
- Condition: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- IfTrue: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
- IfFalse: &expr.Variable{VarName: &node.Identifier{Value: "c"}},
+ p.Print(&ast.ExprTernary{
+ Condition: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ IfTrue: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
+ IfFalse: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("c")}},
})
expected := `$a ? $b : $c`
@@ -1995,8 +1988,8 @@ func TestPrintUnaryMinus(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.UnaryMinus{
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
+ p.Print(&ast.ExprUnaryMinus{
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
})
expected := `-$var`
@@ -2011,8 +2004,8 @@ func TestPrintUnaryPlus(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.UnaryPlus{
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
+ p.Print(&ast.ExprUnaryPlus{
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
})
expected := `+$var`
@@ -2027,7 +2020,7 @@ func TestPrintVariable(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.Variable{VarName: &expr.Variable{VarName: &node.Identifier{Value: "var"}}})
+ p.Print(&ast.ExprVariable{VarName: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}}})
expected := `$$var`
actual := o.String()
@@ -2041,8 +2034,8 @@ func TestPrintYieldFrom(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.YieldFrom{
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
+ p.Print(&ast.ExprYieldFrom{
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
})
expected := `yield from $var`
@@ -2057,8 +2050,8 @@ func TestPrintYield(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.Yield{
- Value: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
+ p.Print(&ast.ExprYield{
+ Value: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
})
expected := `yield $var`
@@ -2073,9 +2066,9 @@ func TestPrintYieldFull(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&expr.Yield{
- Key: &expr.Variable{VarName: &node.Identifier{Value: "k"}},
- Value: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
+ p.Print(&ast.ExprYield{
+ Key: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("k")}},
+ Value: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
})
expected := `yield $k => $var`
@@ -2092,11 +2085,11 @@ func TestPrintAltElseIf(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.AltElseIf{
- Cond: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
+ p.Print(&ast.StmtAltElseIf{
+ Cond: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}}},
},
},
})
@@ -2114,9 +2107,9 @@ func TestPrintAltElseIfEmpty(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.AltElseIf{
- Cond: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Stmt: &stmt.StmtList{},
+ p.Print(&ast.StmtAltElseIf{
+ Cond: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Stmt: &ast.StmtStmtList{},
})
expected := `elseif ($a) :`
@@ -2131,10 +2124,10 @@ func TestPrintAltElse(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.AltElse{
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
+ p.Print(&ast.StmtAltElse{
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}}},
},
},
})
@@ -2152,8 +2145,8 @@ func TestPrintAltElseEmpty(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.AltElse{
- Stmt: &stmt.StmtList{},
+ p.Print(&ast.StmtAltElse{
+ Stmt: &ast.StmtStmtList{},
})
expected := `else :`
@@ -2168,21 +2161,21 @@ func TestPrintAltFor(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Namespace{
- Stmts: []node.Node{
- &stmt.AltFor{
- Init: []node.Node{
- &expr.Variable{VarName: &node.Identifier{Value: "a"}},
+ p.Print(&ast.StmtNamespace{
+ Stmts: []ast.Vertex{
+ &ast.StmtAltFor{
+ Init: []ast.Vertex{
+ &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
},
- Cond: []node.Node{
- &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ Cond: []ast.Vertex{
+ &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
},
- Loop: []node.Node{
- &expr.Variable{VarName: &node.Identifier{Value: "c"}},
+ Loop: []ast.Vertex{
+ &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("c")}},
},
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{VarName: &node.Identifier{Value: "d"}}},
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("d")}}},
},
},
},
@@ -2205,15 +2198,15 @@ func TestPrintAltForeach(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Namespace{
- Stmts: []node.Node{
- &stmt.AltForeach{
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
- Key: &expr.Variable{VarName: &node.Identifier{Value: "key"}},
- Variable: &expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "val"}}},
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{VarName: &node.Identifier{Value: "d"}}},
+ p.Print(&ast.StmtNamespace{
+ Stmts: []ast.Vertex{
+ &ast.StmtAltForeach{
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
+ Key: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("key")}},
+ Var: &ast.ExprReference{Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("val")}}},
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("d")}}},
},
},
},
@@ -2236,33 +2229,33 @@ func TestPrintAltIf(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Namespace{
- Stmts: []node.Node{
- &stmt.AltIf{
- Cond: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{VarName: &node.Identifier{Value: "d"}}},
+ p.Print(&ast.StmtNamespace{
+ Stmts: []ast.Vertex{
+ &ast.StmtAltIf{
+ Cond: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("d")}}},
},
},
- ElseIf: []node.Node{
- &stmt.AltElseIf{
- Cond: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
+ ElseIf: []ast.Vertex{
+ &ast.StmtAltElseIf{
+ Cond: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}}},
},
},
},
- &stmt.AltElseIf{
- Cond: &expr.Variable{VarName: &node.Identifier{Value: "c"}},
- Stmt: &stmt.StmtList{},
+ &ast.StmtAltElseIf{
+ Cond: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("c")}},
+ Stmt: &ast.StmtStmtList{},
},
},
- Else: &stmt.AltElse{
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
+ Else: &ast.StmtAltElse{
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}}},
},
},
},
@@ -2291,22 +2284,22 @@ func TestPrintStmtAltSwitch(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Namespace{
- Stmts: []node.Node{
- &stmt.AltSwitch{
- Cond: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
- CaseList: &stmt.CaseList{
- Cases: []node.Node{
- &stmt.Case{
- Cond: &scalar.String{Value: "'a'"},
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
+ p.Print(&ast.StmtNamespace{
+ Stmts: []ast.Vertex{
+ &ast.StmtAltSwitch{
+ Cond: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
+ CaseList: &ast.StmtCaseList{
+ Cases: []ast.Vertex{
+ &ast.StmtCase{
+ Cond: &ast.ScalarString{Value: []byte("'a'")},
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}}},
},
},
- &stmt.Case{
- Cond: &scalar.String{Value: "'b'"},
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
+ &ast.StmtCase{
+ Cond: &ast.ScalarString{Value: []byte("'b'")},
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}}},
},
},
},
@@ -2334,13 +2327,13 @@ func TestPrintAltWhile(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Namespace{
- Stmts: []node.Node{
- &stmt.AltWhile{
- Cond: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}},
+ p.Print(&ast.StmtNamespace{
+ Stmts: []ast.Vertex{
+ &ast.StmtAltWhile{
+ Cond: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}}},
},
},
},
@@ -2363,8 +2356,8 @@ func TestPrintStmtBreak(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Break{
- Expr: &scalar.Lnumber{Value: "1"},
+ p.Print(&ast.StmtBreak{
+ Expr: &ast.ScalarLnumber{Value: []byte("1")},
})
expected := "break 1;"
@@ -2379,10 +2372,10 @@ func TestPrintStmtCase(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Case{
- Cond: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
+ p.Print(&ast.StmtCase{
+ Cond: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}}},
},
})
@@ -2399,9 +2392,9 @@ func TestPrintStmtCaseEmpty(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Case{
- Cond: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Stmts: []node.Node{},
+ p.Print(&ast.StmtCase{
+ Cond: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Stmts: []ast.Vertex{},
})
expected := "case $a:"
@@ -2416,16 +2409,16 @@ func TestPrintStmtCatch(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Namespace{
- Stmts: []node.Node{
- &stmt.Catch{
- Types: []node.Node{
- &name.Name{Parts: []node.Node{&name.NamePart{Value: "Exception"}}},
- &name.FullyQualified{Parts: []node.Node{&name.NamePart{Value: "RuntimeException"}}},
+ p.Print(&ast.StmtNamespace{
+ Stmts: []ast.Vertex{
+ &ast.StmtCatch{
+ Types: []ast.Vertex{
+ &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Exception")}}},
+ &ast.NameFullyQualified{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("RuntimeException")}}},
},
- Variable: &expr.Variable{VarName: &node.Identifier{Value: "e"}},
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
+ Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("e")}},
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}}},
},
},
},
@@ -2447,26 +2440,26 @@ func TestPrintStmtClassMethod(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.ClassMethod{
- Modifiers: []node.Node{&node.Identifier{Value: "public"}},
+ p.Print(&ast.StmtClassMethod{
+ Modifiers: []ast.Vertex{&ast.Identifier{Value: []byte("public")}},
ReturnsRef: true,
- MethodName: &node.Identifier{Value: "foo"},
- Params: []node.Node{
- &node.Parameter{
+ MethodName: &ast.Identifier{Value: []byte("foo")},
+ Params: []ast.Vertex{
+ &ast.Parameter{
ByRef: true,
- VariableType: &node.Nullable{Expr: &name.Name{Parts: []node.Node{&name.NamePart{Value: "int"}}}},
- Variable: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- DefaultValue: &expr.ConstFetch{Constant: &name.Name{Parts: []node.Node{&name.NamePart{Value: "null"}}}},
+ Type: &ast.Nullable{Expr: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("int")}}}},
+ Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ DefaultValue: &ast.ExprConstFetch{Const: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("null")}}}},
},
- &node.Parameter{
+ &ast.Parameter{
Variadic: true,
- Variable: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
},
},
- ReturnType: &name.Name{Parts: []node.Node{&name.NamePart{Value: "void"}}},
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
+ ReturnType: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("void")}}},
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}}},
},
},
})
@@ -2485,24 +2478,24 @@ func TestPrintStmtAbstractClassMethod(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.ClassMethod{
- Modifiers: []node.Node{&node.Identifier{Value: "public"}},
+ p.Print(&ast.StmtClassMethod{
+ Modifiers: []ast.Vertex{&ast.Identifier{Value: []byte("public")}},
ReturnsRef: true,
- MethodName: &node.Identifier{Value: "foo"},
- Params: []node.Node{
- &node.Parameter{
+ MethodName: &ast.Identifier{Value: []byte("foo")},
+ Params: []ast.Vertex{
+ &ast.Parameter{
ByRef: true,
- VariableType: &node.Nullable{Expr: &name.Name{Parts: []node.Node{&name.NamePart{Value: "int"}}}},
- Variable: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- DefaultValue: &expr.ConstFetch{Constant: &name.Name{Parts: []node.Node{&name.NamePart{Value: "null"}}}},
+ Type: &ast.Nullable{Expr: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("int")}}}},
+ Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ DefaultValue: &ast.ExprConstFetch{Const: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("null")}}}},
},
- &node.Parameter{
+ &ast.Parameter{
Variadic: true,
- Variable: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
},
},
- ReturnType: &name.Name{Parts: []node.Node{&name.NamePart{Value: "void"}}},
- Stmt: &stmt.Nop{},
+ ReturnType: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("void")}}},
+ Stmt: &ast.StmtNop{},
})
expected := `public function &foo(?int &$a = null, ...$b): void;`
@@ -2517,27 +2510,27 @@ func TestPrintStmtClass(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Namespace{
- Stmts: []node.Node{
- &stmt.Class{
- Modifiers: []node.Node{&node.Identifier{Value: "abstract"}},
- ClassName: &node.Identifier{Value: "Foo"},
- Extends: &stmt.ClassExtends{
- ClassName: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Bar"}}},
+ p.Print(&ast.StmtNamespace{
+ Stmts: []ast.Vertex{
+ &ast.StmtClass{
+ Modifiers: []ast.Vertex{&ast.Identifier{Value: []byte("abstract")}},
+ ClassName: &ast.Identifier{Value: []byte("Foo")},
+ Extends: &ast.StmtClassExtends{
+ ClassName: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Bar")}}},
},
- Implements: &stmt.ClassImplements{
- InterfaceNames: []node.Node{
- &name.Name{Parts: []node.Node{&name.NamePart{Value: "Baz"}}},
- &name.Name{Parts: []node.Node{&name.NamePart{Value: "Quuz"}}},
+ Implements: &ast.StmtClassImplements{
+ InterfaceNames: []ast.Vertex{
+ &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Baz")}}},
+ &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Quuz")}}},
},
},
- Stmts: []node.Node{
- &stmt.ClassConstList{
- Modifiers: []node.Node{&node.Identifier{Value: "public"}},
- Consts: []node.Node{
- &stmt.Constant{
- ConstantName: &node.Identifier{Value: "FOO"},
- Expr: &scalar.String{Value: "'bar'"},
+ Stmts: []ast.Vertex{
+ &ast.StmtClassConstList{
+ Modifiers: []ast.Vertex{&ast.Identifier{Value: []byte("public")}},
+ Consts: []ast.Vertex{
+ &ast.StmtConstant{
+ ConstantName: &ast.Identifier{Value: []byte("FOO")},
+ Expr: &ast.ScalarString{Value: []byte("'bar'")},
},
},
},
@@ -2563,36 +2556,36 @@ func TestPrintStmtAnonymousClass(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Namespace{
- Stmts: []node.Node{
- &stmt.Class{
- Modifiers: []node.Node{&node.Identifier{Value: "abstract"}},
- ArgumentList: &node.ArgumentList{
- Arguments: []node.Node{
- &node.Argument{
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
+ p.Print(&ast.StmtNamespace{
+ Stmts: []ast.Vertex{
+ &ast.StmtClass{
+ Modifiers: []ast.Vertex{&ast.Identifier{Value: []byte("abstract")}},
+ ArgumentList: &ast.ArgumentList{
+ Arguments: []ast.Vertex{
+ &ast.Argument{
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
},
- &node.Argument{
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ &ast.Argument{
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
},
},
},
- Extends: &stmt.ClassExtends{
- ClassName: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Bar"}}},
+ Extends: &ast.StmtClassExtends{
+ ClassName: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Bar")}}},
},
- Implements: &stmt.ClassImplements{
- InterfaceNames: []node.Node{
- &name.Name{Parts: []node.Node{&name.NamePart{Value: "Baz"}}},
- &name.Name{Parts: []node.Node{&name.NamePart{Value: "Quuz"}}},
+ Implements: &ast.StmtClassImplements{
+ InterfaceNames: []ast.Vertex{
+ &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Baz")}}},
+ &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Quuz")}}},
},
},
- Stmts: []node.Node{
- &stmt.ClassConstList{
- Modifiers: []node.Node{&node.Identifier{Value: "public"}},
- Consts: []node.Node{
- &stmt.Constant{
- ConstantName: &node.Identifier{Value: "FOO"},
- Expr: &scalar.String{Value: "'bar'"},
+ Stmts: []ast.Vertex{
+ &ast.StmtClassConstList{
+ Modifiers: []ast.Vertex{&ast.Identifier{Value: []byte("public")}},
+ Consts: []ast.Vertex{
+ &ast.StmtConstant{
+ ConstantName: &ast.Identifier{Value: []byte("FOO")},
+ Expr: &ast.ScalarString{Value: []byte("'bar'")},
},
},
},
@@ -2618,16 +2611,16 @@ func TestPrintStmtClassConstList(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.ClassConstList{
- Modifiers: []node.Node{&node.Identifier{Value: "public"}},
- Consts: []node.Node{
- &stmt.Constant{
- ConstantName: &node.Identifier{Value: "FOO"},
- Expr: &scalar.String{Value: "'a'"},
+ p.Print(&ast.StmtClassConstList{
+ Modifiers: []ast.Vertex{&ast.Identifier{Value: []byte("public")}},
+ Consts: []ast.Vertex{
+ &ast.StmtConstant{
+ ConstantName: &ast.Identifier{Value: []byte("FOO")},
+ Expr: &ast.ScalarString{Value: []byte("'a'")},
},
- &stmt.Constant{
- ConstantName: &node.Identifier{Value: "BAR"},
- Expr: &scalar.String{Value: "'b'"},
+ &ast.StmtConstant{
+ ConstantName: &ast.Identifier{Value: []byte("BAR")},
+ Expr: &ast.ScalarString{Value: []byte("'b'")},
},
},
})
@@ -2644,9 +2637,9 @@ func TestPrintStmtConstant(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Constant{
- ConstantName: &node.Identifier{Value: "FOO"},
- Expr: &scalar.String{Value: "'BAR'"},
+ p.Print(&ast.StmtConstant{
+ ConstantName: &ast.Identifier{Value: []byte("FOO")},
+ Expr: &ast.ScalarString{Value: []byte("'BAR'")},
})
expected := "FOO = 'BAR'"
@@ -2661,8 +2654,8 @@ func TestPrintStmtContinue(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Continue{
- Expr: &scalar.Lnumber{Value: "1"},
+ p.Print(&ast.StmtContinue{
+ Expr: &ast.ScalarLnumber{Value: []byte("1")},
})
expected := `continue 1;`
@@ -2677,18 +2670,18 @@ func TestPrintStmtDeclareStmts(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Declare{
- Consts: []node.Node{
- &stmt.Constant{
- ConstantName: &node.Identifier{Value: "FOO"},
- Expr: &scalar.String{Value: "'bar'"},
+ p.Print(&ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtDeclare{
+ Consts: []ast.Vertex{
+ &ast.StmtConstant{
+ ConstantName: &ast.Identifier{Value: []byte("FOO")},
+ Expr: &ast.ScalarString{Value: []byte("'bar'")},
},
},
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Nop{},
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtNop{},
},
},
},
@@ -2711,16 +2704,16 @@ func TestPrintStmtDeclareExpr(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Declare{
- Consts: []node.Node{
- &stmt.Constant{
- ConstantName: &node.Identifier{Value: "FOO"},
- Expr: &scalar.String{Value: "'bar'"},
+ p.Print(&ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtDeclare{
+ Consts: []ast.Vertex{
+ &ast.StmtConstant{
+ ConstantName: &ast.Identifier{Value: []byte("FOO")},
+ Expr: &ast.ScalarString{Value: []byte("'bar'")},
},
},
- Stmt: &stmt.Expression{Expr: &scalar.String{Value: "'bar'"}},
+ Stmt: &ast.StmtExpression{Expr: &ast.ScalarString{Value: []byte("'bar'")}},
},
},
})
@@ -2740,14 +2733,14 @@ func TestPrintStmtDeclareNop(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Declare{
- Consts: []node.Node{
- &stmt.Constant{
- ConstantName: &node.Identifier{Value: "FOO"},
- Expr: &scalar.String{Value: "'bar'"},
+ p.Print(&ast.StmtDeclare{
+ Consts: []ast.Vertex{
+ &ast.StmtConstant{
+ ConstantName: &ast.Identifier{Value: []byte("FOO")},
+ Expr: &ast.ScalarString{Value: []byte("'bar'")},
},
},
- Stmt: &stmt.Nop{},
+ Stmt: &ast.StmtNop{},
})
expected := `declare(FOO = 'bar');`
@@ -2762,9 +2755,9 @@ func TestPrintStmtDefalut(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Default{
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
+ p.Print(&ast.StmtDefault{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}}},
},
})
@@ -2781,8 +2774,8 @@ func TestPrintStmtDefalutEmpty(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Default{
- Stmts: []node.Node{},
+ p.Print(&ast.StmtDefault{
+ Stmts: []ast.Vertex{},
})
expected := `default:`
@@ -2797,12 +2790,12 @@ func TestPrintStmtDo_Expression(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Namespace{
- Stmts: []node.Node{
- &stmt.Do{
- Cond: &scalar.Lnumber{Value: "1"},
- Stmt: &stmt.Expression{
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
+ p.Print(&ast.StmtNamespace{
+ Stmts: []ast.Vertex{
+ &ast.StmtDo{
+ Cond: &ast.ScalarLnumber{Value: []byte("1")},
+ Stmt: &ast.StmtExpression{
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
},
},
},
@@ -2824,13 +2817,13 @@ func TestPrintStmtDo_StmtList(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Namespace{
- Stmts: []node.Node{
- &stmt.Do{
- Cond: &scalar.Lnumber{Value: "1"},
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}},
+ p.Print(&ast.StmtNamespace{
+ Stmts: []ast.Vertex{
+ &ast.StmtDo{
+ Cond: &ast.ScalarLnumber{Value: []byte("1")},
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}}},
},
},
},
@@ -2853,10 +2846,10 @@ func TestPrintStmtEcho(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Echo{
- Exprs: []node.Node{
- &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.StmtEcho{
+ Exprs: []ast.Vertex{
+ &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
},
})
@@ -2872,11 +2865,11 @@ func TestPrintStmtElseIfStmts(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.ElseIf{
- Cond: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Nop{},
+ p.Print(&ast.StmtElseIf{
+ Cond: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtNop{},
},
},
})
@@ -2895,9 +2888,9 @@ func TestPrintStmtElseIfExpr(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.ElseIf{
- Cond: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Stmt: &stmt.Expression{Expr: &scalar.String{Value: "'bar'"}},
+ p.Print(&ast.StmtElseIf{
+ Cond: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Stmt: &ast.StmtExpression{Expr: &ast.ScalarString{Value: []byte("'bar'")}},
})
expected := `elseif ($a)
@@ -2913,9 +2906,9 @@ func TestPrintStmtElseIfNop(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.ElseIf{
- Cond: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Stmt: &stmt.Nop{},
+ p.Print(&ast.StmtElseIf{
+ Cond: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Stmt: &ast.StmtNop{},
})
expected := `elseif ($a);`
@@ -2930,10 +2923,10 @@ func TestPrintStmtElseStmts(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Else{
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Nop{},
+ p.Print(&ast.StmtElse{
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtNop{},
},
},
})
@@ -2952,8 +2945,8 @@ func TestPrintStmtElseExpr(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Else{
- Stmt: &stmt.Expression{Expr: &scalar.String{Value: "'bar'"}},
+ p.Print(&ast.StmtElse{
+ Stmt: &ast.StmtExpression{Expr: &ast.ScalarString{Value: []byte("'bar'")}},
})
expected := `else
@@ -2969,8 +2962,8 @@ func TestPrintStmtElseNop(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Else{
- Stmt: &stmt.Nop{},
+ p.Print(&ast.StmtElse{
+ Stmt: &ast.StmtNop{},
})
expected := `else;`
@@ -2985,7 +2978,7 @@ func TestPrintExpression(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Expression{Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}})
+ p.Print(&ast.StmtExpression{Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}}})
expected := `$a;`
actual := o.String()
@@ -2999,11 +2992,11 @@ func TestPrintStmtFinally(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Namespace{
- Stmts: []node.Node{
- &stmt.Finally{
- Stmts: []node.Node{
- &stmt.Nop{},
+ p.Print(&ast.StmtNamespace{
+ Stmts: []ast.Vertex{
+ &ast.StmtFinally{
+ Stmts: []ast.Vertex{
+ &ast.StmtNop{},
},
},
},
@@ -3025,24 +3018,24 @@ func TestPrintStmtForStmts(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Namespace{
- Stmts: []node.Node{
- &stmt.For{
- Init: []node.Node{
- &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.StmtNamespace{
+ Stmts: []ast.Vertex{
+ &ast.StmtFor{
+ Init: []ast.Vertex{
+ &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
},
- Cond: []node.Node{
- &expr.Variable{VarName: &node.Identifier{Value: "c"}},
- &expr.Variable{VarName: &node.Identifier{Value: "d"}},
+ Cond: []ast.Vertex{
+ &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("c")}},
+ &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("d")}},
},
- Loop: []node.Node{
- &expr.Variable{VarName: &node.Identifier{Value: "e"}},
- &expr.Variable{VarName: &node.Identifier{Value: "f"}},
+ Loop: []ast.Vertex{
+ &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("e")}},
+ &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("f")}},
},
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Nop{},
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtNop{},
},
},
},
@@ -3065,19 +3058,19 @@ func TestPrintStmtForExpr(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Namespace{
- Stmts: []node.Node{
- &stmt.For{
- Init: []node.Node{
- &expr.Variable{VarName: &node.Identifier{Value: "a"}},
+ p.Print(&ast.StmtNamespace{
+ Stmts: []ast.Vertex{
+ &ast.StmtFor{
+ Init: []ast.Vertex{
+ &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
},
- Cond: []node.Node{
- &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ Cond: []ast.Vertex{
+ &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
},
- Loop: []node.Node{
- &expr.Variable{VarName: &node.Identifier{Value: "c"}},
+ Loop: []ast.Vertex{
+ &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("c")}},
},
- Stmt: &stmt.Expression{Expr: &scalar.String{Value: "'bar'"}},
+ Stmt: &ast.StmtExpression{Expr: &ast.ScalarString{Value: []byte("'bar'")}},
},
},
})
@@ -3097,17 +3090,17 @@ func TestPrintStmtForNop(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.For{
- Init: []node.Node{
- &expr.Variable{VarName: &node.Identifier{Value: "a"}},
+ p.Print(&ast.StmtFor{
+ Init: []ast.Vertex{
+ &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
},
- Cond: []node.Node{
- &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ Cond: []ast.Vertex{
+ &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
},
- Loop: []node.Node{
- &expr.Variable{VarName: &node.Identifier{Value: "c"}},
+ Loop: []ast.Vertex{
+ &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("c")}},
},
- Stmt: &stmt.Nop{},
+ Stmt: &ast.StmtNop{},
})
expected := `for ($a; $b; $c);`
@@ -3122,14 +3115,14 @@ func TestPrintStmtForeachStmts(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Namespace{
- Stmts: []node.Node{
- &stmt.Foreach{
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Variable: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Nop{},
+ p.Print(&ast.StmtNamespace{
+ Stmts: []ast.Vertex{
+ &ast.StmtForeach{
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtNop{},
},
},
},
@@ -3152,13 +3145,13 @@ func TestPrintStmtForeachExpr(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Namespace{
- Stmts: []node.Node{
- &stmt.Foreach{
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Key: &expr.Variable{VarName: &node.Identifier{Value: "k"}},
- Variable: &expr.Variable{VarName: &node.Identifier{Value: "v"}},
- Stmt: &stmt.Expression{Expr: &scalar.String{Value: "'bar'"}},
+ p.Print(&ast.StmtNamespace{
+ Stmts: []ast.Vertex{
+ &ast.StmtForeach{
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Key: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("k")}},
+ Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("v")}},
+ Stmt: &ast.StmtExpression{Expr: &ast.ScalarString{Value: []byte("'bar'")}},
},
},
})
@@ -3178,11 +3171,11 @@ func TestPrintStmtForeachNop(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Foreach{
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Key: &expr.Variable{VarName: &node.Identifier{Value: "k"}},
- Variable: &expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "v"}}},
- Stmt: &stmt.Nop{},
+ p.Print(&ast.StmtForeach{
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Key: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("k")}},
+ Var: &ast.ExprReference{Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("v")}}},
+ Stmt: &ast.StmtNop{},
})
expected := `foreach ($a as $k => &$v);`
@@ -3197,21 +3190,21 @@ func TestPrintStmtFunction(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Namespace{
- Stmts: []node.Node{
- &stmt.Function{
+ p.Print(&ast.StmtNamespace{
+ Stmts: []ast.Vertex{
+ &ast.StmtFunction{
ReturnsRef: true,
- FunctionName: &node.Identifier{Value: "foo"},
- Params: []node.Node{
- &node.Parameter{
+ FunctionName: &ast.Identifier{Value: []byte("foo")},
+ Params: []ast.Vertex{
+ &ast.Parameter{
ByRef: true,
Variadic: false,
- Variable: &expr.Variable{VarName: &node.Identifier{Value: "var"}},
+ Var: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("var")}},
},
},
- ReturnType: &name.FullyQualified{Parts: []node.Node{&name.NamePart{Value: "Foo"}}},
- Stmts: []node.Node{
- &stmt.Nop{},
+ ReturnType: &ast.NameFullyQualified{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}},
+ Stmts: []ast.Vertex{
+ &ast.StmtNop{},
},
},
},
@@ -3233,10 +3226,10 @@ func TestPrintStmtGlobal(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Global{
- Vars: []node.Node{
- &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.StmtGlobal{
+ Vars: []ast.Vertex{
+ &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
},
})
@@ -3252,8 +3245,8 @@ func TestPrintStmtGoto(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Goto{
- Label: &node.Identifier{Value: "FOO"},
+ p.Print(&ast.StmtGoto{
+ Label: &ast.Identifier{Value: []byte("FOO")},
})
expected := `goto FOO;`
@@ -3268,16 +3261,16 @@ func TestPrintStmtGroupUse(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.GroupUse{
- UseType: &node.Identifier{Value: "function"},
- Prefix: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}},
- UseList: []node.Node{
- &stmt.Use{
- Use: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Bar"}}},
- Alias: &node.Identifier{Value: "Baz"},
+ p.Print(&ast.StmtGroupUse{
+ UseType: &ast.Identifier{Value: []byte("function")},
+ Prefix: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}},
+ UseList: []ast.Vertex{
+ &ast.StmtUse{
+ Use: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Bar")}}},
+ Alias: &ast.Identifier{Value: []byte("Baz")},
},
- &stmt.Use{
- Use: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Quuz"}}},
+ &ast.StmtUse{
+ Use: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Quuz")}}},
},
},
})
@@ -3294,7 +3287,7 @@ func TestPrintHaltCompiler(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.HaltCompiler{})
+ p.Print(&ast.StmtHaltCompiler{})
expected := `__halt_compiler();`
actual := o.String()
@@ -3308,32 +3301,32 @@ func TestPrintIfExpression(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Namespace{
- Stmts: []node.Node{
- &stmt.If{
- Cond: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Stmt: &stmt.Expression{
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.StmtNamespace{
+ Stmts: []ast.Vertex{
+ &ast.StmtIf{
+ Cond: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Stmt: &ast.StmtExpression{
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
},
- ElseIf: []node.Node{
- &stmt.ElseIf{
- Cond: &expr.Variable{VarName: &node.Identifier{Value: "c"}},
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Expression{
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "d"}},
+ ElseIf: []ast.Vertex{
+ &ast.StmtElseIf{
+ Cond: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("c")}},
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("d")}},
},
},
},
},
- &stmt.ElseIf{
- Cond: &expr.Variable{VarName: &node.Identifier{Value: "e"}},
- Stmt: &stmt.Nop{},
+ &ast.StmtElseIf{
+ Cond: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("e")}},
+ Stmt: &ast.StmtNop{},
},
},
- Else: &stmt.Else{
- Stmt: &stmt.Expression{
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "f"}},
+ Else: &ast.StmtElse{
+ Stmt: &ast.StmtExpression{
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("f")}},
},
},
},
@@ -3361,14 +3354,14 @@ func TestPrintIfStmtList(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.Namespace{
- Stmts: []node.Node{
- &stmt.If{
- Cond: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Expression{
- Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}},
+ p.Print(&ast.StmtNamespace{
+ Stmts: []ast.Vertex{
+ &ast.StmtIf{
+ Cond: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{
+ Expr: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("b")}},
},
},
},
@@ -3392,9 +3385,9 @@ func TestPrintIfNop(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.If{
- Cond: &expr.Variable{VarName: &node.Identifier{Value: "a"}},
- Stmt: &stmt.Nop{},
+ p.Print(&ast.StmtIf{
+ Cond: &ast.ExprVariable{VarName: &ast.Identifier{Value: []byte("a")}},
+ Stmt: &ast.StmtNop{},
})
expected := `if ($a);`
@@ -3409,8 +3402,8 @@ func TestPrintInlineHtml(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrettyPrinter(o, " ")
- p.Print(&stmt.InlineHtml{
- Value: "test",
+ p.Print(&ast.StmtInlineHtml{
+ Value: []byte("test"),
})
expected := `?>test 0 {
+ io.WriteString(p.w, glue)
+ }
+
+ p.Print(n)
+ }
+}
+
+func (p *Printer) printNodes(nn []ast.Vertex) {
+ for _, n := range nn {
+ p.Print(n)
+ }
+}
+
+func (p *Printer) printFreeFloating(n ast.Vertex, pos token.Position) {
+ if n == nil {
+ return
+ }
+
+ for _, m := range n.GetNode().Tokens[pos] {
+ io.WriteString(p.w, string(m.Value))
+ }
+}
+
+func (p *Printer) printNode(n ast.Vertex) {
+ switch n.(type) {
+
+ // node
+
+ case *ast.Root:
+ p.printNodeRoot(n)
+ case *ast.Identifier:
+ p.printNodeIdentifier(n)
+ case *ast.Parameter:
+ p.printNodeParameter(n)
+ case *ast.Nullable:
+ p.printNodeNullable(n)
+ case *ast.Argument:
+ p.printNodeArgument(n)
+
+ // name
+
+ case *ast.NameNamePart:
+ p.printNameNamePart(n)
+ case *ast.NameName:
+ p.printNameName(n)
+ case *ast.NameFullyQualified:
+ p.printNameFullyQualified(n)
+ case *ast.NameRelative:
+ p.printNameRelative(n)
+
+ // scalar
+
+ case *ast.ScalarLnumber:
+ p.printScalarLNumber(n)
+ case *ast.ScalarDnumber:
+ p.printScalarDNumber(n)
+ case *ast.ScalarString:
+ p.printScalarString(n)
+ case *ast.ScalarEncapsedStringPart:
+ p.printScalarEncapsedStringPart(n)
+ case *ast.ScalarEncapsed:
+ p.printScalarEncapsed(n)
+ case *ast.ScalarHeredoc:
+ p.printScalarHeredoc(n)
+ case *ast.ScalarMagicConstant:
+ p.printScalarMagicConstant(n)
+
+ // assign
+
+ case *ast.ExprAssign:
+ p.printAssign(n)
+ case *ast.ExprAssignReference:
+ p.printAssignReference(n)
+ case *ast.ExprAssignBitwiseAnd:
+ p.printAssignBitwiseAnd(n)
+ case *ast.ExprAssignBitwiseOr:
+ p.printAssignBitwiseOr(n)
+ case *ast.ExprAssignBitwiseXor:
+ p.printAssignBitwiseXor(n)
+ case *ast.ExprAssignCoalesce:
+ p.printAssignCoalesce(n)
+ case *ast.ExprAssignConcat:
+ p.printAssignConcat(n)
+ case *ast.ExprAssignDiv:
+ p.printAssignDiv(n)
+ case *ast.ExprAssignMinus:
+ p.printAssignMinus(n)
+ case *ast.ExprAssignMod:
+ p.printAssignMod(n)
+ case *ast.ExprAssignMul:
+ p.printAssignMul(n)
+ case *ast.ExprAssignPlus:
+ p.printAssignPlus(n)
+ case *ast.ExprAssignPow:
+ p.printAssignPow(n)
+ case *ast.ExprAssignShiftLeft:
+ p.printAssignShiftLeft(n)
+ case *ast.ExprAssignShiftRight:
+ p.printAssignShiftRight(n)
+
+ // binary
+
+ case *ast.ExprBinaryBitwiseAnd:
+ p.printBinaryBitwiseAnd(n)
+ case *ast.ExprBinaryBitwiseOr:
+ p.printBinaryBitwiseOr(n)
+ case *ast.ExprBinaryBitwiseXor:
+ p.printBinaryBitwiseXor(n)
+ case *ast.ExprBinaryBooleanAnd:
+ p.printBinaryBooleanAnd(n)
+ case *ast.ExprBinaryBooleanOr:
+ p.printBinaryBooleanOr(n)
+ case *ast.ExprBinaryCoalesce:
+ p.printBinaryCoalesce(n)
+ case *ast.ExprBinaryConcat:
+ p.printBinaryConcat(n)
+ case *ast.ExprBinaryDiv:
+ p.printBinaryDiv(n)
+ case *ast.ExprBinaryEqual:
+ p.printBinaryEqual(n)
+ case *ast.ExprBinaryGreaterOrEqual:
+ p.printBinaryGreaterOrEqual(n)
+ case *ast.ExprBinaryGreater:
+ p.printBinaryGreater(n)
+ case *ast.ExprBinaryIdentical:
+ p.printBinaryIdentical(n)
+ case *ast.ExprBinaryLogicalAnd:
+ p.printBinaryLogicalAnd(n)
+ case *ast.ExprBinaryLogicalOr:
+ p.printBinaryLogicalOr(n)
+ case *ast.ExprBinaryLogicalXor:
+ p.printBinaryLogicalXor(n)
+ case *ast.ExprBinaryMinus:
+ p.printBinaryMinus(n)
+ case *ast.ExprBinaryMod:
+ p.printBinaryMod(n)
+ case *ast.ExprBinaryMul:
+ p.printBinaryMul(n)
+ case *ast.ExprBinaryNotEqual:
+ p.printBinaryNotEqual(n)
+ case *ast.ExprBinaryNotIdentical:
+ p.printBinaryNotIdentical(n)
+ case *ast.ExprBinaryPlus:
+ p.printBinaryPlus(n)
+ case *ast.ExprBinaryPow:
+ p.printBinaryPow(n)
+ case *ast.ExprBinaryShiftLeft:
+ p.printBinaryShiftLeft(n)
+ case *ast.ExprBinaryShiftRight:
+ p.printBinaryShiftRight(n)
+ case *ast.ExprBinarySmallerOrEqual:
+ p.printBinarySmallerOrEqual(n)
+ case *ast.ExprBinarySmaller:
+ p.printBinarySmaller(n)
+ case *ast.ExprBinarySpaceship:
+ p.printBinarySpaceship(n)
+
+ // cast
+
+ case *ast.ExprCastArray:
+ p.printArray(n)
+ case *ast.ExprCastBool:
+ p.printBool(n)
+ case *ast.ExprCastDouble:
+ p.printDouble(n)
+ case *ast.ExprCastInt:
+ p.printInt(n)
+ case *ast.ExprCastObject:
+ p.printObject(n)
+ case *ast.ExprCastString:
+ p.printString(n)
+ case *ast.ExprCastUnset:
+ p.printUnset(n)
+
+ // expr
+
+ case *ast.ExprArrayDimFetch:
+ p.printExprArrayDimFetch(n)
+ case *ast.ExprArrayItem:
+ p.printExprArrayItem(n)
+ case *ast.ExprArray:
+ p.printExprArray(n)
+ case *ast.ExprArrowFunction:
+ p.printExprArrowFunction(n)
+ case *ast.ExprBitwiseNot:
+ p.printExprBitwiseNot(n)
+ case *ast.ExprBooleanNot:
+ p.printExprBooleanNot(n)
+ case *ast.ExprClassConstFetch:
+ p.printExprClassConstFetch(n)
+ case *ast.ExprClone:
+ p.printExprClone(n)
+ case *ast.ExprClosureUse:
+ p.printExprClosureUse(n)
+ case *ast.ExprClosure:
+ p.printExprClosure(n)
+ case *ast.ExprConstFetch:
+ p.printExprConstFetch(n)
+ case *ast.ExprEmpty:
+ p.printExprEmpty(n)
+ case *ast.ExprErrorSuppress:
+ p.printExprErrorSuppress(n)
+ case *ast.ExprEval:
+ p.printExprEval(n)
+ case *ast.ExprExit:
+ p.printExprExit(n)
+ case *ast.ExprFunctionCall:
+ p.printExprFunctionCall(n)
+ case *ast.ExprInclude:
+ p.printExprInclude(n)
+ case *ast.ExprIncludeOnce:
+ p.printExprIncludeOnce(n)
+ case *ast.ExprInstanceOf:
+ p.printExprInstanceOf(n)
+ case *ast.ExprIsset:
+ p.printExprIsset(n)
+ case *ast.ExprList:
+ p.printExprList(n)
+ case *ast.ExprMethodCall:
+ p.printExprMethodCall(n)
+ case *ast.ExprNew:
+ p.printExprNew(n)
+ case *ast.ExprPostDec:
+ p.printExprPostDec(n)
+ case *ast.ExprPostInc:
+ p.printExprPostInc(n)
+ case *ast.ExprPreDec:
+ p.printExprPreDec(n)
+ case *ast.ExprPreInc:
+ p.printExprPreInc(n)
+ case *ast.ExprPrint:
+ p.printExprPrint(n)
+ case *ast.ExprPropertyFetch:
+ p.printExprPropertyFetch(n)
+ case *ast.ExprReference:
+ p.printExprReference(n)
+ case *ast.ExprRequire:
+ p.printExprRequire(n)
+ case *ast.ExprRequireOnce:
+ p.printExprRequireOnce(n)
+ case *ast.ExprShellExec:
+ p.printExprShellExec(n)
+ case *ast.ExprShortArray:
+ p.printExprShortArray(n)
+ case *ast.ExprShortList:
+ p.printExprShortList(n)
+ case *ast.ExprStaticCall:
+ p.printExprStaticCall(n)
+ case *ast.ExprStaticPropertyFetch:
+ p.printExprStaticPropertyFetch(n)
+ case *ast.ExprTernary:
+ p.printExprTernary(n)
+ case *ast.ExprUnaryMinus:
+ p.printExprUnaryMinus(n)
+ case *ast.ExprUnaryPlus:
+ p.printExprUnaryPlus(n)
+ case *ast.ExprVariable:
+ p.printExprVariable(n)
+ case *ast.ExprYieldFrom:
+ p.printExprYieldFrom(n)
+ case *ast.ExprYield:
+ p.printExprYield(n)
+
+ // stmt
+
+ case *ast.StmtAltElseIf:
+ p.printStmtAltElseIf(n)
+ case *ast.StmtAltElse:
+ p.printStmtAltElse(n)
+ case *ast.StmtAltFor:
+ p.printStmtAltFor(n)
+ case *ast.StmtAltForeach:
+ p.printStmtAltForeach(n)
+ case *ast.StmtAltIf:
+ p.printStmtAltIf(n)
+ case *ast.StmtAltSwitch:
+ p.printStmtAltSwitch(n)
+ case *ast.StmtAltWhile:
+ p.printStmtAltWhile(n)
+ case *ast.StmtBreak:
+ p.printStmtBreak(n)
+ case *ast.StmtCase:
+ p.printStmtCase(n)
+ case *ast.StmtCatch:
+ p.printStmtCatch(n)
+ case *ast.StmtClassMethod:
+ p.printStmtClassMethod(n)
+ case *ast.StmtClass:
+ p.printStmtClass(n)
+ case *ast.StmtClassConstList:
+ p.printStmtClassConstList(n)
+ case *ast.StmtConstList:
+ p.printStmtConstList(n)
+ case *ast.StmtConstant:
+ p.printStmtConstant(n)
+ case *ast.StmtContinue:
+ p.printStmtContinue(n)
+ case *ast.StmtDeclare:
+ p.printStmtDeclare(n)
+ case *ast.StmtDefault:
+ p.printStmtDefault(n)
+ case *ast.StmtDo:
+ p.printStmtDo(n)
+ case *ast.StmtEcho:
+ p.printStmtEcho(n)
+ case *ast.StmtElseIf:
+ p.printStmtElseif(n)
+ case *ast.StmtElse:
+ p.printStmtElse(n)
+ case *ast.StmtExpression:
+ p.printStmtExpression(n)
+ case *ast.StmtFinally:
+ p.printStmtFinally(n)
+ case *ast.StmtFor:
+ p.printStmtFor(n)
+ case *ast.StmtForeach:
+ p.printStmtForeach(n)
+ case *ast.StmtFunction:
+ p.printStmtFunction(n)
+ case *ast.StmtGlobal:
+ p.printStmtGlobal(n)
+ case *ast.StmtGoto:
+ p.printStmtGoto(n)
+ case *ast.StmtGroupUse:
+ p.printStmtGroupUse(n)
+ case *ast.StmtHaltCompiler:
+ p.printStmtHaltCompiler(n)
+ case *ast.StmtIf:
+ p.printStmtIf(n)
+ case *ast.StmtInlineHtml:
+ p.printStmtInlineHTML(n)
+ case *ast.StmtInterface:
+ p.printStmtInterface(n)
+ case *ast.StmtLabel:
+ p.printStmtLabel(n)
+ case *ast.StmtNamespace:
+ p.printStmtNamespace(n)
+ case *ast.StmtNop:
+ p.printStmtNop(n)
+ case *ast.StmtPropertyList:
+ p.printStmtPropertyList(n)
+ case *ast.StmtProperty:
+ p.printStmtProperty(n)
+ case *ast.StmtReturn:
+ p.printStmtReturn(n)
+ case *ast.StmtStaticVar:
+ p.printStmtStaticVar(n)
+ case *ast.StmtStatic:
+ p.printStmtStatic(n)
+ case *ast.StmtStmtList:
+ p.printStmtStmtList(n)
+ case *ast.StmtSwitch:
+ p.printStmtSwitch(n)
+ case *ast.StmtThrow:
+ p.printStmtThrow(n)
+ case *ast.StmtTraitAdaptationList:
+ p.printStmtTraitAdaptationList(n)
+ case *ast.StmtTraitMethodRef:
+ p.printStmtTraitMethodRef(n)
+ case *ast.StmtTraitUseAlias:
+ p.printStmtTraitUseAlias(n)
+ case *ast.StmtTraitUsePrecedence:
+ p.printStmtTraitUsePrecedence(n)
+ case *ast.StmtTraitUse:
+ p.printStmtTraitUse(n)
+ case *ast.StmtTrait:
+ p.printStmtTrait(n)
+ case *ast.StmtTry:
+ p.printStmtTry(n)
+ case *ast.StmtUnset:
+ p.printStmtUnset(n)
+ case *ast.StmtUseList:
+ p.printStmtUseList(n)
+ case *ast.StmtUse:
+ p.printStmtUse(n)
+ case *ast.StmtWhile:
+ p.printStmtWhile(n)
+ }
+}
+
+// node
+
+func (p *Printer) printNodeRoot(n ast.Vertex) {
+ nn := n.(*ast.Root)
+ p.SetState(HtmlState)
+ p.printFreeFloating(nn, token.Start)
+ p.printNodes(nn.Stmts)
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printNodeIdentifier(n ast.Vertex) {
+ nn := n.(*ast.Identifier)
+ p.printFreeFloating(nn, token.Start)
+ io.WriteString(p.w, string(nn.Value))
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printNodeParameter(n ast.Vertex) {
+ nn := n.(*ast.Parameter)
+ p.printFreeFloating(nn, token.Start)
+
+ if nn.Type != nil {
+ p.Print(nn.Type)
+ }
+ p.printFreeFloating(nn, token.OptionalType)
+
+ if nn.ByRef {
+ io.WriteString(p.w, "&")
+ }
+ p.printFreeFloating(nn, token.Ampersand)
+
+ if nn.Variadic {
+ io.WriteString(p.w, "...")
+ }
+ p.printFreeFloating(nn, token.Variadic)
+
+ p.Print(nn.Var)
+
+ if nn.DefaultValue != nil {
+ p.printFreeFloating(nn, token.Var)
+ io.WriteString(p.w, "=")
+ p.Print(nn.DefaultValue)
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printNodeNullable(n ast.Vertex) {
+ nn := n.(*ast.Nullable)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "?")
+ p.Print(nn.Expr)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printNodeArgument(n ast.Vertex) {
+ nn := n.(*ast.Argument)
+ p.printFreeFloating(nn, token.Start)
+
+ if nn.IsReference {
+ io.WriteString(p.w, "&")
+ }
+ p.printFreeFloating(nn, token.Ampersand)
+
+ if nn.Variadic {
+ io.WriteString(p.w, "...")
+ }
+ p.printFreeFloating(nn, token.Variadic)
+
+ p.Print(nn.Expr)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+// name
+
+func (p *Printer) printNameNamePart(n ast.Vertex) {
+ nn := n.(*ast.NameNamePart)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, string(nn.Value))
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printNameName(n ast.Vertex) {
+ nn := n.(*ast.NameName)
+ p.printFreeFloating(nn, token.Start)
+
+ p.joinPrint("\\", nn.Parts)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printNameFullyQualified(n ast.Vertex) {
+ nn := n.(*ast.NameFullyQualified)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "\\")
+ p.joinPrint("\\", nn.Parts)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printNameRelative(n ast.Vertex) {
+ nn := n.(*ast.NameRelative)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "namespace")
+ p.printFreeFloating(nn, token.Namespace)
+
+ for _, part := range nn.Parts {
+ io.WriteString(p.w, "\\")
+ p.Print(part)
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+// scalar
+
+func (p *Printer) printScalarLNumber(n ast.Vertex) {
+ nn := n.(*ast.ScalarLnumber)
+ p.printFreeFloating(nn, token.Start)
+ io.WriteString(p.w, string(nn.Value))
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printScalarDNumber(n ast.Vertex) {
+ nn := n.(*ast.ScalarDnumber)
+ p.printFreeFloating(nn, token.Start)
+ io.WriteString(p.w, string(nn.Value))
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printScalarString(n ast.Vertex) {
+ nn := n.(*ast.ScalarString)
+ p.printFreeFloating(nn, token.Start)
+ io.WriteString(p.w, string(nn.Value))
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printScalarEncapsedStringPart(n ast.Vertex) {
+ nn := n.(*ast.ScalarEncapsedStringPart)
+ p.printFreeFloating(nn, token.Start)
+ io.WriteString(p.w, string(nn.Value))
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printScalarEncapsed(n ast.Vertex) {
+ nn := n.(*ast.ScalarEncapsed)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "\"")
+ for _, part := range nn.Parts {
+ switch part.(type) {
+ case *ast.ExprArrayDimFetch:
+ s := part.GetNode().Tokens[token.Start]
+ if len(s) > 0 && string(s[0].Value) == "${" {
+ p.printExprArrayDimFetchWithoutLeadingDollar(part)
+ } else {
+ p.Print(part)
+ }
+ case *ast.ExprVariable:
+ s := part.GetNode().Tokens[token.Start]
+ if len(s) > 0 && string(s[0].Value) == "${" {
+ p.printExprVariableWithoutLeadingDollar(part)
+ } else {
+ p.Print(part)
+ }
+ default:
+ p.Print(part)
+ }
+ }
+ io.WriteString(p.w, "\"")
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printScalarHeredoc(n ast.Vertex) {
+ nn := n.(*ast.ScalarHeredoc)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, string(nn.Label))
+
+ for _, part := range nn.Parts {
+ switch part.(type) {
+ case *ast.ExprArrayDimFetch:
+ s := part.GetNode().Tokens[token.Start]
+ if len(s) > 0 && string(s[0].Value) == "${" {
+ p.printExprArrayDimFetchWithoutLeadingDollar(part)
+ } else {
+ p.Print(part)
+ }
+ case *ast.ExprVariable:
+ s := part.GetNode().Tokens[token.Start]
+ if len(s) > 0 && string(s[0].Value) == "${" {
+ p.printExprVariableWithoutLeadingDollar(part)
+ } else {
+ p.Print(part)
+ }
+ default:
+ p.Print(part)
+ }
+ }
+
+ io.WriteString(p.w, strings.Trim(string(nn.Label), "<\"'\n"))
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printScalarMagicConstant(n ast.Vertex) {
+ nn := n.(*ast.ScalarMagicConstant)
+ p.printFreeFloating(nn, token.Start)
+ io.WriteString(p.w, string(nn.Value))
+ p.printFreeFloating(nn, token.End)
+}
+
+// Assign
+
+func (p *Printer) printAssign(n ast.Vertex) {
+ nn := n.(*ast.ExprAssign)
+ p.printFreeFloating(nn, token.Start)
+ p.Print(nn.Var)
+ p.printFreeFloating(nn, token.Var)
+ io.WriteString(p.w, "=")
+ p.Print(nn.Expr)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printAssignReference(n ast.Vertex) {
+ nn := n.(*ast.ExprAssignReference)
+ p.printFreeFloating(nn, token.Start)
+ p.Print(nn.Var)
+ p.printFreeFloating(nn, token.Var)
+ io.WriteString(p.w, "=")
+ p.printFreeFloating(nn, token.Equal)
+ io.WriteString(p.w, "&")
+ p.Print(nn.Expr)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printAssignBitwiseAnd(n ast.Vertex) {
+ nn := n.(*ast.ExprAssignBitwiseAnd)
+ p.printFreeFloating(nn, token.Start)
+ p.Print(nn.Var)
+ p.printFreeFloating(nn, token.Var)
+ io.WriteString(p.w, "&")
+ io.WriteString(p.w, "=")
+ p.Print(nn.Expr)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printAssignBitwiseOr(n ast.Vertex) {
+ nn := n.(*ast.ExprAssignBitwiseOr)
+ p.printFreeFloating(nn, token.Start)
+ p.Print(nn.Var)
+ p.printFreeFloating(nn, token.Var)
+ io.WriteString(p.w, "|=")
+ p.Print(nn.Expr)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printAssignBitwiseXor(n ast.Vertex) {
+ nn := n.(*ast.ExprAssignBitwiseXor)
+ p.printFreeFloating(nn, token.Start)
+ p.Print(nn.Var)
+ p.printFreeFloating(nn, token.Var)
+ io.WriteString(p.w, "^=")
+ p.Print(nn.Expr)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printAssignCoalesce(n ast.Vertex) {
+ nn := n.(*ast.ExprAssignCoalesce)
+ p.printFreeFloating(nn, token.Start)
+ p.Print(nn.Var)
+ p.printFreeFloating(nn, token.Var)
+ io.WriteString(p.w, "??=")
+ p.Print(nn.Expr)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printAssignConcat(n ast.Vertex) {
+ nn := n.(*ast.ExprAssignConcat)
+ p.printFreeFloating(nn, token.Start)
+ p.Print(nn.Var)
+ p.printFreeFloating(nn, token.Var)
+ io.WriteString(p.w, ".=")
+ p.Print(nn.Expr)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printAssignDiv(n ast.Vertex) {
+ nn := n.(*ast.ExprAssignDiv)
+ p.printFreeFloating(nn, token.Start)
+ p.Print(nn.Var)
+ p.printFreeFloating(nn, token.Var)
+ io.WriteString(p.w, "/=")
+ p.Print(nn.Expr)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printAssignMinus(n ast.Vertex) {
+ nn := n.(*ast.ExprAssignMinus)
+ p.printFreeFloating(nn, token.Start)
+ p.Print(nn.Var)
+ p.printFreeFloating(nn, token.Var)
+ io.WriteString(p.w, "-=")
+ p.Print(nn.Expr)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printAssignMod(n ast.Vertex) {
+ nn := n.(*ast.ExprAssignMod)
+ p.printFreeFloating(nn, token.Start)
+ p.Print(nn.Var)
+ p.printFreeFloating(nn, token.Var)
+ io.WriteString(p.w, "%=")
+ p.Print(nn.Expr)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printAssignMul(n ast.Vertex) {
+ nn := n.(*ast.ExprAssignMul)
+ p.printFreeFloating(nn, token.Start)
+ p.Print(nn.Var)
+ p.printFreeFloating(nn, token.Var)
+ io.WriteString(p.w, "*=")
+ p.Print(nn.Expr)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printAssignPlus(n ast.Vertex) {
+ nn := n.(*ast.ExprAssignPlus)
+ p.printFreeFloating(nn, token.Start)
+ p.Print(nn.Var)
+ p.printFreeFloating(nn, token.Var)
+ io.WriteString(p.w, "+=")
+ p.Print(nn.Expr)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printAssignPow(n ast.Vertex) {
+ nn := n.(*ast.ExprAssignPow)
+ p.printFreeFloating(nn, token.Start)
+ p.Print(nn.Var)
+ p.printFreeFloating(nn, token.Var)
+ io.WriteString(p.w, "**=")
+ p.Print(nn.Expr)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printAssignShiftLeft(n ast.Vertex) {
+ nn := n.(*ast.ExprAssignShiftLeft)
+ p.printFreeFloating(nn, token.Start)
+ p.Print(nn.Var)
+ p.printFreeFloating(nn, token.Var)
+ io.WriteString(p.w, "<<=")
+ p.Print(nn.Expr)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printAssignShiftRight(n ast.Vertex) {
+ nn := n.(*ast.ExprAssignShiftRight)
+ p.printFreeFloating(nn, token.Start)
+ p.Print(nn.Var)
+ p.printFreeFloating(nn, token.Var)
+ io.WriteString(p.w, ">>=")
+ p.Print(nn.Expr)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+// binary
+
+func (p *Printer) printBinaryBitwiseAnd(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryBitwiseAnd)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Left)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, "&")
+ p.Print(nn.Right)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printBinaryBitwiseOr(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryBitwiseOr)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Left)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, "|")
+ p.Print(nn.Right)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printBinaryBitwiseXor(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryBitwiseXor)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Left)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, "^")
+ p.Print(nn.Right)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printBinaryBooleanAnd(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryBooleanAnd)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Left)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, "&&")
+ p.Print(nn.Right)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printBinaryBooleanOr(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryBooleanOr)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Left)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, "||")
+ p.Print(nn.Right)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printBinaryCoalesce(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryCoalesce)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Left)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, "??")
+ p.Print(nn.Right)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printBinaryConcat(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryConcat)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Left)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, ".")
+ p.Print(nn.Right)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printBinaryDiv(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryDiv)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Left)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, "/")
+ p.Print(nn.Right)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printBinaryEqual(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryEqual)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Left)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, "==")
+ p.Print(nn.Right)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printBinaryGreaterOrEqual(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryGreaterOrEqual)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Left)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, ">=")
+ p.Print(nn.Right)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printBinaryGreater(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryGreater)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Left)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, ">")
+ p.Print(nn.Right)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printBinaryIdentical(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryIdentical)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Left)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, "===")
+ p.Print(nn.Right)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printBinaryLogicalAnd(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryLogicalAnd)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Left)
+ p.printFreeFloating(nn, token.Expr)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ io.WriteString(p.w, "and")
+ if nn.Right.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(nn.Right)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printBinaryLogicalOr(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryLogicalOr)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Left)
+ p.printFreeFloating(nn, token.Expr)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ io.WriteString(p.w, "or")
+ if nn.Right.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(nn.Right)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printBinaryLogicalXor(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryLogicalXor)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Left)
+ p.printFreeFloating(nn, token.Expr)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ io.WriteString(p.w, "xor")
+ if nn.Right.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(nn.Right)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printBinaryMinus(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryMinus)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Left)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, "-")
+ p.Print(nn.Right)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printBinaryMod(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryMod)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Left)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, "%")
+ p.Print(nn.Right)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printBinaryMul(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryMul)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Left)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, "*")
+ p.Print(nn.Right)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printBinaryNotEqual(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryNotEqual)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Left)
+ p.printFreeFloating(nn, token.Expr)
+ p.printFreeFloating(nn, token.Equal)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, "!=")
+ }
+ p.Print(nn.Right)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printBinaryNotIdentical(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryNotIdentical)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Left)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, "!==")
+ p.Print(nn.Right)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printBinaryPlus(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryPlus)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Left)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, "+")
+ p.Print(nn.Right)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printBinaryPow(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryPow)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Left)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, "**")
+ p.Print(nn.Right)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printBinaryShiftLeft(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryShiftLeft)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Left)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, "<<")
+ p.Print(nn.Right)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printBinaryShiftRight(n ast.Vertex) {
+ nn := n.(*ast.ExprBinaryShiftRight)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Left)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, ">>")
+ p.Print(nn.Right)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printBinarySmallerOrEqual(n ast.Vertex) {
+ nn := n.(*ast.ExprBinarySmallerOrEqual)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Left)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, "<=")
+ p.Print(nn.Right)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printBinarySmaller(n ast.Vertex) {
+ nn := n.(*ast.ExprBinarySmaller)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Left)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, "<")
+ p.Print(nn.Right)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printBinarySpaceship(n ast.Vertex) {
+ nn := n.(*ast.ExprBinarySpaceship)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Left)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, "<=>")
+ p.Print(nn.Right)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+// cast
+
+func (p *Printer) printArray(n ast.Vertex) {
+ nn := n.(*ast.ExprCastArray)
+ p.printFreeFloating(nn, token.Start)
+
+ p.printFreeFloating(nn, token.Cast)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, "(array)")
+ }
+
+ p.Print(nn.Expr)
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printBool(n ast.Vertex) {
+ nn := n.(*ast.ExprCastBool)
+ p.printFreeFloating(nn, token.Start)
+
+ p.printFreeFloating(nn, token.Cast)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, "(boolean)")
+ }
+
+ p.Print(nn.Expr)
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printDouble(n ast.Vertex) {
+ nn := n.(*ast.ExprCastDouble)
+ p.printFreeFloating(nn, token.Start)
+
+ p.printFreeFloating(nn, token.Cast)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, "(float)")
+ }
+
+ p.Print(nn.Expr)
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printInt(n ast.Vertex) {
+ nn := n.(*ast.ExprCastInt)
+ p.printFreeFloating(nn, token.Start)
+
+ p.printFreeFloating(nn, token.Cast)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, "(integer)")
+ }
+
+ p.Print(nn.Expr)
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printObject(n ast.Vertex) {
+ nn := n.(*ast.ExprCastObject)
+ p.printFreeFloating(nn, token.Start)
+
+ p.printFreeFloating(nn, token.Cast)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, "(object)")
+ }
+
+ p.Print(nn.Expr)
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printString(n ast.Vertex) {
+ nn := n.(*ast.ExprCastString)
+ p.printFreeFloating(nn, token.Start)
+
+ p.printFreeFloating(nn, token.Cast)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, "(string)")
+ }
+
+ p.Print(nn.Expr)
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printUnset(n ast.Vertex) {
+ nn := n.(*ast.ExprCastUnset)
+ p.printFreeFloating(nn, token.Start)
+
+ p.printFreeFloating(nn, token.Cast)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, "(unset)")
+ }
+
+ p.Print(nn.Expr)
+ p.printFreeFloating(nn, token.End)
+}
+
+// expr
+
+func (p *Printer) printExprArrayDimFetch(n ast.Vertex) {
+ nn := n.(*ast.ExprArrayDimFetch)
+ p.printFreeFloating(nn, token.Start)
+ p.Print(nn.Var)
+ p.printFreeFloating(nn, token.Var)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, "[")
+ }
+ p.Print(nn.Dim)
+ p.printFreeFloating(nn, token.Expr)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, "]")
+ }
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprArrayDimFetchWithoutLeadingDollar(n ast.Vertex) {
+ nn := n.(*ast.ExprArrayDimFetch)
+ p.printFreeFloating(nn, token.Start)
+ p.printExprVariableWithoutLeadingDollar(nn.Var)
+ p.printFreeFloating(nn, token.Var)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, "[")
+ }
+ p.Print(nn.Dim)
+ p.printFreeFloating(nn, token.Expr)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, "]")
+ }
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprArrayItem(n ast.Vertex) {
+ nn := n.(*ast.ExprArrayItem)
+ p.printFreeFloating(nn, token.Start)
+
+ if nn.Unpack {
+ io.WriteString(p.w, "...")
+ }
+
+ if nn.Key != nil {
+ p.Print(nn.Key)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, "=>")
+ }
+
+ p.Print(nn.Val)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprArray(n ast.Vertex) {
+ nn := n.(*ast.ExprArray)
+ p.printFreeFloating(nn, token.Start)
+ io.WriteString(p.w, "array")
+ p.printFreeFloating(nn, token.Array)
+ io.WriteString(p.w, "(")
+ p.joinPrint(",", nn.Items)
+ p.printFreeFloating(nn, token.ArrayPairList)
+ io.WriteString(p.w, ")")
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprArrowFunction(n ast.Vertex) {
+ nn := n.(*ast.ExprArrowFunction)
+ p.printFreeFloating(nn, token.Start)
+
+ if nn.Static {
+ io.WriteString(p.w, "static")
+ }
+ p.printFreeFloating(nn, token.Static)
+ if nn.Static && n.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+
+ io.WriteString(p.w, "fn")
+ p.printFreeFloating(nn, token.Function)
+
+ if nn.ReturnsRef {
+ io.WriteString(p.w, "&")
+ }
+ p.printFreeFloating(nn, token.Ampersand)
+
+ io.WriteString(p.w, "(")
+ p.joinPrint(",", nn.Params)
+ p.printFreeFloating(nn, token.ParameterList)
+ io.WriteString(p.w, ")")
+ p.printFreeFloating(nn, token.Params)
+
+ if nn.ReturnType != nil {
+ io.WriteString(p.w, ":")
+ p.Print(nn.ReturnType)
+ }
+ p.printFreeFloating(nn, token.ReturnType)
+
+ io.WriteString(p.w, "=>")
+
+ p.printNode(nn.Expr)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprBitwiseNot(n ast.Vertex) {
+ nn := n.(*ast.ExprBitwiseNot)
+ p.printFreeFloating(nn, token.Start)
+ io.WriteString(p.w, "~")
+ p.Print(nn.Expr)
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprBooleanNot(n ast.Vertex) {
+ nn := n.(*ast.ExprBooleanNot)
+ p.printFreeFloating(nn, token.Start)
+ io.WriteString(p.w, "!")
+ p.Print(nn.Expr)
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprClassConstFetch(n ast.Vertex) {
+ nn := n.(*ast.ExprClassConstFetch)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Class)
+ p.printFreeFloating(nn, token.Name)
+ io.WriteString(p.w, "::")
+ p.Print(nn.ConstantName)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprClone(n ast.Vertex) {
+ nn := n.(*ast.ExprClone)
+ p.printFreeFloating(nn, token.Start)
+ io.WriteString(p.w, "clone")
+ if nn.Expr.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(nn.Expr)
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprClosureUse(n ast.Vertex) {
+ nn := n.(*ast.ExprClosureUse)
+ p.printFreeFloating(nn, token.Start)
+ io.WriteString(p.w, "use")
+ p.printFreeFloating(nn, token.Use)
+ io.WriteString(p.w, "(")
+ p.joinPrint(",", nn.Uses)
+ p.printFreeFloating(nn, token.LexicalVarList)
+ io.WriteString(p.w, ")")
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprClosure(n ast.Vertex) {
+ nn := n.(*ast.ExprClosure)
+ p.printFreeFloating(nn, token.Start)
+
+ if nn.Static {
+ io.WriteString(p.w, "static")
+ }
+ p.printFreeFloating(nn, token.Static)
+ if nn.Static && n.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+
+ io.WriteString(p.w, "function")
+ p.printFreeFloating(nn, token.Function)
+
+ if nn.ReturnsRef {
+ io.WriteString(p.w, "&")
+ }
+ p.printFreeFloating(nn, token.Ampersand)
+
+ io.WriteString(p.w, "(")
+ p.joinPrint(",", nn.Params)
+ p.printFreeFloating(nn, token.ParameterList)
+ io.WriteString(p.w, ")")
+ p.printFreeFloating(nn, token.Params)
+
+ if nn.ClosureUse != nil {
+ p.Print(nn.ClosureUse)
+ }
+ p.printFreeFloating(nn, token.LexicalVars)
+
+ if nn.ReturnType != nil {
+ io.WriteString(p.w, ":")
+ p.Print(nn.ReturnType)
+ }
+ p.printFreeFloating(nn, token.ReturnType)
+
+ io.WriteString(p.w, "{")
+ p.printNodes(nn.Stmts)
+ p.printFreeFloating(nn, token.Stmts)
+ io.WriteString(p.w, "}")
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprConstFetch(n ast.Vertex) {
+ nn := n.(*ast.ExprConstFetch)
+ p.printFreeFloating(nn, token.Start)
+ p.Print(nn.Const)
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprEmpty(n ast.Vertex) {
+ nn := n.(*ast.ExprEmpty)
+ p.printFreeFloating(nn, token.Start)
+ io.WriteString(p.w, "empty")
+ p.printFreeFloating(nn, token.Empty)
+ io.WriteString(p.w, "(")
+ p.Print(nn.Expr)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, ")")
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprErrorSuppress(n ast.Vertex) {
+ nn := n.(*ast.ExprErrorSuppress)
+ p.printFreeFloating(nn, token.Start)
+ io.WriteString(p.w, "@")
+ p.Print(nn.Expr)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprEval(n ast.Vertex) {
+ nn := n.(*ast.ExprEval)
+ p.printFreeFloating(nn, token.Start)
+ io.WriteString(p.w, "eval")
+ p.printFreeFloating(nn, token.Eval)
+ io.WriteString(p.w, "(")
+ p.Print(nn.Expr)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, ")")
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprExit(n ast.Vertex) {
+ nn := n.(*ast.ExprExit)
+ p.printFreeFloating(nn, token.Start)
+
+ if nn.Die {
+ io.WriteString(p.w, "die")
+ } else {
+ io.WriteString(p.w, "exit")
+ }
+ p.printFreeFloating(nn, token.Exit)
+
+ if nn.Expr != nil && nn.Expr.GetNode().Tokens.IsEmpty() && nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(nn.Expr)
+ p.printFreeFloating(nn, token.Expr)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprFunctionCall(n ast.Vertex) {
+ nn := n.(*ast.ExprFunctionCall)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Function)
+
+ p.printFreeFloating(nn.ArgumentList, token.Start)
+ io.WriteString(p.w, "(")
+ p.joinPrint(",", nn.ArgumentList.Arguments)
+ p.printFreeFloating(nn.ArgumentList, token.ArgumentList)
+ io.WriteString(p.w, ")")
+ p.printFreeFloating(nn.ArgumentList, token.End)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprInclude(n ast.Vertex) {
+ nn := n.(*ast.ExprInclude)
+ p.printFreeFloating(nn, token.Start)
+ io.WriteString(p.w, "include")
+ if nn.Expr.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(nn.Expr)
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprIncludeOnce(n ast.Vertex) {
+ nn := n.(*ast.ExprIncludeOnce)
+ p.printFreeFloating(nn, token.Start)
+ io.WriteString(p.w, "include_once")
+ if nn.Expr.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(nn.Expr)
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprInstanceOf(n ast.Vertex) {
+ nn := n.(*ast.ExprInstanceOf)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Expr)
+ p.printFreeFloating(nn, token.Expr)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+
+ io.WriteString(p.w, "instanceof")
+
+ if nn.Class.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(nn.Class)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprIsset(n ast.Vertex) {
+ nn := n.(*ast.ExprIsset)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "isset")
+ p.printFreeFloating(nn, token.Isset)
+ io.WriteString(p.w, "(")
+ p.joinPrint(",", nn.Vars)
+ p.printFreeFloating(nn, token.VarList)
+ io.WriteString(p.w, ")")
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprList(n ast.Vertex) {
+ nn := n.(*ast.ExprList)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "list")
+ p.printFreeFloating(nn, token.List)
+ io.WriteString(p.w, "(")
+ p.joinPrint(",", nn.Items)
+ p.printFreeFloating(nn, token.ArrayPairList)
+ io.WriteString(p.w, ")")
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprMethodCall(n ast.Vertex) {
+ nn := n.(*ast.ExprMethodCall)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Var)
+ p.printFreeFloating(nn, token.Var)
+ io.WriteString(p.w, "->")
+ p.Print(nn.Method)
+
+ p.printFreeFloating(nn.ArgumentList, token.Start)
+ io.WriteString(p.w, "(")
+ p.joinPrint(",", nn.ArgumentList.Arguments)
+ p.printFreeFloating(nn.ArgumentList, token.ArgumentList)
+ io.WriteString(p.w, ")")
+ p.printFreeFloating(nn.ArgumentList, token.End)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprNew(n ast.Vertex) {
+ nn := n.(*ast.ExprNew)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "new")
+ if nn.Class.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(nn.Class)
+
+ if nn.ArgumentList != nil {
+ p.printFreeFloating(nn.ArgumentList, token.Start)
+ io.WriteString(p.w, "(")
+ p.joinPrint(",", nn.ArgumentList.Arguments)
+ p.printFreeFloating(nn.ArgumentList, token.ArgumentList)
+ io.WriteString(p.w, ")")
+ p.printFreeFloating(nn.ArgumentList, token.End)
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprPostDec(n ast.Vertex) {
+ nn := n.(*ast.ExprPostDec)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Var)
+ p.printFreeFloating(nn, token.Var)
+ io.WriteString(p.w, "--")
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprPostInc(n ast.Vertex) {
+ nn := n.(*ast.ExprPostInc)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Var)
+ p.printFreeFloating(nn, token.Var)
+ io.WriteString(p.w, "++")
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprPreDec(n ast.Vertex) {
+ nn := n.(*ast.ExprPreDec)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "--")
+ p.Print(nn.Var)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprPreInc(n ast.Vertex) {
+ nn := n.(*ast.ExprPreInc)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "++")
+ p.Print(nn.Var)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprPrint(n ast.Vertex) {
+ nn := n.(*ast.ExprPrint)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "print")
+ if nn.Expr.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(nn.Expr)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprPropertyFetch(n ast.Vertex) {
+ nn := n.(*ast.ExprPropertyFetch)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Var)
+ p.printFreeFloating(nn, token.Var)
+ io.WriteString(p.w, "->")
+ p.Print(nn.Property)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprReference(n ast.Vertex) {
+ nn := n.(*ast.ExprReference)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "&")
+ p.Print(nn.Var)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprRequire(n ast.Vertex) {
+ nn := n.(*ast.ExprRequire)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "require")
+ if nn.Expr.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(nn.Expr)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprRequireOnce(n ast.Vertex) {
+ nn := n.(*ast.ExprRequireOnce)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "require_once")
+ if nn.Expr.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(nn.Expr)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprShellExec(n ast.Vertex) {
+ nn := n.(*ast.ExprShellExec)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "`")
+ p.joinPrint("", nn.Parts)
+ io.WriteString(p.w, "`")
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprShortArray(n ast.Vertex) {
+ nn := n.(*ast.ExprShortArray)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "[")
+ p.joinPrint(",", nn.Items)
+ p.printFreeFloating(nn, token.ArrayPairList)
+ io.WriteString(p.w, "]")
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprShortList(n ast.Vertex) {
+ nn := n.(*ast.ExprShortList)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "[")
+ p.joinPrint(",", nn.Items)
+ p.printFreeFloating(nn, token.ArrayPairList)
+ io.WriteString(p.w, "]")
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprStaticCall(n ast.Vertex) {
+ nn := n.(*ast.ExprStaticCall)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Class)
+ p.printFreeFloating(nn, token.Name)
+ io.WriteString(p.w, "::")
+ p.Print(nn.Call)
+
+ p.printFreeFloating(nn.ArgumentList, token.Start)
+ io.WriteString(p.w, "(")
+ p.joinPrint(",", nn.ArgumentList.Arguments)
+ p.printFreeFloating(nn.ArgumentList, token.ArgumentList)
+ io.WriteString(p.w, ")")
+ p.printFreeFloating(nn.ArgumentList, token.End)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprStaticPropertyFetch(n ast.Vertex) {
+ nn := n.(*ast.ExprStaticPropertyFetch)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Class)
+ p.printFreeFloating(nn, token.Name)
+ io.WriteString(p.w, "::")
+ p.Print(nn.Property)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprTernary(n ast.Vertex) {
+ nn := n.(*ast.ExprTernary)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Condition)
+ p.printFreeFloating(nn, token.Cond)
+ io.WriteString(p.w, "?")
+
+ if nn.IfTrue != nil {
+ p.Print(nn.IfTrue)
+ }
+ p.printFreeFloating(nn, token.True)
+
+ io.WriteString(p.w, ":")
+ p.Print(nn.IfFalse)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprUnaryMinus(n ast.Vertex) {
+ nn := n.(*ast.ExprUnaryMinus)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "-")
+ p.Print(nn.Expr)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprUnaryPlus(n ast.Vertex) {
+ nn := n.(*ast.ExprUnaryPlus)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "+")
+ p.Print(nn.Expr)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprVariable(n ast.Vertex) {
+ nn := n.(*ast.ExprVariable)
+ p.printFreeFloating(nn, token.Start)
+
+ p.printFreeFloating(nn, token.Dollar)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, "$")
+ }
+
+ p.Print(nn.VarName)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprVariableWithoutLeadingDollar(n ast.Vertex) {
+ nn := n.(*ast.ExprVariable)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.VarName)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprYieldFrom(n ast.Vertex) {
+ nn := n.(*ast.ExprYieldFrom)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "yield from")
+ if nn.Expr.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(nn.Expr)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printExprYield(n ast.Vertex) {
+ nn := n.(*ast.ExprYield)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "yield")
+
+ if nn.Key != nil {
+ if nn.Key.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(nn.Key)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, "=>")
+ } else {
+ if nn.Value.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ }
+
+ p.Print(nn.Value)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+// smtm
+
+func (p *Printer) printStmtAltElseIf(n ast.Vertex) {
+ nn := n.(*ast.StmtAltElseIf)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "elseif")
+ p.printFreeFloating(nn, token.ElseIf)
+ io.WriteString(p.w, "(")
+ p.Print(nn.Cond)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, ")")
+ p.printFreeFloating(nn, token.Cond)
+ io.WriteString(p.w, ":")
+
+ if s := nn.Stmt.(*ast.StmtStmtList).Stmts; len(s) > 0 {
+ p.printNodes(s)
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtAltElse(n ast.Vertex) {
+ nn := n.(*ast.StmtAltElse)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "else")
+ p.printFreeFloating(nn, token.Else)
+ io.WriteString(p.w, ":")
+
+ if s := nn.Stmt.(*ast.StmtStmtList).Stmts; len(s) > 0 {
+ p.printNodes(s)
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtAltFor(n ast.Vertex) {
+ nn := n.(*ast.StmtAltFor)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "for")
+ p.printFreeFloating(nn, token.For)
+ io.WriteString(p.w, "(")
+ p.joinPrint(",", nn.Init)
+ p.printFreeFloating(nn, token.InitExpr)
+ io.WriteString(p.w, ";")
+ p.joinPrint(",", nn.Cond)
+ p.printFreeFloating(nn, token.CondExpr)
+ io.WriteString(p.w, ";")
+ p.joinPrint(",", nn.Loop)
+ p.printFreeFloating(nn, token.IncExpr)
+ io.WriteString(p.w, ")")
+ p.printFreeFloating(nn, token.Cond)
+ io.WriteString(p.w, ":")
+
+ s := nn.Stmt.(*ast.StmtStmtList)
+ p.printNodes(s.Stmts)
+ p.printFreeFloating(nn, token.Stmts)
+
+ io.WriteString(p.w, "endfor")
+ p.printFreeFloating(nn, token.AltEnd)
+ p.printFreeFloating(nn, token.SemiColon)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, ";")
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtAltForeach(n ast.Vertex) {
+ nn := n.(*ast.StmtAltForeach)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "foreach")
+ p.printFreeFloating(nn, token.Foreach)
+ io.WriteString(p.w, "(")
+ p.Print(nn.Expr)
+ p.printFreeFloating(nn, token.Expr)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ io.WriteString(p.w, "as")
+
+ if nn.Key != nil {
+ if nn.Key.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(nn.Key)
+ p.printFreeFloating(nn, token.Key)
+ io.WriteString(p.w, "=>")
+ } else {
+ if nn.Var.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ }
+
+ p.Print(nn.Var)
+ p.printFreeFloating(nn, token.Var)
+
+ io.WriteString(p.w, ")")
+ p.printFreeFloating(nn, token.Cond)
+
+ io.WriteString(p.w, ":")
+ s := nn.Stmt.(*ast.StmtStmtList)
+ p.printNodes(s.Stmts)
+ p.printFreeFloating(nn, token.Stmts)
+
+ io.WriteString(p.w, "endforeach")
+ p.printFreeFloating(nn, token.AltEnd)
+ p.printFreeFloating(nn, token.SemiColon)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, ";")
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtAltIf(n ast.Vertex) {
+ nn := n.(*ast.StmtAltIf)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "if")
+ p.printFreeFloating(nn, token.If)
+ io.WriteString(p.w, "(")
+ p.Print(nn.Cond)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, ")")
+ p.printFreeFloating(nn, token.Cond)
+ io.WriteString(p.w, ":")
+
+ s := nn.Stmt.(*ast.StmtStmtList)
+ p.printNodes(s.Stmts)
+
+ for _, elseif := range nn.ElseIf {
+ p.Print(elseif)
+ }
+
+ if nn.Else != nil {
+ p.Print(nn.Else)
+ }
+
+ p.printFreeFloating(nn, token.Stmts)
+ io.WriteString(p.w, "endif")
+ p.printFreeFloating(nn, token.AltEnd)
+ p.printFreeFloating(nn, token.SemiColon)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, ";")
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtAltSwitch(n ast.Vertex) {
+ nn := n.(*ast.StmtAltSwitch)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "switch")
+ p.printFreeFloating(nn, token.Switch)
+ io.WriteString(p.w, "(")
+ p.Print(nn.Cond)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, ")")
+ p.printFreeFloating(nn, token.Cond)
+ io.WriteString(p.w, ":")
+
+ p.printFreeFloating(nn.CaseList, token.Start)
+ p.printFreeFloating(nn.CaseList, token.CaseListStart)
+ p.printNodes(nn.CaseList.Cases)
+ p.printFreeFloating(nn.CaseList, token.CaseListEnd)
+ p.printFreeFloating(nn.CaseList, token.End)
+
+ io.WriteString(p.w, "endswitch")
+ p.printFreeFloating(nn, token.AltEnd)
+ p.printFreeFloating(nn, token.SemiColon)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, ";")
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtAltWhile(n ast.Vertex) {
+ nn := n.(*ast.StmtAltWhile)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "while")
+ p.printFreeFloating(nn, token.While)
+ io.WriteString(p.w, "(")
+ p.Print(nn.Cond)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, ")")
+ p.printFreeFloating(nn, token.Cond)
+ io.WriteString(p.w, ":")
+
+ s := nn.Stmt.(*ast.StmtStmtList)
+ p.printNodes(s.Stmts)
+ p.printFreeFloating(nn, token.Stmts)
+
+ io.WriteString(p.w, "endwhile")
+ p.printFreeFloating(nn, token.AltEnd)
+ p.printFreeFloating(nn, token.SemiColon)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, ";")
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtBreak(n ast.Vertex) {
+ nn := n.(*ast.StmtBreak)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "break")
+ if nn.Expr != nil {
+ if nn.Expr.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(nn.Expr)
+ }
+ p.printFreeFloating(nn, token.Expr)
+
+ p.printFreeFloating(nn, token.SemiColon)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, ";")
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtCase(n ast.Vertex) {
+ nn := n.(*ast.StmtCase)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "case")
+ if nn.Cond.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(nn.Cond)
+ p.printFreeFloating(nn, token.Expr)
+ p.printFreeFloating(nn, token.CaseSeparator)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, ":")
+ }
+
+ if len(nn.Stmts) > 0 {
+ p.printNodes(nn.Stmts)
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtCatch(n ast.Vertex) {
+ nn := n.(*ast.StmtCatch)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "catch")
+ p.printFreeFloating(nn, token.Catch)
+ io.WriteString(p.w, "(")
+ p.joinPrint("|", nn.Types)
+ p.Print(nn.Var)
+ p.printFreeFloating(nn, token.Var)
+ io.WriteString(p.w, ")")
+ p.printFreeFloating(nn, token.Cond)
+ io.WriteString(p.w, "{")
+ p.printNodes(nn.Stmts)
+ p.printFreeFloating(nn, token.Stmts)
+ io.WriteString(p.w, "}")
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtClassMethod(n ast.Vertex) {
+ nn := n.(*ast.StmtClassMethod)
+ p.printFreeFloating(nn, token.Start)
+
+ if nn.Modifiers != nil {
+ for k, m := range nn.Modifiers {
+ if k > 0 && m.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(m)
+ }
+
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ }
+ p.printFreeFloating(nn, token.ModifierList)
+ io.WriteString(p.w, "function")
+ p.printFreeFloating(nn, token.Function)
+
+ if nn.ReturnsRef {
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ io.WriteString(p.w, "&")
+ p.printFreeFloating(nn, token.Ampersand)
+ } else {
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ }
+
+ p.Print(nn.MethodName)
+ p.printFreeFloating(nn, token.Name)
+ io.WriteString(p.w, "(")
+ p.joinPrint(",", nn.Params)
+ p.printFreeFloating(nn, token.ParameterList)
+ io.WriteString(p.w, ")")
+ p.printFreeFloating(nn, token.Params)
+
+ if nn.ReturnType != nil {
+ io.WriteString(p.w, ":")
+ p.Print(nn.ReturnType)
+ }
+
+ p.Print(nn.Stmt)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtClass(n ast.Vertex) {
+ nn := n.(*ast.StmtClass)
+ p.printFreeFloating(nn, token.Start)
+
+ if nn.Modifiers != nil {
+ for k, m := range nn.Modifiers {
+ if k > 0 && m.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(m)
+ }
+
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ }
+ p.printFreeFloating(nn, token.ModifierList)
+ io.WriteString(p.w, "class")
+ p.printFreeFloating(nn, token.Class)
+
+ if nn.ClassName != nil {
+ if nn.ClassName.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(nn.ClassName)
+ }
+
+ if nn.ArgumentList != nil {
+ p.printFreeFloating(nn.ArgumentList, token.Start)
+ io.WriteString(p.w, "(")
+ p.joinPrint(",", nn.ArgumentList.Arguments)
+ p.printFreeFloating(nn.ArgumentList, token.ArgumentList)
+ io.WriteString(p.w, ")")
+ p.printFreeFloating(nn.ArgumentList, token.End)
+ }
+
+ if nn.Extends != nil {
+ p.printFreeFloating(nn.Extends, token.Start)
+ if nn.Extends.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ io.WriteString(p.w, "extends")
+ if nn.Extends.ClassName.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(nn.Extends.ClassName)
+ }
+
+ if nn.Implements != nil {
+ p.printFreeFloating(nn.Implements, token.Start)
+ if nn.Implements.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ io.WriteString(p.w, "implements")
+ if nn.Implements.InterfaceNames[0].GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.joinPrint(",", nn.Implements.InterfaceNames)
+ }
+
+ p.printFreeFloating(nn, token.Name)
+ io.WriteString(p.w, "{")
+ p.printNodes(nn.Stmts)
+ p.printFreeFloating(nn, token.Stmts)
+ io.WriteString(p.w, "}")
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtClassConstList(n ast.Vertex) {
+ nn := n.(*ast.StmtClassConstList)
+ p.printFreeFloating(nn, token.Start)
+
+ if nn.Modifiers != nil {
+ for k, m := range nn.Modifiers {
+ if k > 0 && m.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(m)
+ }
+
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ }
+ p.printFreeFloating(nn, token.ModifierList)
+ io.WriteString(p.w, "const")
+
+ if nn.Consts[0].GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.joinPrint(",", nn.Consts)
+ p.printFreeFloating(nn, token.ConstList)
+
+ p.printFreeFloating(nn, token.SemiColon)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, ";")
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtConstList(n ast.Vertex) {
+ nn := n.(*ast.StmtConstList)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "const")
+
+ if nn.Consts[0].GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.joinPrint(",", nn.Consts)
+ p.printFreeFloating(nn, token.Stmts)
+
+ p.printFreeFloating(nn, token.SemiColon)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, ";")
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtConstant(n ast.Vertex) {
+ nn := n.(*ast.StmtConstant)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.ConstantName)
+ p.printFreeFloating(nn, token.Name)
+ io.WriteString(p.w, "=")
+ p.Print(nn.Expr)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtContinue(n ast.Vertex) {
+ nn := n.(*ast.StmtContinue)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "continue")
+
+ if nn.Expr != nil {
+ if nn.Expr.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(nn.Expr)
+ }
+ p.printFreeFloating(nn, token.Expr)
+
+ p.printFreeFloating(nn, token.SemiColon)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, ";")
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtDeclare(n ast.Vertex) {
+ nn := n.(*ast.StmtDeclare)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "declare")
+ p.printFreeFloating(nn, token.Declare)
+ io.WriteString(p.w, "(")
+ p.joinPrint(",", nn.Consts)
+ p.printFreeFloating(nn, token.ConstList)
+ io.WriteString(p.w, ")")
+
+ if nn.Alt {
+ p.printFreeFloating(nn, token.Cond)
+ io.WriteString(p.w, ":")
+
+ s := nn.Stmt.(*ast.StmtStmtList)
+ p.printNodes(s.Stmts)
+ p.printFreeFloating(nn, token.Stmts)
+
+ io.WriteString(p.w, "enddeclare")
+ p.printFreeFloating(nn, token.AltEnd)
+
+ p.printFreeFloating(nn, token.SemiColon)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, ";")
+ }
+ } else {
+ p.Print(nn.Stmt)
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtDefault(n ast.Vertex) {
+ nn := n.(*ast.StmtDefault)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "default")
+ p.printFreeFloating(nn, token.Default)
+ p.printFreeFloating(nn, token.CaseSeparator)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, ":")
+ }
+
+ if len(nn.Stmts) > 0 {
+ p.printNodes(nn.Stmts)
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtDo(n ast.Vertex) {
+ nn := n.(*ast.StmtDo)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "do")
+
+ if _, ok := nn.Stmt.(*ast.StmtStmtList); !ok {
+ if nn.Stmt.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ }
+
+ p.Print(nn.Stmt)
+ p.printFreeFloating(nn, token.Stmts)
+
+ io.WriteString(p.w, "while")
+ p.printFreeFloating(nn, token.While)
+ io.WriteString(p.w, "(")
+ p.Print(nn.Cond)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, ")")
+ p.printFreeFloating(nn, token.Cond)
+
+ p.printFreeFloating(nn, token.SemiColon)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, ";")
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtEcho(n ast.Vertex) {
+ nn := n.(*ast.StmtEcho)
+
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, "echo")
+ }
+ if nn.Exprs[0].GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+
+ p.printFreeFloating(nn, token.Start)
+ p.printFreeFloating(nn, token.Echo)
+
+ p.joinPrint(",", nn.Exprs)
+ p.printFreeFloating(nn, token.Expr)
+
+ p.printFreeFloating(nn, token.SemiColon)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, ";")
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtElseif(n ast.Vertex) {
+ nn := n.(*ast.StmtElseIf)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "elseif")
+ p.printFreeFloating(nn, token.ElseIf)
+ io.WriteString(p.w, "(")
+ p.Print(nn.Cond)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, ")")
+
+ p.Print(nn.Stmt)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtElse(n ast.Vertex) {
+ nn := n.(*ast.StmtElse)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "else")
+
+ if _, ok := nn.Stmt.(*ast.StmtStmtList); !ok {
+ if nn.Stmt.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ }
+
+ p.Print(nn.Stmt)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtExpression(n ast.Vertex) {
+ nn := n.(*ast.StmtExpression)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Expr)
+ p.printFreeFloating(nn, token.Expr)
+
+ p.printFreeFloating(nn, token.SemiColon)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, ";")
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtFinally(n ast.Vertex) {
+ nn := n.(*ast.StmtFinally)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "finally")
+ p.printFreeFloating(nn, token.Finally)
+ io.WriteString(p.w, "{")
+ p.printNodes(nn.Stmts)
+ p.printFreeFloating(nn, token.Stmts)
+ io.WriteString(p.w, "}")
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtFor(n ast.Vertex) {
+ nn := n.(*ast.StmtFor)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "for")
+ p.printFreeFloating(nn, token.For)
+ io.WriteString(p.w, "(")
+ p.joinPrint(",", nn.Init)
+ p.printFreeFloating(nn, token.InitExpr)
+ io.WriteString(p.w, ";")
+ p.joinPrint(",", nn.Cond)
+ p.printFreeFloating(nn, token.CondExpr)
+ io.WriteString(p.w, ";")
+ p.joinPrint(",", nn.Loop)
+ p.printFreeFloating(nn, token.IncExpr)
+ io.WriteString(p.w, ")")
+
+ p.Print(nn.Stmt)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtForeach(n ast.Vertex) {
+ nn := n.(*ast.StmtForeach)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "foreach")
+ p.printFreeFloating(nn, token.Foreach)
+ io.WriteString(p.w, "(")
+
+ p.Print(nn.Expr)
+ p.printFreeFloating(nn, token.Expr)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+
+ io.WriteString(p.w, "as")
+
+ if nn.Key != nil {
+ if nn.Key.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(nn.Key)
+ p.printFreeFloating(nn, token.Key)
+ io.WriteString(p.w, "=>")
+ } else {
+ if nn.Var.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ }
+ p.Print(nn.Var)
+ p.printFreeFloating(nn, token.Var)
+
+ io.WriteString(p.w, ")")
+
+ p.Print(nn.Stmt)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtFunction(n ast.Vertex) {
+ nn := n.(*ast.StmtFunction)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "function")
+ p.printFreeFloating(nn, token.Function)
+
+ if nn.ReturnsRef {
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ io.WriteString(p.w, "&")
+ } else {
+ if nn.FunctionName.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ }
+
+ p.Print(nn.FunctionName)
+ p.printFreeFloating(nn, token.Name)
+
+ io.WriteString(p.w, "(")
+ p.joinPrint(",", nn.Params)
+ p.printFreeFloating(nn, token.ParamList)
+ io.WriteString(p.w, ")")
+ p.printFreeFloating(nn, token.Params)
+
+ if nn.ReturnType != nil {
+ io.WriteString(p.w, ":")
+ p.Print(nn.ReturnType)
+ }
+ p.printFreeFloating(nn, token.ReturnType)
+
+ io.WriteString(p.w, "{")
+ p.printNodes(nn.Stmts)
+ p.printFreeFloating(nn, token.Stmts)
+ io.WriteString(p.w, "}")
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtGlobal(n ast.Vertex) {
+ nn := n.(*ast.StmtGlobal)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "global")
+ p.joinPrint(",", nn.Vars)
+ p.printFreeFloating(nn, token.VarList)
+
+ p.printFreeFloating(nn, token.SemiColon)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, ";")
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtGoto(n ast.Vertex) {
+ nn := n.(*ast.StmtGoto)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "goto")
+ if nn.Label.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(nn.Label)
+ p.printFreeFloating(nn, token.Label)
+
+ p.printFreeFloating(nn, token.SemiColon)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, ";")
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtGroupUse(n ast.Vertex) {
+ nn := n.(*ast.StmtGroupUse)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "use")
+ p.printFreeFloating(nn, token.Use)
+
+ if nn.UseType != nil {
+ if nn.UseType.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(nn.UseType)
+ }
+
+ if nn.Prefix.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(nn.Prefix)
+ io.WriteString(p.w, "\\")
+ p.printFreeFloating(nn, token.Slash)
+
+ io.WriteString(p.w, "{")
+ p.joinPrint(",", nn.UseList)
+ p.printFreeFloating(nn, token.Stmts)
+ io.WriteString(p.w, "}")
+ p.printFreeFloating(nn, token.UseDeclarationList)
+
+ p.printFreeFloating(nn, token.SemiColon)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, ";")
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtHaltCompiler(n ast.Vertex) {
+ nn := n.(*ast.StmtHaltCompiler)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "__halt_compiler")
+ p.printFreeFloating(nn, token.HaltCompiller)
+ io.WriteString(p.w, "(")
+ p.printFreeFloating(nn, token.OpenParenthesisToken)
+ io.WriteString(p.w, ")")
+ p.printFreeFloating(nn, token.CloseParenthesisToken)
+
+ p.printFreeFloating(nn, token.SemiColon)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, ";")
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtIf(n ast.Vertex) {
+ nn := n.(*ast.StmtIf)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "if")
+ p.printFreeFloating(n, token.If)
+ io.WriteString(p.w, "(")
+ p.Print(nn.Cond)
+ p.printFreeFloating(n, token.Expr)
+ io.WriteString(p.w, ")")
+
+ p.Print(nn.Stmt)
+
+ if nn.ElseIf != nil {
+ p.printNodes(nn.ElseIf)
+ }
+
+ if nn.Else != nil {
+ p.Print(nn.Else)
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtInlineHTML(n ast.Vertex) {
+ nn := n.(*ast.StmtInlineHtml)
+ p.printFreeFloating(nn, token.Start)
+
+ if p.s == PhpState && nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, "?>")
+ }
+ p.SetState(HtmlState)
+
+ io.WriteString(p.w, string(nn.Value))
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtInterface(n ast.Vertex) {
+ nn := n.(*ast.StmtInterface)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "interface")
+
+ if nn.InterfaceName.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+
+ p.Print(nn.InterfaceName)
+
+ if nn.Extends != nil {
+ p.printFreeFloating(nn.Extends, token.Start)
+ if nn.Extends.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ io.WriteString(p.w, "extends")
+ if nn.Extends.InterfaceNames[0].GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.joinPrint(",", nn.Extends.InterfaceNames)
+ }
+
+ p.printFreeFloating(nn, token.Name)
+ io.WriteString(p.w, "{")
+ p.printNodes(nn.Stmts)
+ p.printFreeFloating(nn, token.Stmts)
+ io.WriteString(p.w, "}")
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtLabel(n ast.Vertex) {
+ nn := n.(*ast.StmtLabel)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.LabelName)
+ p.printFreeFloating(nn, token.Label)
+
+ io.WriteString(p.w, ":")
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtNamespace(n ast.Vertex) {
+ nn := n.(*ast.StmtNamespace)
+ p.printFreeFloating(nn, token.Start)
+ io.WriteString(p.w, "namespace")
+
+ if nn.NamespaceName != nil {
+ if nn.NamespaceName.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(nn.NamespaceName)
+ }
+
+ if nn.Stmts != nil {
+ p.printFreeFloating(nn, token.Namespace)
+ io.WriteString(p.w, "{")
+ p.printNodes(nn.Stmts)
+ p.printFreeFloating(nn, token.Stmts)
+ io.WriteString(p.w, "}")
+ } else {
+ p.printFreeFloating(nn, token.SemiColon)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, ";")
+ }
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtNop(n ast.Vertex) {
+ p.printFreeFloating(n, token.Start)
+ p.printFreeFloating(n, token.SemiColon)
+ if n.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, ";")
+ }
+ p.printFreeFloating(n, token.End)
+}
+
+func (p *Printer) printStmtPropertyList(n ast.Vertex) {
+ nn := n.(*ast.StmtPropertyList)
+ p.printFreeFloating(nn, token.Start)
+
+ for k, m := range nn.Modifiers {
+ if k > 0 && m.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(m)
+ }
+
+ if nn.Type != nil && nn.Type.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+
+ p.Print(nn.Type)
+
+ if nn.Properties[0].GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+
+ p.joinPrint(",", nn.Properties)
+ p.printFreeFloating(n, token.PropertyList)
+
+ p.printFreeFloating(n, token.SemiColon)
+ if n.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, ";")
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtProperty(n ast.Vertex) {
+ nn := n.(*ast.StmtProperty)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Var)
+
+ if nn.Expr != nil {
+ p.printFreeFloating(nn, token.Var)
+ io.WriteString(p.w, "=")
+ p.Print(nn.Expr)
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtReturn(n ast.Vertex) {
+ nn := n.(*ast.StmtReturn)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "return")
+ if nn.Expr != nil && nn.Expr.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(nn.Expr)
+ p.printFreeFloating(nn, token.Expr)
+
+ p.printFreeFloating(nn, token.SemiColon)
+ if n.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, ";")
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtStaticVar(n ast.Vertex) {
+ nn := n.(*ast.StmtStaticVar)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Var)
+
+ if nn.Expr != nil {
+ p.printFreeFloating(nn, token.Var)
+ io.WriteString(p.w, "=")
+ p.Print(nn.Expr)
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtStatic(n ast.Vertex) {
+ nn := n.(*ast.StmtStatic)
+ p.printFreeFloating(nn, token.Start)
+ io.WriteString(p.w, "static")
+
+ p.joinPrint(",", nn.Vars)
+ p.printFreeFloating(nn, token.VarList)
+
+ p.printFreeFloating(nn, token.SemiColon)
+ if n.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, ";")
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtStmtList(n ast.Vertex) {
+ nn := n.(*ast.StmtStmtList)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "{")
+ p.printNodes(nn.Stmts)
+ p.printFreeFloating(nn, token.Stmts)
+ io.WriteString(p.w, "}")
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtSwitch(n ast.Vertex) {
+ nn := n.(*ast.StmtSwitch)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "switch")
+ p.printFreeFloating(nn, token.Switch)
+ io.WriteString(p.w, "(")
+ p.Print(nn.Cond)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, ")")
+
+ p.printFreeFloating(nn.CaseList, token.Start)
+ io.WriteString(p.w, "{")
+ p.printFreeFloating(nn.CaseList, token.CaseListStart)
+ p.printNodes(nn.CaseList.Cases)
+ p.printFreeFloating(nn.CaseList, token.CaseListEnd)
+ io.WriteString(p.w, "}")
+ p.printFreeFloating(nn.CaseList, token.End)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtThrow(n ast.Vertex) {
+ nn := n.(*ast.StmtThrow)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "throw")
+ if nn.Expr.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(nn.Expr)
+ p.printFreeFloating(nn, token.Expr)
+
+ p.printFreeFloating(nn, token.SemiColon)
+ if n.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, ";")
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtTraitAdaptationList(n ast.Vertex) {
+ nn := n.(*ast.StmtTraitAdaptationList)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "{")
+ p.printNodes(nn.Adaptations)
+ p.printFreeFloating(nn, token.AdaptationList)
+ io.WriteString(p.w, "}")
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtTraitMethodRef(n ast.Vertex) {
+ nn := n.(*ast.StmtTraitMethodRef)
+ p.printFreeFloating(nn, token.Start)
+
+ if nn.Trait != nil {
+ p.Print(nn.Trait)
+ p.printFreeFloating(nn, token.Name)
+ io.WriteString(p.w, "::")
+ }
+
+ p.Print(nn.Method)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtTraitUseAlias(n ast.Vertex) {
+ nn := n.(*ast.StmtTraitUseAlias)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Ref)
+ p.printFreeFloating(nn, token.Ref)
+
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ io.WriteString(p.w, "as")
+
+ if nn.Modifier != nil {
+ if nn.Modifier.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(nn.Modifier)
+ }
+
+ if nn.Alias != nil {
+ if nn.Alias.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(nn.Alias)
+ }
+ p.printFreeFloating(nn, token.Alias)
+
+ p.printFreeFloating(nn, token.SemiColon)
+ if n.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, ";")
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtTraitUsePrecedence(n ast.Vertex) {
+ nn := n.(*ast.StmtTraitUsePrecedence)
+ p.printFreeFloating(nn, token.Start)
+
+ p.Print(nn.Ref)
+ p.printFreeFloating(nn, token.Ref)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+
+ io.WriteString(p.w, "insteadof")
+ if nn.Insteadof[0].GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.joinPrint(",", nn.Insteadof)
+ p.printFreeFloating(nn, token.NameList)
+
+ p.printFreeFloating(nn, token.SemiColon)
+ if n.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, ";")
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtTraitUse(n ast.Vertex) {
+ nn := n.(*ast.StmtTraitUse)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "use")
+ if nn.Traits[0].GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.joinPrint(",", nn.Traits)
+
+ p.Print(nn.TraitAdaptationList)
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtTrait(n ast.Vertex) {
+ nn := n.(*ast.StmtTrait)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "trait")
+ if nn.TraitName.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(nn.TraitName)
+
+ p.printFreeFloating(nn, token.Name)
+ io.WriteString(p.w, "{")
+ p.printNodes(nn.Stmts)
+ p.printFreeFloating(nn, token.Stmts)
+ io.WriteString(p.w, "}")
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtTry(n ast.Vertex) {
+ nn := n.(*ast.StmtTry)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "try")
+ p.printFreeFloating(nn, token.Try)
+ io.WriteString(p.w, "{")
+ p.printNodes(nn.Stmts)
+ p.printFreeFloating(nn, token.Stmts)
+ io.WriteString(p.w, "}")
+
+ if nn.Catches != nil {
+ p.printNodes(nn.Catches)
+ }
+
+ if nn.Finally != nil {
+ p.Print(nn.Finally)
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtUnset(n ast.Vertex) {
+ nn := n.(*ast.StmtUnset)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "unset")
+ p.printFreeFloating(nn, token.Unset)
+ io.WriteString(p.w, "(")
+ p.joinPrint(",", nn.Vars)
+ p.printFreeFloating(nn, token.VarList)
+ io.WriteString(p.w, ")")
+ p.printFreeFloating(nn, token.CloseParenthesisToken)
+
+ p.printFreeFloating(nn, token.SemiColon)
+ if n.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, ";")
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtUseList(n ast.Vertex) {
+ nn := n.(*ast.StmtUseList)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "use")
+
+ if nn.UseType != nil {
+ if nn.UseType.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(nn.UseType)
+ }
+
+ if nn.Uses[0].GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.joinPrint(",", nn.Uses)
+ p.printFreeFloating(nn, token.UseDeclarationList)
+
+ p.printFreeFloating(nn, token.SemiColon)
+ if nn.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, ";")
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtUse(n ast.Vertex) {
+ nn := n.(*ast.StmtUse)
+ p.printFreeFloating(nn, token.Start)
+
+ if nn.UseType != nil {
+ p.Print(nn.UseType)
+ if nn.UseType.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ }
+
+ p.printFreeFloating(nn, token.Slash)
+
+ p.Print(nn.Use)
+
+ if nn.Alias != nil {
+ if nn.Alias.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ io.WriteString(p.w, "as")
+ if nn.Alias.GetNode().Tokens.IsEmpty() {
+ io.WriteString(p.w, " ")
+ }
+ p.Print(nn.Alias)
+ }
+
+ p.printFreeFloating(nn, token.End)
+}
+
+func (p *Printer) printStmtWhile(n ast.Vertex) {
+ nn := n.(*ast.StmtWhile)
+ p.printFreeFloating(nn, token.Start)
+
+ io.WriteString(p.w, "while")
+ p.printFreeFloating(nn, token.While)
+ io.WriteString(p.w, "(")
+ p.Print(nn.Cond)
+ p.printFreeFloating(nn, token.Expr)
+ io.WriteString(p.w, ")")
+
+ p.Print(nn.Stmt)
+
+ p.printFreeFloating(nn, token.End)
+}
diff --git a/printer/printer_parsed_php5_test.go b/pkg/printer/printer_parsed_php5_test.go
similarity index 99%
rename from printer/printer_parsed_php5_test.go
rename to pkg/printer/printer_parsed_php5_test.go
index 660987a..14868ac 100644
--- a/printer/printer_parsed_php5_test.go
+++ b/pkg/printer/printer_parsed_php5_test.go
@@ -2,22 +2,22 @@ package printer_test
import (
"bytes"
+ "github.com/z7zmey/php-parser/pkg/ast"
"testing"
- "github.com/z7zmey/php-parser/node"
- "github.com/z7zmey/php-parser/php5"
- "github.com/z7zmey/php-parser/printer"
+ "github.com/z7zmey/php-parser/internal/php5"
+ "github.com/z7zmey/php-parser/pkg/printer"
)
-func parsePhp5(src string) node.Node {
+func parsePhp5(src string) ast.Vertex {
php5parser := php5.NewParser([]byte(src), "5.6")
- php5parser.WithFreeFloating()
+ php5parser.WithTokens()
php5parser.Parse()
return php5parser.GetRootNode()
}
-func printPhp5(n node.Node) string {
+func printPhp5(n ast.Vertex) string {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
diff --git a/printer/printer_parsed_php7_test.go b/pkg/printer/printer_parsed_php7_test.go
similarity index 98%
rename from printer/printer_parsed_php7_test.go
rename to pkg/printer/printer_parsed_php7_test.go
index d50dc59..971219f 100644
--- a/printer/printer_parsed_php7_test.go
+++ b/pkg/printer/printer_parsed_php7_test.go
@@ -2,14 +2,12 @@ package printer_test
import (
"bytes"
+ "github.com/z7zmey/php-parser/pkg/ast"
"os"
"testing"
- "github.com/z7zmey/php-parser/node"
- "github.com/z7zmey/php-parser/node/name"
- "github.com/z7zmey/php-parser/node/stmt"
- "github.com/z7zmey/php-parser/php7"
- "github.com/z7zmey/php-parser/printer"
+ "github.com/z7zmey/php-parser/internal/php7"
+ "github.com/z7zmey/php-parser/pkg/printer"
)
func ExamplePrinter() {
@@ -30,15 +28,15 @@ abstract class Bar extends Baz
// parse
php7parser := php7.NewParser([]byte(src), "7.4")
- php7parser.WithFreeFloating()
+ php7parser.WithTokens()
php7parser.Parse()
rootNode := php7parser.GetRootNode()
// change namespace
- parts := &rootNode.(*node.Root).Stmts[0].(*stmt.Namespace).NamespaceName.(*name.Name).Parts
- *parts = append(*parts, &name.NamePart{Value: "Quuz"})
+ parts := &rootNode.(*ast.Root).Stmts[0].(*ast.StmtNamespace).NamespaceName.(*ast.NameName).Parts
+ *parts = append(*parts, &ast.NameNamePart{Value: []byte("Quuz")})
// print
@@ -60,15 +58,15 @@ abstract class Bar extends Baz
// }
}
-func parse(src string) node.Node {
+func parse(src string) ast.Vertex {
php7parser := php7.NewParser([]byte(src), "7.4")
- php7parser.WithFreeFloating()
+ php7parser.WithTokens()
php7parser.Parse()
return php7parser.GetRootNode()
}
-func print(n node.Node) string {
+func print(n ast.Vertex) string {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
diff --git a/printer/printer_test.go b/pkg/printer/printer_test.go
similarity index 54%
rename from printer/printer_test.go
rename to pkg/printer/printer_test.go
index 331de66..a2df1a1 100644
--- a/printer/printer_test.go
+++ b/pkg/printer/printer_test.go
@@ -2,56 +2,49 @@ package printer_test
import (
"bytes"
+ "github.com/z7zmey/php-parser/pkg/ast"
+ "github.com/z7zmey/php-parser/pkg/token"
"testing"
- "github.com/z7zmey/php-parser/freefloating"
- "github.com/z7zmey/php-parser/node"
- "github.com/z7zmey/php-parser/node/expr"
- "github.com/z7zmey/php-parser/node/expr/assign"
- "github.com/z7zmey/php-parser/node/expr/binary"
- "github.com/z7zmey/php-parser/node/expr/cast"
- "github.com/z7zmey/php-parser/node/name"
- "github.com/z7zmey/php-parser/node/scalar"
- "github.com/z7zmey/php-parser/node/stmt"
- "github.com/z7zmey/php-parser/printer"
+ "github.com/z7zmey/php-parser/pkg/printer"
)
func TestPrinterPrintFile(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&node.Root{
- Stmts: []node.Node{
- &stmt.Namespace{
- NamespaceName: &name.Name{
- Parts: []node.Node{
- &name.NamePart{Value: "Foo"},
+ p.Print(&ast.Root{
+ Stmts: []ast.Vertex{
+ &ast.StmtNamespace{
+ NamespaceName: &ast.NameName{
+ Parts: []ast.Vertex{
+ &ast.NameNamePart{Value: []byte("Foo")},
},
},
},
- &stmt.Class{
- Modifiers: []node.Node{&node.Identifier{Value: "abstract"}},
- ClassName: &name.Name{
- Parts: []node.Node{
- &name.NamePart{Value: "Bar"},
+ &ast.StmtClass{
+ Modifiers: []ast.Vertex{&ast.Identifier{Value: []byte("abstract")}},
+ ClassName: &ast.NameName{
+ Parts: []ast.Vertex{
+ &ast.NameNamePart{Value: []byte("Bar")},
},
},
- Extends: &stmt.ClassExtends{
- ClassName: &name.Name{
- Parts: []node.Node{
- &name.NamePart{Value: "Baz"},
+ Extends: &ast.StmtClassExtends{
+ ClassName: &ast.NameName{
+ Parts: []ast.Vertex{
+ &ast.NameNamePart{Value: []byte("Baz")},
},
},
},
- Stmts: []node.Node{
- &stmt.ClassMethod{
- Modifiers: []node.Node{&node.Identifier{Value: "public"}},
- MethodName: &node.Identifier{Value: "greet"},
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Echo{
- Exprs: []node.Node{
- &scalar.String{Value: "'Hello world'"},
+ Stmts: []ast.Vertex{
+ &ast.StmtClassMethod{
+ Modifiers: []ast.Vertex{&ast.Identifier{Value: []byte("public")}},
+ MethodName: &ast.Identifier{Value: []byte("greet")},
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtEcho{
+ Exprs: []ast.Vertex{
+ &ast.ScalarString{Value: []byte("'Hello world'")},
},
},
},
@@ -74,37 +67,41 @@ func TestPrinterPrintFileInlineHtml(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&node.Root{
- Stmts: []node.Node{
- &stmt.InlineHtml{Value: "HTML
"},
- &stmt.Expression{
- Expr: &expr.Variable{
- FreeFloating: freefloating.Collection{
- freefloating.Start: []freefloating.String{
- {
- StringType: freefloating.TokenType,
- Value: "$",
+ p.Print(&ast.Root{
+ Stmts: []ast.Vertex{
+ &ast.StmtInlineHtml{Value: []byte("HTML
")},
+ &ast.StmtExpression{
+ Expr: &ast.ExprVariable{
+ Node: ast.Node{
+ Tokens: token.Collection{
+ token.Start: []token.Token{
+ {
+ ID: token.ID('$'),
+ Value: []byte("$"),
+ },
},
},
},
- VarName: &node.Identifier{
- Value: "a",
+ VarName: &ast.Identifier{
+ Value: []byte("a"),
},
},
},
- &stmt.InlineHtml{Value: "HTML
"},
- &stmt.Expression{
- Expr: &expr.Variable{
- FreeFloating: freefloating.Collection{
- freefloating.Start: []freefloating.String{
- {
- StringType: freefloating.TokenType,
- Value: "$",
+ &ast.StmtInlineHtml{Value: []byte("HTML
")},
+ &ast.StmtExpression{
+ Expr: &ast.ExprVariable{
+ Node: ast.Node{
+ Tokens: token.Collection{
+ token.Start: []token.Token{
+ {
+ ID: token.ID('$'),
+ Value: []byte("$"),
+ },
},
},
},
- VarName: &node.Identifier{
- Value: "a",
+ VarName: &ast.Identifier{
+ Value: []byte("a"),
},
},
},
@@ -125,8 +122,8 @@ func TestPrinterPrintIdentifier(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- n := &node.Identifier{
- Value: "test",
+ n := &ast.Identifier{
+ Value: []byte("test"),
}
p.Print(n)
@@ -142,21 +139,21 @@ func TestPrinterPrintParameter(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&node.Parameter{
+ p.Print(&ast.Parameter{
ByRef: false,
Variadic: true,
- VariableType: &name.FullyQualified{
- Parts: []node.Node{
- &name.NamePart{
- Value: "Foo",
+ Type: &ast.NameFullyQualified{
+ Parts: []ast.Vertex{
+ &ast.NameNamePart{
+ Value: []byte("Foo"),
},
},
},
- Variable: &expr.Variable{
- VarName: &node.Identifier{Value: "var"},
+ Var: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("var")},
},
- DefaultValue: &scalar.String{
- Value: "'default'",
+ DefaultValue: &ast.ScalarString{
+ Value: []byte("'default'"),
},
})
@@ -172,24 +169,24 @@ func TestPrinterPrintNullable(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&node.Nullable{
- Expr: &node.Parameter{
+ p.Print(&ast.Nullable{
+ Expr: &ast.Parameter{
ByRef: true,
Variadic: false,
- VariableType: &name.FullyQualified{
- Parts: []node.Node{
- &name.NamePart{
- Value: "Foo",
+ Type: &ast.NameFullyQualified{
+ Parts: []ast.Vertex{
+ &ast.NameNamePart{
+ Value: []byte("Foo"),
},
},
},
- Variable: &expr.Variable{
- VarName: &node.Identifier{
- Value: "var",
+ Var: &ast.ExprVariable{
+ VarName: &ast.Identifier{
+ Value: []byte("var"),
},
},
- DefaultValue: &scalar.String{
- Value: "'default'",
+ DefaultValue: &ast.ScalarString{
+ Value: []byte("'default'"),
},
},
})
@@ -206,12 +203,12 @@ func TestPrinterPrintArgument(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&node.Argument{
+ p.Print(&ast.Argument{
IsReference: false,
Variadic: true,
- Expr: &expr.Variable{
- VarName: &node.Identifier{
- Value: "var",
+ Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{
+ Value: []byte("var"),
},
},
})
@@ -227,12 +224,12 @@ func TestPrinterPrintArgumentByRef(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&node.Argument{
+ p.Print(&ast.Argument{
IsReference: true,
Variadic: false,
- Expr: &expr.Variable{
- VarName: &node.Identifier{
- Value: "var",
+ Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{
+ Value: []byte("var"),
},
},
})
@@ -251,8 +248,8 @@ func TestPrinterPrintNameNamePart(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&name.NamePart{
- Value: "foo",
+ p.Print(&ast.NameNamePart{
+ Value: []byte("foo"),
})
expected := "foo"
@@ -267,13 +264,13 @@ func TestPrinterPrintNameName(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&name.Name{
- Parts: []node.Node{
- &name.NamePart{
- Value: "Foo",
+ p.Print(&ast.NameName{
+ Parts: []ast.Vertex{
+ &ast.NameNamePart{
+ Value: []byte("Foo"),
},
- &name.NamePart{
- Value: "Bar",
+ &ast.NameNamePart{
+ Value: []byte("Bar"),
},
},
})
@@ -290,13 +287,13 @@ func TestPrinterPrintNameFullyQualified(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&name.FullyQualified{
- Parts: []node.Node{
- &name.NamePart{
- Value: "Foo",
+ p.Print(&ast.NameFullyQualified{
+ Parts: []ast.Vertex{
+ &ast.NameNamePart{
+ Value: []byte("Foo"),
},
- &name.NamePart{
- Value: "Bar",
+ &ast.NameNamePart{
+ Value: []byte("Bar"),
},
},
})
@@ -313,13 +310,13 @@ func TestPrinterPrintNameRelative(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&name.Relative{
- Parts: []node.Node{
- &name.NamePart{
- Value: "Foo",
+ p.Print(&ast.NameRelative{
+ Parts: []ast.Vertex{
+ &ast.NameNamePart{
+ Value: []byte("Foo"),
},
- &name.NamePart{
- Value: "Bar",
+ &ast.NameNamePart{
+ Value: []byte("Bar"),
},
},
})
@@ -338,8 +335,8 @@ func TestPrinterPrintScalarLNumber(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&scalar.Lnumber{
- Value: "1",
+ p.Print(&ast.ScalarLnumber{
+ Value: []byte("1"),
})
expected := "1"
@@ -354,8 +351,8 @@ func TestPrinterPrintScalarDNumber(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&scalar.Dnumber{
- Value: ".1",
+ p.Print(&ast.ScalarDnumber{
+ Value: []byte(".1"),
})
expected := ".1"
@@ -370,8 +367,8 @@ func TestPrinterPrintScalarString(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&scalar.String{
- Value: "'hello world'",
+ p.Print(&ast.ScalarString{
+ Value: []byte("'hello world'"),
})
expected := `'hello world'`
@@ -386,8 +383,8 @@ func TestPrinterPrintScalarEncapsedStringPart(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&scalar.EncapsedStringPart{
- Value: "hello world",
+ p.Print(&ast.ScalarEncapsedStringPart{
+ Value: []byte("hello world"),
})
expected := `hello world`
@@ -402,13 +399,13 @@ func TestPrinterPrintScalarEncapsed(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&scalar.Encapsed{
- Parts: []node.Node{
- &scalar.EncapsedStringPart{Value: "hello "},
- &expr.Variable{
- VarName: &node.Identifier{Value: "var"},
+ p.Print(&ast.ScalarEncapsed{
+ Parts: []ast.Vertex{
+ &ast.ScalarEncapsedStringPart{Value: []byte("hello ")},
+ &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("var")},
},
- &scalar.EncapsedStringPart{Value: " world"},
+ &ast.ScalarEncapsedStringPart{Value: []byte(" world")},
},
})
@@ -424,14 +421,14 @@ func TestPrinterPrintScalarHeredoc(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&scalar.Heredoc{
- Label: "<<bar`
@@ -2221,9 +2218,9 @@ func TestPrinterPrintExprReference(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&expr.Reference{
- Variable: &expr.Variable{
- VarName: &node.Identifier{Value: "foo"},
+ p.Print(&ast.ExprReference{
+ Var: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("foo")},
},
})
@@ -2239,8 +2236,8 @@ func TestPrinterPrintRequire(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&expr.Require{
- Expr: &scalar.String{Value: "'path'"},
+ p.Print(&ast.ExprRequire{
+ Expr: &ast.ScalarString{Value: []byte("'path'")},
})
expected := `require 'path'`
@@ -2255,8 +2252,8 @@ func TestPrinterPrintRequireOnce(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&expr.RequireOnce{
- Expr: &scalar.String{Value: "'path'"},
+ p.Print(&ast.ExprRequireOnce{
+ Expr: &ast.ScalarString{Value: []byte("'path'")},
})
expected := `require_once 'path'`
@@ -2271,13 +2268,13 @@ func TestPrinterPrintShellExec(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&expr.ShellExec{
- Parts: []node.Node{
- &scalar.EncapsedStringPart{Value: "hello "},
- &expr.Variable{
- VarName: &node.Identifier{Value: "world"},
+ p.Print(&ast.ExprShellExec{
+ Parts: []ast.Vertex{
+ &ast.ScalarEncapsedStringPart{Value: []byte("hello ")},
+ &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("world")},
},
- &scalar.EncapsedStringPart{Value: "!"},
+ &ast.ScalarEncapsedStringPart{Value: []byte("!")},
},
})
@@ -2293,23 +2290,23 @@ func TestPrinterPrintExprShortArray(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&expr.ShortArray{
- Items: []node.Node{
- &expr.ArrayItem{
- Key: &scalar.String{Value: "'Hello'"},
- Val: &expr.Variable{
- VarName: &node.Identifier{Value: "world"},
+ p.Print(&ast.ExprShortArray{
+ Items: []ast.Vertex{
+ &ast.ExprArrayItem{
+ Key: &ast.ScalarString{Value: []byte("'Hello'")},
+ Val: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("world")},
},
},
- &expr.ArrayItem{
- Key: &scalar.Lnumber{Value: "2"},
- Val: &expr.Reference{Variable: &expr.Variable{
- VarName: &node.Identifier{Value: "var"},
+ &ast.ExprArrayItem{
+ Key: &ast.ScalarLnumber{Value: []byte("2")},
+ Val: &ast.ExprReference{Var: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("var")},
}},
},
- &expr.ArrayItem{
- Val: &expr.Variable{
- VarName: &node.Identifier{Value: "var"},
+ &ast.ExprArrayItem{
+ Val: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("var")},
},
},
},
@@ -2327,24 +2324,24 @@ func TestPrinterPrintShortList(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&expr.ShortList{
- Items: []node.Node{
- &expr.ArrayItem{
- Val: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.ExprShortList{
+ Items: []ast.Vertex{
+ &ast.ExprArrayItem{
+ Val: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
},
},
- &expr.ArrayItem{
- Val: &expr.List{
- Items: []node.Node{
- &expr.ArrayItem{
- Val: &expr.Variable{
- VarName: &node.Identifier{Value: "b"},
+ &ast.ExprArrayItem{
+ Val: &ast.ExprList{
+ Items: []ast.Vertex{
+ &ast.ExprArrayItem{
+ Val: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("b")},
},
},
- &expr.ArrayItem{
- Val: &expr.Variable{
- VarName: &node.Identifier{Value: "c"},
+ &ast.ExprArrayItem{
+ Val: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("c")},
},
},
},
@@ -2365,19 +2362,19 @@ func TestPrinterPrintStaticCall(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&expr.StaticCall{
- Class: &node.Identifier{Value: "Foo"},
- Call: &node.Identifier{Value: "bar"},
- ArgumentList: &node.ArgumentList{
- Arguments: []node.Node{
- &node.Argument{
- Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.ExprStaticCall{
+ Class: &ast.Identifier{Value: []byte("Foo")},
+ Call: &ast.Identifier{Value: []byte("bar")},
+ ArgumentList: &ast.ArgumentList{
+ Arguments: []ast.Vertex{
+ &ast.Argument{
+ Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
},
},
- &node.Argument{
- Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "b"},
+ &ast.Argument{
+ Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("b")},
},
},
},
@@ -2396,10 +2393,10 @@ func TestPrinterPrintStaticPropertyFetch(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&expr.StaticPropertyFetch{
- Class: &node.Identifier{Value: "Foo"},
- Property: &expr.Variable{
- VarName: &node.Identifier{Value: "bar"},
+ p.Print(&ast.ExprStaticPropertyFetch{
+ Class: &ast.Identifier{Value: []byte("Foo")},
+ Property: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("bar")},
},
})
@@ -2415,12 +2412,12 @@ func TestPrinterPrintTernary(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&expr.Ternary{
- Condition: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.ExprTernary{
+ Condition: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
},
- IfFalse: &expr.Variable{
- VarName: &node.Identifier{Value: "b"},
+ IfFalse: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("b")},
},
})
@@ -2436,15 +2433,15 @@ func TestPrinterPrintTernaryFull(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&expr.Ternary{
- Condition: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.ExprTernary{
+ Condition: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
},
- IfTrue: &expr.Variable{
- VarName: &node.Identifier{Value: "b"},
+ IfTrue: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("b")},
},
- IfFalse: &expr.Variable{
- VarName: &node.Identifier{Value: "c"},
+ IfFalse: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("c")},
},
})
@@ -2460,9 +2457,9 @@ func TestPrinterPrintUnaryMinus(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&expr.UnaryMinus{
- Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "var"},
+ p.Print(&ast.ExprUnaryMinus{
+ Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("var")},
},
})
@@ -2478,9 +2475,9 @@ func TestPrinterPrintUnaryPlus(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&expr.UnaryPlus{
- Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "var"},
+ p.Print(&ast.ExprUnaryPlus{
+ Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("var")},
},
})
@@ -2496,9 +2493,9 @@ func TestPrinterPrintVariable(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&expr.Variable{
- VarName: &expr.Variable{
- VarName: &node.Identifier{Value: "var"},
+ p.Print(&ast.ExprVariable{
+ VarName: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("var")},
},
})
@@ -2514,9 +2511,9 @@ func TestPrinterPrintYieldFrom(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&expr.YieldFrom{
- Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "var"},
+ p.Print(&ast.ExprYieldFrom{
+ Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("var")},
},
})
@@ -2532,9 +2529,9 @@ func TestPrinterPrintYield(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&expr.Yield{
- Value: &expr.Variable{
- VarName: &node.Identifier{Value: "var"},
+ p.Print(&ast.ExprYield{
+ Value: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("var")},
},
})
@@ -2550,12 +2547,12 @@ func TestPrinterPrintYieldFull(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&expr.Yield{
- Key: &expr.Variable{
- VarName: &node.Identifier{Value: "k"},
+ p.Print(&ast.ExprYield{
+ Key: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("k")},
},
- Value: &expr.Variable{
- VarName: &node.Identifier{Value: "var"},
+ Value: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("var")},
},
})
@@ -2573,14 +2570,14 @@ func TestPrinterPrintAltElseIf(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.AltElseIf{
- Cond: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtAltElseIf{
+ Cond: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
},
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "b"},
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("b")},
}},
},
},
@@ -2598,11 +2595,11 @@ func TestPrinterPrintAltElseIfEmpty(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.AltElseIf{
- Cond: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtAltElseIf{
+ Cond: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
},
- Stmt: &stmt.StmtList{},
+ Stmt: &ast.StmtStmtList{},
})
expected := `elseif($a):`
@@ -2617,11 +2614,11 @@ func TestPrinterPrintAltElse(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.AltElse{
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "b"},
+ p.Print(&ast.StmtAltElse{
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("b")},
}},
},
},
@@ -2639,8 +2636,8 @@ func TestPrinterPrintAltElseEmpty(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.AltElse{
- Stmt: &stmt.StmtList{},
+ p.Print(&ast.StmtAltElse{
+ Stmt: &ast.StmtStmtList{},
})
expected := `else:`
@@ -2655,26 +2652,26 @@ func TestPrinterPrintAltFor(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.AltFor{
- Init: []node.Node{
- &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtAltFor{
+ Init: []ast.Vertex{
+ &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
},
},
- Cond: []node.Node{
- &expr.Variable{
- VarName: &node.Identifier{Value: "b"},
+ Cond: []ast.Vertex{
+ &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("b")},
},
},
- Loop: []node.Node{
- &expr.Variable{
- VarName: &node.Identifier{Value: "c"},
+ Loop: []ast.Vertex{
+ &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("c")},
},
},
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "d"},
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("d")},
}},
},
},
@@ -2692,20 +2689,20 @@ func TestPrinterPrintAltForeach(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.AltForeach{
- Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "var"},
+ p.Print(&ast.StmtAltForeach{
+ Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("var")},
},
- Key: &expr.Variable{
- VarName: &node.Identifier{Value: "key"},
+ Key: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("key")},
},
- Variable: &expr.Reference{Variable: &expr.Variable{
- VarName: &node.Identifier{Value: "val"},
+ Var: &ast.ExprReference{Var: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("val")},
}},
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "d"},
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("d")},
}},
},
},
@@ -2723,42 +2720,42 @@ func TestPrinterPrintAltIf(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.AltIf{
- Cond: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtAltIf{
+ Cond: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
},
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "d"},
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("d")},
}},
},
},
- ElseIf: []node.Node{
- &stmt.AltElseIf{
- Cond: &expr.Variable{
- VarName: &node.Identifier{Value: "b"},
+ ElseIf: []ast.Vertex{
+ &ast.StmtAltElseIf{
+ Cond: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("b")},
},
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "b"},
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("b")},
}},
},
},
},
- &stmt.AltElseIf{
- Cond: &expr.Variable{
- VarName: &node.Identifier{Value: "c"},
+ &ast.StmtAltElseIf{
+ Cond: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("c")},
},
- Stmt: &stmt.StmtList{},
+ Stmt: &ast.StmtStmtList{},
},
},
- Else: &stmt.AltElse{
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "b"},
+ Else: &ast.StmtAltElse{
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("b")},
}},
},
},
@@ -2777,25 +2774,25 @@ func TestPrinterPrintStmtAltSwitch(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.AltSwitch{
- Cond: &expr.Variable{
- VarName: &node.Identifier{Value: "var"},
+ p.Print(&ast.StmtAltSwitch{
+ Cond: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("var")},
},
- CaseList: &stmt.CaseList{
- Cases: []node.Node{
- &stmt.Case{
- Cond: &scalar.String{Value: "'a'"},
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ CaseList: &ast.StmtCaseList{
+ Cases: []ast.Vertex{
+ &ast.StmtCase{
+ Cond: &ast.ScalarString{Value: []byte("'a'")},
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
}},
},
},
- &stmt.Case{
- Cond: &scalar.String{Value: "'b'"},
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "b"},
+ &ast.StmtCase{
+ Cond: &ast.ScalarString{Value: []byte("'b'")},
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("b")},
}},
},
},
@@ -2815,14 +2812,14 @@ func TestPrinterPrintAltWhile(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.AltWhile{
- Cond: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtAltWhile{
+ Cond: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
},
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "b"},
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("b")},
}},
},
},
@@ -2840,9 +2837,9 @@ func TestPrinterPrintStmtBreak(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Break{
- Expr: &scalar.Lnumber{
- Value: "1",
+ p.Print(&ast.StmtBreak{
+ Expr: &ast.ScalarLnumber{
+ Value: []byte("1"),
},
})
@@ -2858,13 +2855,13 @@ func TestPrinterPrintStmtCase(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Case{
- Cond: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtCase{
+ Cond: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
},
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
}},
},
})
@@ -2881,11 +2878,11 @@ func TestPrinterPrintStmtCaseEmpty(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Case{
- Cond: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtCase{
+ Cond: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
},
- Stmts: []node.Node{},
+ Stmts: []ast.Vertex{},
})
expected := "case $a:"
@@ -2900,17 +2897,17 @@ func TestPrinterPrintStmtCatch(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Catch{
- Types: []node.Node{
- &name.Name{Parts: []node.Node{&name.NamePart{Value: "Exception"}}},
- &name.FullyQualified{Parts: []node.Node{&name.NamePart{Value: "RuntimeException"}}},
+ p.Print(&ast.StmtCatch{
+ Types: []ast.Vertex{
+ &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Exception")}}},
+ &ast.NameFullyQualified{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("RuntimeException")}}},
},
- Variable: &expr.Variable{
- VarName: &node.Identifier{Value: "e"},
+ Var: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("e")},
},
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
}},
},
})
@@ -2927,33 +2924,33 @@ func TestPrinterPrintStmtClassMethod(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.ClassMethod{
- Modifiers: []node.Node{&node.Identifier{Value: "public"}},
+ p.Print(&ast.StmtClassMethod{
+ Modifiers: []ast.Vertex{&ast.Identifier{Value: []byte("public")}},
ReturnsRef: true,
- MethodName: &node.Identifier{Value: "foo"},
- Params: []node.Node{
- &node.Parameter{
- ByRef: true,
- VariableType: &node.Nullable{Expr: &name.Name{Parts: []node.Node{&name.NamePart{Value: "int"}}}},
- Variable: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ MethodName: &ast.Identifier{Value: []byte("foo")},
+ Params: []ast.Vertex{
+ &ast.Parameter{
+ ByRef: true,
+ Type: &ast.Nullable{Expr: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("int")}}}},
+ Var: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
},
- DefaultValue: &expr.ConstFetch{Constant: &name.Name{Parts: []node.Node{&name.NamePart{Value: "null"}}}},
+ DefaultValue: &ast.ExprConstFetch{Const: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("null")}}}},
},
- &node.Parameter{
+ &ast.Parameter{
Variadic: true,
- Variable: &expr.Variable{
- VarName: &node.Identifier{Value: "b"},
+ Var: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("b")},
},
},
},
- ReturnType: &name.Name{
- Parts: []node.Node{&name.NamePart{Value: "void"}},
+ ReturnType: &ast.NameName{
+ Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("void")}},
},
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
}},
},
},
@@ -2971,33 +2968,33 @@ func TestPrinterPrintStmtAbstractClassMethod(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.ClassMethod{
- Modifiers: []node.Node{
- &node.Identifier{Value: "public"},
- &node.Identifier{Value: "static"},
+ p.Print(&ast.StmtClassMethod{
+ Modifiers: []ast.Vertex{
+ &ast.Identifier{Value: []byte("public")},
+ &ast.Identifier{Value: []byte("static")},
},
ReturnsRef: true,
- MethodName: &node.Identifier{Value: "foo"},
- Params: []node.Node{
- &node.Parameter{
- ByRef: true,
- VariableType: &node.Nullable{Expr: &name.Name{Parts: []node.Node{&name.NamePart{Value: "int"}}}},
- Variable: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ MethodName: &ast.Identifier{Value: []byte("foo")},
+ Params: []ast.Vertex{
+ &ast.Parameter{
+ ByRef: true,
+ Type: &ast.Nullable{Expr: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("int")}}}},
+ Var: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
},
- DefaultValue: &expr.ConstFetch{Constant: &name.Name{Parts: []node.Node{&name.NamePart{Value: "null"}}}},
+ DefaultValue: &ast.ExprConstFetch{Const: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("null")}}}},
},
- &node.Parameter{
+ &ast.Parameter{
Variadic: true,
- Variable: &expr.Variable{
- VarName: &node.Identifier{Value: "b"},
+ Var: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("b")},
},
},
},
- ReturnType: &name.Name{
- Parts: []node.Node{&name.NamePart{Value: "void"}},
+ ReturnType: &ast.NameName{
+ Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("void")}},
},
- Stmt: &stmt.Nop{},
+ Stmt: &ast.StmtNop{},
})
expected := `public static function &foo(?int&$a=null,...$b):void;`
@@ -3012,28 +3009,28 @@ func TestPrinterPrintStmtClass(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Class{
- Modifiers: []node.Node{&node.Identifier{Value: "abstract"}},
- ClassName: &node.Identifier{Value: "Foo"},
- Extends: &stmt.ClassExtends{
- ClassName: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Bar"}}},
+ p.Print(&ast.StmtClass{
+ Modifiers: []ast.Vertex{&ast.Identifier{Value: []byte("abstract")}},
+ ClassName: &ast.Identifier{Value: []byte("Foo")},
+ Extends: &ast.StmtClassExtends{
+ ClassName: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Bar")}}},
},
- Implements: &stmt.ClassImplements{
- InterfaceNames: []node.Node{
- &name.Name{Parts: []node.Node{&name.NamePart{Value: "Baz"}}},
- &name.Name{Parts: []node.Node{&name.NamePart{Value: "Quuz"}}},
+ Implements: &ast.StmtClassImplements{
+ InterfaceNames: []ast.Vertex{
+ &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Baz")}}},
+ &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Quuz")}}},
},
},
- Stmts: []node.Node{
- &stmt.ClassConstList{
- Modifiers: []node.Node{
- &node.Identifier{Value: "public"},
- &node.Identifier{Value: "static"},
+ Stmts: []ast.Vertex{
+ &ast.StmtClassConstList{
+ Modifiers: []ast.Vertex{
+ &ast.Identifier{Value: []byte("public")},
+ &ast.Identifier{Value: []byte("static")},
},
- Consts: []node.Node{
- &stmt.Constant{
- ConstantName: &node.Identifier{Value: "FOO"},
- Expr: &scalar.String{Value: "'bar'"},
+ Consts: []ast.Vertex{
+ &ast.StmtConstant{
+ ConstantName: &ast.Identifier{Value: []byte("FOO")},
+ Expr: &ast.ScalarString{Value: []byte("'bar'")},
},
},
},
@@ -3052,38 +3049,38 @@ func TestPrinterPrintStmtAnonymousClass(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Class{
- Modifiers: []node.Node{&node.Identifier{Value: "abstract"}},
- ArgumentList: &node.ArgumentList{
- Arguments: []node.Node{
- &node.Argument{
- Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtClass{
+ Modifiers: []ast.Vertex{&ast.Identifier{Value: []byte("abstract")}},
+ ArgumentList: &ast.ArgumentList{
+ Arguments: []ast.Vertex{
+ &ast.Argument{
+ Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
},
},
- &node.Argument{
- Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "b"},
+ &ast.Argument{
+ Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("b")},
},
},
},
},
- Extends: &stmt.ClassExtends{
- ClassName: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Bar"}}},
+ Extends: &ast.StmtClassExtends{
+ ClassName: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Bar")}}},
},
- Implements: &stmt.ClassImplements{
- InterfaceNames: []node.Node{
- &name.Name{Parts: []node.Node{&name.NamePart{Value: "Baz"}}},
- &name.Name{Parts: []node.Node{&name.NamePart{Value: "Quuz"}}},
+ Implements: &ast.StmtClassImplements{
+ InterfaceNames: []ast.Vertex{
+ &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Baz")}}},
+ &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Quuz")}}},
},
},
- Stmts: []node.Node{
- &stmt.ClassConstList{
- Modifiers: []node.Node{&node.Identifier{Value: "public"}},
- Consts: []node.Node{
- &stmt.Constant{
- ConstantName: &node.Identifier{Value: "FOO"},
- Expr: &scalar.String{Value: "'bar'"},
+ Stmts: []ast.Vertex{
+ &ast.StmtClassConstList{
+ Modifiers: []ast.Vertex{&ast.Identifier{Value: []byte("public")}},
+ Consts: []ast.Vertex{
+ &ast.StmtConstant{
+ ConstantName: &ast.Identifier{Value: []byte("FOO")},
+ Expr: &ast.ScalarString{Value: []byte("'bar'")},
},
},
},
@@ -3102,16 +3099,16 @@ func TestPrinterPrintStmtClassConstList(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.ClassConstList{
- Modifiers: []node.Node{&node.Identifier{Value: "public"}},
- Consts: []node.Node{
- &stmt.Constant{
- ConstantName: &node.Identifier{Value: "FOO"},
- Expr: &scalar.String{Value: "'a'"},
+ p.Print(&ast.StmtClassConstList{
+ Modifiers: []ast.Vertex{&ast.Identifier{Value: []byte("public")}},
+ Consts: []ast.Vertex{
+ &ast.StmtConstant{
+ ConstantName: &ast.Identifier{Value: []byte("FOO")},
+ Expr: &ast.ScalarString{Value: []byte("'a'")},
},
- &stmt.Constant{
- ConstantName: &node.Identifier{Value: "BAR"},
- Expr: &scalar.String{Value: "'b'"},
+ &ast.StmtConstant{
+ ConstantName: &ast.Identifier{Value: []byte("BAR")},
+ Expr: &ast.ScalarString{Value: []byte("'b'")},
},
},
})
@@ -3128,15 +3125,15 @@ func TestPrinterPrintStmtConstList(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.ConstList{
- Consts: []node.Node{
- &stmt.Constant{
- ConstantName: &node.Identifier{Value: "FOO"},
- Expr: &scalar.String{Value: "'a'"},
+ p.Print(&ast.StmtConstList{
+ Consts: []ast.Vertex{
+ &ast.StmtConstant{
+ ConstantName: &ast.Identifier{Value: []byte("FOO")},
+ Expr: &ast.ScalarString{Value: []byte("'a'")},
},
- &stmt.Constant{
- ConstantName: &node.Identifier{Value: "BAR"},
- Expr: &scalar.String{Value: "'b'"},
+ &ast.StmtConstant{
+ ConstantName: &ast.Identifier{Value: []byte("BAR")},
+ Expr: &ast.ScalarString{Value: []byte("'b'")},
},
},
})
@@ -3153,9 +3150,9 @@ func TestPrinterPrintStmtConstant(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Constant{
- ConstantName: &node.Identifier{Value: "FOO"},
- Expr: &scalar.String{Value: "'BAR'"},
+ p.Print(&ast.StmtConstant{
+ ConstantName: &ast.Identifier{Value: []byte("FOO")},
+ Expr: &ast.ScalarString{Value: []byte("'BAR'")},
})
expected := "FOO='BAR'"
@@ -3170,9 +3167,9 @@ func TestPrinterPrintStmtContinue(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Continue{
- Expr: &scalar.Lnumber{
- Value: "1",
+ p.Print(&ast.StmtContinue{
+ Expr: &ast.ScalarLnumber{
+ Value: []byte("1"),
},
})
@@ -3188,16 +3185,16 @@ func TestPrinterPrintStmtDeclareStmts(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Declare{
- Consts: []node.Node{
- &stmt.Constant{
- ConstantName: &node.Identifier{Value: "FOO"},
- Expr: &scalar.String{Value: "'bar'"},
+ p.Print(&ast.StmtDeclare{
+ Consts: []ast.Vertex{
+ &ast.StmtConstant{
+ ConstantName: &ast.Identifier{Value: []byte("FOO")},
+ Expr: &ast.ScalarString{Value: []byte("'bar'")},
},
},
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Nop{},
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtNop{},
},
},
})
@@ -3214,14 +3211,14 @@ func TestPrinterPrintStmtDeclareExpr(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Declare{
- Consts: []node.Node{
- &stmt.Constant{
- ConstantName: &node.Identifier{Value: "FOO"},
- Expr: &scalar.String{Value: "'bar'"},
+ p.Print(&ast.StmtDeclare{
+ Consts: []ast.Vertex{
+ &ast.StmtConstant{
+ ConstantName: &ast.Identifier{Value: []byte("FOO")},
+ Expr: &ast.ScalarString{Value: []byte("'bar'")},
},
},
- Stmt: &stmt.Expression{Expr: &scalar.String{Value: "'bar'"}},
+ Stmt: &ast.StmtExpression{Expr: &ast.ScalarString{Value: []byte("'bar'")}},
})
expected := `declare(FOO='bar')'bar';`
@@ -3236,14 +3233,14 @@ func TestPrinterPrintStmtDeclareNop(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Declare{
- Consts: []node.Node{
- &stmt.Constant{
- ConstantName: &node.Identifier{Value: "FOO"},
- Expr: &scalar.String{Value: "'bar'"},
+ p.Print(&ast.StmtDeclare{
+ Consts: []ast.Vertex{
+ &ast.StmtConstant{
+ ConstantName: &ast.Identifier{Value: []byte("FOO")},
+ Expr: &ast.ScalarString{Value: []byte("'bar'")},
},
},
- Stmt: &stmt.Nop{},
+ Stmt: &ast.StmtNop{},
})
expected := `declare(FOO='bar');`
@@ -3258,10 +3255,10 @@ func TestPrinterPrintStmtDefalut(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Default{
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtDefault{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
}},
},
})
@@ -3278,8 +3275,8 @@ func TestPrinterPrintStmtDefalutEmpty(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Default{
- Stmts: []node.Node{},
+ p.Print(&ast.StmtDefault{
+ Stmts: []ast.Vertex{},
})
expected := `default:`
@@ -3294,11 +3291,11 @@ func TestPrinterPrintStmtDo_Expression(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Do{
- Cond: &scalar.Lnumber{Value: "1"},
- Stmt: &stmt.Expression{
- Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtDo{
+ Cond: &ast.ScalarLnumber{Value: []byte("1")},
+ Stmt: &ast.StmtExpression{
+ Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
},
},
})
@@ -3315,12 +3312,12 @@ func TestPrinterPrintStmtDo_StmtList(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Do{
- Cond: &scalar.Lnumber{Value: "1"},
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtDo{
+ Cond: &ast.ScalarLnumber{Value: []byte("1")},
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
}},
},
},
@@ -3338,15 +3335,15 @@ func TestPrinterPrintStmtEchoHtmlState(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&node.Root{
- Stmts: []node.Node{
- &stmt.Echo{
- Exprs: []node.Node{
- &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.Root{
+ Stmts: []ast.Vertex{
+ &ast.StmtEcho{
+ Exprs: []ast.Vertex{
+ &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
},
- &expr.Variable{
- VarName: &node.Identifier{Value: "b"},
+ &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("b")},
},
},
},
@@ -3365,13 +3362,13 @@ func TestPrinterPrintStmtEchoPhpState(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Echo{
- Exprs: []node.Node{
- &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtEcho{
+ Exprs: []ast.Vertex{
+ &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
},
- &expr.Variable{
- VarName: &node.Identifier{Value: "b"},
+ &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("b")},
},
},
})
@@ -3388,13 +3385,13 @@ func TestPrinterPrintStmtElseIfStmts(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.ElseIf{
- Cond: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtElseIf{
+ Cond: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
},
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Nop{},
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtNop{},
},
},
})
@@ -3411,11 +3408,11 @@ func TestPrinterPrintStmtElseIfExpr(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.ElseIf{
- Cond: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtElseIf{
+ Cond: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
},
- Stmt: &stmt.Expression{Expr: &scalar.String{Value: "'bar'"}},
+ Stmt: &ast.StmtExpression{Expr: &ast.ScalarString{Value: []byte("'bar'")}},
})
expected := `elseif($a)'bar';`
@@ -3430,11 +3427,11 @@ func TestPrinterPrintStmtElseIfNop(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.ElseIf{
- Cond: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtElseIf{
+ Cond: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
},
- Stmt: &stmt.Nop{},
+ Stmt: &ast.StmtNop{},
})
expected := `elseif($a);`
@@ -3449,10 +3446,10 @@ func TestPrinterPrintStmtElseStmts(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Else{
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Nop{},
+ p.Print(&ast.StmtElse{
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtNop{},
},
},
})
@@ -3469,8 +3466,8 @@ func TestPrinterPrintStmtElseExpr(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Else{
- Stmt: &stmt.Expression{Expr: &scalar.String{Value: "'bar'"}},
+ p.Print(&ast.StmtElse{
+ Stmt: &ast.StmtExpression{Expr: &ast.ScalarString{Value: []byte("'bar'")}},
})
expected := `else 'bar';`
@@ -3485,8 +3482,8 @@ func TestPrinterPrintStmtElseNop(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Else{
- Stmt: &stmt.Nop{},
+ p.Print(&ast.StmtElse{
+ Stmt: &ast.StmtNop{},
})
expected := `else ;`
@@ -3501,9 +3498,9 @@ func TestPrinterPrintExpression(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Expression{
- Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtExpression{
+ Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
},
})
@@ -3519,9 +3516,9 @@ func TestPrinterPrintStmtFinally(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Finally{
- Stmts: []node.Node{
- &stmt.Nop{},
+ p.Print(&ast.StmtFinally{
+ Stmts: []ast.Vertex{
+ &ast.StmtNop{},
},
})
@@ -3537,34 +3534,34 @@ func TestPrinterPrintStmtFor(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.For{
- Init: []node.Node{
- &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtFor{
+ Init: []ast.Vertex{
+ &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
},
- &expr.Variable{
- VarName: &node.Identifier{Value: "b"},
+ &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("b")},
},
},
- Cond: []node.Node{
- &expr.Variable{
- VarName: &node.Identifier{Value: "c"},
+ Cond: []ast.Vertex{
+ &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("c")},
},
- &expr.Variable{
- VarName: &node.Identifier{Value: "d"},
+ &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("d")},
},
},
- Loop: []node.Node{
- &expr.Variable{
- VarName: &node.Identifier{Value: "e"},
+ Loop: []ast.Vertex{
+ &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("e")},
},
- &expr.Variable{
- VarName: &node.Identifier{Value: "f"},
+ &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("f")},
},
},
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Nop{},
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtNop{},
},
},
})
@@ -3581,19 +3578,19 @@ func TestPrinterPrintStmtForeach(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Foreach{
- Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtForeach{
+ Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
},
- Key: &expr.Variable{
- VarName: &node.Identifier{Value: "k"},
+ Key: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("k")},
},
- Variable: &expr.Variable{
- VarName: &node.Identifier{Value: "v"},
+ Var: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("v")},
},
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Nop{},
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtNop{},
},
},
})
@@ -3610,23 +3607,23 @@ func TestPrinterPrintStmtFunction(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Function{
+ p.Print(&ast.StmtFunction{
ReturnsRef: true,
- FunctionName: &node.Identifier{Value: "foo"},
- Params: []node.Node{
- &node.Parameter{
+ FunctionName: &ast.Identifier{Value: []byte("foo")},
+ Params: []ast.Vertex{
+ &ast.Parameter{
ByRef: true,
Variadic: false,
- Variable: &expr.Variable{
- VarName: &node.Identifier{Value: "var"},
+ Var: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("var")},
},
},
},
- ReturnType: &name.FullyQualified{
- Parts: []node.Node{&name.NamePart{Value: "Foo"}},
+ ReturnType: &ast.NameFullyQualified{
+ Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}},
},
- Stmts: []node.Node{
- &stmt.Nop{},
+ Stmts: []ast.Vertex{
+ &ast.StmtNop{},
},
})
@@ -3642,13 +3639,13 @@ func TestPrinterPrintStmtGlobal(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Global{
- Vars: []node.Node{
- &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtGlobal{
+ Vars: []ast.Vertex{
+ &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
},
- &expr.Variable{
- VarName: &node.Identifier{Value: "b"},
+ &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("b")},
},
},
})
@@ -3665,8 +3662,8 @@ func TestPrinterPrintStmtGoto(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Goto{
- Label: &node.Identifier{Value: "FOO"},
+ p.Print(&ast.StmtGoto{
+ Label: &ast.Identifier{Value: []byte("FOO")},
})
expected := `goto FOO;`
@@ -3681,16 +3678,16 @@ func TestPrinterPrintStmtGroupUse(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.GroupUse{
- UseType: &node.Identifier{Value: "function"},
- Prefix: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}},
- UseList: []node.Node{
- &stmt.Use{
- Use: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Bar"}}},
- Alias: &node.Identifier{Value: "Baz"},
+ p.Print(&ast.StmtGroupUse{
+ UseType: &ast.Identifier{Value: []byte("function")},
+ Prefix: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}},
+ UseList: []ast.Vertex{
+ &ast.StmtUse{
+ Use: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Bar")}}},
+ Alias: &ast.Identifier{Value: []byte("Baz")},
},
- &stmt.Use{
- Use: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Quuz"}}},
+ &ast.StmtUse{
+ Use: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Quuz")}}},
},
},
})
@@ -3707,7 +3704,7 @@ func TestPrinterPrintHaltCompiler(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.HaltCompiler{})
+ p.Print(&ast.StmtHaltCompiler{})
expected := `__halt_compiler();`
actual := o.String()
@@ -3721,41 +3718,41 @@ func TestPrinterPrintIfExpression(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.If{
- Cond: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtIf{
+ Cond: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
},
- Stmt: &stmt.Expression{
- Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "b"},
+ Stmt: &ast.StmtExpression{
+ Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("b")},
},
},
- ElseIf: []node.Node{
- &stmt.ElseIf{
- Cond: &expr.Variable{
- VarName: &node.Identifier{Value: "c"},
+ ElseIf: []ast.Vertex{
+ &ast.StmtElseIf{
+ Cond: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("c")},
},
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Expression{
- Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "d"},
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{
+ Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("d")},
},
},
},
},
},
- &stmt.ElseIf{
- Cond: &expr.Variable{
- VarName: &node.Identifier{Value: "e"},
+ &ast.StmtElseIf{
+ Cond: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("e")},
},
- Stmt: &stmt.Nop{},
+ Stmt: &ast.StmtNop{},
},
},
- Else: &stmt.Else{
- Stmt: &stmt.Expression{
- Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "f"},
+ Else: &ast.StmtElse{
+ Stmt: &ast.StmtExpression{
+ Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("f")},
},
},
},
@@ -3773,15 +3770,15 @@ func TestPrinterPrintIfStmtList(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.If{
- Cond: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtIf{
+ Cond: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
},
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Expression{
- Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "b"},
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{
+ Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("b")},
},
},
},
@@ -3800,11 +3797,11 @@ func TestPrinterPrintIfNop(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.If{
- Cond: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtIf{
+ Cond: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
},
- Stmt: &stmt.Nop{},
+ Stmt: &ast.StmtNop{},
})
expected := `if($a);`
@@ -3819,10 +3816,10 @@ func TestPrinterPrintInlineHtml(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&node.Root{
- Stmts: []node.Node{
- &stmt.InlineHtml{
- Value: "test",
+ p.Print(&ast.Root{
+ Stmts: []ast.Vertex{
+ &ast.StmtInlineHtml{
+ Value: []byte("test"),
},
},
})
@@ -3839,23 +3836,23 @@ func TestPrinterPrintInterface(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Interface{
- InterfaceName: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}},
- Extends: &stmt.InterfaceExtends{
- InterfaceNames: []node.Node{
- &name.Name{Parts: []node.Node{&name.NamePart{Value: "Bar"}}},
- &name.Name{Parts: []node.Node{&name.NamePart{Value: "Baz"}}},
+ p.Print(&ast.StmtInterface{
+ InterfaceName: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}},
+ Extends: &ast.StmtInterfaceExtends{
+ InterfaceNames: []ast.Vertex{
+ &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Bar")}}},
+ &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Baz")}}},
},
},
- Stmts: []node.Node{
- &stmt.ClassMethod{
- Modifiers: []node.Node{&node.Identifier{Value: "public"}},
- MethodName: &node.Identifier{Value: "foo"},
- Params: []node.Node{},
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ Stmts: []ast.Vertex{
+ &ast.StmtClassMethod{
+ Modifiers: []ast.Vertex{&ast.Identifier{Value: []byte("public")}},
+ MethodName: &ast.Identifier{Value: []byte("foo")},
+ Params: []ast.Vertex{},
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
}},
},
},
@@ -3875,8 +3872,8 @@ func TestPrinterPrintLabel(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Label{
- LabelName: &node.Identifier{Value: "FOO"},
+ p.Print(&ast.StmtLabel{
+ LabelName: &ast.Identifier{Value: []byte("FOO")},
})
expected := `FOO:`
@@ -3891,8 +3888,8 @@ func TestPrinterPrintNamespace(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Namespace{
- NamespaceName: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}},
+ p.Print(&ast.StmtNamespace{
+ NamespaceName: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}},
})
expected := `namespace Foo;`
@@ -3907,11 +3904,11 @@ func TestPrinterPrintNamespaceWithStmts(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Namespace{
- NamespaceName: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}},
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtNamespace{
+ NamespaceName: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}},
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
}},
},
})
@@ -3928,7 +3925,7 @@ func TestPrinterPrintNop(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Nop{})
+ p.Print(&ast.StmtNop{})
expected := `;`
actual := o.String()
@@ -3942,28 +3939,28 @@ func TestPrinterPrintPropertyList(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.PropertyList{
- Modifiers: []node.Node{
- &node.Identifier{Value: "public"},
- &node.Identifier{Value: "static"},
+ p.Print(&ast.StmtPropertyList{
+ Modifiers: []ast.Vertex{
+ &ast.Identifier{Value: []byte("public")},
+ &ast.Identifier{Value: []byte("static")},
},
- Type: &name.Name{
- Parts: []node.Node{
- &name.NamePart{
- Value: "Foo",
+ Type: &ast.NameName{
+ Parts: []ast.Vertex{
+ &ast.NameNamePart{
+ Value: []byte("Foo"),
},
},
},
- Properties: []node.Node{
- &stmt.Property{
- Variable: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ Properties: []ast.Vertex{
+ &ast.StmtProperty{
+ Var: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
},
- Expr: &scalar.String{Value: "'a'"},
+ Expr: &ast.ScalarString{Value: []byte("'a'")},
},
- &stmt.Property{
- Variable: &expr.Variable{
- VarName: &node.Identifier{Value: "b"},
+ &ast.StmtProperty{
+ Var: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("b")},
},
},
},
@@ -3981,19 +3978,21 @@ func TestPrinterPrintProperty(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Property{
- Variable: &expr.Variable{
- FreeFloating: freefloating.Collection{
- freefloating.Start: []freefloating.String{
- {
- StringType: freefloating.TokenType,
- Value: "$",
+ p.Print(&ast.StmtProperty{
+ Var: &ast.ExprVariable{
+ Node: ast.Node{
+ Tokens: token.Collection{
+ token.Start: []token.Token{
+ {
+ ID: token.ID('$'),
+ Value: []byte("$"),
+ },
},
},
},
- VarName: &node.Identifier{Value: "a"},
+ VarName: &ast.Identifier{Value: []byte("a")},
},
- Expr: &scalar.Lnumber{Value: "1"},
+ Expr: &ast.ScalarLnumber{Value: []byte("1")},
})
expected := `$a=1`
@@ -4008,8 +4007,8 @@ func TestPrinterPrintReturn(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Return{
- Expr: &scalar.Lnumber{Value: "1"},
+ p.Print(&ast.StmtReturn{
+ Expr: &ast.ScalarLnumber{Value: []byte("1")},
})
expected := `return 1;`
@@ -4024,11 +4023,11 @@ func TestPrinterPrintStaticVar(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.StaticVar{
- Variable: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtStaticVar{
+ Var: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
},
- Expr: &scalar.Lnumber{Value: "1"},
+ Expr: &ast.ScalarLnumber{Value: []byte("1")},
})
expected := `$a=1`
@@ -4043,16 +4042,16 @@ func TestPrinterPrintStatic(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Static{
- Vars: []node.Node{
- &stmt.StaticVar{
- Variable: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtStatic{
+ Vars: []ast.Vertex{
+ &ast.StmtStaticVar{
+ Var: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
},
},
- &stmt.StaticVar{
- Variable: &expr.Variable{
- VarName: &node.Identifier{Value: "b"},
+ &ast.StmtStaticVar{
+ Var: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("b")},
},
},
},
@@ -4070,13 +4069,13 @@ func TestPrinterPrintStmtList(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
}},
- &stmt.Expression{Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "b"},
+ &ast.StmtExpression{Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("b")},
}},
},
})
@@ -4093,20 +4092,20 @@ func TestPrinterPrintStmtListNested(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
}},
- &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "b"},
+ &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("b")},
}},
- &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "c"},
+ &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("c")},
}},
},
},
@@ -4127,25 +4126,25 @@ func TestPrinterPrintStmtSwitch(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Switch{
- Cond: &expr.Variable{
- VarName: &node.Identifier{Value: "var"},
+ p.Print(&ast.StmtSwitch{
+ Cond: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("var")},
},
- CaseList: &stmt.CaseList{
- Cases: []node.Node{
- &stmt.Case{
- Cond: &scalar.String{Value: "'a'"},
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ CaseList: &ast.StmtCaseList{
+ Cases: []ast.Vertex{
+ &ast.StmtCase{
+ Cond: &ast.ScalarString{Value: []byte("'a'")},
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
}},
},
},
- &stmt.Case{
- Cond: &scalar.String{Value: "'b'"},
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "b"},
+ &ast.StmtCase{
+ Cond: &ast.ScalarString{Value: []byte("'b'")},
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("b")},
}},
},
},
@@ -4165,9 +4164,9 @@ func TestPrinterPrintStmtThrow(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Throw{
- Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "var"},
+ p.Print(&ast.StmtThrow{
+ Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("var")},
},
})
@@ -4183,14 +4182,14 @@ func TestPrinterPrintStmtTraitAdaptationList(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.TraitAdaptationList{
- Adaptations: []node.Node{
- &stmt.TraitUseAlias{
- Ref: &stmt.TraitMethodRef{
- Trait: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}},
- Method: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtTraitAdaptationList{
+ Adaptations: []ast.Vertex{
+ &ast.StmtTraitUseAlias{
+ Ref: &ast.StmtTraitMethodRef{
+ Trait: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}},
+ Method: &ast.Identifier{Value: []byte("a")},
},
- Alias: &node.Identifier{Value: "b"},
+ Alias: &ast.Identifier{Value: []byte("b")},
},
},
})
@@ -4207,8 +4206,8 @@ func TestPrinterPrintStmtTraitMethodRef(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.TraitMethodRef{
- Method: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtTraitMethodRef{
+ Method: &ast.Identifier{Value: []byte("a")},
})
expected := `a`
@@ -4223,9 +4222,9 @@ func TestPrinterPrintStmtTraitMethodRefFull(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.TraitMethodRef{
- Trait: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}},
- Method: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtTraitMethodRef{
+ Trait: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}},
+ Method: &ast.Identifier{Value: []byte("a")},
})
expected := `Foo::a`
@@ -4240,13 +4239,13 @@ func TestPrinterPrintStmtTraitUseAlias(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.TraitUseAlias{
- Ref: &stmt.TraitMethodRef{
- Trait: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}},
- Method: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtTraitUseAlias{
+ Ref: &ast.StmtTraitMethodRef{
+ Trait: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}},
+ Method: &ast.Identifier{Value: []byte("a")},
},
- Modifier: &node.Identifier{Value: "public"},
- Alias: &node.Identifier{Value: "b"},
+ Modifier: &ast.Identifier{Value: []byte("public")},
+ Alias: &ast.Identifier{Value: []byte("b")},
})
expected := `Foo::a as public b;`
@@ -4261,14 +4260,14 @@ func TestPrinterPrintStmtTraitUsePrecedence(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.TraitUsePrecedence{
- Ref: &stmt.TraitMethodRef{
- Trait: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}},
- Method: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtTraitUsePrecedence{
+ Ref: &ast.StmtTraitMethodRef{
+ Trait: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}},
+ Method: &ast.Identifier{Value: []byte("a")},
},
- Insteadof: []node.Node{
- &name.Name{Parts: []node.Node{&name.NamePart{Value: "Bar"}}},
- &name.Name{Parts: []node.Node{&name.NamePart{Value: "Baz"}}},
+ Insteadof: []ast.Vertex{
+ &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Bar")}}},
+ &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Baz")}}},
},
})
@@ -4284,12 +4283,12 @@ func TestPrinterPrintStmtTraitUse(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.TraitUse{
- Traits: []node.Node{
- &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}},
- &name.Name{Parts: []node.Node{&name.NamePart{Value: "Bar"}}},
+ p.Print(&ast.StmtTraitUse{
+ Traits: []ast.Vertex{
+ &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}},
+ &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Bar")}}},
},
- TraitAdaptationList: &stmt.Nop{},
+ TraitAdaptationList: &ast.StmtNop{},
})
expected := `use Foo,Bar;`
@@ -4304,19 +4303,19 @@ func TestPrinterPrintStmtTraitAdaptations(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.TraitUse{
- Traits: []node.Node{
- &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}},
- &name.Name{Parts: []node.Node{&name.NamePart{Value: "Bar"}}},
+ p.Print(&ast.StmtTraitUse{
+ Traits: []ast.Vertex{
+ &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}},
+ &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Bar")}}},
},
- TraitAdaptationList: &stmt.TraitAdaptationList{
- Adaptations: []node.Node{
- &stmt.TraitUseAlias{
- Ref: &stmt.TraitMethodRef{
- Trait: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}},
- Method: &node.Identifier{Value: "a"},
+ TraitAdaptationList: &ast.StmtTraitAdaptationList{
+ Adaptations: []ast.Vertex{
+ &ast.StmtTraitUseAlias{
+ Ref: &ast.StmtTraitMethodRef{
+ Trait: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}},
+ Method: &ast.Identifier{Value: []byte("a")},
},
- Alias: &node.Identifier{Value: "b"},
+ Alias: &ast.Identifier{Value: []byte("b")},
},
},
},
@@ -4334,17 +4333,17 @@ func TestPrinterPrintTrait(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Trait{
- TraitName: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}},
- Stmts: []node.Node{
- &stmt.ClassMethod{
- Modifiers: []node.Node{&node.Identifier{Value: "public"}},
- MethodName: &node.Identifier{Value: "foo"},
- Params: []node.Node{},
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtTrait{
+ TraitName: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}},
+ Stmts: []ast.Vertex{
+ &ast.StmtClassMethod{
+ Modifiers: []ast.Vertex{&ast.Identifier{Value: []byte("public")}},
+ MethodName: &ast.Identifier{Value: []byte("foo")},
+ Params: []ast.Vertex{},
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
}},
},
},
@@ -4364,31 +4363,31 @@ func TestPrinterPrintStmtTry(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Try{
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtTry{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
}},
},
- Catches: []node.Node{
- &stmt.Catch{
- Types: []node.Node{
- &name.Name{Parts: []node.Node{&name.NamePart{Value: "Exception"}}},
- &name.FullyQualified{Parts: []node.Node{&name.NamePart{Value: "RuntimeException"}}},
+ Catches: []ast.Vertex{
+ &ast.StmtCatch{
+ Types: []ast.Vertex{
+ &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Exception")}}},
+ &ast.NameFullyQualified{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("RuntimeException")}}},
},
- Variable: &expr.Variable{
- VarName: &node.Identifier{Value: "e"},
+ Var: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("e")},
},
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "b"},
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("b")},
}},
},
},
},
- Finally: &stmt.Finally{
- Stmts: []node.Node{
- &stmt.Nop{},
+ Finally: &ast.StmtFinally{
+ Stmts: []ast.Vertex{
+ &ast.StmtNop{},
},
},
})
@@ -4405,13 +4404,13 @@ func TestPrinterPrintStmtUnset(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Unset{
- Vars: []node.Node{
- &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtUnset{
+ Vars: []ast.Vertex{
+ &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
},
- &expr.Variable{
- VarName: &node.Identifier{Value: "b"},
+ &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("b")},
},
},
})
@@ -4428,15 +4427,15 @@ func TestPrinterPrintStmtUseList(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.UseList{
- UseType: &node.Identifier{Value: "function"},
- Uses: []node.Node{
- &stmt.Use{
- Use: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}},
- Alias: &node.Identifier{Value: "Bar"},
+ p.Print(&ast.StmtUseList{
+ UseType: &ast.Identifier{Value: []byte("function")},
+ Uses: []ast.Vertex{
+ &ast.StmtUse{
+ Use: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}},
+ Alias: &ast.Identifier{Value: []byte("Bar")},
},
- &stmt.Use{
- Use: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Baz"}}},
+ &ast.StmtUse{
+ Use: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Baz")}}},
},
},
})
@@ -4453,10 +4452,10 @@ func TestPrinterPrintUse(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.Use{
- UseType: &node.Identifier{Value: "function"},
- Use: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}},
- Alias: &node.Identifier{Value: "Bar"},
+ p.Print(&ast.StmtUse{
+ UseType: &ast.Identifier{Value: []byte("function")},
+ Use: &ast.NameName{Parts: []ast.Vertex{&ast.NameNamePart{Value: []byte("Foo")}}},
+ Alias: &ast.Identifier{Value: []byte("Bar")},
})
expected := `function Foo as Bar`
@@ -4471,14 +4470,14 @@ func TestPrinterPrintWhileStmtList(t *testing.T) {
o := bytes.NewBufferString("")
p := printer.NewPrinter(o)
- p.Print(&stmt.While{
- Cond: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ p.Print(&ast.StmtWhile{
+ Cond: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
},
- Stmt: &stmt.StmtList{
- Stmts: []node.Node{
- &stmt.Expression{Expr: &expr.Variable{
- VarName: &node.Identifier{Value: "a"},
+ Stmt: &ast.StmtStmtList{
+ Stmts: []ast.Vertex{
+ &ast.StmtExpression{Expr: &ast.ExprVariable{
+ VarName: &ast.Identifier{Value: []byte("a")},
}},
},
},
diff --git a/pkg/token/position.go b/pkg/token/position.go
index 209ed9d..7032e5a 100644
--- a/pkg/token/position.go
+++ b/pkg/token/position.go
@@ -2,8 +2,6 @@ package token
type Position int
-type Collection map[Position][]Token
-
//go:generate stringer -type=Position -output ./position_string.go
const (
Start Position = iota
@@ -86,3 +84,14 @@ const (
OpenParenthesisToken
CloseParenthesisToken
)
+
+type Collection map[Position][]Token
+
+func (c Collection) IsEmpty() bool {
+ for _, v := range c {
+ if len(v) > 0 {
+ return false
+ }
+ }
+ return true
+}
diff --git a/printer/printer.go b/printer/printer.go
deleted file mode 100644
index 06ad2ae..0000000
--- a/printer/printer.go
+++ /dev/null
@@ -1,3267 +0,0 @@
-package printer
-
-import (
- "io"
- "strings"
-
- "github.com/z7zmey/php-parser/freefloating"
-
- "github.com/z7zmey/php-parser/node/stmt"
-
- "github.com/z7zmey/php-parser/node"
- "github.com/z7zmey/php-parser/node/expr"
- "github.com/z7zmey/php-parser/node/expr/assign"
- "github.com/z7zmey/php-parser/node/expr/binary"
- "github.com/z7zmey/php-parser/node/expr/cast"
- "github.com/z7zmey/php-parser/node/name"
- "github.com/z7zmey/php-parser/node/scalar"
-)
-
-type printerState int
-
-const (
- PhpState printerState = iota
- HtmlState
-)
-
-type Printer struct {
- w io.Writer
- s printerState
-}
-
-// NewPrinter - Constructor for Printer
-func NewPrinter(w io.Writer) *Printer {
- return &Printer{
- w: w,
- }
-}
-
-func (p *Printer) SetState(s printerState) {
- p.s = s
-}
-
-func (p *Printer) Print(n node.Node) {
- _, isRoot := n.(*node.Root)
- _, isInlineHtml := n.(*stmt.InlineHtml)
- if p.s == HtmlState && !isInlineHtml && !isRoot {
- if n.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " 0 {
- io.WriteString(p.w, glue)
- }
-
- p.Print(n)
- }
-}
-
-func (p *Printer) printNodes(nn []node.Node) {
- for _, n := range nn {
- p.Print(n)
- }
-}
-
-func (p *Printer) printFreeFloating(n node.Node, pos freefloating.Position) {
- if n == nil {
- return
- }
-
- for _, m := range (*n.GetFreeFloating())[pos] {
- io.WriteString(p.w, m.Value)
- }
-}
-
-func (p *Printer) printNode(n node.Node) {
- switch n.(type) {
-
- // node
-
- case *node.Root:
- p.printNodeRoot(n)
- case *node.Identifier:
- p.printNodeIdentifier(n)
- case *node.Parameter:
- p.printNodeParameter(n)
- case *node.Nullable:
- p.printNodeNullable(n)
- case *node.Argument:
- p.printNodeArgument(n)
-
- // name
-
- case *name.NamePart:
- p.printNameNamePart(n)
- case *name.Name:
- p.printNameName(n)
- case *name.FullyQualified:
- p.printNameFullyQualified(n)
- case *name.Relative:
- p.printNameRelative(n)
-
- // scalar
-
- case *scalar.Lnumber:
- p.printScalarLNumber(n)
- case *scalar.Dnumber:
- p.printScalarDNumber(n)
- case *scalar.String:
- p.printScalarString(n)
- case *scalar.EncapsedStringPart:
- p.printScalarEncapsedStringPart(n)
- case *scalar.Encapsed:
- p.printScalarEncapsed(n)
- case *scalar.Heredoc:
- p.printScalarHeredoc(n)
- case *scalar.MagicConstant:
- p.printScalarMagicConstant(n)
-
- // assign
-
- case *assign.Assign:
- p.printAssign(n)
- case *assign.Reference:
- p.printAssignReference(n)
- case *assign.BitwiseAnd:
- p.printAssignBitwiseAnd(n)
- case *assign.BitwiseOr:
- p.printAssignBitwiseOr(n)
- case *assign.BitwiseXor:
- p.printAssignBitwiseXor(n)
- case *assign.Coalesce:
- p.printAssignCoalesce(n)
- case *assign.Concat:
- p.printAssignConcat(n)
- case *assign.Div:
- p.printAssignDiv(n)
- case *assign.Minus:
- p.printAssignMinus(n)
- case *assign.Mod:
- p.printAssignMod(n)
- case *assign.Mul:
- p.printAssignMul(n)
- case *assign.Plus:
- p.printAssignPlus(n)
- case *assign.Pow:
- p.printAssignPow(n)
- case *assign.ShiftLeft:
- p.printAssignShiftLeft(n)
- case *assign.ShiftRight:
- p.printAssignShiftRight(n)
-
- // binary
-
- case *binary.BitwiseAnd:
- p.printBinaryBitwiseAnd(n)
- case *binary.BitwiseOr:
- p.printBinaryBitwiseOr(n)
- case *binary.BitwiseXor:
- p.printBinaryBitwiseXor(n)
- case *binary.BooleanAnd:
- p.printBinaryBooleanAnd(n)
- case *binary.BooleanOr:
- p.printBinaryBooleanOr(n)
- case *binary.Coalesce:
- p.printBinaryCoalesce(n)
- case *binary.Concat:
- p.printBinaryConcat(n)
- case *binary.Div:
- p.printBinaryDiv(n)
- case *binary.Equal:
- p.printBinaryEqual(n)
- case *binary.GreaterOrEqual:
- p.printBinaryGreaterOrEqual(n)
- case *binary.Greater:
- p.printBinaryGreater(n)
- case *binary.Identical:
- p.printBinaryIdentical(n)
- case *binary.LogicalAnd:
- p.printBinaryLogicalAnd(n)
- case *binary.LogicalOr:
- p.printBinaryLogicalOr(n)
- case *binary.LogicalXor:
- p.printBinaryLogicalXor(n)
- case *binary.Minus:
- p.printBinaryMinus(n)
- case *binary.Mod:
- p.printBinaryMod(n)
- case *binary.Mul:
- p.printBinaryMul(n)
- case *binary.NotEqual:
- p.printBinaryNotEqual(n)
- case *binary.NotIdentical:
- p.printBinaryNotIdentical(n)
- case *binary.Plus:
- p.printBinaryPlus(n)
- case *binary.Pow:
- p.printBinaryPow(n)
- case *binary.ShiftLeft:
- p.printBinaryShiftLeft(n)
- case *binary.ShiftRight:
- p.printBinaryShiftRight(n)
- case *binary.SmallerOrEqual:
- p.printBinarySmallerOrEqual(n)
- case *binary.Smaller:
- p.printBinarySmaller(n)
- case *binary.Spaceship:
- p.printBinarySpaceship(n)
-
- // cast
-
- case *cast.Array:
- p.printArray(n)
- case *cast.Bool:
- p.printBool(n)
- case *cast.Double:
- p.printDouble(n)
- case *cast.Int:
- p.printInt(n)
- case *cast.Object:
- p.printObject(n)
- case *cast.String:
- p.printString(n)
- case *cast.Unset:
- p.printUnset(n)
-
- // expr
-
- case *expr.ArrayDimFetch:
- p.printExprArrayDimFetch(n)
- case *expr.ArrayItem:
- p.printExprArrayItem(n)
- case *expr.Array:
- p.printExprArray(n)
- case *expr.ArrowFunction:
- p.printExprArrowFunction(n)
- case *expr.BitwiseNot:
- p.printExprBitwiseNot(n)
- case *expr.BooleanNot:
- p.printExprBooleanNot(n)
- case *expr.ClassConstFetch:
- p.printExprClassConstFetch(n)
- case *expr.Clone:
- p.printExprClone(n)
- case *expr.ClosureUse:
- p.printExprClosureUse(n)
- case *expr.Closure:
- p.printExprClosure(n)
- case *expr.ConstFetch:
- p.printExprConstFetch(n)
- case *expr.Empty:
- p.printExprEmpty(n)
- case *expr.ErrorSuppress:
- p.printExprErrorSuppress(n)
- case *expr.Eval:
- p.printExprEval(n)
- case *expr.Exit:
- p.printExprExit(n)
- case *expr.FunctionCall:
- p.printExprFunctionCall(n)
- case *expr.Include:
- p.printExprInclude(n)
- case *expr.IncludeOnce:
- p.printExprIncludeOnce(n)
- case *expr.InstanceOf:
- p.printExprInstanceOf(n)
- case *expr.Isset:
- p.printExprIsset(n)
- case *expr.List:
- p.printExprList(n)
- case *expr.MethodCall:
- p.printExprMethodCall(n)
- case *expr.New:
- p.printExprNew(n)
- case *expr.PostDec:
- p.printExprPostDec(n)
- case *expr.PostInc:
- p.printExprPostInc(n)
- case *expr.PreDec:
- p.printExprPreDec(n)
- case *expr.PreInc:
- p.printExprPreInc(n)
- case *expr.Print:
- p.printExprPrint(n)
- case *expr.PropertyFetch:
- p.printExprPropertyFetch(n)
- case *expr.Reference:
- p.printExprReference(n)
- case *expr.Require:
- p.printExprRequire(n)
- case *expr.RequireOnce:
- p.printExprRequireOnce(n)
- case *expr.ShellExec:
- p.printExprShellExec(n)
- case *expr.ShortArray:
- p.printExprShortArray(n)
- case *expr.ShortList:
- p.printExprShortList(n)
- case *expr.StaticCall:
- p.printExprStaticCall(n)
- case *expr.StaticPropertyFetch:
- p.printExprStaticPropertyFetch(n)
- case *expr.Ternary:
- p.printExprTernary(n)
- case *expr.UnaryMinus:
- p.printExprUnaryMinus(n)
- case *expr.UnaryPlus:
- p.printExprUnaryPlus(n)
- case *expr.Variable:
- p.printExprVariable(n)
- case *expr.YieldFrom:
- p.printExprYieldFrom(n)
- case *expr.Yield:
- p.printExprYield(n)
-
- // stmt
-
- case *stmt.AltElseIf:
- p.printStmtAltElseIf(n)
- case *stmt.AltElse:
- p.printStmtAltElse(n)
- case *stmt.AltFor:
- p.printStmtAltFor(n)
- case *stmt.AltForeach:
- p.printStmtAltForeach(n)
- case *stmt.AltIf:
- p.printStmtAltIf(n)
- case *stmt.AltSwitch:
- p.printStmtAltSwitch(n)
- case *stmt.AltWhile:
- p.printStmtAltWhile(n)
- case *stmt.Break:
- p.printStmtBreak(n)
- case *stmt.Case:
- p.printStmtCase(n)
- case *stmt.Catch:
- p.printStmtCatch(n)
- case *stmt.ClassMethod:
- p.printStmtClassMethod(n)
- case *stmt.Class:
- p.printStmtClass(n)
- case *stmt.ClassConstList:
- p.printStmtClassConstList(n)
- case *stmt.ConstList:
- p.printStmtConstList(n)
- case *stmt.Constant:
- p.printStmtConstant(n)
- case *stmt.Continue:
- p.printStmtContinue(n)
- case *stmt.Declare:
- p.printStmtDeclare(n)
- case *stmt.Default:
- p.printStmtDefault(n)
- case *stmt.Do:
- p.printStmtDo(n)
- case *stmt.Echo:
- p.printStmtEcho(n)
- case *stmt.ElseIf:
- p.printStmtElseif(n)
- case *stmt.Else:
- p.printStmtElse(n)
- case *stmt.Expression:
- p.printStmtExpression(n)
- case *stmt.Finally:
- p.printStmtFinally(n)
- case *stmt.For:
- p.printStmtFor(n)
- case *stmt.Foreach:
- p.printStmtForeach(n)
- case *stmt.Function:
- p.printStmtFunction(n)
- case *stmt.Global:
- p.printStmtGlobal(n)
- case *stmt.Goto:
- p.printStmtGoto(n)
- case *stmt.GroupUse:
- p.printStmtGroupUse(n)
- case *stmt.HaltCompiler:
- p.printStmtHaltCompiler(n)
- case *stmt.If:
- p.printStmtIf(n)
- case *stmt.InlineHtml:
- p.printStmtInlineHTML(n)
- case *stmt.Interface:
- p.printStmtInterface(n)
- case *stmt.Label:
- p.printStmtLabel(n)
- case *stmt.Namespace:
- p.printStmtNamespace(n)
- case *stmt.Nop:
- p.printStmtNop(n)
- case *stmt.PropertyList:
- p.printStmtPropertyList(n)
- case *stmt.Property:
- p.printStmtProperty(n)
- case *stmt.Return:
- p.printStmtReturn(n)
- case *stmt.StaticVar:
- p.printStmtStaticVar(n)
- case *stmt.Static:
- p.printStmtStatic(n)
- case *stmt.StmtList:
- p.printStmtStmtList(n)
- case *stmt.Switch:
- p.printStmtSwitch(n)
- case *stmt.Throw:
- p.printStmtThrow(n)
- case *stmt.TraitAdaptationList:
- p.printStmtTraitAdaptationList(n)
- case *stmt.TraitMethodRef:
- p.printStmtTraitMethodRef(n)
- case *stmt.TraitUseAlias:
- p.printStmtTraitUseAlias(n)
- case *stmt.TraitUsePrecedence:
- p.printStmtTraitUsePrecedence(n)
- case *stmt.TraitUse:
- p.printStmtTraitUse(n)
- case *stmt.Trait:
- p.printStmtTrait(n)
- case *stmt.Try:
- p.printStmtTry(n)
- case *stmt.Unset:
- p.printStmtUnset(n)
- case *stmt.UseList:
- p.printStmtUseList(n)
- case *stmt.Use:
- p.printStmtUse(n)
- case *stmt.While:
- p.printStmtWhile(n)
- }
-}
-
-// node
-
-func (p *Printer) printNodeRoot(n node.Node) {
- nn := n.(*node.Root)
- p.SetState(HtmlState)
- p.printFreeFloating(nn, freefloating.Start)
- p.printNodes(nn.Stmts)
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printNodeIdentifier(n node.Node) {
- nn := n.(*node.Identifier)
- p.printFreeFloating(nn, freefloating.Start)
- io.WriteString(p.w, nn.Value)
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printNodeParameter(n node.Node) {
- nn := n.(*node.Parameter)
- p.printFreeFloating(nn, freefloating.Start)
-
- if nn.VariableType != nil {
- p.Print(nn.VariableType)
- }
- p.printFreeFloating(nn, freefloating.OptionalType)
-
- if nn.ByRef {
- io.WriteString(p.w, "&")
- }
- p.printFreeFloating(nn, freefloating.Ampersand)
-
- if nn.Variadic {
- io.WriteString(p.w, "...")
- }
- p.printFreeFloating(nn, freefloating.Variadic)
-
- p.Print(nn.Variable)
-
- if nn.DefaultValue != nil {
- p.printFreeFloating(nn, freefloating.Var)
- io.WriteString(p.w, "=")
- p.Print(nn.DefaultValue)
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printNodeNullable(n node.Node) {
- nn := n.(*node.Nullable)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "?")
- p.Print(nn.Expr)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printNodeArgument(n node.Node) {
- nn := n.(*node.Argument)
- p.printFreeFloating(nn, freefloating.Start)
-
- if nn.IsReference {
- io.WriteString(p.w, "&")
- }
- p.printFreeFloating(nn, freefloating.Ampersand)
-
- if nn.Variadic {
- io.WriteString(p.w, "...")
- }
- p.printFreeFloating(nn, freefloating.Variadic)
-
- p.Print(nn.Expr)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-// name
-
-func (p *Printer) printNameNamePart(n node.Node) {
- nn := n.(*name.NamePart)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, nn.Value)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printNameName(n node.Node) {
- nn := n.(*name.Name)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.joinPrint("\\", nn.Parts)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printNameFullyQualified(n node.Node) {
- nn := n.(*name.FullyQualified)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "\\")
- p.joinPrint("\\", nn.Parts)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printNameRelative(n node.Node) {
- nn := n.(*name.Relative)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "namespace")
- p.printFreeFloating(nn, freefloating.Namespace)
-
- for _, part := range nn.Parts {
- io.WriteString(p.w, "\\")
- p.Print(part)
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-// scalar
-
-func (p *Printer) printScalarLNumber(n node.Node) {
- nn := n.(*scalar.Lnumber)
- p.printFreeFloating(nn, freefloating.Start)
- io.WriteString(p.w, nn.Value)
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printScalarDNumber(n node.Node) {
- nn := n.(*scalar.Dnumber)
- p.printFreeFloating(nn, freefloating.Start)
- io.WriteString(p.w, nn.Value)
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printScalarString(n node.Node) {
- nn := n.(*scalar.String)
- p.printFreeFloating(nn, freefloating.Start)
- io.WriteString(p.w, nn.Value)
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printScalarEncapsedStringPart(n node.Node) {
- nn := n.(*scalar.EncapsedStringPart)
- p.printFreeFloating(nn, freefloating.Start)
- io.WriteString(p.w, nn.Value)
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printScalarEncapsed(n node.Node) {
- nn := n.(*scalar.Encapsed)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "\"")
- for _, part := range nn.Parts {
- switch part.(type) {
- case *expr.ArrayDimFetch:
- s := (*part.GetFreeFloating())[freefloating.Start]
- if len(s) > 0 && s[0].Value == "${" {
- p.printExprArrayDimFetchWithoutLeadingDollar(part)
- } else {
- p.Print(part)
- }
- case *expr.Variable:
- s := (*part.GetFreeFloating())[freefloating.Start]
- if len(s) > 0 && s[0].Value == "${" {
- p.printExprVariableWithoutLeadingDollar(part)
- } else {
- p.Print(part)
- }
- default:
- p.Print(part)
- }
- }
- io.WriteString(p.w, "\"")
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printScalarHeredoc(n node.Node) {
- nn := n.(*scalar.Heredoc)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, nn.Label)
-
- for _, part := range nn.Parts {
- switch part.(type) {
- case *expr.ArrayDimFetch:
- s := (*part.GetFreeFloating())[freefloating.Start]
- if len(s) > 0 && s[0].Value == "${" {
- p.printExprArrayDimFetchWithoutLeadingDollar(part)
- } else {
- p.Print(part)
- }
- case *expr.Variable:
- s := (*part.GetFreeFloating())[freefloating.Start]
- if len(s) > 0 && s[0].Value == "${" {
- p.printExprVariableWithoutLeadingDollar(part)
- } else {
- p.Print(part)
- }
- default:
- p.Print(part)
- }
- }
-
- io.WriteString(p.w, strings.Trim(nn.Label, "<\"'\n"))
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printScalarMagicConstant(n node.Node) {
- nn := n.(*scalar.MagicConstant)
- p.printFreeFloating(nn, freefloating.Start)
- io.WriteString(p.w, nn.Value)
- p.printFreeFloating(nn, freefloating.End)
-}
-
-// Assign
-
-func (p *Printer) printAssign(n node.Node) {
- nn := n.(*assign.Assign)
- p.printFreeFloating(nn, freefloating.Start)
- p.Print(nn.Variable)
- p.printFreeFloating(nn, freefloating.Var)
- io.WriteString(p.w, "=")
- p.Print(nn.Expression)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printAssignReference(n node.Node) {
- nn := n.(*assign.Reference)
- p.printFreeFloating(nn, freefloating.Start)
- p.Print(nn.Variable)
- p.printFreeFloating(nn, freefloating.Var)
- io.WriteString(p.w, "=")
- p.printFreeFloating(nn, freefloating.Equal)
- io.WriteString(p.w, "&")
- p.Print(nn.Expression)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printAssignBitwiseAnd(n node.Node) {
- nn := n.(*assign.BitwiseAnd)
- p.printFreeFloating(nn, freefloating.Start)
- p.Print(nn.Variable)
- p.printFreeFloating(nn, freefloating.Var)
- io.WriteString(p.w, "&")
- io.WriteString(p.w, "=")
- p.Print(nn.Expression)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printAssignBitwiseOr(n node.Node) {
- nn := n.(*assign.BitwiseOr)
- p.printFreeFloating(nn, freefloating.Start)
- p.Print(nn.Variable)
- p.printFreeFloating(nn, freefloating.Var)
- io.WriteString(p.w, "|=")
- p.Print(nn.Expression)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printAssignBitwiseXor(n node.Node) {
- nn := n.(*assign.BitwiseXor)
- p.printFreeFloating(nn, freefloating.Start)
- p.Print(nn.Variable)
- p.printFreeFloating(nn, freefloating.Var)
- io.WriteString(p.w, "^=")
- p.Print(nn.Expression)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printAssignCoalesce(n node.Node) {
- nn := n.(*assign.Coalesce)
- p.printFreeFloating(nn, freefloating.Start)
- p.Print(nn.Variable)
- p.printFreeFloating(nn, freefloating.Var)
- io.WriteString(p.w, "??=")
- p.Print(nn.Expression)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printAssignConcat(n node.Node) {
- nn := n.(*assign.Concat)
- p.printFreeFloating(nn, freefloating.Start)
- p.Print(nn.Variable)
- p.printFreeFloating(nn, freefloating.Var)
- io.WriteString(p.w, ".=")
- p.Print(nn.Expression)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printAssignDiv(n node.Node) {
- nn := n.(*assign.Div)
- p.printFreeFloating(nn, freefloating.Start)
- p.Print(nn.Variable)
- p.printFreeFloating(nn, freefloating.Var)
- io.WriteString(p.w, "/=")
- p.Print(nn.Expression)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printAssignMinus(n node.Node) {
- nn := n.(*assign.Minus)
- p.printFreeFloating(nn, freefloating.Start)
- p.Print(nn.Variable)
- p.printFreeFloating(nn, freefloating.Var)
- io.WriteString(p.w, "-=")
- p.Print(nn.Expression)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printAssignMod(n node.Node) {
- nn := n.(*assign.Mod)
- p.printFreeFloating(nn, freefloating.Start)
- p.Print(nn.Variable)
- p.printFreeFloating(nn, freefloating.Var)
- io.WriteString(p.w, "%=")
- p.Print(nn.Expression)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printAssignMul(n node.Node) {
- nn := n.(*assign.Mul)
- p.printFreeFloating(nn, freefloating.Start)
- p.Print(nn.Variable)
- p.printFreeFloating(nn, freefloating.Var)
- io.WriteString(p.w, "*=")
- p.Print(nn.Expression)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printAssignPlus(n node.Node) {
- nn := n.(*assign.Plus)
- p.printFreeFloating(nn, freefloating.Start)
- p.Print(nn.Variable)
- p.printFreeFloating(nn, freefloating.Var)
- io.WriteString(p.w, "+=")
- p.Print(nn.Expression)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printAssignPow(n node.Node) {
- nn := n.(*assign.Pow)
- p.printFreeFloating(nn, freefloating.Start)
- p.Print(nn.Variable)
- p.printFreeFloating(nn, freefloating.Var)
- io.WriteString(p.w, "**=")
- p.Print(nn.Expression)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printAssignShiftLeft(n node.Node) {
- nn := n.(*assign.ShiftLeft)
- p.printFreeFloating(nn, freefloating.Start)
- p.Print(nn.Variable)
- p.printFreeFloating(nn, freefloating.Var)
- io.WriteString(p.w, "<<=")
- p.Print(nn.Expression)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printAssignShiftRight(n node.Node) {
- nn := n.(*assign.ShiftRight)
- p.printFreeFloating(nn, freefloating.Start)
- p.Print(nn.Variable)
- p.printFreeFloating(nn, freefloating.Var)
- io.WriteString(p.w, ">>=")
- p.Print(nn.Expression)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-// binary
-
-func (p *Printer) printBinaryBitwiseAnd(n node.Node) {
- nn := n.(*binary.BitwiseAnd)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Left)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, "&")
- p.Print(nn.Right)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printBinaryBitwiseOr(n node.Node) {
- nn := n.(*binary.BitwiseOr)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Left)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, "|")
- p.Print(nn.Right)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printBinaryBitwiseXor(n node.Node) {
- nn := n.(*binary.BitwiseXor)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Left)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, "^")
- p.Print(nn.Right)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printBinaryBooleanAnd(n node.Node) {
- nn := n.(*binary.BooleanAnd)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Left)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, "&&")
- p.Print(nn.Right)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printBinaryBooleanOr(n node.Node) {
- nn := n.(*binary.BooleanOr)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Left)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, "||")
- p.Print(nn.Right)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printBinaryCoalesce(n node.Node) {
- nn := n.(*binary.Coalesce)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Left)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, "??")
- p.Print(nn.Right)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printBinaryConcat(n node.Node) {
- nn := n.(*binary.Concat)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Left)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, ".")
- p.Print(nn.Right)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printBinaryDiv(n node.Node) {
- nn := n.(*binary.Div)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Left)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, "/")
- p.Print(nn.Right)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printBinaryEqual(n node.Node) {
- nn := n.(*binary.Equal)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Left)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, "==")
- p.Print(nn.Right)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printBinaryGreaterOrEqual(n node.Node) {
- nn := n.(*binary.GreaterOrEqual)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Left)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, ">=")
- p.Print(nn.Right)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printBinaryGreater(n node.Node) {
- nn := n.(*binary.Greater)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Left)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, ">")
- p.Print(nn.Right)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printBinaryIdentical(n node.Node) {
- nn := n.(*binary.Identical)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Left)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, "===")
- p.Print(nn.Right)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printBinaryLogicalAnd(n node.Node) {
- nn := n.(*binary.LogicalAnd)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Left)
- p.printFreeFloating(nn, freefloating.Expr)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- io.WriteString(p.w, "and")
- if nn.Right.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(nn.Right)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printBinaryLogicalOr(n node.Node) {
- nn := n.(*binary.LogicalOr)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Left)
- p.printFreeFloating(nn, freefloating.Expr)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- io.WriteString(p.w, "or")
- if nn.Right.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(nn.Right)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printBinaryLogicalXor(n node.Node) {
- nn := n.(*binary.LogicalXor)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Left)
- p.printFreeFloating(nn, freefloating.Expr)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- io.WriteString(p.w, "xor")
- if nn.Right.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(nn.Right)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printBinaryMinus(n node.Node) {
- nn := n.(*binary.Minus)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Left)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, "-")
- p.Print(nn.Right)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printBinaryMod(n node.Node) {
- nn := n.(*binary.Mod)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Left)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, "%")
- p.Print(nn.Right)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printBinaryMul(n node.Node) {
- nn := n.(*binary.Mul)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Left)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, "*")
- p.Print(nn.Right)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printBinaryNotEqual(n node.Node) {
- nn := n.(*binary.NotEqual)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Left)
- p.printFreeFloating(nn, freefloating.Expr)
- p.printFreeFloating(nn, freefloating.Equal)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, "!=")
- }
- p.Print(nn.Right)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printBinaryNotIdentical(n node.Node) {
- nn := n.(*binary.NotIdentical)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Left)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, "!==")
- p.Print(nn.Right)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printBinaryPlus(n node.Node) {
- nn := n.(*binary.Plus)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Left)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, "+")
- p.Print(nn.Right)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printBinaryPow(n node.Node) {
- nn := n.(*binary.Pow)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Left)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, "**")
- p.Print(nn.Right)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printBinaryShiftLeft(n node.Node) {
- nn := n.(*binary.ShiftLeft)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Left)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, "<<")
- p.Print(nn.Right)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printBinaryShiftRight(n node.Node) {
- nn := n.(*binary.ShiftRight)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Left)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, ">>")
- p.Print(nn.Right)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printBinarySmallerOrEqual(n node.Node) {
- nn := n.(*binary.SmallerOrEqual)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Left)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, "<=")
- p.Print(nn.Right)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printBinarySmaller(n node.Node) {
- nn := n.(*binary.Smaller)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Left)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, "<")
- p.Print(nn.Right)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printBinarySpaceship(n node.Node) {
- nn := n.(*binary.Spaceship)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Left)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, "<=>")
- p.Print(nn.Right)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-// cast
-
-func (p *Printer) printArray(n node.Node) {
- nn := n.(*cast.Array)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.printFreeFloating(nn, freefloating.Cast)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, "(array)")
- }
-
- p.Print(nn.Expr)
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printBool(n node.Node) {
- nn := n.(*cast.Bool)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.printFreeFloating(nn, freefloating.Cast)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, "(boolean)")
- }
-
- p.Print(nn.Expr)
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printDouble(n node.Node) {
- nn := n.(*cast.Double)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.printFreeFloating(nn, freefloating.Cast)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, "(float)")
- }
-
- p.Print(nn.Expr)
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printInt(n node.Node) {
- nn := n.(*cast.Int)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.printFreeFloating(nn, freefloating.Cast)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, "(integer)")
- }
-
- p.Print(nn.Expr)
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printObject(n node.Node) {
- nn := n.(*cast.Object)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.printFreeFloating(nn, freefloating.Cast)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, "(object)")
- }
-
- p.Print(nn.Expr)
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printString(n node.Node) {
- nn := n.(*cast.String)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.printFreeFloating(nn, freefloating.Cast)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, "(string)")
- }
-
- p.Print(nn.Expr)
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printUnset(n node.Node) {
- nn := n.(*cast.Unset)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.printFreeFloating(nn, freefloating.Cast)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, "(unset)")
- }
-
- p.Print(nn.Expr)
- p.printFreeFloating(nn, freefloating.End)
-}
-
-// expr
-
-func (p *Printer) printExprArrayDimFetch(n node.Node) {
- nn := n.(*expr.ArrayDimFetch)
- p.printFreeFloating(nn, freefloating.Start)
- p.Print(nn.Variable)
- p.printFreeFloating(nn, freefloating.Var)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, "[")
- }
- p.Print(nn.Dim)
- p.printFreeFloating(nn, freefloating.Expr)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, "]")
- }
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprArrayDimFetchWithoutLeadingDollar(n node.Node) {
- nn := n.(*expr.ArrayDimFetch)
- p.printFreeFloating(nn, freefloating.Start)
- p.printExprVariableWithoutLeadingDollar(nn.Variable)
- p.printFreeFloating(nn, freefloating.Var)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, "[")
- }
- p.Print(nn.Dim)
- p.printFreeFloating(nn, freefloating.Expr)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, "]")
- }
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprArrayItem(n node.Node) {
- nn := n.(*expr.ArrayItem)
- p.printFreeFloating(nn, freefloating.Start)
-
- if nn.Unpack {
- io.WriteString(p.w, "...")
- }
-
- if nn.Key != nil {
- p.Print(nn.Key)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, "=>")
- }
-
- p.Print(nn.Val)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprArray(n node.Node) {
- nn := n.(*expr.Array)
- p.printFreeFloating(nn, freefloating.Start)
- io.WriteString(p.w, "array")
- p.printFreeFloating(nn, freefloating.Array)
- io.WriteString(p.w, "(")
- p.joinPrint(",", nn.Items)
- p.printFreeFloating(nn, freefloating.ArrayPairList)
- io.WriteString(p.w, ")")
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprArrowFunction(n node.Node) {
- nn := n.(*expr.ArrowFunction)
- p.printFreeFloating(nn, freefloating.Start)
-
- if nn.Static {
- io.WriteString(p.w, "static")
- }
- p.printFreeFloating(nn, freefloating.Static)
- if nn.Static && n.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
-
- io.WriteString(p.w, "fn")
- p.printFreeFloating(nn, freefloating.Function)
-
- if nn.ReturnsRef {
- io.WriteString(p.w, "&")
- }
- p.printFreeFloating(nn, freefloating.Ampersand)
-
- io.WriteString(p.w, "(")
- p.joinPrint(",", nn.Params)
- p.printFreeFloating(nn, freefloating.ParameterList)
- io.WriteString(p.w, ")")
- p.printFreeFloating(nn, freefloating.Params)
-
- if nn.ReturnType != nil {
- io.WriteString(p.w, ":")
- p.Print(nn.ReturnType)
- }
- p.printFreeFloating(nn, freefloating.ReturnType)
-
- io.WriteString(p.w, "=>")
-
- p.printNode(nn.Expr)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprBitwiseNot(n node.Node) {
- nn := n.(*expr.BitwiseNot)
- p.printFreeFloating(nn, freefloating.Start)
- io.WriteString(p.w, "~")
- p.Print(nn.Expr)
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprBooleanNot(n node.Node) {
- nn := n.(*expr.BooleanNot)
- p.printFreeFloating(nn, freefloating.Start)
- io.WriteString(p.w, "!")
- p.Print(nn.Expr)
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprClassConstFetch(n node.Node) {
- nn := n.(*expr.ClassConstFetch)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Class)
- p.printFreeFloating(nn, freefloating.Name)
- io.WriteString(p.w, "::")
- p.Print(nn.ConstantName)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprClone(n node.Node) {
- nn := n.(*expr.Clone)
- p.printFreeFloating(nn, freefloating.Start)
- io.WriteString(p.w, "clone")
- if nn.Expr.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(nn.Expr)
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprClosureUse(n node.Node) {
- nn := n.(*expr.ClosureUse)
- p.printFreeFloating(nn, freefloating.Start)
- io.WriteString(p.w, "use")
- p.printFreeFloating(nn, freefloating.Use)
- io.WriteString(p.w, "(")
- p.joinPrint(",", nn.Uses)
- p.printFreeFloating(nn, freefloating.LexicalVarList)
- io.WriteString(p.w, ")")
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprClosure(n node.Node) {
- nn := n.(*expr.Closure)
- p.printFreeFloating(nn, freefloating.Start)
-
- if nn.Static {
- io.WriteString(p.w, "static")
- }
- p.printFreeFloating(nn, freefloating.Static)
- if nn.Static && n.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
-
- io.WriteString(p.w, "function")
- p.printFreeFloating(nn, freefloating.Function)
-
- if nn.ReturnsRef {
- io.WriteString(p.w, "&")
- }
- p.printFreeFloating(nn, freefloating.Ampersand)
-
- io.WriteString(p.w, "(")
- p.joinPrint(",", nn.Params)
- p.printFreeFloating(nn, freefloating.ParameterList)
- io.WriteString(p.w, ")")
- p.printFreeFloating(nn, freefloating.Params)
-
- if nn.ClosureUse != nil {
- p.Print(nn.ClosureUse)
- }
- p.printFreeFloating(nn, freefloating.LexicalVars)
-
- if nn.ReturnType != nil {
- io.WriteString(p.w, ":")
- p.Print(nn.ReturnType)
- }
- p.printFreeFloating(nn, freefloating.ReturnType)
-
- io.WriteString(p.w, "{")
- p.printNodes(nn.Stmts)
- p.printFreeFloating(nn, freefloating.Stmts)
- io.WriteString(p.w, "}")
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprConstFetch(n node.Node) {
- nn := n.(*expr.ConstFetch)
- p.printFreeFloating(nn, freefloating.Start)
- p.Print(nn.Constant)
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprEmpty(n node.Node) {
- nn := n.(*expr.Empty)
- p.printFreeFloating(nn, freefloating.Start)
- io.WriteString(p.w, "empty")
- p.printFreeFloating(nn, freefloating.Empty)
- io.WriteString(p.w, "(")
- p.Print(nn.Expr)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, ")")
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprErrorSuppress(n node.Node) {
- nn := n.(*expr.ErrorSuppress)
- p.printFreeFloating(nn, freefloating.Start)
- io.WriteString(p.w, "@")
- p.Print(nn.Expr)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprEval(n node.Node) {
- nn := n.(*expr.Eval)
- p.printFreeFloating(nn, freefloating.Start)
- io.WriteString(p.w, "eval")
- p.printFreeFloating(nn, freefloating.Eval)
- io.WriteString(p.w, "(")
- p.Print(nn.Expr)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, ")")
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprExit(n node.Node) {
- nn := n.(*expr.Exit)
- p.printFreeFloating(nn, freefloating.Start)
-
- if nn.Die {
- io.WriteString(p.w, "die")
- } else {
- io.WriteString(p.w, "exit")
- }
- p.printFreeFloating(nn, freefloating.Exit)
-
- if nn.Expr != nil && nn.Expr.GetFreeFloating().IsEmpty() && nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(nn.Expr)
- p.printFreeFloating(nn, freefloating.Expr)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprFunctionCall(n node.Node) {
- nn := n.(*expr.FunctionCall)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Function)
-
- p.printFreeFloating(nn.ArgumentList, freefloating.Start)
- io.WriteString(p.w, "(")
- p.joinPrint(",", nn.ArgumentList.Arguments)
- p.printFreeFloating(nn.ArgumentList, freefloating.ArgumentList)
- io.WriteString(p.w, ")")
- p.printFreeFloating(nn.ArgumentList, freefloating.End)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprInclude(n node.Node) {
- nn := n.(*expr.Include)
- p.printFreeFloating(nn, freefloating.Start)
- io.WriteString(p.w, "include")
- if nn.Expr.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(nn.Expr)
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprIncludeOnce(n node.Node) {
- nn := n.(*expr.IncludeOnce)
- p.printFreeFloating(nn, freefloating.Start)
- io.WriteString(p.w, "include_once")
- if nn.Expr.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(nn.Expr)
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprInstanceOf(n node.Node) {
- nn := n.(*expr.InstanceOf)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Expr)
- p.printFreeFloating(nn, freefloating.Expr)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
-
- io.WriteString(p.w, "instanceof")
-
- if nn.Class.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(nn.Class)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprIsset(n node.Node) {
- nn := n.(*expr.Isset)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "isset")
- p.printFreeFloating(nn, freefloating.Isset)
- io.WriteString(p.w, "(")
- p.joinPrint(",", nn.Variables)
- p.printFreeFloating(nn, freefloating.VarList)
- io.WriteString(p.w, ")")
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprList(n node.Node) {
- nn := n.(*expr.List)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "list")
- p.printFreeFloating(nn, freefloating.List)
- io.WriteString(p.w, "(")
- p.joinPrint(",", nn.Items)
- p.printFreeFloating(nn, freefloating.ArrayPairList)
- io.WriteString(p.w, ")")
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprMethodCall(n node.Node) {
- nn := n.(*expr.MethodCall)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Variable)
- p.printFreeFloating(nn, freefloating.Var)
- io.WriteString(p.w, "->")
- p.Print(nn.Method)
-
- p.printFreeFloating(nn.ArgumentList, freefloating.Start)
- io.WriteString(p.w, "(")
- p.joinPrint(",", nn.ArgumentList.Arguments)
- p.printFreeFloating(nn.ArgumentList, freefloating.ArgumentList)
- io.WriteString(p.w, ")")
- p.printFreeFloating(nn.ArgumentList, freefloating.End)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprNew(n node.Node) {
- nn := n.(*expr.New)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "new")
- if nn.Class.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(nn.Class)
-
- if nn.ArgumentList != nil {
- p.printFreeFloating(nn.ArgumentList, freefloating.Start)
- io.WriteString(p.w, "(")
- p.joinPrint(",", nn.ArgumentList.Arguments)
- p.printFreeFloating(nn.ArgumentList, freefloating.ArgumentList)
- io.WriteString(p.w, ")")
- p.printFreeFloating(nn.ArgumentList, freefloating.End)
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprPostDec(n node.Node) {
- nn := n.(*expr.PostDec)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Variable)
- p.printFreeFloating(nn, freefloating.Var)
- io.WriteString(p.w, "--")
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprPostInc(n node.Node) {
- nn := n.(*expr.PostInc)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Variable)
- p.printFreeFloating(nn, freefloating.Var)
- io.WriteString(p.w, "++")
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprPreDec(n node.Node) {
- nn := n.(*expr.PreDec)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "--")
- p.Print(nn.Variable)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprPreInc(n node.Node) {
- nn := n.(*expr.PreInc)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "++")
- p.Print(nn.Variable)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprPrint(n node.Node) {
- nn := n.(*expr.Print)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "print")
- if nn.Expr.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(nn.Expr)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprPropertyFetch(n node.Node) {
- nn := n.(*expr.PropertyFetch)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Variable)
- p.printFreeFloating(nn, freefloating.Var)
- io.WriteString(p.w, "->")
- p.Print(nn.Property)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprReference(n node.Node) {
- nn := n.(*expr.Reference)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "&")
- p.Print(nn.Variable)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprRequire(n node.Node) {
- nn := n.(*expr.Require)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "require")
- if nn.Expr.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(nn.Expr)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprRequireOnce(n node.Node) {
- nn := n.(*expr.RequireOnce)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "require_once")
- if nn.Expr.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(nn.Expr)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprShellExec(n node.Node) {
- nn := n.(*expr.ShellExec)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "`")
- p.joinPrint("", nn.Parts)
- io.WriteString(p.w, "`")
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprShortArray(n node.Node) {
- nn := n.(*expr.ShortArray)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "[")
- p.joinPrint(",", nn.Items)
- p.printFreeFloating(nn, freefloating.ArrayPairList)
- io.WriteString(p.w, "]")
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprShortList(n node.Node) {
- nn := n.(*expr.ShortList)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "[")
- p.joinPrint(",", nn.Items)
- p.printFreeFloating(nn, freefloating.ArrayPairList)
- io.WriteString(p.w, "]")
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprStaticCall(n node.Node) {
- nn := n.(*expr.StaticCall)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Class)
- p.printFreeFloating(nn, freefloating.Name)
- io.WriteString(p.w, "::")
- p.Print(nn.Call)
-
- p.printFreeFloating(nn.ArgumentList, freefloating.Start)
- io.WriteString(p.w, "(")
- p.joinPrint(",", nn.ArgumentList.Arguments)
- p.printFreeFloating(nn.ArgumentList, freefloating.ArgumentList)
- io.WriteString(p.w, ")")
- p.printFreeFloating(nn.ArgumentList, freefloating.End)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprStaticPropertyFetch(n node.Node) {
- nn := n.(*expr.StaticPropertyFetch)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Class)
- p.printFreeFloating(nn, freefloating.Name)
- io.WriteString(p.w, "::")
- p.Print(nn.Property)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprTernary(n node.Node) {
- nn := n.(*expr.Ternary)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Condition)
- p.printFreeFloating(nn, freefloating.Cond)
- io.WriteString(p.w, "?")
-
- if nn.IfTrue != nil {
- p.Print(nn.IfTrue)
- }
- p.printFreeFloating(nn, freefloating.True)
-
- io.WriteString(p.w, ":")
- p.Print(nn.IfFalse)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprUnaryMinus(n node.Node) {
- nn := n.(*expr.UnaryMinus)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "-")
- p.Print(nn.Expr)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprUnaryPlus(n node.Node) {
- nn := n.(*expr.UnaryPlus)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "+")
- p.Print(nn.Expr)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprVariable(n node.Node) {
- nn := n.(*expr.Variable)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.printFreeFloating(nn, freefloating.Dollar)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, "$")
- }
-
- p.Print(nn.VarName)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprVariableWithoutLeadingDollar(n node.Node) {
- nn := n.(*expr.Variable)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.VarName)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprYieldFrom(n node.Node) {
- nn := n.(*expr.YieldFrom)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "yield from")
- if nn.Expr.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(nn.Expr)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printExprYield(n node.Node) {
- nn := n.(*expr.Yield)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "yield")
-
- if nn.Key != nil {
- if nn.Key.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(nn.Key)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, "=>")
- } else {
- if nn.Value.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- }
-
- p.Print(nn.Value)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-// smtm
-
-func (p *Printer) printStmtAltElseIf(n node.Node) {
- nn := n.(*stmt.AltElseIf)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "elseif")
- p.printFreeFloating(nn, freefloating.ElseIf)
- io.WriteString(p.w, "(")
- p.Print(nn.Cond)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, ")")
- p.printFreeFloating(nn, freefloating.Cond)
- io.WriteString(p.w, ":")
-
- if s := nn.Stmt.(*stmt.StmtList).Stmts; len(s) > 0 {
- p.printNodes(s)
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtAltElse(n node.Node) {
- nn := n.(*stmt.AltElse)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "else")
- p.printFreeFloating(nn, freefloating.Else)
- io.WriteString(p.w, ":")
-
- if s := nn.Stmt.(*stmt.StmtList).Stmts; len(s) > 0 {
- p.printNodes(s)
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtAltFor(n node.Node) {
- nn := n.(*stmt.AltFor)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "for")
- p.printFreeFloating(nn, freefloating.For)
- io.WriteString(p.w, "(")
- p.joinPrint(",", nn.Init)
- p.printFreeFloating(nn, freefloating.InitExpr)
- io.WriteString(p.w, ";")
- p.joinPrint(",", nn.Cond)
- p.printFreeFloating(nn, freefloating.CondExpr)
- io.WriteString(p.w, ";")
- p.joinPrint(",", nn.Loop)
- p.printFreeFloating(nn, freefloating.IncExpr)
- io.WriteString(p.w, ")")
- p.printFreeFloating(nn, freefloating.Cond)
- io.WriteString(p.w, ":")
-
- s := nn.Stmt.(*stmt.StmtList)
- p.printNodes(s.Stmts)
- p.printFreeFloating(nn, freefloating.Stmts)
-
- io.WriteString(p.w, "endfor")
- p.printFreeFloating(nn, freefloating.AltEnd)
- p.printFreeFloating(nn, freefloating.SemiColon)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, ";")
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtAltForeach(n node.Node) {
- nn := n.(*stmt.AltForeach)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "foreach")
- p.printFreeFloating(nn, freefloating.Foreach)
- io.WriteString(p.w, "(")
- p.Print(nn.Expr)
- p.printFreeFloating(nn, freefloating.Expr)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- io.WriteString(p.w, "as")
-
- if nn.Key != nil {
- if nn.Key.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(nn.Key)
- p.printFreeFloating(nn, freefloating.Key)
- io.WriteString(p.w, "=>")
- } else {
- if nn.Variable.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- }
-
- p.Print(nn.Variable)
- p.printFreeFloating(nn, freefloating.Var)
-
- io.WriteString(p.w, ")")
- p.printFreeFloating(nn, freefloating.Cond)
-
- io.WriteString(p.w, ":")
- s := nn.Stmt.(*stmt.StmtList)
- p.printNodes(s.Stmts)
- p.printFreeFloating(nn, freefloating.Stmts)
-
- io.WriteString(p.w, "endforeach")
- p.printFreeFloating(nn, freefloating.AltEnd)
- p.printFreeFloating(nn, freefloating.SemiColon)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, ";")
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtAltIf(n node.Node) {
- nn := n.(*stmt.AltIf)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "if")
- p.printFreeFloating(nn, freefloating.If)
- io.WriteString(p.w, "(")
- p.Print(nn.Cond)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, ")")
- p.printFreeFloating(nn, freefloating.Cond)
- io.WriteString(p.w, ":")
-
- s := nn.Stmt.(*stmt.StmtList)
- p.printNodes(s.Stmts)
-
- for _, elseif := range nn.ElseIf {
- p.Print(elseif)
- }
-
- if nn.Else != nil {
- p.Print(nn.Else)
- }
-
- p.printFreeFloating(nn, freefloating.Stmts)
- io.WriteString(p.w, "endif")
- p.printFreeFloating(nn, freefloating.AltEnd)
- p.printFreeFloating(nn, freefloating.SemiColon)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, ";")
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtAltSwitch(n node.Node) {
- nn := n.(*stmt.AltSwitch)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "switch")
- p.printFreeFloating(nn, freefloating.Switch)
- io.WriteString(p.w, "(")
- p.Print(nn.Cond)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, ")")
- p.printFreeFloating(nn, freefloating.Cond)
- io.WriteString(p.w, ":")
-
- p.printFreeFloating(nn.CaseList, freefloating.Start)
- p.printFreeFloating(nn.CaseList, freefloating.CaseListStart)
- p.printNodes(nn.CaseList.Cases)
- p.printFreeFloating(nn.CaseList, freefloating.CaseListEnd)
- p.printFreeFloating(nn.CaseList, freefloating.End)
-
- io.WriteString(p.w, "endswitch")
- p.printFreeFloating(nn, freefloating.AltEnd)
- p.printFreeFloating(nn, freefloating.SemiColon)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, ";")
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtAltWhile(n node.Node) {
- nn := n.(*stmt.AltWhile)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "while")
- p.printFreeFloating(nn, freefloating.While)
- io.WriteString(p.w, "(")
- p.Print(nn.Cond)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, ")")
- p.printFreeFloating(nn, freefloating.Cond)
- io.WriteString(p.w, ":")
-
- s := nn.Stmt.(*stmt.StmtList)
- p.printNodes(s.Stmts)
- p.printFreeFloating(nn, freefloating.Stmts)
-
- io.WriteString(p.w, "endwhile")
- p.printFreeFloating(nn, freefloating.AltEnd)
- p.printFreeFloating(nn, freefloating.SemiColon)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, ";")
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtBreak(n node.Node) {
- nn := n.(*stmt.Break)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "break")
- if nn.Expr != nil {
- if nn.Expr.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(nn.Expr)
- }
- p.printFreeFloating(nn, freefloating.Expr)
-
- p.printFreeFloating(nn, freefloating.SemiColon)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, ";")
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtCase(n node.Node) {
- nn := n.(*stmt.Case)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "case")
- if nn.Cond.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(nn.Cond)
- p.printFreeFloating(nn, freefloating.Expr)
- p.printFreeFloating(nn, freefloating.CaseSeparator)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, ":")
- }
-
- if len(nn.Stmts) > 0 {
- p.printNodes(nn.Stmts)
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtCatch(n node.Node) {
- nn := n.(*stmt.Catch)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "catch")
- p.printFreeFloating(nn, freefloating.Catch)
- io.WriteString(p.w, "(")
- p.joinPrint("|", nn.Types)
- p.Print(nn.Variable)
- p.printFreeFloating(nn, freefloating.Var)
- io.WriteString(p.w, ")")
- p.printFreeFloating(nn, freefloating.Cond)
- io.WriteString(p.w, "{")
- p.printNodes(nn.Stmts)
- p.printFreeFloating(nn, freefloating.Stmts)
- io.WriteString(p.w, "}")
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtClassMethod(n node.Node) {
- nn := n.(*stmt.ClassMethod)
- p.printFreeFloating(nn, freefloating.Start)
-
- if nn.Modifiers != nil {
- for k, m := range nn.Modifiers {
- if k > 0 && m.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(m)
- }
-
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- }
- p.printFreeFloating(nn, freefloating.ModifierList)
- io.WriteString(p.w, "function")
- p.printFreeFloating(nn, freefloating.Function)
-
- if nn.ReturnsRef {
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- io.WriteString(p.w, "&")
- p.printFreeFloating(nn, freefloating.Ampersand)
- } else {
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- }
-
- p.Print(nn.MethodName)
- p.printFreeFloating(nn, freefloating.Name)
- io.WriteString(p.w, "(")
- p.joinPrint(",", nn.Params)
- p.printFreeFloating(nn, freefloating.ParameterList)
- io.WriteString(p.w, ")")
- p.printFreeFloating(nn, freefloating.Params)
-
- if nn.ReturnType != nil {
- io.WriteString(p.w, ":")
- p.Print(nn.ReturnType)
- }
-
- p.Print(nn.Stmt)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtClass(n node.Node) {
- nn := n.(*stmt.Class)
- p.printFreeFloating(nn, freefloating.Start)
-
- if nn.Modifiers != nil {
- for k, m := range nn.Modifiers {
- if k > 0 && m.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(m)
- }
-
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- }
- p.printFreeFloating(nn, freefloating.ModifierList)
- io.WriteString(p.w, "class")
- p.printFreeFloating(nn, freefloating.Class)
-
- if nn.ClassName != nil {
- if nn.ClassName.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(nn.ClassName)
- }
-
- if nn.ArgumentList != nil {
- p.printFreeFloating(nn.ArgumentList, freefloating.Start)
- io.WriteString(p.w, "(")
- p.joinPrint(",", nn.ArgumentList.Arguments)
- p.printFreeFloating(nn.ArgumentList, freefloating.ArgumentList)
- io.WriteString(p.w, ")")
- p.printFreeFloating(nn.ArgumentList, freefloating.End)
- }
-
- if nn.Extends != nil {
- p.printFreeFloating(nn.Extends, freefloating.Start)
- if nn.Extends.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- io.WriteString(p.w, "extends")
- if nn.Extends.ClassName.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(nn.Extends.ClassName)
- }
-
- if nn.Implements != nil {
- p.printFreeFloating(nn.Implements, freefloating.Start)
- if nn.Implements.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- io.WriteString(p.w, "implements")
- if nn.Implements.InterfaceNames[0].GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.joinPrint(",", nn.Implements.InterfaceNames)
- }
-
- p.printFreeFloating(nn, freefloating.Name)
- io.WriteString(p.w, "{")
- p.printNodes(nn.Stmts)
- p.printFreeFloating(nn, freefloating.Stmts)
- io.WriteString(p.w, "}")
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtClassConstList(n node.Node) {
- nn := n.(*stmt.ClassConstList)
- p.printFreeFloating(nn, freefloating.Start)
-
- if nn.Modifiers != nil {
- for k, m := range nn.Modifiers {
- if k > 0 && m.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(m)
- }
-
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- }
- p.printFreeFloating(nn, freefloating.ModifierList)
- io.WriteString(p.w, "const")
-
- if nn.Consts[0].GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.joinPrint(",", nn.Consts)
- p.printFreeFloating(nn, freefloating.ConstList)
-
- p.printFreeFloating(nn, freefloating.SemiColon)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, ";")
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtConstList(n node.Node) {
- nn := n.(*stmt.ConstList)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "const")
-
- if nn.Consts[0].GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.joinPrint(",", nn.Consts)
- p.printFreeFloating(nn, freefloating.Stmts)
-
- p.printFreeFloating(nn, freefloating.SemiColon)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, ";")
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtConstant(n node.Node) {
- nn := n.(*stmt.Constant)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.ConstantName)
- p.printFreeFloating(nn, freefloating.Name)
- io.WriteString(p.w, "=")
- p.Print(nn.Expr)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtContinue(n node.Node) {
- nn := n.(*stmt.Continue)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "continue")
-
- if nn.Expr != nil {
- if nn.Expr.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(nn.Expr)
- }
- p.printFreeFloating(nn, freefloating.Expr)
-
- p.printFreeFloating(nn, freefloating.SemiColon)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, ";")
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtDeclare(n node.Node) {
- nn := n.(*stmt.Declare)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "declare")
- p.printFreeFloating(nn, freefloating.Declare)
- io.WriteString(p.w, "(")
- p.joinPrint(",", nn.Consts)
- p.printFreeFloating(nn, freefloating.ConstList)
- io.WriteString(p.w, ")")
-
- if nn.Alt {
- p.printFreeFloating(nn, freefloating.Cond)
- io.WriteString(p.w, ":")
-
- s := nn.Stmt.(*stmt.StmtList)
- p.printNodes(s.Stmts)
- p.printFreeFloating(nn, freefloating.Stmts)
-
- io.WriteString(p.w, "enddeclare")
- p.printFreeFloating(nn, freefloating.AltEnd)
-
- p.printFreeFloating(nn, freefloating.SemiColon)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, ";")
- }
- } else {
- p.Print(nn.Stmt)
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtDefault(n node.Node) {
- nn := n.(*stmt.Default)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "default")
- p.printFreeFloating(nn, freefloating.Default)
- p.printFreeFloating(nn, freefloating.CaseSeparator)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, ":")
- }
-
- if len(nn.Stmts) > 0 {
- p.printNodes(nn.Stmts)
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtDo(n node.Node) {
- nn := n.(*stmt.Do)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "do")
-
- if _, ok := nn.Stmt.(*stmt.StmtList); !ok {
- if nn.Stmt.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- }
-
- p.Print(nn.Stmt)
- p.printFreeFloating(nn, freefloating.Stmts)
-
- io.WriteString(p.w, "while")
- p.printFreeFloating(nn, freefloating.While)
- io.WriteString(p.w, "(")
- p.Print(nn.Cond)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, ")")
- p.printFreeFloating(nn, freefloating.Cond)
-
- p.printFreeFloating(nn, freefloating.SemiColon)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, ";")
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtEcho(n node.Node) {
- nn := n.(*stmt.Echo)
-
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, "echo")
- }
- if nn.Exprs[0].GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
-
- p.printFreeFloating(nn, freefloating.Start)
- p.printFreeFloating(nn, freefloating.Echo)
-
- p.joinPrint(",", nn.Exprs)
- p.printFreeFloating(nn, freefloating.Expr)
-
- p.printFreeFloating(nn, freefloating.SemiColon)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, ";")
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtElseif(n node.Node) {
- nn := n.(*stmt.ElseIf)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "elseif")
- p.printFreeFloating(nn, freefloating.ElseIf)
- io.WriteString(p.w, "(")
- p.Print(nn.Cond)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, ")")
-
- p.Print(nn.Stmt)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtElse(n node.Node) {
- nn := n.(*stmt.Else)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "else")
-
- if _, ok := nn.Stmt.(*stmt.StmtList); !ok {
- if nn.Stmt.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- }
-
- p.Print(nn.Stmt)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtExpression(n node.Node) {
- nn := n.(*stmt.Expression)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Expr)
- p.printFreeFloating(nn, freefloating.Expr)
-
- p.printFreeFloating(nn, freefloating.SemiColon)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, ";")
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtFinally(n node.Node) {
- nn := n.(*stmt.Finally)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "finally")
- p.printFreeFloating(nn, freefloating.Finally)
- io.WriteString(p.w, "{")
- p.printNodes(nn.Stmts)
- p.printFreeFloating(nn, freefloating.Stmts)
- io.WriteString(p.w, "}")
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtFor(n node.Node) {
- nn := n.(*stmt.For)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "for")
- p.printFreeFloating(nn, freefloating.For)
- io.WriteString(p.w, "(")
- p.joinPrint(",", nn.Init)
- p.printFreeFloating(nn, freefloating.InitExpr)
- io.WriteString(p.w, ";")
- p.joinPrint(",", nn.Cond)
- p.printFreeFloating(nn, freefloating.CondExpr)
- io.WriteString(p.w, ";")
- p.joinPrint(",", nn.Loop)
- p.printFreeFloating(nn, freefloating.IncExpr)
- io.WriteString(p.w, ")")
-
- p.Print(nn.Stmt)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtForeach(n node.Node) {
- nn := n.(*stmt.Foreach)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "foreach")
- p.printFreeFloating(nn, freefloating.Foreach)
- io.WriteString(p.w, "(")
-
- p.Print(nn.Expr)
- p.printFreeFloating(nn, freefloating.Expr)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
-
- io.WriteString(p.w, "as")
-
- if nn.Key != nil {
- if nn.Key.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(nn.Key)
- p.printFreeFloating(nn, freefloating.Key)
- io.WriteString(p.w, "=>")
- } else {
- if nn.Variable.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- }
- p.Print(nn.Variable)
- p.printFreeFloating(nn, freefloating.Var)
-
- io.WriteString(p.w, ")")
-
- p.Print(nn.Stmt)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtFunction(n node.Node) {
- nn := n.(*stmt.Function)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "function")
- p.printFreeFloating(nn, freefloating.Function)
-
- if nn.ReturnsRef {
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- io.WriteString(p.w, "&")
- } else {
- if nn.FunctionName.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- }
-
- p.Print(nn.FunctionName)
- p.printFreeFloating(nn, freefloating.Name)
-
- io.WriteString(p.w, "(")
- p.joinPrint(",", nn.Params)
- p.printFreeFloating(nn, freefloating.ParamList)
- io.WriteString(p.w, ")")
- p.printFreeFloating(nn, freefloating.Params)
-
- if nn.ReturnType != nil {
- io.WriteString(p.w, ":")
- p.Print(nn.ReturnType)
- }
- p.printFreeFloating(nn, freefloating.ReturnType)
-
- io.WriteString(p.w, "{")
- p.printNodes(nn.Stmts)
- p.printFreeFloating(nn, freefloating.Stmts)
- io.WriteString(p.w, "}")
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtGlobal(n node.Node) {
- nn := n.(*stmt.Global)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "global")
- p.joinPrint(",", nn.Vars)
- p.printFreeFloating(nn, freefloating.VarList)
-
- p.printFreeFloating(nn, freefloating.SemiColon)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, ";")
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtGoto(n node.Node) {
- nn := n.(*stmt.Goto)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "goto")
- if nn.Label.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(nn.Label)
- p.printFreeFloating(nn, freefloating.Label)
-
- p.printFreeFloating(nn, freefloating.SemiColon)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, ";")
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtGroupUse(n node.Node) {
- nn := n.(*stmt.GroupUse)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "use")
- p.printFreeFloating(nn, freefloating.Use)
-
- if nn.UseType != nil {
- if nn.UseType.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(nn.UseType)
- }
-
- if nn.Prefix.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(nn.Prefix)
- io.WriteString(p.w, "\\")
- p.printFreeFloating(nn, freefloating.Slash)
-
- io.WriteString(p.w, "{")
- p.joinPrint(",", nn.UseList)
- p.printFreeFloating(nn, freefloating.Stmts)
- io.WriteString(p.w, "}")
- p.printFreeFloating(nn, freefloating.UseDeclarationList)
-
- p.printFreeFloating(nn, freefloating.SemiColon)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, ";")
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtHaltCompiler(n node.Node) {
- nn := n.(*stmt.HaltCompiler)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "__halt_compiler")
- p.printFreeFloating(nn, freefloating.HaltCompiller)
- io.WriteString(p.w, "(")
- p.printFreeFloating(nn, freefloating.OpenParenthesisToken)
- io.WriteString(p.w, ")")
- p.printFreeFloating(nn, freefloating.CloseParenthesisToken)
-
- p.printFreeFloating(nn, freefloating.SemiColon)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, ";")
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtIf(n node.Node) {
- nn := n.(*stmt.If)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "if")
- p.printFreeFloating(n, freefloating.If)
- io.WriteString(p.w, "(")
- p.Print(nn.Cond)
- p.printFreeFloating(n, freefloating.Expr)
- io.WriteString(p.w, ")")
-
- p.Print(nn.Stmt)
-
- if nn.ElseIf != nil {
- p.printNodes(nn.ElseIf)
- }
-
- if nn.Else != nil {
- p.Print(nn.Else)
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtInlineHTML(n node.Node) {
- nn := n.(*stmt.InlineHtml)
- p.printFreeFloating(nn, freefloating.Start)
-
- if p.s == PhpState && nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, "?>")
- }
- p.SetState(HtmlState)
-
- io.WriteString(p.w, nn.Value)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtInterface(n node.Node) {
- nn := n.(*stmt.Interface)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "interface")
-
- if nn.InterfaceName.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
-
- p.Print(nn.InterfaceName)
-
- if nn.Extends != nil {
- p.printFreeFloating(nn.Extends, freefloating.Start)
- if nn.Extends.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- io.WriteString(p.w, "extends")
- if nn.Extends.InterfaceNames[0].GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.joinPrint(",", nn.Extends.InterfaceNames)
- }
-
- p.printFreeFloating(nn, freefloating.Name)
- io.WriteString(p.w, "{")
- p.printNodes(nn.Stmts)
- p.printFreeFloating(nn, freefloating.Stmts)
- io.WriteString(p.w, "}")
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtLabel(n node.Node) {
- nn := n.(*stmt.Label)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.LabelName)
- p.printFreeFloating(nn, freefloating.Label)
-
- io.WriteString(p.w, ":")
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtNamespace(n node.Node) {
- nn := n.(*stmt.Namespace)
- p.printFreeFloating(nn, freefloating.Start)
- io.WriteString(p.w, "namespace")
-
- if nn.NamespaceName != nil {
- if nn.NamespaceName.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(nn.NamespaceName)
- }
-
- if nn.Stmts != nil {
- p.printFreeFloating(nn, freefloating.Namespace)
- io.WriteString(p.w, "{")
- p.printNodes(nn.Stmts)
- p.printFreeFloating(nn, freefloating.Stmts)
- io.WriteString(p.w, "}")
- } else {
- p.printFreeFloating(nn, freefloating.SemiColon)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, ";")
- }
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtNop(n node.Node) {
- p.printFreeFloating(n, freefloating.Start)
- p.printFreeFloating(n, freefloating.SemiColon)
- if n.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, ";")
- }
- p.printFreeFloating(n, freefloating.End)
-}
-
-func (p *Printer) printStmtPropertyList(n node.Node) {
- nn := n.(*stmt.PropertyList)
- p.printFreeFloating(nn, freefloating.Start)
-
- for k, m := range nn.Modifiers {
- if k > 0 && m.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(m)
- }
-
- if nn.Type != nil && nn.Type.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
-
- p.Print(nn.Type)
-
- if nn.Properties[0].GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
-
- p.joinPrint(",", nn.Properties)
- p.printFreeFloating(n, freefloating.PropertyList)
-
- p.printFreeFloating(n, freefloating.SemiColon)
- if n.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, ";")
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtProperty(n node.Node) {
- nn := n.(*stmt.Property)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Variable)
-
- if nn.Expr != nil {
- p.printFreeFloating(nn, freefloating.Var)
- io.WriteString(p.w, "=")
- p.Print(nn.Expr)
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtReturn(n node.Node) {
- nn := n.(*stmt.Return)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "return")
- if nn.Expr != nil && nn.Expr.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(nn.Expr)
- p.printFreeFloating(nn, freefloating.Expr)
-
- p.printFreeFloating(nn, freefloating.SemiColon)
- if n.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, ";")
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtStaticVar(n node.Node) {
- nn := n.(*stmt.StaticVar)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Variable)
-
- if nn.Expr != nil {
- p.printFreeFloating(nn, freefloating.Var)
- io.WriteString(p.w, "=")
- p.Print(nn.Expr)
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtStatic(n node.Node) {
- nn := n.(*stmt.Static)
- p.printFreeFloating(nn, freefloating.Start)
- io.WriteString(p.w, "static")
-
- p.joinPrint(",", nn.Vars)
- p.printFreeFloating(nn, freefloating.VarList)
-
- p.printFreeFloating(nn, freefloating.SemiColon)
- if n.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, ";")
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtStmtList(n node.Node) {
- nn := n.(*stmt.StmtList)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "{")
- p.printNodes(nn.Stmts)
- p.printFreeFloating(nn, freefloating.Stmts)
- io.WriteString(p.w, "}")
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtSwitch(n node.Node) {
- nn := n.(*stmt.Switch)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "switch")
- p.printFreeFloating(nn, freefloating.Switch)
- io.WriteString(p.w, "(")
- p.Print(nn.Cond)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, ")")
-
- p.printFreeFloating(nn.CaseList, freefloating.Start)
- io.WriteString(p.w, "{")
- p.printFreeFloating(nn.CaseList, freefloating.CaseListStart)
- p.printNodes(nn.CaseList.Cases)
- p.printFreeFloating(nn.CaseList, freefloating.CaseListEnd)
- io.WriteString(p.w, "}")
- p.printFreeFloating(nn.CaseList, freefloating.End)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtThrow(n node.Node) {
- nn := n.(*stmt.Throw)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "throw")
- if nn.Expr.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(nn.Expr)
- p.printFreeFloating(nn, freefloating.Expr)
-
- p.printFreeFloating(nn, freefloating.SemiColon)
- if n.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, ";")
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtTraitAdaptationList(n node.Node) {
- nn := n.(*stmt.TraitAdaptationList)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "{")
- p.printNodes(nn.Adaptations)
- p.printFreeFloating(nn, freefloating.AdaptationList)
- io.WriteString(p.w, "}")
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtTraitMethodRef(n node.Node) {
- nn := n.(*stmt.TraitMethodRef)
- p.printFreeFloating(nn, freefloating.Start)
-
- if nn.Trait != nil {
- p.Print(nn.Trait)
- p.printFreeFloating(nn, freefloating.Name)
- io.WriteString(p.w, "::")
- }
-
- p.Print(nn.Method)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtTraitUseAlias(n node.Node) {
- nn := n.(*stmt.TraitUseAlias)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Ref)
- p.printFreeFloating(nn, freefloating.Ref)
-
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- io.WriteString(p.w, "as")
-
- if nn.Modifier != nil {
- if nn.Modifier.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(nn.Modifier)
- }
-
- if nn.Alias != nil {
- if nn.Alias.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(nn.Alias)
- }
- p.printFreeFloating(nn, freefloating.Alias)
-
- p.printFreeFloating(nn, freefloating.SemiColon)
- if n.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, ";")
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtTraitUsePrecedence(n node.Node) {
- nn := n.(*stmt.TraitUsePrecedence)
- p.printFreeFloating(nn, freefloating.Start)
-
- p.Print(nn.Ref)
- p.printFreeFloating(nn, freefloating.Ref)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
-
- io.WriteString(p.w, "insteadof")
- if nn.Insteadof[0].GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.joinPrint(",", nn.Insteadof)
- p.printFreeFloating(nn, freefloating.NameList)
-
- p.printFreeFloating(nn, freefloating.SemiColon)
- if n.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, ";")
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtTraitUse(n node.Node) {
- nn := n.(*stmt.TraitUse)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "use")
- if nn.Traits[0].GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.joinPrint(",", nn.Traits)
-
- p.Print(nn.TraitAdaptationList)
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtTrait(n node.Node) {
- nn := n.(*stmt.Trait)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "trait")
- if nn.TraitName.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(nn.TraitName)
-
- p.printFreeFloating(nn, freefloating.Name)
- io.WriteString(p.w, "{")
- p.printNodes(nn.Stmts)
- p.printFreeFloating(nn, freefloating.Stmts)
- io.WriteString(p.w, "}")
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtTry(n node.Node) {
- nn := n.(*stmt.Try)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "try")
- p.printFreeFloating(nn, freefloating.Try)
- io.WriteString(p.w, "{")
- p.printNodes(nn.Stmts)
- p.printFreeFloating(nn, freefloating.Stmts)
- io.WriteString(p.w, "}")
-
- if nn.Catches != nil {
- p.printNodes(nn.Catches)
- }
-
- if nn.Finally != nil {
- p.Print(nn.Finally)
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtUnset(n node.Node) {
- nn := n.(*stmt.Unset)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "unset")
- p.printFreeFloating(nn, freefloating.Unset)
- io.WriteString(p.w, "(")
- p.joinPrint(",", nn.Vars)
- p.printFreeFloating(nn, freefloating.VarList)
- io.WriteString(p.w, ")")
- p.printFreeFloating(nn, freefloating.CloseParenthesisToken)
-
- p.printFreeFloating(nn, freefloating.SemiColon)
- if n.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, ";")
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtUseList(n node.Node) {
- nn := n.(*stmt.UseList)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "use")
-
- if nn.UseType != nil {
- if nn.UseType.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(nn.UseType)
- }
-
- if nn.Uses[0].GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.joinPrint(",", nn.Uses)
- p.printFreeFloating(nn, freefloating.UseDeclarationList)
-
- p.printFreeFloating(nn, freefloating.SemiColon)
- if nn.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, ";")
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtUse(n node.Node) {
- nn := n.(*stmt.Use)
- p.printFreeFloating(nn, freefloating.Start)
-
- if nn.UseType != nil {
- p.Print(nn.UseType)
- if nn.UseType.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- }
-
- p.printFreeFloating(nn, freefloating.Slash)
-
- p.Print(nn.Use)
-
- if nn.Alias != nil {
- if nn.Alias.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- io.WriteString(p.w, "as")
- if nn.Alias.GetFreeFloating().IsEmpty() {
- io.WriteString(p.w, " ")
- }
- p.Print(nn.Alias)
- }
-
- p.printFreeFloating(nn, freefloating.End)
-}
-
-func (p *Printer) printStmtWhile(n node.Node) {
- nn := n.(*stmt.While)
- p.printFreeFloating(nn, freefloating.Start)
-
- io.WriteString(p.w, "while")
- p.printFreeFloating(nn, freefloating.While)
- io.WriteString(p.w, "(")
- p.Print(nn.Cond)
- p.printFreeFloating(nn, freefloating.Expr)
- io.WriteString(p.w, ")")
-
- p.Print(nn.Stmt)
-
- p.printFreeFloating(nn, freefloating.End)
-}