diff --git a/node/expr/n_array_item.go b/node/expr/n_array_item.go index 0c05df1..b651358 100644 --- a/node/expr/n_array_item.go +++ b/node/expr/n_array_item.go @@ -7,15 +7,13 @@ import ( // ArrayItem node type ArrayItem struct { - ByRef bool - Key node.Node - Val node.Node + Key node.Node + Val node.Node } // NewArrayItem node constructor -func NewArrayItem(Key node.Node, Val node.Node, ByRef bool) *ArrayItem { +func NewArrayItem(Key node.Node, Val node.Node) *ArrayItem { return &ArrayItem{ - ByRef, Key, Val, } @@ -23,9 +21,7 @@ func NewArrayItem(Key node.Node, Val node.Node, ByRef bool) *ArrayItem { // Attributes returns node attributes as map func (n *ArrayItem) Attributes() map[string]interface{} { - return map[string]interface{}{ - "ByRef": n.ByRef, - } + return nil } // Walk traverses nodes diff --git a/node/expr/n_closure_use.go b/node/expr/n_closure_use.go index 72d5e13..29e5922 100644 --- a/node/expr/n_closure_use.go +++ b/node/expr/n_closure_use.go @@ -7,23 +7,19 @@ import ( // ClosureUse node type ClosureUse struct { - ByRef bool Variable node.Node } // NewClosureUse node constructor -func NewClosureUse(Variable node.Node, ByRef bool) *ClosureUse { +func NewClosureUse(Variable node.Node) *ClosureUse { return &ClosureUse{ - ByRef, Variable, } } // Attributes returns node attributes as map func (n *ClosureUse) Attributes() map[string]interface{} { - return map[string]interface{}{ - "ByRef": n.ByRef, - } + return nil } // Walk traverses nodes diff --git a/node/expr/n_reference.go b/node/expr/n_reference.go new file mode 100644 index 0000000..9b864fc --- /dev/null +++ b/node/expr/n_reference.go @@ -0,0 +1,38 @@ +package expr + +import ( + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/walker" +) + +// Reference node +type Reference struct { + Variable node.Node +} + +// NewReference node constructor +func NewReference(Variable node.Node) *Reference { + return &Reference{ + Variable, + } +} + +// Attributes returns node attributes as map +func (n *Reference) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *Reference) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Variable != nil { + vv := v.GetChildrenVisitor("Variable") + n.Variable.Walk(vv) + } + + v.LeaveNode(n) +} diff --git a/node/expr/t_array_test.go b/node/expr/t_array_test.go index 11923c0..99d997a 100644 --- a/node/expr/t_array_test.go +++ b/node/expr/t_array_test.go @@ -47,8 +47,7 @@ func TestArrayItem(t *testing.T) { Expr: &expr.Array{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Val: &scalar.Lnumber{Value: "1"}, + Val: &scalar.Lnumber{Value: "1"}, }, }, }, @@ -76,13 +75,11 @@ func TestArrayItems(t *testing.T) { Expr: &expr.Array{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Key: &scalar.Lnumber{Value: "1"}, - Val: &scalar.Lnumber{Value: "1"}, + Key: &scalar.Lnumber{Value: "1"}, + Val: &scalar.Lnumber{Value: "1"}, }, &expr.ArrayItem{ - ByRef: true, - Val: &expr.Variable{VarName: &node.Identifier{Value: "b"}}, + Val: &expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, }, }, }, diff --git a/node/expr/t_closure_test.go b/node/expr/t_closure_test.go index 882a8c0..abfc831 100644 --- a/node/expr/t_closure_test.go +++ b/node/expr/t_closure_test.go @@ -66,12 +66,10 @@ func TestClosureUse(t *testing.T) { }, Uses: []node.Node{ &expr.ClosureUse{ - ByRef: false, Variable: &expr.Variable{VarName: &node.Identifier{Value: "c"}}, }, &expr.ClosureUse{ - ByRef: true, - Variable: &expr.Variable{VarName: &node.Identifier{Value: "d"}}, + Variable: &expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "d"}}}, }, }, Stmts: []node.Node{}, @@ -115,11 +113,9 @@ func TestClosureUse2(t *testing.T) { }, Uses: []node.Node{ &expr.ClosureUse{ - ByRef: true, - Variable: &expr.Variable{VarName: &node.Identifier{Value: "c"}}, + Variable: &expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "c"}}}, }, &expr.ClosureUse{ - ByRef: false, Variable: &expr.Variable{VarName: &node.Identifier{Value: "d"}}, }, }, diff --git a/node/expr/t_list_test.go b/node/expr/t_list_test.go index 21a26bb..ecdabbd 100644 --- a/node/expr/t_list_test.go +++ b/node/expr/t_list_test.go @@ -51,8 +51,7 @@ func TestList(t *testing.T) { Variable: &expr.List{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Val: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + Val: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, }, }, }, @@ -83,7 +82,6 @@ func TestListArrayIndex(t *testing.T) { Variable: &expr.List{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, Val: &expr.ArrayDimFetch{ Variable: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, }, @@ -117,12 +115,10 @@ func TestListList(t *testing.T) { Variable: &expr.List{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, Val: &expr.List{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Val: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + Val: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, }, }, }, diff --git a/node/expr/t_reference_test.go b/node/expr/t_reference_test.go new file mode 100644 index 0000000..9f83687 --- /dev/null +++ b/node/expr/t_reference_test.go @@ -0,0 +1,41 @@ +package expr_test + +import ( + "bytes" + "testing" + + "github.com/z7zmey/php-parser/node/expr" + + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/node/stmt" + "github.com/z7zmey/php-parser/php5" + "github.com/z7zmey/php-parser/php7" +) + +func TestForeachWithRef(t *testing.T) { + t.Helper() + src := ` &$v) {}` + + expected := &node.Root{ + Stmts: []node.Node{ + &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.StmtList{ + Stmts: []node.Node{}, + }, + }, + }, + } + + php7parser := php7.NewParser(bytes.NewBufferString(src), "test.php") + php7parser.Parse() + actual := php7parser.GetRootNode() + assertEqual(t, expected, actual) + + php5parser := php5.NewParser(bytes.NewBufferString(src), "test.php") + php5parser.Parse() + actual = php5parser.GetRootNode() + assertEqual(t, expected, actual) +} diff --git a/node/expr/t_short_array_test.go b/node/expr/t_short_array_test.go index fe19c6b..adecd20 100644 --- a/node/expr/t_short_array_test.go +++ b/node/expr/t_short_array_test.go @@ -47,8 +47,7 @@ func TestShortArrayItem(t *testing.T) { Expr: &expr.ShortArray{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Val: &scalar.Lnumber{Value: "1"}, + Val: &scalar.Lnumber{Value: "1"}, }, }, }, @@ -76,13 +75,11 @@ func TestShortArrayItems(t *testing.T) { Expr: &expr.ShortArray{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Key: &scalar.Lnumber{Value: "1"}, - Val: &scalar.Lnumber{Value: "1"}, + Key: &scalar.Lnumber{Value: "1"}, + Val: &scalar.Lnumber{Value: "1"}, }, &expr.ArrayItem{ - ByRef: true, - Val: &expr.Variable{VarName: &node.Identifier{Value: "b"}}, + Val: &expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, }, }, }, diff --git a/node/expr/t_short_list_test.go b/node/expr/t_short_list_test.go index 3a1a95e..9492ef9 100644 --- a/node/expr/t_short_list_test.go +++ b/node/expr/t_short_list_test.go @@ -23,8 +23,7 @@ func TestShortList(t *testing.T) { Variable: &expr.ShortList{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Val: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + Val: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, }, }, }, @@ -50,7 +49,6 @@ func TestShortListArrayIndex(t *testing.T) { Variable: &expr.ShortList{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, Val: &expr.ArrayDimFetch{ Variable: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, }, @@ -79,12 +77,10 @@ func TestShortListList(t *testing.T) { Variable: &expr.ShortList{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, Val: &expr.List{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Val: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + Val: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, }, }, }, diff --git a/node/expr/t_visitor_test.go b/node/expr/t_visitor_test.go index 1434ee7..28409ac 100644 --- a/node/expr/t_visitor_test.go +++ b/node/expr/t_visitor_test.go @@ -32,20 +32,18 @@ var nodesToTest = []struct { }, { &expr.ArrayItem{ - ByRef: false, - Key: &scalar.String{Value: "key"}, - Val: &scalar.Lnumber{Value: "1"}, + Key: &scalar.String{Value: "key"}, + Val: &scalar.Lnumber{Value: "1"}, }, []string{"Key", "Val"}, - map[string]interface{}{"ByRef": false}, + map[string]interface{}{}, }, { &expr.Array{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Key: &scalar.String{Value: "key"}, - Val: &scalar.Lnumber{Value: "1"}, + Key: &scalar.String{Value: "key"}, + Val: &scalar.Lnumber{Value: "1"}, }, }, }, @@ -83,11 +81,10 @@ var nodesToTest = []struct { }, { &expr.ClosureUse{ - ByRef: false, Variable: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, }, []string{"Variable"}, - map[string]interface{}{"ByRef": false}, + map[string]interface{}{}, }, { &expr.Closure{ @@ -252,6 +249,13 @@ var nodesToTest = []struct { []string{"Variable", "Property"}, map[string]interface{}{}, }, + { + &expr.Reference{ + Variable: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + }, + []string{"Variable"}, + map[string]interface{}{}, + }, { &expr.RequireOnce{ Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, diff --git a/node/stmt/n_alt_foreach.go b/node/stmt/n_alt_foreach.go index 950445a..deaa4c4 100644 --- a/node/stmt/n_alt_foreach.go +++ b/node/stmt/n_alt_foreach.go @@ -7,7 +7,6 @@ import ( // AltForeach node type AltForeach struct { - ByRef bool Expr node.Node Key node.Node Variable node.Node @@ -15,9 +14,8 @@ type AltForeach struct { } // NewAltForeach node constructor -func NewAltForeach(Expr node.Node, Key node.Node, Variable node.Node, Stmt node.Node, ByRef bool) *AltForeach { +func NewAltForeach(Expr node.Node, Key node.Node, Variable node.Node, Stmt node.Node) *AltForeach { return &AltForeach{ - ByRef, Expr, Key, Variable, @@ -27,9 +25,7 @@ func NewAltForeach(Expr node.Node, Key node.Node, Variable node.Node, Stmt node. // Attributes returns node attributes as map func (n *AltForeach) Attributes() map[string]interface{} { - return map[string]interface{}{ - "ByRef": n.ByRef, - } + return nil } // Walk traverses nodes diff --git a/node/stmt/n_foreach.go b/node/stmt/n_foreach.go index 2ae2c48..b82d2f5 100644 --- a/node/stmt/n_foreach.go +++ b/node/stmt/n_foreach.go @@ -7,7 +7,6 @@ import ( // Foreach node type Foreach struct { - ByRef bool Expr node.Node Key node.Node Variable node.Node @@ -15,9 +14,8 @@ type Foreach struct { } // NewForeach node constructor -func NewForeach(Expr node.Node, Key node.Node, Variable node.Node, Stmt node.Node, ByRef bool) *Foreach { +func NewForeach(Expr node.Node, Key node.Node, Variable node.Node, Stmt node.Node) *Foreach { return &Foreach{ - ByRef, Expr, Key, Variable, @@ -27,9 +25,7 @@ func NewForeach(Expr node.Node, Key node.Node, Variable node.Node, Stmt node.Nod // Attributes returns node attributes as map func (n *Foreach) Attributes() map[string]interface{} { - return map[string]interface{}{ - "ByRef": n.ByRef, - } + return nil } // Walk traverses nodes diff --git a/node/stmt/t_foreach_test.go b/node/stmt/t_foreach_test.go index ca20890..80479dd 100644 --- a/node/stmt/t_foreach_test.go +++ b/node/stmt/t_foreach_test.go @@ -140,10 +140,9 @@ func TestForeachWithRef(t *testing.T) { expected := &node.Root{ Stmts: []node.Node{ &stmt.Foreach{ - ByRef: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, Key: &expr.Variable{VarName: &node.Identifier{Value: "k"}}, - Variable: &expr.Variable{VarName: &node.Identifier{Value: "v"}}, + Variable: &expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "v"}}}, Stmt: &stmt.StmtList{Stmts: []node.Node{}}, }, }, @@ -166,14 +165,12 @@ func TestForeachWithList(t *testing.T) { expected := &node.Root{ Stmts: []node.Node{ &stmt.Foreach{ - ByRef: false, - Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, - Key: &expr.Variable{VarName: &node.Identifier{Value: "k"}}, + Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + Key: &expr.Variable{VarName: &node.Identifier{Value: "k"}}, Variable: &expr.List{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Val: &expr.Variable{VarName: &node.Identifier{Value: "v"}}, + Val: &expr.Variable{VarName: &node.Identifier{Value: "v"}}, }, }, }, diff --git a/node/stmt/t_visitor_test.go b/node/stmt/t_visitor_test.go index f8f5c84..7527dab 100644 --- a/node/stmt/t_visitor_test.go +++ b/node/stmt/t_visitor_test.go @@ -224,25 +224,23 @@ var nodesToTest = []struct { }, { &stmt.Foreach{ - ByRef: true, Expr: &stmt.Expression{}, Key: &expr.Variable{}, Variable: &expr.Variable{}, Stmt: &stmt.StmtList{}, }, []string{"Expr", "Key", "Variable", "Stmt"}, - map[string]interface{}{"ByRef": true}, + map[string]interface{}{}, }, { &stmt.AltForeach{ - ByRef: true, Expr: &stmt.Expression{}, Key: &expr.Variable{}, Variable: &expr.Variable{}, Stmt: &stmt.StmtList{}, }, []string{"Expr", "Key", "Variable", "Stmt"}, - map[string]interface{}{"ByRef": true}, + map[string]interface{}{}, }, { &stmt.Function{ diff --git a/php5/php5.go b/php5/php5.go index 916f894..9fe75aa 100644 --- a/php5/php5.go +++ b/php5/php5.go @@ -25,7 +25,6 @@ type yySymType struct { node node.Node token *scanner.Token list []node.Node - foreachVariable foreachVariable simpleIndirectReference simpleIndirectReference ClassExtends *stmt.ClassExtends @@ -347,11 +346,6 @@ const yyInitialStackSize = 16 //line php5/php5.y:4015 -type foreachVariable struct { - node node.Node - byRef bool -} - type simpleIndirectReference struct { all []*expr.Variable last *expr.Variable @@ -1624,41 +1618,41 @@ var yyPgo = [...]int{ 73, 68, 61, 1068, 1067, 1066, 35, 1065, 1063, 4, 1062, 1061, 1060, 17, 1059, 1058, 1057, 1056, 51, 5, 1055, 1054, 1053, 1051, 1049, 2, 1048, 631, 1047, 18, - 22, 1046, 1045, 1043, 15, 1042, 1041, 1040, 1037, 1033, - 39, 0, 1032, 1030, 1029, 117, 1028, 1027, 553, 1026, - 1024, 42, 8, 1018, 9, 1017, 1013, 1007, 14, 49, - 1001, 1000, 998, 995, 993, 992, 3, 991, 16, 990, - 988, 985, 28, 983, 982, 980, 976, 974, 971, 962, - 21, 961, 959, 958, 25, 955, 23, 12, 953, 40, - 945, 939, 937, 933, 41, 6, 19, 13, 930, 853, + 22, 1046, 1045, 1043, 15, 1042, 1041, 6, 19, 1040, + 1037, 1033, 39, 0, 1032, 1030, 1029, 117, 1028, 1027, + 553, 1026, 1024, 42, 8, 1018, 9, 1017, 1013, 1007, + 14, 49, 1001, 1000, 998, 995, 993, 992, 3, 991, + 16, 990, 988, 985, 28, 983, 982, 980, 976, 974, + 971, 962, 21, 961, 959, 958, 25, 955, 23, 12, + 953, 40, 945, 939, 937, 933, 41, 13, 930, 853, 7, 20, } var yyR1 = [...]int{ - 0, 149, 90, 90, 91, 91, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 92, 92, - 4, 4, 4, 4, 93, 93, 5, 5, 5, 5, - 94, 94, 6, 6, 6, 6, 53, 53, 95, 95, + 0, 149, 92, 92, 93, 93, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 94, 94, + 4, 4, 4, 4, 95, 95, 5, 5, 5, 5, + 96, 96, 6, 6, 6, 6, 53, 53, 97, 97, 24, 24, 24, 24, 24, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 113, 113, 58, 58, 114, - 114, 115, 115, 59, 111, 111, 56, 51, 52, 147, + 26, 26, 26, 26, 26, 115, 115, 58, 58, 116, + 116, 117, 117, 59, 113, 113, 56, 51, 52, 147, 147, 148, 148, 60, 61, 61, 64, 64, 64, 64, - 87, 87, 2, 89, 89, 88, 88, 122, 122, 146, - 146, 145, 145, 145, 85, 85, 84, 84, 57, 57, - 112, 112, 82, 82, 82, 82, 109, 109, 109, 150, - 150, 86, 86, 105, 105, 106, 106, 54, 54, 55, - 55, 116, 116, 117, 117, 63, 63, 62, 62, 62, - 62, 80, 80, 80, 123, 123, 68, 68, 68, 68, - 96, 96, 27, 27, 27, 97, 97, 97, 97, 118, - 118, 65, 65, 65, 65, 67, 124, 124, 81, 81, - 125, 125, 126, 126, 69, 69, 70, 127, 127, 73, - 73, 72, 71, 71, 74, 74, 83, 83, 119, 119, - 120, 120, 128, 128, 75, 75, 75, 75, 75, 75, - 121, 121, 121, 121, 66, 66, 110, 110, 108, 108, - 107, 107, 134, 134, 132, 132, 133, 133, 133, 135, - 135, 42, 15, 15, 15, 15, 15, 15, 15, 15, + 89, 89, 2, 91, 91, 90, 90, 124, 124, 88, + 88, 87, 87, 87, 85, 85, 84, 84, 57, 57, + 114, 114, 82, 82, 82, 82, 111, 111, 111, 150, + 150, 86, 86, 107, 107, 108, 108, 54, 54, 55, + 55, 118, 118, 119, 119, 63, 63, 62, 62, 62, + 62, 80, 80, 80, 125, 125, 68, 68, 68, 68, + 98, 98, 27, 27, 27, 99, 99, 99, 99, 120, + 120, 65, 65, 65, 65, 67, 126, 126, 81, 81, + 127, 127, 128, 128, 69, 69, 70, 129, 129, 73, + 73, 72, 71, 71, 74, 74, 83, 83, 121, 121, + 122, 122, 130, 130, 75, 75, 75, 75, 75, 75, + 123, 123, 123, 123, 66, 66, 112, 112, 110, 110, + 109, 109, 136, 136, 134, 134, 135, 135, 135, 137, + 137, 42, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, @@ -1666,27 +1660,27 @@ var yyR1 = [...]int{ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 50, 50, 50, 50, - 47, 47, 47, 47, 46, 46, 1, 104, 104, 103, - 103, 103, 103, 23, 23, 23, 23, 23, 23, 23, + 47, 47, 47, 47, 46, 46, 1, 106, 106, 105, + 105, 105, 105, 23, 23, 23, 23, 23, 23, 23, 23, 11, 11, 11, 11, 45, 45, 45, 43, 43, - 41, 41, 142, 142, 141, 49, 49, 49, 129, 129, - 129, 79, 79, 7, 7, 7, 7, 7, 7, 7, + 41, 41, 144, 144, 143, 49, 49, 49, 131, 131, + 131, 79, 79, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 28, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 35, 35, 35, 35, 29, 29, 29, 29, 29, 29, - 29, 130, 130, 151, 151, 131, 131, 131, 131, 14, - 14, 48, 48, 16, 17, 18, 19, 19, 143, 143, - 136, 138, 138, 76, 137, 137, 137, 40, 40, 44, + 29, 132, 132, 151, 151, 133, 133, 133, 133, 14, + 14, 48, 48, 16, 17, 18, 19, 19, 145, 145, + 138, 140, 140, 76, 139, 139, 139, 40, 40, 44, 44, 12, 22, 22, 20, 20, 20, 21, 21, 21, - 10, 10, 10, 9, 9, 13, 13, 139, 139, 140, - 140, 140, 39, 39, 144, 144, 102, 102, 38, 38, - 38, 101, 101, 100, 100, 100, 100, 100, 100, 100, - 100, 98, 98, 98, 98, 33, 33, 33, 33, 33, + 10, 10, 10, 9, 9, 13, 13, 141, 141, 142, + 142, 142, 39, 39, 146, 146, 104, 104, 38, 38, + 38, 103, 103, 102, 102, 102, 102, 102, 102, 102, + 102, 100, 100, 100, 100, 33, 33, 33, 33, 33, 33, 34, 34, 34, 37, 37, 37, 37, 37, 37, - 37, 37, 99, 99, 36, 36, 30, 30, 31, 32, + 37, 37, 101, 101, 36, 36, 30, 30, 31, 32, } var yyR2 = [...]int{ @@ -1745,7 +1739,7 @@ var yyR2 = [...]int{ } var yyChk = [...]int{ - -1000, -149, -90, -3, 2, -25, -51, -52, 51, 79, + -1000, -149, -92, -3, 2, -25, -51, -52, 51, 79, 44, -53, -26, 10, -60, -61, 38, 142, 7, 21, 20, 23, 30, 34, 35, 39, -50, 46, 98, 19, 14, -14, 48, 25, 27, 144, 40, 43, 36, -1, @@ -1755,99 +1749,99 @@ var yyChk = [...]int{ 112, 113, 6, 156, -29, -47, -46, 141, 96, -20, 91, 49, 50, 4, 5, 84, 85, 86, 11, -35, -32, -7, 140, 74, 62, 18, 60, 148, -21, -22, - -23, -30, -91, 82, -11, 8, 9, 66, 67, 81, - 63, 64, 65, 80, -10, -144, -44, -12, -40, -9, - 157, 12, 146, -91, 142, 82, 10, -92, 37, 38, - -4, -91, 82, 144, 158, 145, 10, -95, -48, 146, + -23, -30, -93, 82, -11, 8, 9, 66, 67, 81, + 63, 64, 65, 80, -10, -146, -44, -12, -40, -9, + 157, 12, 146, -93, 142, 82, 10, -94, 37, 38, + -4, -93, 82, 144, 158, 145, 10, -97, -48, 146, -48, -25, -1, 79, 146, -48, 144, -14, 97, 98, - 144, -14, 144, -15, -19, -14, 144, -96, -27, 12, - 157, -97, -1, 12, -110, -14, 144, 129, 130, 87, + 144, -14, 144, -15, -19, -14, 144, -98, -27, 12, + 157, -99, -1, 12, -112, -14, 144, 129, 130, 87, 89, 88, 159, 151, 161, 167, 153, 152, 162, 131, 163, 164, 132, 133, 134, 135, 136, 137, 165, 138, 166, 139, 90, 150, 146, 146, 146, 142, -14, 10, -147, 151, 10, 10, -15, -19, -14, 52, 52, 160, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 146, -14, 104, 105, -18, -19, -91, 79, + 127, 128, 146, -14, 104, 105, -18, -19, -93, 79, 82, -11, -12, 98, -18, -14, -14, -14, -14, -42, -14, -50, -14, -14, -14, -14, -14, -14, -14, -49, - 146, -48, -14, 148, 148, -129, 17, -98, -33, 12, - 76, 77, -14, 57, -43, -11, -41, -91, 79, 82, - -21, -10, -144, -12, 146, 146, -14, -14, 146, -14, - -14, 148, -98, 17, 17, 75, -98, 148, 146, -101, - -100, -14, 151, 148, 148, 82, -80, 146, -91, 78, + 146, -48, -14, 148, 148, -131, 17, -100, -33, 12, + 76, 77, -14, 57, -43, -11, -41, -93, 79, 82, + -21, -10, -146, -12, 146, 146, -14, -14, 146, -14, + -14, 148, -100, 17, 17, 75, -100, 148, 146, -103, + -102, -14, 151, 148, 148, 82, -80, 146, -93, 78, 148, 142, -10, 157, 78, -80, 142, 147, 144, 142, - -90, -91, 144, 158, -93, -5, -91, 82, -94, -6, - -91, 82, 29, -91, 10, 160, -24, 143, 2, -25, + -92, -93, 144, 158, -95, -5, -93, 82, -96, -6, + -93, 82, 29, -93, 10, 160, -24, 143, 2, -25, -51, -52, 51, -25, 145, -86, -25, 145, 21, -147, - -108, -107, -14, -82, 142, 145, 144, 144, 144, 144, + -110, -109, -14, -82, 142, 145, 144, 144, 144, 144, 144, 158, -16, 142, -19, 144, 158, -147, 160, 144, 158, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, - -14, -14, -14, -14, -14, -14, -43, -14, 145, -111, - -56, -19, -19, -15, -112, 10, -95, 144, 144, 10, - 146, -87, 55, -89, 55, 58, -14, 151, -14, -14, + -14, -14, -14, -14, -14, -14, -43, -14, 145, -113, + -56, -19, -19, -15, -114, 10, -97, 144, 144, 10, + 146, -89, 55, -91, 55, 58, -14, 151, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, - -102, -38, -19, 59, 82, -91, 78, 78, 147, 147, + -104, -38, -19, 59, 82, -93, 78, 78, 147, 147, 147, 147, -13, -14, -13, 141, -33, -33, 17, 148, - 57, -14, 11, -19, -139, -140, -40, -39, -10, -144, - 10, 142, -79, -80, 78, 82, -91, 57, -10, 78, - -99, -36, -19, -15, -19, -15, -14, -13, 140, 75, - 75, -13, -101, 149, -151, 158, 58, -17, -19, -13, - -13, 10, 147, -123, -50, -68, -15, -19, 151, 83, + 57, -14, 11, -19, -141, -142, -40, -39, -10, -146, + 10, 142, -79, -80, 78, 82, -93, 57, -10, 78, + -101, -36, -19, -15, -19, -15, -14, -13, 140, 75, + 75, -13, -103, 149, -151, 158, 58, -17, -19, -13, + -13, 10, 147, -125, -50, -68, -15, -19, 151, 83, -80, -39, -40, 10, 52, -13, -14, -39, -40, 10, - -14, 144, -90, 143, -80, -4, 144, 158, 29, -91, - 144, 158, 29, -91, 10, 29, 160, -28, -77, -7, - -31, -91, 79, 82, 60, 148, -8, 62, -78, 18, - 74, -11, 154, 155, 153, 152, 146, 146, -105, -95, - -95, -48, 144, 158, -109, 144, -109, 144, -27, -14, + -14, 144, -92, 143, -80, -4, 144, 158, 29, -93, + 144, 158, 29, -93, 10, 29, 160, -28, -77, -7, + -31, -93, 79, 82, 60, 148, -8, 62, -78, 18, + 74, -11, 154, 155, 153, 152, 146, 146, -107, -97, + -97, -48, 144, 158, -111, 144, -111, 144, -27, -14, 12, 146, -28, -14, 145, -14, 147, 158, 29, 29, - 147, 158, 160, 143, 146, -116, -117, -63, -62, 60, - 61, -45, -91, 79, 82, -88, 56, -45, 142, -122, - -45, -15, -19, -19, 91, 147, 158, 146, -91, -135, - -133, -132, -134, 148, -136, 57, 149, 149, -34, 10, - 13, 12, 10, 143, 148, 143, -137, -76, -138, -80, - 148, 142, -10, -14, -40, -91, -139, -40, 147, 158, + 147, 158, 160, 143, 146, -118, -119, -63, -62, 60, + 61, -45, -93, 79, 82, -90, 56, -45, 142, -124, + -45, -15, -19, -19, 91, 147, 158, 146, -93, -137, + -135, -134, -136, 148, -138, 57, 149, 149, -34, 10, + 13, 12, 10, 143, 148, 143, -139, -76, -140, -80, + 148, 142, -10, -14, -40, -93, -141, -40, 147, 158, 147, 147, 147, 149, 149, 147, -14, 151, -14, 151, 149, 149, 147, 158, 147, -17, -14, -80, -80, 149, 143, -80, -80, 143, 143, -5, 10, 29, -6, 10, 29, 10, -28, 148, 153, 152, 162, 131, 163, 164, 159, 151, 161, 132, 133, 167, 88, 89, 87, 130, 129, 134, 135, 136, 137, 165, 166, 138, 139, 150, - 82, -91, 146, -130, -131, -77, 17, 78, -77, -77, - -77, -77, -77, 147, -54, 93, 94, -106, 22, 144, - -108, -14, 143, 32, 33, -109, 31, -109, 143, 160, - -116, -14, 144, -56, -145, -19, 151, 59, -145, -57, - -25, 145, 10, -28, -113, 41, -116, 147, 158, -147, - 82, -91, 142, -122, -118, 158, -43, 160, -38, -102, - 148, -134, -136, -13, -139, 149, -14, -143, 148, 148, - -13, -14, 143, -142, -36, 58, -17, -17, -68, 10, + 82, -93, 146, -132, -133, -77, 17, 78, -77, -77, + -77, -77, -77, 147, -54, 93, 94, -108, 22, 144, + -110, -14, 143, 32, 33, -111, 31, -111, 143, 160, + -118, -14, 144, -56, -87, -19, 151, 59, -87, -57, + -25, 145, 10, -28, -115, 41, -118, 147, 158, -147, + 82, -93, 142, -124, -120, 158, -43, 160, -38, -104, + 148, -136, -138, -13, -141, 149, -14, -145, 148, 148, + -13, -14, 143, -144, -36, 58, -17, -17, -68, 10, 10, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77, - -77, -77, -77, -77, -77, -77, -77, 145, -77, -91, - -130, 149, -151, 158, 58, 10, 52, 147, 144, -48, + -77, -77, -77, -77, -77, -77, -77, 145, -77, -93, + -132, 149, -151, 158, 58, 10, 52, 147, 144, -48, -25, -55, 93, 94, 144, 144, -14, -150, 145, 144, - 143, 144, 31, -28, 147, -146, 58, -19, 146, -146, - -95, 160, -58, 42, 146, 147, -104, 44, -63, -148, - 83, -91, -118, 143, -65, -119, -66, -67, -120, -128, + 143, 144, 31, -28, 147, -88, 58, -19, 146, -88, + -97, 160, -58, 42, 146, 147, -106, 44, -63, -148, + 83, -93, -120, 143, -65, -121, -66, -67, -122, -130, 47, 38, 44, -75, 103, 102, 101, 98, 99, 100, - -45, -79, -14, 147, -13, 149, -137, 149, -136, -13, - -13, 149, 143, -141, 57, -14, 151, 149, -77, 145, - 147, -77, -77, -25, 95, -48, 145, -108, -150, -95, - 144, -104, 147, -145, -102, 147, 28, -28, 142, -45, - 142, 142, 146, 12, 143, -121, 12, 144, 158, -1, - -75, 10, -124, -45, 149, 143, 149, 149, -139, -17, - -77, 58, 144, 145, -95, 147, -95, 142, -84, -25, - 145, 147, -84, 144, -95, 12, -95, -95, -103, 12, + -45, -79, -14, 147, -13, 149, -139, 149, -138, -13, + -13, 149, 143, -143, 57, -14, 151, 149, -77, 145, + 147, -77, -77, -25, 95, -48, 145, -110, -150, -97, + 144, -106, 147, -87, -104, 147, 28, -28, 142, -45, + 142, 142, 146, 12, 143, -123, 12, 144, 158, -1, + -75, 10, -126, -45, 149, 143, 149, 149, -141, -17, + -77, 58, 144, 145, -97, 147, -97, 142, -84, -25, + 145, 147, -84, 144, -97, 12, -97, -97, -105, 12, 151, 160, 144, 158, 160, 10, -147, 160, -81, 158, - 144, 142, -77, -95, -85, -25, 145, -95, -95, 143, + 144, 142, -77, -97, -85, -25, 145, -97, -97, 143, 147, 143, 143, 147, 158, 12, -28, 12, -28, 160, - 10, -28, -45, -125, -126, -69, -70, -71, -72, -73, - -45, 10, -95, 143, 26, 142, 12, 151, 160, -28, + 10, -28, -45, -127, -128, -69, -70, -71, -72, -73, + -45, 10, -97, 143, 26, 142, 12, 151, 160, -28, 146, 143, -69, 144, 144, 45, 29, 78, 24, 144, - -95, 12, -28, -116, -127, -45, -74, -75, 10, 144, - 143, 147, 158, 10, -114, -115, -59, 41, -83, 144, - 142, -45, -59, 146, -95, -45, 143, 12, 147, 142, - -95, 143, + -97, 12, -28, -118, -129, -45, -74, -75, 10, 144, + 143, 147, 158, 10, -116, -117, -59, 41, -83, 144, + 142, -45, -59, 146, -97, -45, 143, 12, 147, 142, + -97, 143, } var yyDef = [...]int{ @@ -2983,29 +2977,25 @@ yydefault: yyDollar = yyS[yypt-8 : yypt+1] //line php5/php5.y:803 { - if yyDollar[6].foreachVariable.node == nil { + if yyDollar[6].node == nil { switch n := yyDollar[8].node.(type) { case *stmt.Foreach: n.Expr = yyDollar[3].node - n.ByRef = yyDollar[5].foreachVariable.byRef - n.Variable = yyDollar[5].foreachVariable.node + n.Variable = yyDollar[5].node case *stmt.AltForeach: n.Expr = yyDollar[3].node - n.ByRef = yyDollar[5].foreachVariable.byRef - n.Variable = yyDollar[5].foreachVariable.node + n.Variable = yyDollar[5].node } } else { switch n := yyDollar[8].node.(type) { case *stmt.Foreach: n.Expr = yyDollar[3].node - n.Key = yyDollar[5].foreachVariable.node - n.ByRef = yyDollar[6].foreachVariable.byRef - n.Variable = yyDollar[6].foreachVariable.node + n.Key = yyDollar[5].node + n.Variable = yyDollar[6].node case *stmt.AltForeach: n.Expr = yyDollar[3].node - n.Key = yyDollar[5].foreachVariable.node - n.ByRef = yyDollar[6].foreachVariable.byRef - n.Variable = yyDollar[6].foreachVariable.node + n.Key = yyDollar[5].node + n.Variable = yyDollar[6].node } } @@ -3016,31 +3006,27 @@ yydefault: } case 69: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:836 + //line php5/php5.y:832 { - if yyDollar[6].foreachVariable.node == nil { + if yyDollar[6].node == nil { switch n := yyDollar[8].node.(type) { case *stmt.Foreach: n.Expr = yyDollar[3].node - n.ByRef = yyDollar[5].foreachVariable.byRef - n.Variable = yyDollar[5].foreachVariable.node + n.Variable = yyDollar[5].node case *stmt.AltForeach: n.Expr = yyDollar[3].node - n.ByRef = yyDollar[5].foreachVariable.byRef - n.Variable = yyDollar[5].foreachVariable.node + n.Variable = yyDollar[5].node } } else { switch n := yyDollar[8].node.(type) { case *stmt.Foreach: n.Expr = yyDollar[3].node - n.Key = yyDollar[5].foreachVariable.node - n.ByRef = yyDollar[6].foreachVariable.byRef - n.Variable = yyDollar[6].foreachVariable.node + n.Key = yyDollar[5].node + n.Variable = yyDollar[6].node case *stmt.AltForeach: n.Expr = yyDollar[3].node - n.Key = yyDollar[5].foreachVariable.node - n.ByRef = yyDollar[6].foreachVariable.byRef - n.Variable = yyDollar[6].foreachVariable.node + n.Key = yyDollar[5].node + n.Variable = yyDollar[6].node } } @@ -3051,7 +3037,7 @@ yydefault: } case 70: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:869 + //line php5/php5.y:861 { yyVAL.node = stmt.NewDeclare(yyDollar[3].list, yyDollar[5].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[5].node)) @@ -3059,7 +3045,7 @@ yydefault: } case 71: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:875 + //line php5/php5.y:867 { yyVAL.node = stmt.NewNop() yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3067,7 +3053,7 @@ yydefault: } case 72: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:881 + //line php5/php5.y:873 { yyVAL.node = stmt.NewTry(yyDollar[3].list, yyDollar[5].list, yyDollar[6].node) @@ -3081,7 +3067,7 @@ yydefault: } case 73: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:893 + //line php5/php5.y:885 { yyVAL.node = stmt.NewThrow(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -3089,7 +3075,7 @@ yydefault: } case 74: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:899 + //line php5/php5.y:891 { label := node.NewIdentifier(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(label, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -3101,13 +3087,13 @@ yydefault: } case 75: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:912 + //line php5/php5.y:904 { yyVAL.list = []node.Node{} } case 76: yyDollar = yyS[yypt-9 : yypt+1] - //line php5/php5.y:914 + //line php5/php5.y:906 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -3125,13 +3111,13 @@ yydefault: } case 77: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:932 + //line php5/php5.y:924 { yyVAL.node = nil } case 78: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:934 + //line php5/php5.y:926 { yyVAL.node = stmt.NewFinally(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -3139,31 +3125,31 @@ yydefault: } case 79: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:943 + //line php5/php5.y:935 { yyVAL.list = yyDollar[1].list } case 80: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:945 + //line php5/php5.y:937 { yyVAL.list = []node.Node{} } case 81: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:950 + //line php5/php5.y:942 { yyVAL.list = []node.Node{yyDollar[1].node} } case 82: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:952 + //line php5/php5.y:944 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 83: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:957 + //line php5/php5.y:949 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -3179,61 +3165,61 @@ yydefault: } case 84: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:974 + //line php5/php5.y:966 { yyVAL.list = []node.Node{yyDollar[1].node} } case 85: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:976 + //line php5/php5.y:968 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 86: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:981 + //line php5/php5.y:973 { yyVAL.node = yyDollar[1].node } case 87: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:986 + //line php5/php5.y:978 { yyVAL.node = yyDollar[1].node } case 88: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:991 + //line php5/php5.y:983 { yyVAL.node = yyDollar[1].node } case 89: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:996 + //line php5/php5.y:988 { yyVAL.token = nil } case 90: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:998 + //line php5/php5.y:990 { yyVAL.token = yyDollar[1].token } case 91: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1003 + //line php5/php5.y:995 { yyVAL.token = nil } case 92: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1005 + //line php5/php5.y:997 { yyVAL.token = yyDollar[1].token } case 93: yyDollar = yyS[yypt-9 : yypt+1] - //line php5/php5.y:1010 + //line php5/php5.y:1002 { name := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -3245,7 +3231,7 @@ yydefault: } case 94: yyDollar = yyS[yypt-7 : yypt+1] - //line php5/php5.y:1023 + //line php5/php5.y:1015 { switch n := yyDollar[1].node.(type) { case *stmt.Class: @@ -3268,7 +3254,7 @@ yydefault: } case 95: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:1044 + //line php5/php5.y:1036 { name := node.NewIdentifier(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -3280,7 +3266,7 @@ yydefault: } case 96: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1058 + //line php5/php5.y:1050 { yyVAL.node = stmt.NewClass(nil, nil, nil, nil, nil, nil, "") yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3288,7 +3274,7 @@ yydefault: } case 97: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1064 + //line php5/php5.y:1056 { classModifier := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(classModifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3300,7 +3286,7 @@ yydefault: } case 98: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1074 + //line php5/php5.y:1066 { yyVAL.node = stmt.NewTrait(nil, nil, "") yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3308,7 +3294,7 @@ yydefault: } case 99: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1080 + //line php5/php5.y:1072 { classModifier := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(classModifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3320,13 +3306,13 @@ yydefault: } case 100: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1093 + //line php5/php5.y:1085 { yyVAL.ClassExtends = nil } case 101: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1095 + //line php5/php5.y:1087 { yyVAL.ClassExtends = stmt.NewClassExtends(yyDollar[2].node) @@ -3335,19 +3321,19 @@ yydefault: } case 102: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1105 + //line php5/php5.y:1097 { yyVAL.token = yyDollar[1].token } case 103: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1110 + //line php5/php5.y:1102 { yyVAL.InterfaceExtends = nil } case 104: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1112 + //line php5/php5.y:1104 { yyVAL.InterfaceExtends = stmt.NewInterfaceExtends(yyDollar[2].list) @@ -3356,13 +3342,13 @@ yydefault: } case 105: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1122 + //line php5/php5.y:1114 { yyVAL.ClassImplements = nil } case 106: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1124 + //line php5/php5.y:1116 { yyVAL.ClassImplements = stmt.NewClassImplements(yyDollar[2].list) @@ -3371,59 +3357,59 @@ yydefault: } case 107: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1134 + //line php5/php5.y:1126 { yyVAL.list = []node.Node{yyDollar[1].node} } case 108: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1136 + //line php5/php5.y:1128 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 109: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1141 + //line php5/php5.y:1133 { - yyVAL.foreachVariable = foreachVariable{nil, false} + yyVAL.node = nil } case 110: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1143 + //line php5/php5.y:1135 { - yyVAL.foreachVariable = yyDollar[2].foreachVariable + yyVAL.node = yyDollar[2].node } case 111: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1148 + //line php5/php5.y:1140 { - yyVAL.foreachVariable = foreachVariable{yyDollar[1].node, false} + yyVAL.node = yyDollar[1].node } case 112: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1150 + //line php5/php5.y:1142 { - yyVAL.foreachVariable = foreachVariable{yyDollar[2].node, true} + yyVAL.node = expr.NewReference(yyDollar[2].node) } case 113: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1152 + //line php5/php5.y:1144 { list := expr.NewList(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) - yyVAL.foreachVariable = foreachVariable{list, false} + yyVAL.node = list yylex.(*Parser).comments.AddComments(list, yyDollar[1].token.Comments()) } case 114: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1162 + //line php5/php5.y:1154 { yyVAL.node = stmt.NewFor(nil, nil, nil, yyDollar[1].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) } case 115: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1167 + //line php5/php5.y:1159 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltFor(nil, nil, nil, stmtList) @@ -3433,30 +3419,30 @@ yydefault: } case 116: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1179 + //line php5/php5.y:1171 { - yyVAL.node = stmt.NewForeach(nil, nil, nil, yyDollar[1].node, false) + yyVAL.node = stmt.NewForeach(nil, nil, nil, yyDollar[1].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) } case 117: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1184 + //line php5/php5.y:1176 { stmtList := stmt.NewStmtList(yyDollar[2].list) - yyVAL.node = stmt.NewAltForeach(nil, nil, nil, stmtList, false) + yyVAL.node = stmt.NewAltForeach(nil, nil, nil, stmtList) yylex.(*Parser).positions.AddPosition(stmtList, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) } case 118: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1196 + //line php5/php5.y:1188 { yyVAL.node = yyDollar[1].node } case 119: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1198 + //line php5/php5.y:1190 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -3464,7 +3450,7 @@ yydefault: } case 120: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1208 + //line php5/php5.y:1200 { name := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3478,7 +3464,7 @@ yydefault: } case 121: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1220 + //line php5/php5.y:1212 { name := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -3492,7 +3478,7 @@ yydefault: } case 122: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1236 + //line php5/php5.y:1228 { caseList := stmt.NewCaseList(yyDollar[2].list) yyVAL.node = stmt.NewSwitch(nil, caseList) @@ -3502,7 +3488,7 @@ yydefault: } case 123: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1244 + //line php5/php5.y:1236 { caseList := stmt.NewCaseList(yyDollar[3].list) yyVAL.node = stmt.NewSwitch(nil, caseList) @@ -3512,7 +3498,7 @@ yydefault: } case 124: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1252 + //line php5/php5.y:1244 { caseList := stmt.NewCaseList(yyDollar[2].list) yyVAL.node = stmt.NewAltSwitch(nil, caseList) @@ -3522,7 +3508,7 @@ yydefault: } case 125: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1260 + //line php5/php5.y:1252 { caseList := stmt.NewCaseList(yyDollar[3].list) @@ -3533,13 +3519,13 @@ yydefault: } case 126: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1273 + //line php5/php5.y:1265 { yyVAL.list = []node.Node{} } case 127: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1275 + //line php5/php5.y:1267 { _case := stmt.NewCase(yyDollar[3].node, yyDollar[5].list) yylex.(*Parser).positions.AddPosition(_case, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[2].token, yyDollar[5].list)) @@ -3548,7 +3534,7 @@ yydefault: } case 128: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1282 + //line php5/php5.y:1274 { _default := stmt.NewDefault(yyDollar[4].list) yylex.(*Parser).positions.AddPosition(_default, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[2].token, yyDollar[4].list)) @@ -3557,14 +3543,14 @@ yydefault: } case 131: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1299 + //line php5/php5.y:1291 { yyVAL.node = stmt.NewWhile(nil, yyDollar[1].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) } case 132: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1304 + //line php5/php5.y:1296 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltWhile(nil, stmtList) @@ -3574,13 +3560,13 @@ yydefault: } case 133: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1317 + //line php5/php5.y:1309 { yyVAL.list = nil } case 134: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1319 + //line php5/php5.y:1311 { _elseIf := stmt.NewElseIf(yyDollar[3].node, yyDollar[4].node) yylex.(*Parser).positions.AddPosition(_elseIf, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[2].token, yyDollar[4].node)) @@ -3590,13 +3576,13 @@ yydefault: } case 135: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1331 + //line php5/php5.y:1323 { yyVAL.list = nil } case 136: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1333 + //line php5/php5.y:1325 { stmts := stmt.NewStmtList(yyDollar[5].list) yylex.(*Parser).positions.AddPosition(stmts, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[5].list)) @@ -3609,13 +3595,13 @@ yydefault: } case 137: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1348 + //line php5/php5.y:1340 { yyVAL.node = nil } case 138: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1350 + //line php5/php5.y:1342 { yyVAL.node = stmt.NewElse(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -3623,13 +3609,13 @@ yydefault: } case 139: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1360 + //line php5/php5.y:1352 { yyVAL.node = nil } case 140: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1362 + //line php5/php5.y:1354 { stmts := stmt.NewStmtList(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(stmts, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[3].list)) @@ -3640,31 +3626,31 @@ yydefault: } case 141: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1375 + //line php5/php5.y:1367 { yyVAL.list = yyDollar[1].list } case 142: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1377 + //line php5/php5.y:1369 { yyVAL.list = nil } case 143: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1382 + //line php5/php5.y:1374 { yyVAL.list = []node.Node{yyDollar[1].node} } case 144: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1384 + //line php5/php5.y:1376 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 145: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1389 + //line php5/php5.y:1381 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -3692,7 +3678,7 @@ yydefault: } case 146: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:1415 + //line php5/php5.y:1407 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -3720,13 +3706,13 @@ yydefault: } case 147: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1445 + //line php5/php5.y:1437 { yyVAL.node = nil } case 148: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1447 + //line php5/php5.y:1439 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3734,7 +3720,7 @@ yydefault: } case 149: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1453 + //line php5/php5.y:1445 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3742,13 +3728,13 @@ yydefault: } case 150: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1459 + //line php5/php5.y:1451 { yyVAL.node = yyDollar[1].node } case 151: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1465 + //line php5/php5.y:1457 { yyVAL.node = node.NewArgumentList(nil) @@ -3757,7 +3743,7 @@ yydefault: } case 152: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1472 + //line php5/php5.y:1464 { yyVAL.node = node.NewArgumentList(yyDollar[2].list) @@ -3766,7 +3752,7 @@ yydefault: } case 153: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1479 + //line php5/php5.y:1471 { arg := node.NewArgument(yyDollar[2].node, false, false) yyVAL.node = node.NewArgumentList([]node.Node{arg}) @@ -3777,19 +3763,19 @@ yydefault: } case 154: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1492 + //line php5/php5.y:1484 { yyVAL.list = []node.Node{yyDollar[1].node} } case 155: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1494 + //line php5/php5.y:1486 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 156: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1499 + //line php5/php5.y:1491 { yyVAL.node = node.NewArgument(yyDollar[1].node, false, false) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) @@ -3797,7 +3783,7 @@ yydefault: } case 157: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1505 + //line php5/php5.y:1497 { yyVAL.node = node.NewArgument(yyDollar[1].node, false, false) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) @@ -3805,7 +3791,7 @@ yydefault: } case 158: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1511 + //line php5/php5.y:1503 { yyVAL.node = node.NewArgument(yyDollar[2].node, false, true) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[2].node)) @@ -3813,7 +3799,7 @@ yydefault: } case 159: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1517 + //line php5/php5.y:1509 { yyVAL.node = node.NewArgument(yyDollar[2].node, true, false) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -3821,19 +3807,19 @@ yydefault: } case 160: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1526 + //line php5/php5.y:1518 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 161: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1528 + //line php5/php5.y:1520 { yyVAL.list = []node.Node{yyDollar[1].node} } case 162: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1534 + //line php5/php5.y:1526 { name := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3845,7 +3831,7 @@ yydefault: } case 163: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1544 + //line php5/php5.y:1536 { yyVAL.node = expr.NewVariable(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -3853,7 +3839,7 @@ yydefault: } case 164: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1550 + //line php5/php5.y:1542 { yyVAL.node = expr.NewVariable(yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -3861,7 +3847,7 @@ yydefault: } case 165: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1560 + //line php5/php5.y:1552 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[3].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -3880,7 +3866,7 @@ yydefault: } case 166: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1577 + //line php5/php5.y:1569 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[3].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -3899,7 +3885,7 @@ yydefault: } case 167: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1594 + //line php5/php5.y:1586 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3918,7 +3904,7 @@ yydefault: } case 168: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1611 + //line php5/php5.y:1603 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3937,19 +3923,19 @@ yydefault: } case 169: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1633 + //line php5/php5.y:1625 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 170: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1635 + //line php5/php5.y:1627 { yyVAL.list = []node.Node{} } case 171: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1641 + //line php5/php5.y:1633 { yyVAL.node = stmt.NewPropertyList(yyDollar[1].list, yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeListTokenPosition(yyDollar[1].list, yyDollar[3].token)) @@ -3957,19 +3943,19 @@ yydefault: } case 172: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1647 + //line php5/php5.y:1639 { yyVAL.node = yyDollar[1].node } case 173: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1649 + //line php5/php5.y:1641 { yyVAL.node = yyDollar[1].node } case 174: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:1651 + //line php5/php5.y:1643 { name := node.NewIdentifier(yyDollar[4].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -3987,7 +3973,7 @@ yydefault: } case 175: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1670 + //line php5/php5.y:1662 { var adaptationList *stmt.TraitAdaptationList switch n := yyDollar[3].node.(type) { @@ -4003,19 +3989,19 @@ yydefault: } case 176: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1687 + //line php5/php5.y:1679 { yyVAL.list = []node.Node{yyDollar[1].node} } case 177: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1689 + //line php5/php5.y:1681 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 178: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1694 + //line php5/php5.y:1686 { yyVAL.node = stmt.NewNop() @@ -4023,7 +4009,7 @@ yydefault: } case 179: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1700 + //line php5/php5.y:1692 { yyVAL.node = stmt.NewTraitAdaptationList(yyDollar[2].list) @@ -4031,43 +4017,43 @@ yydefault: } case 180: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1709 + //line php5/php5.y:1701 { yyVAL.list = nil } case 181: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1711 + //line php5/php5.y:1703 { yyVAL.list = yyDollar[1].list } case 182: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1716 + //line php5/php5.y:1708 { yyVAL.list = []node.Node{yyDollar[1].node} } case 183: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1718 + //line php5/php5.y:1710 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 184: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1723 + //line php5/php5.y:1715 { yyVAL.node = yyDollar[1].node } case 185: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1725 + //line php5/php5.y:1717 { yyVAL.node = yyDollar[1].node } case 186: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1730 + //line php5/php5.y:1722 { yyVAL.node = stmt.NewTraitUsePrecedence(yyDollar[1].node, yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeNodeListPosition(yyDollar[1].node, yyDollar[3].list)) @@ -4075,19 +4061,19 @@ yydefault: } case 187: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1739 + //line php5/php5.y:1731 { yyVAL.list = []node.Node{yyDollar[1].node} } case 188: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1741 + //line php5/php5.y:1733 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 189: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1746 + //line php5/php5.y:1738 { name := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4099,13 +4085,13 @@ yydefault: } case 190: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1756 + //line php5/php5.y:1748 { yyVAL.node = yyDollar[1].node } case 191: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1761 + //line php5/php5.y:1753 { target := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -4117,7 +4103,7 @@ yydefault: } case 192: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1774 + //line php5/php5.y:1766 { alias := node.NewIdentifier(yyDollar[4].token.Value) yylex.(*Parser).positions.AddPosition(alias, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -4129,7 +4115,7 @@ yydefault: } case 193: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1784 + //line php5/php5.y:1776 { yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, nil) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4137,19 +4123,19 @@ yydefault: } case 194: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1793 + //line php5/php5.y:1785 { yyVAL.node = nil } case 195: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1795 + //line php5/php5.y:1787 { yyVAL.node = yyDollar[1].node } case 196: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1800 + //line php5/php5.y:1792 { yyVAL.node = stmt.NewNop() @@ -4157,7 +4143,7 @@ yydefault: } case 197: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1806 + //line php5/php5.y:1798 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) @@ -4165,13 +4151,13 @@ yydefault: } case 198: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1815 + //line php5/php5.y:1807 { yyVAL.list = yyDollar[1].list } case 199: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1817 + //line php5/php5.y:1809 { modifier := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(modifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4181,31 +4167,31 @@ yydefault: } case 200: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1828 + //line php5/php5.y:1820 { yyVAL.list = nil } case 201: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1830 + //line php5/php5.y:1822 { yyVAL.list = yyDollar[1].list } case 202: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1835 + //line php5/php5.y:1827 { yyVAL.list = []node.Node{yyDollar[1].node} } case 203: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1837 + //line php5/php5.y:1829 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 204: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1842 + //line php5/php5.y:1834 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4213,7 +4199,7 @@ yydefault: } case 205: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1848 + //line php5/php5.y:1840 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4221,7 +4207,7 @@ yydefault: } case 206: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1854 + //line php5/php5.y:1846 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4229,7 +4215,7 @@ yydefault: } case 207: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1860 + //line php5/php5.y:1852 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4237,7 +4223,7 @@ yydefault: } case 208: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1866 + //line php5/php5.y:1858 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4245,7 +4231,7 @@ yydefault: } case 209: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1872 + //line php5/php5.y:1864 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4253,7 +4239,7 @@ yydefault: } case 210: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1881 + //line php5/php5.y:1873 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[3].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -4271,7 +4257,7 @@ yydefault: } case 211: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1897 + //line php5/php5.y:1889 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[3].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -4289,7 +4275,7 @@ yydefault: } case 212: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1913 + //line php5/php5.y:1905 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4307,7 +4293,7 @@ yydefault: } case 213: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1929 + //line php5/php5.y:1921 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4325,7 +4311,7 @@ yydefault: } case 214: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1948 + //line php5/php5.y:1940 { name := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -4342,7 +4328,7 @@ yydefault: } case 215: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1963 + //line php5/php5.y:1955 { name := node.NewIdentifier(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -4358,55 +4344,55 @@ yydefault: } case 216: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1980 + //line php5/php5.y:1972 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 217: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1982 + //line php5/php5.y:1974 { yyVAL.list = []node.Node{yyDollar[1].node} } case 218: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1988 + //line php5/php5.y:1980 { yyVAL.list = nil } case 219: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1990 + //line php5/php5.y:1982 { yyVAL.list = yyDollar[1].list } case 220: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1995 + //line php5/php5.y:1987 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 221: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1997 + //line php5/php5.y:1989 { yyVAL.list = []node.Node{yyDollar[1].node} } case 222: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2002 + //line php5/php5.y:1994 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 223: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2004 + //line php5/php5.y:1996 { yyVAL.list = yyDollar[1].list } case 224: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2009 + //line php5/php5.y:2001 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) @@ -4415,7 +4401,7 @@ yydefault: } case 225: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2016 + //line php5/php5.y:2008 { fetch := expr.NewArrayDimFetch(nil, yyDollar[2].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[2].node)) @@ -4424,37 +4410,37 @@ yydefault: } case 226: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2026 + //line php5/php5.y:2018 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 227: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2028 + //line php5/php5.y:2020 { yyVAL.list = yyDollar[1].list } case 228: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2030 + //line php5/php5.y:2022 { yyVAL.list = yyDollar[1].list } case 229: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2035 + //line php5/php5.y:2027 { yyVAL.list = nil } case 230: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2037 + //line php5/php5.y:2029 { yyVAL.list = yyDollar[1].list } case 231: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2042 + //line php5/php5.y:2034 { if yyDollar[3].node != nil { @@ -4469,7 +4455,7 @@ yydefault: } case 232: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:2058 + //line php5/php5.y:2050 { list := expr.NewList(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -4481,7 +4467,7 @@ yydefault: } case 233: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2068 + //line php5/php5.y:2060 { yyVAL.node = assign.NewAssign(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4489,7 +4475,7 @@ yydefault: } case 234: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2074 + //line php5/php5.y:2066 { yyVAL.node = assign.NewReference(yyDollar[1].node, yyDollar[4].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) @@ -4497,7 +4483,7 @@ yydefault: } case 235: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:2080 + //line php5/php5.y:2072 { var _new *expr.New @@ -4516,7 +4502,7 @@ yydefault: } case 236: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2097 + //line php5/php5.y:2089 { yyVAL.node = expr.NewClone(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4524,7 +4510,7 @@ yydefault: } case 237: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2103 + //line php5/php5.y:2095 { yyVAL.node = assign.NewPlus(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4532,7 +4518,7 @@ yydefault: } case 238: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2109 + //line php5/php5.y:2101 { yyVAL.node = assign.NewMinus(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4540,7 +4526,7 @@ yydefault: } case 239: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2115 + //line php5/php5.y:2107 { yyVAL.node = assign.NewMul(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4548,7 +4534,7 @@ yydefault: } case 240: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2121 + //line php5/php5.y:2113 { yyVAL.node = assign.NewPow(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4556,7 +4542,7 @@ yydefault: } case 241: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2127 + //line php5/php5.y:2119 { yyVAL.node = assign.NewDiv(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4564,7 +4550,7 @@ yydefault: } case 242: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2133 + //line php5/php5.y:2125 { yyVAL.node = assign.NewConcat(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4572,7 +4558,7 @@ yydefault: } case 243: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2139 + //line php5/php5.y:2131 { yyVAL.node = assign.NewMod(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4580,7 +4566,7 @@ yydefault: } case 244: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2145 + //line php5/php5.y:2137 { yyVAL.node = assign.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4588,7 +4574,7 @@ yydefault: } case 245: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2151 + //line php5/php5.y:2143 { yyVAL.node = assign.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4596,7 +4582,7 @@ yydefault: } case 246: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2157 + //line php5/php5.y:2149 { yyVAL.node = assign.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4604,7 +4590,7 @@ yydefault: } case 247: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2163 + //line php5/php5.y:2155 { yyVAL.node = assign.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4612,7 +4598,7 @@ yydefault: } case 248: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2169 + //line php5/php5.y:2161 { yyVAL.node = assign.NewShiftRight(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4620,7 +4606,7 @@ yydefault: } case 249: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2175 + //line php5/php5.y:2167 { yyVAL.node = expr.NewPostInc(yyDollar[1].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) @@ -4628,7 +4614,7 @@ yydefault: } case 250: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2181 + //line php5/php5.y:2173 { yyVAL.node = expr.NewPreInc(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4636,7 +4622,7 @@ yydefault: } case 251: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2187 + //line php5/php5.y:2179 { yyVAL.node = expr.NewPostDec(yyDollar[1].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) @@ -4644,7 +4630,7 @@ yydefault: } case 252: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2193 + //line php5/php5.y:2185 { yyVAL.node = expr.NewPreDec(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4652,7 +4638,7 @@ yydefault: } case 253: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2199 + //line php5/php5.y:2191 { yyVAL.node = binary.NewBooleanOr(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4660,7 +4646,7 @@ yydefault: } case 254: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2205 + //line php5/php5.y:2197 { yyVAL.node = binary.NewBooleanAnd(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4668,7 +4654,7 @@ yydefault: } case 255: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2211 + //line php5/php5.y:2203 { yyVAL.node = binary.NewLogicalOr(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4676,7 +4662,7 @@ yydefault: } case 256: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2217 + //line php5/php5.y:2209 { yyVAL.node = binary.NewLogicalAnd(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4684,7 +4670,7 @@ yydefault: } case 257: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2223 + //line php5/php5.y:2215 { yyVAL.node = binary.NewLogicalXor(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4692,7 +4678,7 @@ yydefault: } case 258: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2229 + //line php5/php5.y:2221 { yyVAL.node = binary.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4700,7 +4686,7 @@ yydefault: } case 259: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2235 + //line php5/php5.y:2227 { yyVAL.node = binary.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4708,7 +4694,7 @@ yydefault: } case 260: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2241 + //line php5/php5.y:2233 { yyVAL.node = binary.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4716,7 +4702,7 @@ yydefault: } case 261: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2247 + //line php5/php5.y:2239 { yyVAL.node = binary.NewConcat(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4724,7 +4710,7 @@ yydefault: } case 262: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2253 + //line php5/php5.y:2245 { yyVAL.node = binary.NewPlus(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4732,7 +4718,7 @@ yydefault: } case 263: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2259 + //line php5/php5.y:2251 { yyVAL.node = binary.NewMinus(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4740,7 +4726,7 @@ yydefault: } case 264: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2265 + //line php5/php5.y:2257 { yyVAL.node = binary.NewMul(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4748,7 +4734,7 @@ yydefault: } case 265: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2271 + //line php5/php5.y:2263 { yyVAL.node = binary.NewPow(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4756,7 +4742,7 @@ yydefault: } case 266: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2277 + //line php5/php5.y:2269 { yyVAL.node = binary.NewDiv(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4764,7 +4750,7 @@ yydefault: } case 267: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2283 + //line php5/php5.y:2275 { yyVAL.node = binary.NewMod(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4772,7 +4758,7 @@ yydefault: } case 268: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2289 + //line php5/php5.y:2281 { yyVAL.node = binary.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4780,7 +4766,7 @@ yydefault: } case 269: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2295 + //line php5/php5.y:2287 { yyVAL.node = binary.NewShiftRight(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4788,7 +4774,7 @@ yydefault: } case 270: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2301 + //line php5/php5.y:2293 { yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4796,7 +4782,7 @@ yydefault: } case 271: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2307 + //line php5/php5.y:2299 { yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4804,7 +4790,7 @@ yydefault: } case 272: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2313 + //line php5/php5.y:2305 { yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4812,7 +4798,7 @@ yydefault: } case 273: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2319 + //line php5/php5.y:2311 { yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4820,7 +4806,7 @@ yydefault: } case 274: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2325 + //line php5/php5.y:2317 { yyVAL.node = binary.NewIdentical(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4828,7 +4814,7 @@ yydefault: } case 275: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2331 + //line php5/php5.y:2323 { yyVAL.node = binary.NewNotIdentical(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4836,7 +4822,7 @@ yydefault: } case 276: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2337 + //line php5/php5.y:2329 { yyVAL.node = binary.NewEqual(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4844,7 +4830,7 @@ yydefault: } case 277: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2343 + //line php5/php5.y:2335 { yyVAL.node = binary.NewNotEqual(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4852,7 +4838,7 @@ yydefault: } case 278: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2349 + //line php5/php5.y:2341 { yyVAL.node = binary.NewSmaller(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4860,7 +4846,7 @@ yydefault: } case 279: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2355 + //line php5/php5.y:2347 { yyVAL.node = binary.NewSmallerOrEqual(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4868,7 +4854,7 @@ yydefault: } case 280: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2361 + //line php5/php5.y:2353 { yyVAL.node = binary.NewGreater(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4876,7 +4862,7 @@ yydefault: } case 281: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2367 + //line php5/php5.y:2359 { yyVAL.node = binary.NewGreaterOrEqual(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4884,7 +4870,7 @@ yydefault: } case 282: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2373 + //line php5/php5.y:2365 { yyVAL.node = expr.NewInstanceOf(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -4892,19 +4878,19 @@ yydefault: } case 283: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2379 + //line php5/php5.y:2371 { yyVAL.node = yyDollar[1].node } case 284: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2381 + //line php5/php5.y:2373 { yyVAL.node = yyDollar[1].node } case 285: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2383 + //line php5/php5.y:2375 { yyVAL.node = yyDollar[2].node @@ -4932,7 +4918,7 @@ yydefault: } case 286: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:2409 + //line php5/php5.y:2401 { yyVAL.node = expr.NewTernary(yyDollar[1].node, yyDollar[3].node, yyDollar[5].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[5].node)) @@ -4940,7 +4926,7 @@ yydefault: } case 287: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2415 + //line php5/php5.y:2407 { yyVAL.node = expr.NewTernary(yyDollar[1].node, nil, yyDollar[4].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) @@ -4948,13 +4934,13 @@ yydefault: } case 288: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2421 + //line php5/php5.y:2413 { yyVAL.node = yyDollar[1].node } case 289: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2423 + //line php5/php5.y:2415 { yyVAL.node = cast.NewInt(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4962,7 +4948,7 @@ yydefault: } case 290: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2429 + //line php5/php5.y:2421 { yyVAL.node = cast.NewDouble(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4970,7 +4956,7 @@ yydefault: } case 291: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2435 + //line php5/php5.y:2427 { yyVAL.node = cast.NewString(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4978,7 +4964,7 @@ yydefault: } case 292: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2441 + //line php5/php5.y:2433 { yyVAL.node = cast.NewArray(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4986,7 +4972,7 @@ yydefault: } case 293: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2447 + //line php5/php5.y:2439 { yyVAL.node = cast.NewObject(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4994,7 +4980,7 @@ yydefault: } case 294: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2453 + //line php5/php5.y:2445 { yyVAL.node = cast.NewBool(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5002,7 +4988,7 @@ yydefault: } case 295: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2459 + //line php5/php5.y:2451 { yyVAL.node = cast.NewUnset(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5010,7 +4996,7 @@ yydefault: } case 296: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2465 + //line php5/php5.y:2457 { if strings.EqualFold(yyDollar[1].token.Value, "die") { yyVAL.node = expr.NewDie(yyDollar[2].node) @@ -5022,7 +5008,7 @@ yydefault: } case 297: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2475 + //line php5/php5.y:2467 { yyVAL.node = expr.NewErrorSuppress(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5030,25 +5016,25 @@ yydefault: } case 298: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2481 + //line php5/php5.y:2473 { yyVAL.node = yyDollar[1].node } case 299: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2483 + //line php5/php5.y:2475 { yyVAL.node = yyDollar[1].node } case 300: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2485 + //line php5/php5.y:2477 { yyVAL.node = yyDollar[1].node } case 301: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2487 + //line php5/php5.y:2479 { yyVAL.node = expr.NewShellExec(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -5056,7 +5042,7 @@ yydefault: } case 302: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2493 + //line php5/php5.y:2485 { yyVAL.node = expr.NewPrint(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5064,7 +5050,7 @@ yydefault: } case 303: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2499 + //line php5/php5.y:2491 { yyVAL.node = expr.NewYield(nil, nil) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5072,7 +5058,7 @@ yydefault: } case 304: yyDollar = yyS[yypt-9 : yypt+1] - //line php5/php5.y:2505 + //line php5/php5.y:2497 { yyVAL.node = expr.NewClosure(yyDollar[4].list, yyDollar[6].list, nil, yyDollar[8].list, false, yyDollar[2].token != nil, "") yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[9].token)) @@ -5081,7 +5067,7 @@ yydefault: } case 305: yyDollar = yyS[yypt-10 : yypt+1] - //line php5/php5.y:2512 + //line php5/php5.y:2504 { yyVAL.node = expr.NewClosure(yyDollar[5].list, yyDollar[7].list, nil, yyDollar[9].list, true, yyDollar[3].token != nil, "") yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[10].token)) @@ -5090,7 +5076,7 @@ yydefault: } case 306: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2522 + //line php5/php5.y:2514 { yyVAL.node = expr.NewYield(nil, yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5098,7 +5084,7 @@ yydefault: } case 307: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2528 + //line php5/php5.y:2520 { yyVAL.node = expr.NewYield(nil, yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5106,7 +5092,7 @@ yydefault: } case 308: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2534 + //line php5/php5.y:2526 { yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[4].node)) @@ -5114,7 +5100,7 @@ yydefault: } case 309: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2540 + //line php5/php5.y:2532 { yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[4].node)) @@ -5122,7 +5108,7 @@ yydefault: } case 310: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2549 + //line php5/php5.y:2541 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) @@ -5130,7 +5116,7 @@ yydefault: } case 311: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2555 + //line php5/php5.y:2547 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) @@ -5138,7 +5124,7 @@ yydefault: } case 312: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2561 + //line php5/php5.y:2553 { str := scalar.NewString(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(str, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5150,7 +5136,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2571 + //line php5/php5.y:2563 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) @@ -5158,7 +5144,7 @@ yydefault: } case 314: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2580 + //line php5/php5.y:2572 { yyVAL.node = expr.NewArray(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -5166,7 +5152,7 @@ yydefault: } case 315: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2586 + //line php5/php5.y:2578 { yyVAL.node = expr.NewShortArray(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -5174,25 +5160,25 @@ yydefault: } case 316: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2595 + //line php5/php5.y:2587 { yyVAL.token = yyDollar[1].token } case 317: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2600 + //line php5/php5.y:2592 { yyVAL.list = []node.Node{} } case 318: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2602 + //line php5/php5.y:2594 { yyVAL.list = yyDollar[3].list } case 319: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2607 + //line php5/php5.y:2599 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[3].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -5202,7 +5188,7 @@ yydefault: yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) yylex.(*Parser).comments.AddComments(variable, yyDollar[3].token.Comments()) - use := expr.NewClosureUse(variable, false) + use := expr.NewClosureUse(variable) yylex.(*Parser).positions.AddPosition(use, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) yylex.(*Parser).comments.AddComments(use, yyDollar[3].token.Comments()) @@ -5210,7 +5196,7 @@ yydefault: } case 320: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2623 + //line php5/php5.y:2615 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -5220,7 +5206,9 @@ yydefault: yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) yylex.(*Parser).comments.AddComments(variable, yyDollar[3].token.Comments()) - use := expr.NewClosureUse(variable, true) + reference := expr.NewReference(variable) + + use := expr.NewClosureUse(reference) yylex.(*Parser).positions.AddPosition(use, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[3].token, yyDollar[4].token)) yylex.(*Parser).comments.AddComments(use, yyDollar[3].token.Comments()) @@ -5228,7 +5216,7 @@ yydefault: } case 321: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2639 + //line php5/php5.y:2633 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5238,7 +5226,7 @@ yydefault: yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yylex.(*Parser).comments.AddComments(variable, yyDollar[1].token.Comments()) - use := expr.NewClosureUse(variable, false) + use := expr.NewClosureUse(variable) yylex.(*Parser).positions.AddPosition(use, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yylex.(*Parser).comments.AddComments(use, yyDollar[1].token.Comments()) @@ -5246,7 +5234,7 @@ yydefault: } case 322: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2655 + //line php5/php5.y:2649 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[2].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -5256,7 +5244,9 @@ yydefault: yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) yylex.(*Parser).comments.AddComments(variable, yyDollar[1].token.Comments()) - use := expr.NewClosureUse(variable, true) + reference := expr.NewReference(variable) + + use := expr.NewClosureUse(reference) yylex.(*Parser).positions.AddPosition(use, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) yylex.(*Parser).comments.AddComments(use, yyDollar[1].token.Comments()) @@ -5264,7 +5254,7 @@ yydefault: } case 323: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2674 + //line php5/php5.y:2670 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -5276,7 +5266,7 @@ yydefault: } case 324: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2684 + //line php5/php5.y:2680 { funcName := name.NewRelative(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(funcName, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) @@ -5288,7 +5278,7 @@ yydefault: } case 325: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2694 + //line php5/php5.y:2690 { funcName := name.NewFullyQualified(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(funcName, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) @@ -5300,7 +5290,7 @@ yydefault: } case 326: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2704 + //line php5/php5.y:2700 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) @@ -5308,7 +5298,7 @@ yydefault: } case 327: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2710 + //line php5/php5.y:2706 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) @@ -5316,7 +5306,7 @@ yydefault: } case 328: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2716 + //line php5/php5.y:2712 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) @@ -5324,7 +5314,7 @@ yydefault: } case 329: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2722 + //line php5/php5.y:2718 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) @@ -5332,7 +5322,7 @@ yydefault: } case 330: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2728 + //line php5/php5.y:2724 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].node.(*node.ArgumentList)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[2].node)) @@ -5340,7 +5330,7 @@ yydefault: } case 331: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2737 + //line php5/php5.y:2733 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5348,7 +5338,7 @@ yydefault: } case 332: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2743 + //line php5/php5.y:2739 { yyVAL.node = name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -5356,7 +5346,7 @@ yydefault: } case 333: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2749 + //line php5/php5.y:2745 { yyVAL.node = name.NewRelative(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) @@ -5364,7 +5354,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2755 + //line php5/php5.y:2751 { yyVAL.node = name.NewFullyQualified(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) @@ -5372,7 +5362,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2764 + //line php5/php5.y:2760 { yyVAL.node = name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -5380,7 +5370,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2770 + //line php5/php5.y:2766 { yyVAL.node = name.NewRelative(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) @@ -5388,7 +5378,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2776 + //line php5/php5.y:2772 { yyVAL.node = name.NewFullyQualified(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) @@ -5396,19 +5386,19 @@ yydefault: } case 338: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2785 + //line php5/php5.y:2781 { yyVAL.node = yyDollar[1].node } case 339: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2787 + //line php5/php5.y:2783 { yyVAL.node = yyDollar[1].node } case 340: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2792 + //line php5/php5.y:2788 { yyVAL.node = yyDollar[1].node @@ -5446,79 +5436,79 @@ yydefault: } case 341: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2828 + //line php5/php5.y:2824 { yyVAL.node = yyDollar[1].node } case 342: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2834 + //line php5/php5.y:2830 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 343: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2836 + //line php5/php5.y:2832 { yyVAL.list = []node.Node{} } case 344: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2842 + //line php5/php5.y:2838 { yyVAL.list = yyDollar[2].list } case 345: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2847 + //line php5/php5.y:2843 { yyVAL.node = nil } case 346: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2849 + //line php5/php5.y:2845 { yyVAL.node = nil } case 347: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2851 + //line php5/php5.y:2847 { yyVAL.node = yyDollar[1].node } case 348: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2856 + //line php5/php5.y:2852 { yyVAL.list = []node.Node{} } case 349: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2858 + //line php5/php5.y:2854 { yyVAL.list = []node.Node{scalar.NewEncapsedStringPart(yyDollar[1].token.Value)} } case 350: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2860 + //line php5/php5.y:2856 { yyVAL.list = yyDollar[1].list } case 351: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2865 + //line php5/php5.y:2861 { yyVAL.node = nil } case 352: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2867 + //line php5/php5.y:2863 { yyVAL.node = yyDollar[1].node } case 353: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2872 + //line php5/php5.y:2868 { yyVAL.node = scalar.NewLnumber(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5526,7 +5516,7 @@ yydefault: } case 354: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2878 + //line php5/php5.y:2874 { yyVAL.node = scalar.NewDnumber(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5534,7 +5524,7 @@ yydefault: } case 355: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2884 + //line php5/php5.y:2880 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5542,7 +5532,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2890 + //line php5/php5.y:2886 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5550,7 +5540,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2896 + //line php5/php5.y:2892 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5558,7 +5548,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2902 + //line php5/php5.y:2898 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5566,7 +5556,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2908 + //line php5/php5.y:2904 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5574,7 +5564,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2914 + //line php5/php5.y:2910 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5582,7 +5572,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2920 + //line php5/php5.y:2916 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5590,7 +5580,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2926 + //line php5/php5.y:2922 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5598,7 +5588,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2932 + //line php5/php5.y:2928 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(encapsed, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -5610,7 +5600,7 @@ yydefault: } case 364: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2942 + //line php5/php5.y:2938 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, nil) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) @@ -5618,7 +5608,7 @@ yydefault: } case 365: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2951 + //line php5/php5.y:2947 { target := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -5630,25 +5620,25 @@ yydefault: } case 366: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2964 + //line php5/php5.y:2960 { yyVAL.node = yyDollar[1].node } case 367: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2969 + //line php5/php5.y:2965 { yyVAL.node = yyDollar[1].node } case 368: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2971 + //line php5/php5.y:2967 { yyVAL.node = yyDollar[1].node } case 369: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2973 + //line php5/php5.y:2969 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -5660,7 +5650,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2983 + //line php5/php5.y:2979 { name := name.NewRelative(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) @@ -5672,7 +5662,7 @@ yydefault: } case 371: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2993 + //line php5/php5.y:2989 { name := name.NewFullyQualified(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) @@ -5684,7 +5674,7 @@ yydefault: } case 372: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3003 + //line php5/php5.y:2999 { yyVAL.node = expr.NewArray(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -5692,7 +5682,7 @@ yydefault: } case 373: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3009 + //line php5/php5.y:3005 { yyVAL.node = expr.NewShortArray(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -5700,13 +5690,13 @@ yydefault: } case 374: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3015 + //line php5/php5.y:3011 { yyVAL.node = yyDollar[1].node } case 375: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3017 + //line php5/php5.y:3013 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5714,13 +5704,13 @@ yydefault: } case 376: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3023 + //line php5/php5.y:3019 { yyVAL.node = yyDollar[1].node } case 377: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3028 + //line php5/php5.y:3024 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) @@ -5728,7 +5718,7 @@ yydefault: } case 378: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3034 + //line php5/php5.y:3030 { yyVAL.node = binary.NewPlus(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5736,7 +5726,7 @@ yydefault: } case 379: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3040 + //line php5/php5.y:3036 { yyVAL.node = binary.NewMinus(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5744,7 +5734,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3046 + //line php5/php5.y:3042 { yyVAL.node = binary.NewMul(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5752,7 +5742,7 @@ yydefault: } case 381: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3052 + //line php5/php5.y:3048 { yyVAL.node = binary.NewPow(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5760,7 +5750,7 @@ yydefault: } case 382: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3058 + //line php5/php5.y:3054 { yyVAL.node = binary.NewDiv(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5768,7 +5758,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3064 + //line php5/php5.y:3060 { yyVAL.node = binary.NewMod(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5776,7 +5766,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3070 + //line php5/php5.y:3066 { yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5784,7 +5774,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3076 + //line php5/php5.y:3072 { yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5792,7 +5782,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3082 + //line php5/php5.y:3078 { yyVAL.node = binary.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5800,7 +5790,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3088 + //line php5/php5.y:3084 { yyVAL.node = binary.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5808,7 +5798,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3094 + //line php5/php5.y:3090 { yyVAL.node = binary.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5816,7 +5806,7 @@ yydefault: } case 389: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3100 + //line php5/php5.y:3096 { yyVAL.node = binary.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5824,7 +5814,7 @@ yydefault: } case 390: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3106 + //line php5/php5.y:3102 { yyVAL.node = binary.NewShiftRight(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5832,7 +5822,7 @@ yydefault: } case 391: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3112 + //line php5/php5.y:3108 { yyVAL.node = binary.NewConcat(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5840,7 +5830,7 @@ yydefault: } case 392: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3118 + //line php5/php5.y:3114 { yyVAL.node = binary.NewLogicalXor(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5848,7 +5838,7 @@ yydefault: } case 393: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3124 + //line php5/php5.y:3120 { yyVAL.node = binary.NewLogicalAnd(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5856,7 +5846,7 @@ yydefault: } case 394: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3130 + //line php5/php5.y:3126 { yyVAL.node = binary.NewLogicalOr(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5864,7 +5854,7 @@ yydefault: } case 395: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3136 + //line php5/php5.y:3132 { yyVAL.node = binary.NewBooleanAnd(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5872,7 +5862,7 @@ yydefault: } case 396: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3142 + //line php5/php5.y:3138 { yyVAL.node = binary.NewBooleanOr(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5880,7 +5870,7 @@ yydefault: } case 397: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3148 + //line php5/php5.y:3144 { yyVAL.node = binary.NewIdentical(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5888,7 +5878,7 @@ yydefault: } case 398: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3154 + //line php5/php5.y:3150 { yyVAL.node = binary.NewNotIdentical(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5896,7 +5886,7 @@ yydefault: } case 399: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3160 + //line php5/php5.y:3156 { yyVAL.node = binary.NewEqual(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5904,7 +5894,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3166 + //line php5/php5.y:3162 { yyVAL.node = binary.NewNotEqual(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5912,7 +5902,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3172 + //line php5/php5.y:3168 { yyVAL.node = binary.NewSmaller(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5920,7 +5910,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3178 + //line php5/php5.y:3174 { yyVAL.node = binary.NewGreater(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5928,7 +5918,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3184 + //line php5/php5.y:3180 { yyVAL.node = binary.NewSmallerOrEqual(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5936,7 +5926,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3190 + //line php5/php5.y:3186 { yyVAL.node = binary.NewGreaterOrEqual(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -5944,7 +5934,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3196 + //line php5/php5.y:3192 { yyVAL.node = expr.NewTernary(yyDollar[1].node, nil, yyDollar[4].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) @@ -5952,7 +5942,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:3202 + //line php5/php5.y:3198 { yyVAL.node = expr.NewTernary(yyDollar[1].node, yyDollar[3].node, yyDollar[5].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[5].node)) @@ -5960,7 +5950,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3208 + //line php5/php5.y:3204 { yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5968,7 +5958,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3214 + //line php5/php5.y:3210 { yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5976,19 +5966,19 @@ yydefault: } case 409: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3220 + //line php5/php5.y:3216 { yyVAL.node = yyDollar[2].node } case 410: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3225 + //line php5/php5.y:3221 { yyVAL.node = yyDollar[1].node } case 411: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3227 + //line php5/php5.y:3223 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -6000,7 +5990,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3237 + //line php5/php5.y:3233 { name := name.NewRelative(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) @@ -6012,7 +6002,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3247 + //line php5/php5.y:3243 { name := name.NewFullyQualified(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) @@ -6024,7 +6014,7 @@ yydefault: } case 414: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3260 + //line php5/php5.y:3256 { name := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6036,25 +6026,25 @@ yydefault: } case 415: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3270 + //line php5/php5.y:3266 { yyVAL.node = yyDollar[1].node } case 416: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3272 + //line php5/php5.y:3268 { yyVAL.node = yyDollar[1].node } case 417: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3274 + //line php5/php5.y:3270 { yyVAL.node = yyDollar[1].node } case 418: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3276 + //line php5/php5.y:3272 { yyVAL.node = scalar.NewEncapsed(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -6062,7 +6052,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3282 + //line php5/php5.y:3278 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -6070,7 +6060,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3288 + //line php5/php5.y:3284 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6078,21 +6068,21 @@ yydefault: } case 421: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3297 + //line php5/php5.y:3293 { yyVAL.list = nil } case 422: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3299 + //line php5/php5.y:3295 { yyVAL.list = yyDollar[1].list } case 425: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:3309 + //line php5/php5.y:3305 { - arrayItem := expr.NewArrayItem(yyDollar[3].node, yyDollar[5].node, false) + arrayItem := expr.NewArrayItem(yyDollar[3].node, yyDollar[5].node) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[3].node, yyDollar[5].node)) yylex.(*Parser).comments.AddComments(arrayItem, yylex.(*Parser).comments[yyDollar[3].node]) @@ -6100,9 +6090,9 @@ yydefault: } case 426: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3317 + //line php5/php5.y:3313 { - arrayItem := expr.NewArrayItem(nil, yyDollar[3].node, false) + arrayItem := expr.NewArrayItem(nil, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) yylex.(*Parser).comments.AddComments(arrayItem, yylex.(*Parser).comments[yyDollar[3].node]) @@ -6110,9 +6100,9 @@ yydefault: } case 427: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3325 + //line php5/php5.y:3321 { - arrayItem := expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node, false) + arrayItem := expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) yylex.(*Parser).comments.AddComments(arrayItem, yylex.(*Parser).comments[yyDollar[1].node]) @@ -6120,9 +6110,9 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3333 + //line php5/php5.y:3329 { - arrayItem := expr.NewArrayItem(nil, yyDollar[1].node, false) + arrayItem := expr.NewArrayItem(nil, yyDollar[1].node) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) yylex.(*Parser).comments.AddComments(arrayItem, yylex.(*Parser).comments[yyDollar[1].node]) @@ -6130,49 +6120,49 @@ yydefault: } case 429: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3344 + //line php5/php5.y:3340 { yyVAL.node = yyDollar[1].node } case 430: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3346 + //line php5/php5.y:3342 { yyVAL.node = yyDollar[1].node } case 431: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3351 + //line php5/php5.y:3347 { yyVAL.node = yyDollar[2].node } case 432: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3353 + //line php5/php5.y:3349 { yyVAL.node = yyDollar[2].node } case 433: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3359 + //line php5/php5.y:3355 { yyVAL.node = yyDollar[1].node } case 434: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3365 + //line php5/php5.y:3361 { yyVAL.node = yyDollar[1].node } case 435: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3370 + //line php5/php5.y:3366 { yyVAL.node = yyDollar[1].node } case 436: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:3375 + //line php5/php5.y:3371 { yyVAL.node = yyDollar[1].node @@ -6227,25 +6217,25 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3428 + //line php5/php5.y:3424 { yyVAL.node = yyDollar[1].node } case 438: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3433 + //line php5/php5.y:3429 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 439: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3435 + //line php5/php5.y:3431 { yyVAL.list = []node.Node{} } case 440: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3441 + //line php5/php5.y:3437 { if yyDollar[3].list != nil { yyDollar[3].list[0].(*expr.MethodCall).Method = yyDollar[2].list[len(yyDollar[2].list)-1].(*expr.PropertyFetch).Property @@ -6256,7 +6246,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3453 + //line php5/php5.y:3449 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) @@ -6265,7 +6255,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3460 + //line php5/php5.y:3456 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) @@ -6274,38 +6264,38 @@ yydefault: } case 443: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3470 + //line php5/php5.y:3466 { yyVAL.node = expr.NewMethodCall(nil, nil, yyDollar[1].node.(*node.ArgumentList)) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) } case 444: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3478 + //line php5/php5.y:3474 { yyVAL.list = []node.Node{yyDollar[1].node} } case 445: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3480 + //line php5/php5.y:3476 { yyVAL.list = yyDollar[1].list } case 446: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3482 + //line php5/php5.y:3478 { yyVAL.list = nil } case 447: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3487 + //line php5/php5.y:3483 { yyVAL.node = yyDollar[1].node } case 448: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3489 + //line php5/php5.y:3485 { yyDollar[1].simpleIndirectReference.last.SetVarName(yyDollar[2].node) @@ -6317,7 +6307,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3502 + //line php5/php5.y:3498 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -6325,7 +6315,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3508 + //line php5/php5.y:3504 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -6333,13 +6323,13 @@ yydefault: } case 451: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3518 + //line php5/php5.y:3514 { yyVAL.node = yyDollar[1].node } case 452: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3523 + //line php5/php5.y:3519 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) @@ -6347,7 +6337,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3529 + //line php5/php5.y:3525 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) @@ -6355,31 +6345,31 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3537 + //line php5/php5.y:3533 { yyVAL.node = yyDollar[1].node } case 455: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3538 + //line php5/php5.y:3534 { yyVAL.node = yyDollar[1].node } case 456: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3539 + //line php5/php5.y:3535 { yyVAL.node = yyDollar[1].node } case 457: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3545 + //line php5/php5.y:3541 { yyVAL.node = yyDollar[1].node } case 458: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3547 + //line php5/php5.y:3543 { yyDollar[1].simpleIndirectReference.last.SetVarName(yyDollar[2].node) @@ -6391,13 +6381,13 @@ yydefault: } case 459: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3557 + //line php5/php5.y:3553 { yyVAL.node = yyDollar[1].node } case 460: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3562 + //line php5/php5.y:3558 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) @@ -6405,7 +6395,7 @@ yydefault: } case 461: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3568 + //line php5/php5.y:3564 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) @@ -6413,13 +6403,13 @@ yydefault: } case 462: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3574 + //line php5/php5.y:3570 { yyVAL.node = yyDollar[1].node } case 463: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3580 + //line php5/php5.y:3576 { name := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6431,7 +6421,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3590 + //line php5/php5.y:3586 { yyVAL.node = expr.NewVariable(yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -6439,25 +6429,25 @@ yydefault: } case 465: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3599 + //line php5/php5.y:3595 { yyVAL.node = nil } case 466: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3601 + //line php5/php5.y:3597 { yyVAL.node = yyDollar[1].node } case 467: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3607 + //line php5/php5.y:3603 { yyVAL.list = yyDollar[1].list } case 468: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3609 + //line php5/php5.y:3605 { fetch := expr.NewPropertyFetch(nil, yyDollar[1].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) @@ -6466,7 +6456,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3619 + //line php5/php5.y:3615 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) @@ -6475,7 +6465,7 @@ yydefault: } case 470: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3626 + //line php5/php5.y:3622 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) @@ -6484,7 +6474,7 @@ yydefault: } case 471: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3633 + //line php5/php5.y:3629 { fetch := expr.NewPropertyFetch(nil, yyDollar[1].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) @@ -6493,7 +6483,7 @@ yydefault: } case 472: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3643 + //line php5/php5.y:3639 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6501,13 +6491,13 @@ yydefault: } case 473: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3649 + //line php5/php5.y:3645 { yyVAL.node = yyDollar[2].node } case 474: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3654 + //line php5/php5.y:3650 { n := expr.NewVariable(nil) yylex.(*Parser).positions.AddPosition(n, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6517,7 +6507,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3662 + //line php5/php5.y:3658 { n := expr.NewVariable(nil) yylex.(*Parser).positions.AddPosition(n, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -6531,13 +6521,13 @@ yydefault: } case 476: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3677 + //line php5/php5.y:3673 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 477: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3679 + //line php5/php5.y:3675 { if yyDollar[1].node == nil { yyVAL.list = []node.Node{} @@ -6547,47 +6537,47 @@ yydefault: } case 478: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3691 + //line php5/php5.y:3687 { - yyVAL.node = expr.NewArrayItem(nil, yyDollar[1].node, false) + yyVAL.node = expr.NewArrayItem(nil, yyDollar[1].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) } case 479: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3697 + //line php5/php5.y:3693 { item := expr.NewList(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(item, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) yylex.(*Parser).comments.AddComments(item, yyDollar[1].token.Comments()) - yyVAL.node = expr.NewArrayItem(nil, item, false) + yyVAL.node = expr.NewArrayItem(nil, item) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(item)) yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[item]) } case 480: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3707 + //line php5/php5.y:3703 { yyVAL.node = nil } case 481: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3713 + //line php5/php5.y:3709 { yyVAL.list = []node.Node{} } case 482: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3715 + //line php5/php5.y:3711 { yyVAL.list = yyDollar[1].list } case 483: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:3720 + //line php5/php5.y:3716 { - arrayItem := expr.NewArrayItem(yyDollar[3].node, yyDollar[5].node, false) + arrayItem := expr.NewArrayItem(yyDollar[3].node, yyDollar[5].node) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[3].node, yyDollar[5].node)) yylex.(*Parser).comments.AddComments(arrayItem, yylex.(*Parser).comments[yyDollar[3].node]) @@ -6595,9 +6585,9 @@ yydefault: } case 484: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3728 + //line php5/php5.y:3724 { - arrayItem := expr.NewArrayItem(nil, yyDollar[3].node, false) + arrayItem := expr.NewArrayItem(nil, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) yylex.(*Parser).comments.AddComments(arrayItem, yylex.(*Parser).comments[yyDollar[3].node]) @@ -6605,9 +6595,9 @@ yydefault: } case 485: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3736 + //line php5/php5.y:3732 { - arrayItem := expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node, false) + arrayItem := expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) yylex.(*Parser).comments.AddComments(arrayItem, yylex.(*Parser).comments[yyDollar[1].node]) @@ -6615,9 +6605,9 @@ yydefault: } case 486: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3744 + //line php5/php5.y:3740 { - arrayItem := expr.NewArrayItem(nil, yyDollar[1].node, false) + arrayItem := expr.NewArrayItem(nil, yyDollar[1].node) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) yylex.(*Parser).comments.AddComments(arrayItem, yylex.(*Parser).comments[yyDollar[1].node]) @@ -6625,9 +6615,10 @@ yydefault: } case 487: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:3752 + //line php5/php5.y:3748 { - arrayItem := expr.NewArrayItem(yyDollar[3].node, yyDollar[6].node, true) + reference := expr.NewReference(yyDollar[6].node) + arrayItem := expr.NewArrayItem(yyDollar[3].node, reference) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[3].node, yyDollar[6].node)) yylex.(*Parser).comments.AddComments(arrayItem, yylex.(*Parser).comments[yyDollar[3].node]) @@ -6635,9 +6626,10 @@ yydefault: } case 488: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3760 + //line php5/php5.y:3757 { - arrayItem := expr.NewArrayItem(nil, yyDollar[4].node, true) + reference := expr.NewReference(yyDollar[4].node) + arrayItem := expr.NewArrayItem(nil, reference) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node)) yylex.(*Parser).comments.AddComments(arrayItem, yyDollar[3].token.Comments()) @@ -6645,9 +6637,10 @@ yydefault: } case 489: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3768 + //line php5/php5.y:3766 { - arrayItem := expr.NewArrayItem(yyDollar[1].node, yyDollar[4].node, true) + reference := expr.NewReference(yyDollar[4].node) + arrayItem := expr.NewArrayItem(yyDollar[1].node, reference) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) yylex.(*Parser).comments.AddComments(arrayItem, yylex.(*Parser).comments[yyDollar[1].node]) @@ -6655,9 +6648,10 @@ yydefault: } case 490: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3776 + //line php5/php5.y:3775 { - arrayItem := expr.NewArrayItem(nil, yyDollar[2].node, true) + reference := expr.NewReference(yyDollar[2].node) + arrayItem := expr.NewArrayItem(nil, reference) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) yylex.(*Parser).comments.AddComments(arrayItem, yyDollar[1].token.Comments()) diff --git a/php5/php5.y b/php5/php5.y index 704f4a1..3687f9f 100644 --- a/php5/php5.y +++ b/php5/php5.y @@ -22,7 +22,6 @@ import ( node node.Node token *scanner.Token list []node.Node - foreachVariable foreachVariable simpleIndirectReference simpleIndirectReference ClassExtends *stmt.ClassExtends @@ -248,6 +247,8 @@ import ( %type switch_case_list %type method_body %type foreach_statement for_statement while_statement +%type foreach_variable foreach_optional_arg + %type extends_from %type implements_list %type interface_extends_list @@ -266,7 +267,6 @@ import ( %type dynamic_class_name_variable_properties variable_properties %type simple_indirect_reference -%type foreach_variable foreach_optional_arg %type is_reference is_variadic %% @@ -801,29 +801,25 @@ unticked_statement: } | T_FOREACH '(' variable T_AS foreach_variable foreach_optional_arg ')' foreach_statement { - if $6.node == nil { + if $6 == nil { switch n := $8.(type) { case *stmt.Foreach : n.Expr = $3 - n.ByRef = $5.byRef - n.Variable = $5.node + n.Variable = $5 case *stmt.AltForeach : n.Expr = $3 - n.ByRef = $5.byRef - n.Variable = $5.node + n.Variable = $5 } } else { switch n := $8.(type) { case *stmt.Foreach : n.Expr = $3 - n.Key = $5.node - n.ByRef = $6.byRef - n.Variable = $6.node + n.Key = $5 + n.Variable = $6 case *stmt.AltForeach : n.Expr = $3 - n.Key = $5.node - n.ByRef = $6.byRef - n.Variable = $6.node + n.Key = $5 + n.Variable = $6 } } @@ -834,29 +830,25 @@ unticked_statement: } | T_FOREACH '(' expr_without_variable T_AS foreach_variable foreach_optional_arg ')' foreach_statement { - if $6.node == nil { + if $6 == nil { switch n := $8.(type) { case *stmt.Foreach : n.Expr = $3 - n.ByRef = $5.byRef - n.Variable = $5.node + n.Variable = $5 case *stmt.AltForeach : n.Expr = $3 - n.ByRef = $5.byRef - n.Variable = $5.node + n.Variable = $5 } } else { switch n := $8.(type) { case *stmt.Foreach : n.Expr = $3 - n.Key = $5.node - n.ByRef = $6.byRef - n.Variable = $6.node + n.Key = $5 + n.Variable = $6 case *stmt.AltForeach : n.Expr = $3 - n.Key = $5.node - n.ByRef = $6.byRef - n.Variable = $6.node + n.Key = $5 + n.Variable = $6 } } @@ -1138,21 +1130,21 @@ interface_list: foreach_optional_arg: /* empty */ - { $$ = foreachVariable{nil, false} } + { $$ = nil } | T_DOUBLE_ARROW foreach_variable { $$ = $2 } ; foreach_variable: variable - { $$ = foreachVariable{$1, false} } + { $$ = $1 } | '&' variable - { $$ = foreachVariable{$2, true} } + { $$ = expr.NewReference($2) } | T_LIST '(' assignment_list ')' { list := expr.NewList($3) yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) - $$ = foreachVariable{list, false} + $$ = list yylex.(*Parser).comments.AddComments(list, $1.Comments()) } ; @@ -1177,13 +1169,13 @@ for_statement: foreach_statement: statement { - $$ = stmt.NewForeach(nil, nil, nil, $1, false) + $$ = stmt.NewForeach(nil, nil, nil, $1) yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodePosition($1)) } | ':' inner_statement_list T_ENDFOREACH ';' { stmtList := stmt.NewStmtList($2) - $$ = stmt.NewAltForeach(nil, nil, nil, stmtList, false) + $$ = stmt.NewAltForeach(nil, nil, nil, stmtList) yylex.(*Parser).positions.AddPosition(stmtList, yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) @@ -2613,7 +2605,7 @@ lexical_var_list: yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition($3)) yylex.(*Parser).comments.AddComments(variable, $3.Comments()) - use := expr.NewClosureUse(variable, false) + use := expr.NewClosureUse(variable) yylex.(*Parser).positions.AddPosition(use, yylex.(*Parser).positionBuilder.NewTokenPosition($3)) yylex.(*Parser).comments.AddComments(use, $3.Comments()) @@ -2629,7 +2621,9 @@ lexical_var_list: yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition($4)) yylex.(*Parser).comments.AddComments(variable, $3.Comments()) - use := expr.NewClosureUse(variable, true) + reference := expr.NewReference(variable) + + use := expr.NewClosureUse(reference) yylex.(*Parser).positions.AddPosition(use, yylex.(*Parser).positionBuilder.NewTokensPosition($3, $4)) yylex.(*Parser).comments.AddComments(use, $3.Comments()) @@ -2645,7 +2639,7 @@ lexical_var_list: yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) yylex.(*Parser).comments.AddComments(variable, $1.Comments()) - use := expr.NewClosureUse(variable, false) + use := expr.NewClosureUse(variable) yylex.(*Parser).positions.AddPosition(use, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) yylex.(*Parser).comments.AddComments(use, $1.Comments()) @@ -2661,7 +2655,9 @@ lexical_var_list: yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition($2)) yylex.(*Parser).comments.AddComments(variable, $1.Comments()) - use := expr.NewClosureUse(variable, true) + reference := expr.NewReference(variable) + + use := expr.NewClosureUse(reference) yylex.(*Parser).positions.AddPosition(use, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) yylex.(*Parser).comments.AddComments(use, $1.Comments()) @@ -3307,7 +3303,7 @@ possible_comma: non_empty_static_array_pair_list: non_empty_static_array_pair_list ',' static_scalar_value T_DOUBLE_ARROW static_scalar_value { - arrayItem := expr.NewArrayItem($3, $5, false) + arrayItem := expr.NewArrayItem($3, $5) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodesPosition($3, $5)) yylex.(*Parser).comments.AddComments(arrayItem, yylex.(*Parser).comments[$3]) @@ -3315,7 +3311,7 @@ non_empty_static_array_pair_list: } | non_empty_static_array_pair_list ',' static_scalar_value { - arrayItem := expr.NewArrayItem(nil, $3, false) + arrayItem := expr.NewArrayItem(nil, $3) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodePosition($3)) yylex.(*Parser).comments.AddComments(arrayItem, yylex.(*Parser).comments[$3]) @@ -3323,7 +3319,7 @@ non_empty_static_array_pair_list: } | static_scalar_value T_DOUBLE_ARROW static_scalar_value { - arrayItem := expr.NewArrayItem($1, $3, false) + arrayItem := expr.NewArrayItem($1, $3) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) yylex.(*Parser).comments.AddComments(arrayItem, yylex.(*Parser).comments[$1]) @@ -3331,7 +3327,7 @@ non_empty_static_array_pair_list: } | static_scalar_value { - arrayItem := expr.NewArrayItem(nil, $1, false) + arrayItem := expr.NewArrayItem(nil, $1) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodePosition($1)) yylex.(*Parser).comments.AddComments(arrayItem, yylex.(*Parser).comments[$1]) @@ -3689,7 +3685,7 @@ assignment_list: assignment_list_element: variable { - $$ = expr.NewArrayItem(nil, $1, false) + $$ = expr.NewArrayItem(nil, $1) yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodePosition($1)) yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) } @@ -3699,7 +3695,7 @@ assignment_list_element: yylex.(*Parser).positions.AddPosition(item, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) yylex.(*Parser).comments.AddComments(item, $1.Comments()) - $$ = expr.NewArrayItem(nil, item, false) + $$ = expr.NewArrayItem(nil, item) yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodePosition(item)) yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[item]) } @@ -3718,7 +3714,7 @@ array_pair_list: non_empty_array_pair_list: non_empty_array_pair_list ',' expr T_DOUBLE_ARROW expr { - arrayItem := expr.NewArrayItem($3, $5, false) + arrayItem := expr.NewArrayItem($3, $5) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodesPosition($3, $5)) yylex.(*Parser).comments.AddComments(arrayItem, yylex.(*Parser).comments[$3]) @@ -3726,7 +3722,7 @@ non_empty_array_pair_list: } | non_empty_array_pair_list ',' expr { - arrayItem := expr.NewArrayItem(nil, $3, false) + arrayItem := expr.NewArrayItem(nil, $3) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodePosition($3)) yylex.(*Parser).comments.AddComments(arrayItem, yylex.(*Parser).comments[$3]) @@ -3734,7 +3730,7 @@ non_empty_array_pair_list: } | expr T_DOUBLE_ARROW expr { - arrayItem := expr.NewArrayItem($1, $3, false) + arrayItem := expr.NewArrayItem($1, $3) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) yylex.(*Parser).comments.AddComments(arrayItem, yylex.(*Parser).comments[$1]) @@ -3742,7 +3738,7 @@ non_empty_array_pair_list: } | expr { - arrayItem := expr.NewArrayItem(nil, $1, false) + arrayItem := expr.NewArrayItem(nil, $1) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodePosition($1)) yylex.(*Parser).comments.AddComments(arrayItem, yylex.(*Parser).comments[$1]) @@ -3750,7 +3746,8 @@ non_empty_array_pair_list: } | non_empty_array_pair_list ',' expr T_DOUBLE_ARROW '&' w_variable { - arrayItem := expr.NewArrayItem($3, $6, true) + reference := expr.NewReference($6) + arrayItem := expr.NewArrayItem($3, reference) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodesPosition($3, $6)) yylex.(*Parser).comments.AddComments(arrayItem, yylex.(*Parser).comments[$3]) @@ -3758,7 +3755,8 @@ non_empty_array_pair_list: } | non_empty_array_pair_list ',' '&' w_variable { - arrayItem := expr.NewArrayItem(nil, $4, true) + reference := expr.NewReference($4) + arrayItem := expr.NewArrayItem(nil, reference) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewTokenNodePosition($3, $4)) yylex.(*Parser).comments.AddComments(arrayItem, $3.Comments()) @@ -3766,7 +3764,8 @@ non_empty_array_pair_list: } | expr T_DOUBLE_ARROW '&' w_variable { - arrayItem := expr.NewArrayItem($1, $4, true) + reference := expr.NewReference($4) + arrayItem := expr.NewArrayItem($1, reference) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) yylex.(*Parser).comments.AddComments(arrayItem, yylex.(*Parser).comments[$1]) @@ -3774,7 +3773,8 @@ non_empty_array_pair_list: } | '&' w_variable { - arrayItem := expr.NewArrayItem(nil, $2, true) + reference := expr.NewReference($2) + arrayItem := expr.NewArrayItem(nil, reference) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) yylex.(*Parser).comments.AddComments(arrayItem, $1.Comments()) @@ -4014,11 +4014,6 @@ class_name_scalar: %% -type foreachVariable struct { - node node.Node - byRef bool -} - type simpleIndirectReference struct { all []*expr.Variable last *expr.Variable diff --git a/php5/php5_test.go b/php5/php5_test.go index 44de74c..a10fe16 100644 --- a/php5/php5_test.go +++ b/php5/php5_test.go @@ -1065,21 +1065,20 @@ func TestPhp5(t *testing.T) { Stmt: &stmt.StmtList{Stmts: []node.Node{}}, }, &stmt.Foreach{ - ByRef: true, - 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.StmtList{Stmts: []node.Node{}}, + 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.StmtList{Stmts: []node.Node{}}, }, &stmt.Foreach{ - ByRef: false, - Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, - Key: &expr.Variable{VarName: &node.Identifier{Value: "k"}}, + Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + Key: &expr.Variable{VarName: &node.Identifier{Value: "k"}}, Variable: &expr.List{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Val: &expr.Variable{VarName: &node.Identifier{Value: "v"}}, + Val: &expr.Variable{VarName: &node.Identifier{Value: "v"}}, }, }, }, @@ -1905,8 +1904,7 @@ func TestPhp5(t *testing.T) { Expr: &expr.Array{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Val: &scalar.Lnumber{Value: "1"}, + Val: &scalar.Lnumber{Value: "1"}, }, }, }, @@ -1915,13 +1913,11 @@ func TestPhp5(t *testing.T) { Expr: &expr.Array{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Key: &scalar.Lnumber{Value: "1"}, - Val: &scalar.Lnumber{Value: "1"}, + Key: &scalar.Lnumber{Value: "1"}, + Val: &scalar.Lnumber{Value: "1"}, }, &expr.ArrayItem{ - ByRef: true, - Val: &expr.Variable{VarName: &node.Identifier{Value: "b"}}, + Val: &expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, }, }, }, @@ -1930,9 +1926,8 @@ func TestPhp5(t *testing.T) { Expr: &expr.Array{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: true, - Key: &scalar.Lnumber{Value: "3"}, - Val: &expr.Variable{VarName: &node.Identifier{Value: "b"}}, + Key: &scalar.Lnumber{Value: "3"}, + Val: &expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, }, }, }, @@ -1941,22 +1936,18 @@ func TestPhp5(t *testing.T) { Expr: &expr.Array{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: true, - Val: &expr.Variable{VarName: &node.Identifier{Value: "b"}}, + Val: &expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, }, &expr.ArrayItem{ - ByRef: false, - Key: &scalar.Lnumber{Value: "1"}, - Val: &scalar.Lnumber{Value: "1"}, + Key: &scalar.Lnumber{Value: "1"}, + Val: &scalar.Lnumber{Value: "1"}, }, &expr.ArrayItem{ - ByRef: false, - Val: &scalar.Lnumber{Value: "1"}, + Val: &scalar.Lnumber{Value: "1"}, }, &expr.ArrayItem{ - ByRef: true, - Key: &scalar.Lnumber{Value: "3"}, - Val: &expr.Variable{VarName: &node.Identifier{Value: "b"}}, + Key: &scalar.Lnumber{Value: "3"}, + Val: &expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, }, }, }, @@ -2019,12 +2010,10 @@ func TestPhp5(t *testing.T) { }, Uses: []node.Node{ &expr.ClosureUse{ - ByRef: false, Variable: &expr.Variable{VarName: &node.Identifier{Value: "c"}}, }, &expr.ClosureUse{ - ByRef: true, - Variable: &expr.Variable{VarName: &node.Identifier{Value: "d"}}, + Variable: &expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "d"}}}, }, }, Stmts: []node.Node{}, @@ -2049,11 +2038,9 @@ func TestPhp5(t *testing.T) { }, Uses: []node.Node{ &expr.ClosureUse{ - ByRef: true, - Variable: &expr.Variable{VarName: &node.Identifier{Value: "c"}}, + Variable: &expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "c"}}}, }, &expr.ClosureUse{ - ByRef: false, Variable: &expr.Variable{VarName: &node.Identifier{Value: "d"}}, }, }, @@ -2286,12 +2273,10 @@ func TestPhp5(t *testing.T) { Variable: &expr.List{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Val: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + Val: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, }, &expr.ArrayItem{ - ByRef: false, - Val: &expr.Variable{VarName: &node.Identifier{Value: "b"}}, + Val: &expr.Variable{VarName: &node.Identifier{Value: "b"}}, }, }, }, @@ -2303,7 +2288,6 @@ func TestPhp5(t *testing.T) { Variable: &expr.List{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, Val: &expr.ArrayDimFetch{ Variable: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, }, @@ -2318,12 +2302,10 @@ func TestPhp5(t *testing.T) { Variable: &expr.List{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, Val: &expr.List{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Val: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + Val: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, }, }, }, @@ -2450,8 +2432,7 @@ func TestPhp5(t *testing.T) { Expr: &expr.ShortArray{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Val: &scalar.Lnumber{Value: "1"}, + Val: &scalar.Lnumber{Value: "1"}, }, }, }, @@ -2460,13 +2441,11 @@ func TestPhp5(t *testing.T) { Expr: &expr.ShortArray{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Key: &scalar.Lnumber{Value: "1"}, - Val: &scalar.Lnumber{Value: "1"}, + Key: &scalar.Lnumber{Value: "1"}, + Val: &scalar.Lnumber{Value: "1"}, }, &expr.ArrayItem{ - ByRef: true, - Val: &expr.Variable{VarName: &node.Identifier{Value: "b"}}, + Val: &expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, }, }, }, @@ -3025,12 +3004,10 @@ func TestPhp5(t *testing.T) { Variable: &expr.Array{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, Val: &expr.ShortArray{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Val: &scalar.Lnumber{Value: "0"}, + Val: &scalar.Lnumber{Value: "0"}, }, }, }, @@ -3127,8 +3104,7 @@ func TestPhp5(t *testing.T) { Variable: &expr.ShortArray{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Val: &scalar.Lnumber{Value: "1"}, + Val: &scalar.Lnumber{Value: "1"}, }, }, }, @@ -3578,13 +3554,11 @@ func TestPhp5(t *testing.T) { Expr: &expr.Array{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Key: &scalar.Lnumber{Value: "1"}, - Val: &scalar.Lnumber{Value: "1"}, + Key: &scalar.Lnumber{Value: "1"}, + Val: &scalar.Lnumber{Value: "1"}, }, &expr.ArrayItem{ - ByRef: false, - Val: &scalar.Lnumber{Value: "2"}, + Val: &scalar.Lnumber{Value: "2"}, }, }, }, @@ -3599,13 +3573,11 @@ func TestPhp5(t *testing.T) { Variable: &expr.ShortArray{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Val: &scalar.Lnumber{Value: "1"}, + Val: &scalar.Lnumber{Value: "1"}, }, &expr.ArrayItem{ - ByRef: false, - Key: &scalar.Lnumber{Value: "2"}, - Val: &scalar.Lnumber{Value: "2"}, + Key: &scalar.Lnumber{Value: "2"}, + Val: &scalar.Lnumber{Value: "2"}, }, }, }, diff --git a/php7/php7.go b/php7/php7.go index f41d3b7..21da154 100644 --- a/php7/php7.go +++ b/php7/php7.go @@ -22,12 +22,11 @@ import ( //line php7/php7.y:22 type yySymType struct { - yys int - node node.Node - token *scanner.Token - list []node.Node - foreachVariable foreachVariable - str string + yys int + node node.Node + token *scanner.Token + list []node.Node + str string ClassExtends *stmt.ClassExtends ClassImplements *stmt.ClassImplements @@ -346,12 +345,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line php7/php7.y:4281 - -type foreachVariable struct { - node node.Node - byRef bool -} +//line php7/php7.y:4279 //line yacctab:1 var yyExca = [...]int{ @@ -2119,7 +2113,7 @@ yydefault: case 1: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:299 + //line php7/php7.y:298 { yylex.(*Parser).rootNode = node.NewRoot(yyDollar[1].list) @@ -2128,463 +2122,463 @@ yydefault: } case 2: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:308 + //line php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 3: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:308 + //line php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 4: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:308 + //line php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 5: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:308 + //line php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 6: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:308 + //line php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 7: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:308 + //line php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 8: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:308 + //line php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 9: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:308 + //line php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 10: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:309 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 11: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:309 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 12: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:309 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 13: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:309 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 14: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:309 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 15: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:309 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 16: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:309 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 17: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:309 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 18: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:309 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 19: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:309 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 20: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:309 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 21: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:309 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 22: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:310 + //line php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 23: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:310 + //line php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 24: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:310 + //line php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 25: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:310 + //line php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 26: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:310 + //line php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 27: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:310 + //line php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 28: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:310 + //line php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 29: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:310 + //line php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 30: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:310 + //line php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 31: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:310 + //line php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 32: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:311 + //line php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 33: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:311 + //line php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 34: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:311 + //line php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 35: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:311 + //line php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 36: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:311 + //line php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 37: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:311 + //line php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 38: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:311 + //line php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 39: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:311 + //line php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 40: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:311 + //line php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 41: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:311 + //line php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 42: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:312 + //line php7/php7.y:311 { yyVAL.token = yyDollar[1].token } case 43: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:312 + //line php7/php7.y:311 { yyVAL.token = yyDollar[1].token } case 44: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:312 + //line php7/php7.y:311 { yyVAL.token = yyDollar[1].token } case 45: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:312 + //line php7/php7.y:311 { yyVAL.token = yyDollar[1].token } case 46: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:312 + //line php7/php7.y:311 { yyVAL.token = yyDollar[1].token } case 47: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:312 + //line php7/php7.y:311 { yyVAL.token = yyDollar[1].token } case 48: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:312 + //line php7/php7.y:311 { yyVAL.token = yyDollar[1].token } case 49: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:312 + //line php7/php7.y:311 { yyVAL.token = yyDollar[1].token } case 50: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:312 + //line php7/php7.y:311 { yyVAL.token = yyDollar[1].token } case 51: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:312 + //line php7/php7.y:311 { yyVAL.token = yyDollar[1].token } case 52: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:312 + //line php7/php7.y:311 { yyVAL.token = yyDollar[1].token } case 53: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:313 + //line php7/php7.y:312 { yyVAL.token = yyDollar[1].token } case 54: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:313 + //line php7/php7.y:312 { yyVAL.token = yyDollar[1].token } case 55: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:313 + //line php7/php7.y:312 { yyVAL.token = yyDollar[1].token } case 56: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:313 + //line php7/php7.y:312 { yyVAL.token = yyDollar[1].token } case 57: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:313 + //line php7/php7.y:312 { yyVAL.token = yyDollar[1].token } case 58: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:313 + //line php7/php7.y:312 { yyVAL.token = yyDollar[1].token } case 59: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:313 + //line php7/php7.y:312 { yyVAL.token = yyDollar[1].token } case 60: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:313 + //line php7/php7.y:312 { yyVAL.token = yyDollar[1].token } case 61: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:314 + //line php7/php7.y:313 { yyVAL.token = yyDollar[1].token } case 62: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:314 + //line php7/php7.y:313 { yyVAL.token = yyDollar[1].token } case 63: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:314 + //line php7/php7.y:313 { yyVAL.token = yyDollar[1].token } case 64: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:314 + //line php7/php7.y:313 { yyVAL.token = yyDollar[1].token } case 65: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:314 + //line php7/php7.y:313 { yyVAL.token = yyDollar[1].token } case 66: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:314 + //line php7/php7.y:313 { yyVAL.token = yyDollar[1].token } case 67: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:314 + //line php7/php7.y:313 { yyVAL.token = yyDollar[1].token } case 68: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:314 + //line php7/php7.y:313 { yyVAL.token = yyDollar[1].token } case 69: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:319 + //line php7/php7.y:318 { yyVAL.token = yyDollar[1].token } case 70: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:320 + //line php7/php7.y:319 { yyVAL.token = yyDollar[1].token } case 71: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:320 + //line php7/php7.y:319 { yyVAL.token = yyDollar[1].token } case 72: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:320 + //line php7/php7.y:319 { yyVAL.token = yyDollar[1].token } case 73: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:320 + //line php7/php7.y:319 { yyVAL.token = yyDollar[1].token } case 74: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:320 + //line php7/php7.y:319 { yyVAL.token = yyDollar[1].token } case 75: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:320 + //line php7/php7.y:319 { yyVAL.token = yyDollar[1].token } case 76: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:325 + //line php7/php7.y:324 { yyVAL.token = yyDollar[1].token } case 77: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:327 + //line php7/php7.y:326 { yyVAL.token = yyDollar[1].token } case 78: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:332 + //line php7/php7.y:331 { if yyDollar[2].node != nil { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -2592,13 +2586,13 @@ yydefault: } case 79: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:338 + //line php7/php7.y:337 { yyVAL.list = []node.Node{} } case 80: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:343 + //line php7/php7.y:342 { namePart := name.NewNamePart(yyDollar[1].token.Value) yyVAL.list = []node.Node{namePart} @@ -2611,7 +2605,7 @@ yydefault: } case 81: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:354 + //line php7/php7.y:353 { namePart := name.NewNamePart(yyDollar[3].token.Value) yyVAL.list = append(yyDollar[1].list, namePart) @@ -2625,7 +2619,7 @@ yydefault: } case 82: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:369 + //line php7/php7.y:368 { yyVAL.node = name.NewName(yyDollar[1].list) @@ -2634,7 +2628,7 @@ yydefault: } case 83: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:376 + //line php7/php7.y:375 { yyVAL.node = name.NewRelative(yyDollar[3].list) @@ -2647,7 +2641,7 @@ yydefault: } case 84: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:387 + //line php7/php7.y:386 { yyVAL.node = name.NewFullyQualified(yyDollar[2].list) @@ -2659,44 +2653,44 @@ yydefault: } case 85: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:400 + //line php7/php7.y:399 { // error yyVAL.node = nil } case 86: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:405 + //line php7/php7.y:404 { yyVAL.node = yyDollar[1].node } case 87: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:407 + //line php7/php7.y:406 { yyVAL.node = yyDollar[1].node } case 88: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:409 + //line php7/php7.y:408 { yyVAL.node = yyDollar[1].node } case 89: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:411 + //line php7/php7.y:410 { yyVAL.node = yyDollar[1].node } case 90: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:413 + //line php7/php7.y:412 { yyVAL.node = yyDollar[1].node } case 91: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:415 + //line php7/php7.y:414 { yyVAL.node = stmt.NewHaltCompiler() @@ -2711,7 +2705,7 @@ yydefault: } case 92: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:428 + //line php7/php7.y:427 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewNamespace(name, nil) @@ -2726,7 +2720,7 @@ yydefault: } case 93: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:441 + //line php7/php7.y:440 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewNamespace(name, yyDollar[4].list) @@ -2742,7 +2736,7 @@ yydefault: } case 94: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:455 + //line php7/php7.y:454 { yyVAL.node = stmt.NewNamespace(nil, yyDollar[3].list) @@ -2756,7 +2750,7 @@ yydefault: } case 95: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:467 + //line php7/php7.y:466 { yyVAL.node = yyDollar[2].node @@ -2769,7 +2763,7 @@ yydefault: } case 96: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:478 + //line php7/php7.y:477 { yyVAL.node = yyDollar[3].node.(*stmt.GroupUse).SetUseType(yyDollar[2].node) @@ -2782,7 +2776,7 @@ yydefault: } case 97: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:489 + //line php7/php7.y:488 { yyVAL.node = stmt.NewUseList(nil, yyDollar[2].list) @@ -2795,7 +2789,7 @@ yydefault: } case 98: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:500 + //line php7/php7.y:499 { yyVAL.node = stmt.NewUseList(yyDollar[2].node, yyDollar[3].list) @@ -2808,7 +2802,7 @@ yydefault: } case 99: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:511 + //line php7/php7.y:510 { yyVAL.node = stmt.NewConstList(yyDollar[2].list) @@ -2821,7 +2815,7 @@ yydefault: } case 100: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:525 + //line php7/php7.y:524 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -2833,7 +2827,7 @@ yydefault: } case 101: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:535 + //line php7/php7.y:534 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -2845,7 +2839,7 @@ yydefault: } case 102: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:548 + //line php7/php7.y:547 { name := name.NewName(yyDollar[1].list) yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[4].list) @@ -2864,7 +2858,7 @@ yydefault: } case 103: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:565 + //line php7/php7.y:564 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[5].list) @@ -2884,7 +2878,7 @@ yydefault: } case 104: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:586 + //line php7/php7.y:585 { name := name.NewName(yyDollar[1].list) yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[4].list) @@ -2903,7 +2897,7 @@ yydefault: } case 105: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:603 + //line php7/php7.y:602 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[5].list) @@ -2923,19 +2917,19 @@ yydefault: } case 106: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:624 + //line php7/php7.y:623 { yyVAL.token = nil } case 107: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:626 + //line php7/php7.y:625 { yyVAL.token = yyDollar[1].token } case 108: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:631 + //line php7/php7.y:630 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -2944,13 +2938,13 @@ yydefault: } case 109: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:638 + //line php7/php7.y:637 { yyVAL.list = []node.Node{yyDollar[1].node} } case 110: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:643 + //line php7/php7.y:642 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -2959,13 +2953,13 @@ yydefault: } case 111: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:650 + //line php7/php7.y:649 { yyVAL.list = []node.Node{yyDollar[1].node} } case 112: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:655 + //line php7/php7.y:654 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -2974,25 +2968,25 @@ yydefault: } case 113: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:662 + //line php7/php7.y:661 { yyVAL.list = []node.Node{yyDollar[1].node} } case 114: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:667 + //line php7/php7.y:666 { yyVAL.node = yyDollar[1].node } case 115: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:669 + //line php7/php7.y:668 { yyVAL.node = yyDollar[2].node.(*stmt.Use).SetUseType(yyDollar[1].node) } case 116: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:674 + //line php7/php7.y:673 { name := name.NewName(yyDollar[1].list) yyVAL.node = stmt.NewUse(nil, name, nil) @@ -3003,7 +2997,7 @@ yydefault: } case 117: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:683 + //line php7/php7.y:682 { name := name.NewName(yyDollar[1].list) alias := node.NewIdentifier(yyDollar[3].token.Value) @@ -3020,13 +3014,13 @@ yydefault: } case 118: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:701 + //line php7/php7.y:700 { yyVAL.node = yyDollar[1].node } case 119: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:703 + //line php7/php7.y:702 { yyVAL.node = yyDollar[2].node @@ -3035,7 +3029,7 @@ yydefault: } case 120: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:713 + //line php7/php7.y:712 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3044,13 +3038,13 @@ yydefault: } case 121: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:720 + //line php7/php7.y:719 { yyVAL.list = []node.Node{yyDollar[1].node} } case 122: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:725 + //line php7/php7.y:724 { if yyDollar[2].node != nil { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -3058,50 +3052,50 @@ yydefault: } case 123: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:731 + //line php7/php7.y:730 { yyVAL.list = []node.Node{} } case 124: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:736 + //line php7/php7.y:735 { // error yyVAL.node = nil } case 125: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:741 + //line php7/php7.y:740 { yyVAL.node = yyDollar[1].node } case 126: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:743 + //line php7/php7.y:742 { yyVAL.node = yyDollar[1].node } case 127: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:745 + //line php7/php7.y:744 { yyVAL.node = yyDollar[1].node } case 128: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:747 + //line php7/php7.y:746 { yyVAL.node = yyDollar[1].node } case 129: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:749 + //line php7/php7.y:748 { yyVAL.node = yyDollar[1].node } case 130: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:751 + //line php7/php7.y:750 { yyVAL.node = stmt.NewHaltCompiler() @@ -3116,7 +3110,7 @@ yydefault: } case 131: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:766 + //line php7/php7.y:765 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) @@ -3129,19 +3123,19 @@ yydefault: } case 132: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:777 + //line php7/php7.y:776 { yyVAL.node = yyDollar[1].node } case 133: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:779 + //line php7/php7.y:778 { yyVAL.node = yyDollar[1].node } case 134: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:781 + //line php7/php7.y:780 { switch n := yyDollar[5].node.(type) { case *stmt.While: @@ -3162,7 +3156,7 @@ yydefault: } case 135: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:800 + //line php7/php7.y:799 { yyVAL.node = stmt.NewDo(yyDollar[2].node, yyDollar[5].node) @@ -3178,7 +3172,7 @@ yydefault: } case 136: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:814 + //line php7/php7.y:813 { switch n := yyDollar[9].node.(type) { case *stmt.For: @@ -3205,7 +3199,7 @@ yydefault: } case 137: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:839 + //line php7/php7.y:838 { switch n := yyDollar[5].node.(type) { case *stmt.Switch: @@ -3228,7 +3222,7 @@ yydefault: } case 138: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:860 + //line php7/php7.y:859 { yyVAL.node = stmt.NewBreak(yyDollar[2].node) @@ -3241,7 +3235,7 @@ yydefault: } case 139: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:871 + //line php7/php7.y:870 { yyVAL.node = stmt.NewContinue(yyDollar[2].node) @@ -3254,7 +3248,7 @@ yydefault: } case 140: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:882 + //line php7/php7.y:881 { yyVAL.node = stmt.NewReturn(yyDollar[2].node) @@ -3267,7 +3261,7 @@ yydefault: } case 141: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:893 + //line php7/php7.y:892 { yyVAL.node = stmt.NewGlobal(yyDollar[2].list) @@ -3280,7 +3274,7 @@ yydefault: } case 142: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:904 + //line php7/php7.y:903 { yyVAL.node = stmt.NewStatic(yyDollar[2].list) @@ -3293,7 +3287,7 @@ yydefault: } case 143: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:915 + //line php7/php7.y:914 { yyVAL.node = stmt.NewEcho(yyDollar[2].list) @@ -3306,7 +3300,7 @@ yydefault: } case 144: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:926 + //line php7/php7.y:925 { yyVAL.node = stmt.NewInlineHtml(yyDollar[1].token.Value) @@ -3318,7 +3312,7 @@ yydefault: } case 145: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:936 + //line php7/php7.y:935 { yyVAL.node = stmt.NewExpression(yyDollar[1].node) @@ -3330,7 +3324,7 @@ yydefault: } case 146: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:946 + //line php7/php7.y:945 { yyVAL.node = stmt.NewUnset(yyDollar[3].list) @@ -3348,17 +3342,15 @@ yydefault: } case 147: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:962 + //line php7/php7.y:961 { switch n := yyDollar[7].node.(type) { case *stmt.Foreach: n.Expr = yyDollar[3].node - n.ByRef = yyDollar[5].foreachVariable.byRef - n.Variable = yyDollar[5].foreachVariable.node + n.Variable = yyDollar[5].node case *stmt.AltForeach: n.Expr = yyDollar[3].node - n.ByRef = yyDollar[5].foreachVariable.byRef - n.Variable = yyDollar[5].foreachVariable.node + n.Variable = yyDollar[5].node } yyVAL.node = yyDollar[7].node @@ -3374,19 +3366,17 @@ yydefault: } case 148: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:986 + //line php7/php7.y:983 { switch n := yyDollar[9].node.(type) { case *stmt.Foreach: n.Expr = yyDollar[3].node n.Key = yyDollar[5].node - n.ByRef = yyDollar[7].foreachVariable.byRef - n.Variable = yyDollar[7].foreachVariable.node + n.Variable = yyDollar[7].node case *stmt.AltForeach: n.Expr = yyDollar[3].node n.Key = yyDollar[5].node - n.ByRef = yyDollar[7].foreachVariable.byRef - n.Variable = yyDollar[7].foreachVariable.node + n.Variable = yyDollar[7].node } yyVAL.node = yyDollar[9].node @@ -3403,7 +3393,7 @@ yydefault: } case 149: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1013 + //line php7/php7.y:1008 { yyVAL.node = stmt.NewDeclare(yyDollar[3].list, yyDollar[5].node) @@ -3417,7 +3407,7 @@ yydefault: } case 150: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1025 + //line php7/php7.y:1020 { yyVAL.node = stmt.NewNop() @@ -3429,7 +3419,7 @@ yydefault: } case 151: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1035 + //line php7/php7.y:1030 { if yyDollar[6].node == nil { yyVAL.node = stmt.NewTry(yyDollar[3].list, yyDollar[5].list, yyDollar[6].node) @@ -3446,7 +3436,7 @@ yydefault: } case 152: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1050 + //line php7/php7.y:1045 { yyVAL.node = stmt.NewThrow(yyDollar[2].node) @@ -3459,7 +3449,7 @@ yydefault: } case 153: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1061 + //line php7/php7.y:1056 { label := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewGoto(label) @@ -3475,7 +3465,7 @@ yydefault: } case 154: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1075 + //line php7/php7.y:1070 { label := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewLabel(label) @@ -3490,13 +3480,13 @@ yydefault: } case 155: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1090 + //line php7/php7.y:1085 { yyVAL.list = []node.Node{} } case 156: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:1092 + //line php7/php7.y:1087 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[5].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -3518,13 +3508,13 @@ yydefault: } case 157: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1114 + //line php7/php7.y:1109 { yyVAL.list = []node.Node{yyDollar[1].node} } case 158: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1116 + //line php7/php7.y:1111 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3533,13 +3523,13 @@ yydefault: } case 159: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1126 + //line php7/php7.y:1121 { yyVAL.node = nil } case 160: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1128 + //line php7/php7.y:1123 { yyVAL.node = stmt.NewFinally(yyDollar[3].list) @@ -3553,13 +3543,13 @@ yydefault: } case 161: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1143 + //line php7/php7.y:1138 { yyVAL.list = []node.Node{yyDollar[1].node} } case 162: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1145 + //line php7/php7.y:1140 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3568,13 +3558,13 @@ yydefault: } case 163: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1155 + //line php7/php7.y:1150 { yyVAL.node = yyDollar[1].node } case 164: yyDollar = yyS[yypt-11 : yypt+1] - //line php7/php7.y:1160 + //line php7/php7.y:1155 { name := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewFunction(name, yyDollar[2].token != nil, yyDollar[6].list, yyDollar[8].node, yyDollar[10].list, yyDollar[4].str) @@ -3596,31 +3586,31 @@ yydefault: } case 165: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1184 + //line php7/php7.y:1179 { yyVAL.token = nil } case 166: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1186 + //line php7/php7.y:1181 { yyVAL.token = yyDollar[1].token } case 167: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1191 + //line php7/php7.y:1186 { yyVAL.token = nil } case 168: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1193 + //line php7/php7.y:1188 { yyVAL.token = yyDollar[1].token } case 169: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:1198 + //line php7/php7.y:1193 { name := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewClass(name, yyDollar[1].list, nil, yyDollar[4].ClassExtends, yyDollar[5].ClassImplements, yyDollar[8].list, yyDollar[6].str) @@ -3637,7 +3627,7 @@ yydefault: } case 170: yyDollar = yyS[yypt-8 : yypt+1] - //line php7/php7.y:1213 + //line php7/php7.y:1208 { name := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewClass(name, nil, nil, yyDollar[3].ClassExtends, yyDollar[4].ClassImplements, yyDollar[7].list, yyDollar[5].str) @@ -3654,19 +3644,19 @@ yydefault: } case 171: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1231 + //line php7/php7.y:1226 { yyVAL.list = []node.Node{yyDollar[1].node} } case 172: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1233 + //line php7/php7.y:1228 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 173: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1238 + //line php7/php7.y:1233 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -3678,7 +3668,7 @@ yydefault: } case 174: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1248 + //line php7/php7.y:1243 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -3690,7 +3680,7 @@ yydefault: } case 175: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1261 + //line php7/php7.y:1256 { name := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewTrait(name, yyDollar[5].list, yyDollar[3].str) @@ -3707,7 +3697,7 @@ yydefault: } case 176: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:1279 + //line php7/php7.y:1274 { name := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewInterface(name, yyDollar[3].InterfaceExtends, yyDollar[6].list, yyDollar[4].str) @@ -3724,13 +3714,13 @@ yydefault: } case 177: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1297 + //line php7/php7.y:1292 { yyVAL.ClassExtends = nil } case 178: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1299 + //line php7/php7.y:1294 { yyVAL.ClassExtends = stmt.NewClassExtends(yyDollar[2].node) @@ -3742,13 +3732,13 @@ yydefault: } case 179: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1312 + //line php7/php7.y:1307 { yyVAL.InterfaceExtends = nil } case 180: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1314 + //line php7/php7.y:1309 { yyVAL.InterfaceExtends = stmt.NewInterfaceExtends(yyDollar[2].list) @@ -3760,13 +3750,13 @@ yydefault: } case 181: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1327 + //line php7/php7.y:1322 { yyVAL.ClassImplements = nil } case 182: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1329 + //line php7/php7.y:1324 { yyVAL.ClassImplements = stmt.NewClassImplements(yyDollar[2].list) @@ -3778,54 +3768,52 @@ yydefault: } case 183: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1342 + //line php7/php7.y:1337 { - yyVAL.foreachVariable = foreachVariable{yyDollar[1].node, false} + yyVAL.node = yyDollar[1].node } case 184: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1344 + //line php7/php7.y:1341 { - yyVAL.foreachVariable = foreachVariable{yyDollar[2].node, true} + yyVAL.node = expr.NewReference(yyDollar[2].node) // save position yylex.(*Parser).positions.AddPosition(yyDollar[2].node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yylex.(*Parser).comments.AddFromToken(yyDollar[2].node, yyDollar[1].token, comment.AmpersandToken) + yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[1].token, comment.AmpersandToken) } case 185: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1354 + //line php7/php7.y:1351 { - list := expr.NewList(yyDollar[3].list) - yyVAL.foreachVariable = foreachVariable{list, false} + yyVAL.node = expr.NewList(yyDollar[3].list) // save position - yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) // save comments - yylex.(*Parser).comments.AddFromToken(list, yyDollar[1].token, comment.ListToken) - yylex.(*Parser).comments.AddFromToken(list, yyDollar[2].token, comment.OpenParenthesisToken) - yylex.(*Parser).comments.AddFromToken(list, yyDollar[4].token, comment.CloseParenthesisToken) + yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[1].token, comment.ListToken) + yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[2].token, comment.OpenParenthesisToken) + yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[4].token, comment.CloseParenthesisToken) } case 186: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1367 + //line php7/php7.y:1363 { - list := expr.NewShortList(yyDollar[2].list) - yyVAL.foreachVariable = foreachVariable{list, false} + yyVAL.node = expr.NewShortList(yyDollar[2].list) // save position - yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) // save comments - yylex.(*Parser).comments.AddFromToken(list, yyDollar[1].token, comment.OpenSquareBracket) - yylex.(*Parser).comments.AddFromToken(list, yyDollar[3].token, comment.CloseSquareBracket) + yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[1].token, comment.OpenSquareBracket) + yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[3].token, comment.CloseSquareBracket) } case 187: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1382 + //line php7/php7.y:1377 { yyVAL.node = stmt.NewFor(nil, nil, nil, yyDollar[1].node) @@ -3834,7 +3822,7 @@ yydefault: } case 188: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1389 + //line php7/php7.y:1384 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltFor(nil, nil, nil, stmtList) @@ -3850,19 +3838,19 @@ yydefault: } case 189: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1406 + //line php7/php7.y:1401 { - yyVAL.node = stmt.NewForeach(nil, nil, nil, yyDollar[1].node, false) + yyVAL.node = stmt.NewForeach(nil, nil, nil, yyDollar[1].node) // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) } case 190: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1413 + //line php7/php7.y:1408 { stmtList := stmt.NewStmtList(yyDollar[2].list) - yyVAL.node = stmt.NewAltForeach(nil, nil, nil, stmtList, false) + yyVAL.node = stmt.NewAltForeach(nil, nil, nil, stmtList) // save position yylex.(*Parser).positions.AddPosition(stmtList, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) @@ -3875,13 +3863,13 @@ yydefault: } case 191: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1430 + //line php7/php7.y:1425 { yyVAL.node = yyDollar[1].node } case 192: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1432 + //line php7/php7.y:1427 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) @@ -3895,7 +3883,7 @@ yydefault: } case 193: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1447 + //line php7/php7.y:1442 { caseList := stmt.NewCaseList(yyDollar[2].list) yyVAL.node = stmt.NewSwitch(nil, caseList) @@ -3910,7 +3898,7 @@ yydefault: } case 194: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1460 + //line php7/php7.y:1455 { caseList := stmt.NewCaseList(yyDollar[3].list) yyVAL.node = stmt.NewSwitch(nil, caseList) @@ -3926,7 +3914,7 @@ yydefault: } case 195: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1474 + //line php7/php7.y:1469 { caseList := stmt.NewCaseList(yyDollar[2].list) yyVAL.node = stmt.NewAltSwitch(nil, caseList) @@ -3942,7 +3930,7 @@ yydefault: } case 196: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1488 + //line php7/php7.y:1483 { caseList := stmt.NewCaseList(yyDollar[3].list) @@ -3960,13 +3948,13 @@ yydefault: } case 197: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1507 + //line php7/php7.y:1502 { yyVAL.list = []node.Node{} } case 198: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1509 + //line php7/php7.y:1504 { _case := stmt.NewCase(yyDollar[3].node, yyDollar[5].list) yyVAL.list = append(yyDollar[1].list, _case) @@ -3980,7 +3968,7 @@ yydefault: } case 199: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1521 + //line php7/php7.y:1516 { _default := stmt.NewDefault(yyDollar[4].list) yyVAL.list = append(yyDollar[1].list, _default) @@ -3994,19 +3982,19 @@ yydefault: } case 200: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1536 + //line php7/php7.y:1531 { yyVAL.token = yyDollar[1].token } case 201: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1538 + //line php7/php7.y:1533 { yyVAL.token = yyDollar[1].token } case 202: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1543 + //line php7/php7.y:1538 { yyVAL.node = stmt.NewWhile(nil, yyDollar[1].node) @@ -4015,7 +4003,7 @@ yydefault: } case 203: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1550 + //line php7/php7.y:1545 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltWhile(nil, stmtList) @@ -4031,7 +4019,7 @@ yydefault: } case 204: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1567 + //line php7/php7.y:1562 { yyVAL.node = stmt.NewIf(yyDollar[3].node, yyDollar[5].node, nil, nil) @@ -4045,7 +4033,7 @@ yydefault: } case 205: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1579 + //line php7/php7.y:1574 { _elseIf := stmt.NewElseIf(yyDollar[4].node, yyDollar[6].node) yyVAL.node = yyDollar[1].node.(*stmt.If).AddElseIf(_elseIf) @@ -4061,13 +4049,13 @@ yydefault: } case 206: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1596 + //line php7/php7.y:1591 { yyVAL.node = yyDollar[1].node } case 207: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1598 + //line php7/php7.y:1593 { _else := stmt.NewElse(yyDollar[3].node) yyVAL.node = yyDollar[1].node.(*stmt.If).SetElse(_else) @@ -4081,7 +4069,7 @@ yydefault: } case 208: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1613 + //line php7/php7.y:1608 { stmts := stmt.NewStmtList(yyDollar[6].list) yyVAL.node = stmt.NewAltIf(yyDollar[3].node, stmts, nil, nil) @@ -4098,7 +4086,7 @@ yydefault: } case 209: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:1628 + //line php7/php7.y:1623 { stmts := stmt.NewStmtList(yyDollar[7].list) _elseIf := stmt.NewAltElseIf(yyDollar[4].node, stmts) @@ -4116,7 +4104,7 @@ yydefault: } case 210: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1647 + //line php7/php7.y:1642 { yyVAL.node = yyDollar[1].node @@ -4129,7 +4117,7 @@ yydefault: } case 211: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1658 + //line php7/php7.y:1653 { stmts := stmt.NewStmtList(yyDollar[4].list) _else := stmt.NewAltElse(stmts) @@ -4148,25 +4136,25 @@ yydefault: } case 212: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1678 + //line php7/php7.y:1673 { yyVAL.list = yyDollar[1].list } case 213: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1680 + //line php7/php7.y:1675 { yyVAL.list = nil } case 214: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1685 + //line php7/php7.y:1680 { yyVAL.list = []node.Node{yyDollar[1].node} } case 215: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1687 + //line php7/php7.y:1682 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4175,7 +4163,7 @@ yydefault: } case 216: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1697 + //line php7/php7.y:1692 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -4214,7 +4202,7 @@ yydefault: } case 217: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1734 + //line php7/php7.y:1729 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -4253,25 +4241,25 @@ yydefault: } case 218: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1774 + //line php7/php7.y:1769 { yyVAL.node = nil } case 219: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1776 + //line php7/php7.y:1771 { yyVAL.node = yyDollar[1].node } case 220: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1781 + //line php7/php7.y:1776 { yyVAL.node = yyDollar[1].node } case 221: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1783 + //line php7/php7.y:1778 { yyVAL.node = node.NewNullable(yyDollar[2].node) @@ -4283,7 +4271,7 @@ yydefault: } case 222: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1796 + //line php7/php7.y:1791 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4295,7 +4283,7 @@ yydefault: } case 223: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1806 + //line php7/php7.y:1801 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4307,19 +4295,19 @@ yydefault: } case 224: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1816 + //line php7/php7.y:1811 { yyVAL.node = yyDollar[1].node } case 225: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1821 + //line php7/php7.y:1816 { yyVAL.node = nil } case 226: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1823 + //line php7/php7.y:1818 { yyVAL.node = yyDollar[2].node @@ -4328,7 +4316,7 @@ yydefault: } case 227: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1833 + //line php7/php7.y:1828 { yyVAL.node = node.NewArgumentList(nil) @@ -4337,7 +4325,7 @@ yydefault: } case 228: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1840 + //line php7/php7.y:1835 { yyVAL.node = node.NewArgumentList(yyDollar[2].list) @@ -4346,13 +4334,13 @@ yydefault: } case 229: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1850 + //line php7/php7.y:1845 { yyVAL.list = []node.Node{yyDollar[1].node} } case 230: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1852 + //line php7/php7.y:1847 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4361,7 +4349,7 @@ yydefault: } case 231: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1862 + //line php7/php7.y:1857 { yyVAL.node = node.NewArgument(yyDollar[1].node, false, false) @@ -4370,7 +4358,7 @@ yydefault: } case 232: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1869 + //line php7/php7.y:1864 { yyVAL.node = node.NewArgument(yyDollar[2].node, true, false) @@ -4382,7 +4370,7 @@ yydefault: } case 233: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1882 + //line php7/php7.y:1877 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4391,19 +4379,19 @@ yydefault: } case 234: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1889 + //line php7/php7.y:1884 { yyVAL.list = []node.Node{yyDollar[1].node} } case 235: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1894 + //line php7/php7.y:1889 { yyVAL.node = yyDollar[1].node } case 236: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1899 + //line php7/php7.y:1894 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4412,13 +4400,13 @@ yydefault: } case 237: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1906 + //line php7/php7.y:1901 { yyVAL.list = []node.Node{yyDollar[1].node} } case 238: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1911 + //line php7/php7.y:1906 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -4434,7 +4422,7 @@ yydefault: } case 239: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1925 + //line php7/php7.y:1920 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -4451,19 +4439,19 @@ yydefault: } case 240: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1943 + //line php7/php7.y:1938 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 241: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1945 + //line php7/php7.y:1940 { yyVAL.list = []node.Node{} } case 242: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1950 + //line php7/php7.y:1945 { yyVAL.node = stmt.NewPropertyList(yyDollar[1].list, yyDollar[2].list) @@ -4475,7 +4463,7 @@ yydefault: } case 243: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1960 + //line php7/php7.y:1955 { yyVAL.node = stmt.NewClassConstList(yyDollar[1].list, yyDollar[3].list) @@ -4488,7 +4476,7 @@ yydefault: } case 244: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1971 + //line php7/php7.y:1966 { var adaptationList *stmt.TraitAdaptationList @@ -4510,7 +4498,7 @@ yydefault: } case 245: yyDollar = yyS[yypt-10 : yypt+1] - //line php7/php7.y:1991 + //line php7/php7.y:1986 { name := node.NewIdentifier(yyDollar[4].token.Value) yyVAL.node = stmt.NewClassMethod(name, yyDollar[1].list, yyDollar[3].token != nil, yyDollar[7].list, yyDollar[9].node, yyDollar[10].node, yyDollar[5].str) @@ -4534,13 +4522,13 @@ yydefault: } case 246: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2016 + //line php7/php7.y:2011 { yyVAL.list = []node.Node{yyDollar[1].node} } case 247: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2018 + //line php7/php7.y:2013 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4549,7 +4537,7 @@ yydefault: } case 248: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2028 + //line php7/php7.y:2023 { yyVAL.node = stmt.NewNop() @@ -4561,7 +4549,7 @@ yydefault: } case 249: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2038 + //line php7/php7.y:2033 { yyVAL.node = stmt.NewTraitAdaptationList(nil) @@ -4573,7 +4561,7 @@ yydefault: } case 250: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2048 + //line php7/php7.y:2043 { yyVAL.node = stmt.NewTraitAdaptationList(yyDollar[2].list) @@ -4585,19 +4573,19 @@ yydefault: } case 251: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2061 + //line php7/php7.y:2056 { yyVAL.list = []node.Node{yyDollar[1].node} } case 252: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2063 + //line php7/php7.y:2058 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 253: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2068 + //line php7/php7.y:2063 { yyVAL.node = yyDollar[1].node @@ -4606,7 +4594,7 @@ yydefault: } case 254: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2075 + //line php7/php7.y:2070 { yyVAL.node = yyDollar[1].node @@ -4615,7 +4603,7 @@ yydefault: } case 255: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2085 + //line php7/php7.y:2080 { yyVAL.node = stmt.NewTraitUsePrecedence(yyDollar[1].node, yyDollar[3].list) @@ -4627,7 +4615,7 @@ yydefault: } case 256: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2098 + //line php7/php7.y:2093 { alias := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, alias) @@ -4642,7 +4630,7 @@ yydefault: } case 257: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2111 + //line php7/php7.y:2106 { alias := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, alias) @@ -4657,7 +4645,7 @@ yydefault: } case 258: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2124 + //line php7/php7.y:2119 { alias := node.NewIdentifier(yyDollar[4].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, alias) @@ -4672,7 +4660,7 @@ yydefault: } case 259: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2137 + //line php7/php7.y:2132 { yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, nil) @@ -4684,7 +4672,7 @@ yydefault: } case 260: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2150 + //line php7/php7.y:2145 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewTraitMethodRef(nil, name) @@ -4698,13 +4686,13 @@ yydefault: } case 261: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2162 + //line php7/php7.y:2157 { yyVAL.node = yyDollar[1].node } case 262: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2167 + //line php7/php7.y:2162 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitMethodRef(yyDollar[1].node, target) @@ -4719,7 +4707,7 @@ yydefault: } case 263: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2183 + //line php7/php7.y:2178 { yyVAL.node = stmt.NewNop() @@ -4731,7 +4719,7 @@ yydefault: } case 264: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2193 + //line php7/php7.y:2188 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) @@ -4744,13 +4732,13 @@ yydefault: } case 265: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2207 + //line php7/php7.y:2202 { yyVAL.list = yyDollar[1].list } case 266: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2209 + //line php7/php7.y:2204 { modifier := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.list = []node.Node{modifier} @@ -4763,31 +4751,31 @@ yydefault: } case 267: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2223 + //line php7/php7.y:2218 { yyVAL.list = nil } case 268: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2225 + //line php7/php7.y:2220 { yyVAL.list = yyDollar[1].list } case 269: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2230 + //line php7/php7.y:2225 { yyVAL.list = []node.Node{yyDollar[1].node} } case 270: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2232 + //line php7/php7.y:2227 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 271: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2237 + //line php7/php7.y:2232 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4799,7 +4787,7 @@ yydefault: } case 272: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2247 + //line php7/php7.y:2242 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4811,7 +4799,7 @@ yydefault: } case 273: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2257 + //line php7/php7.y:2252 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4823,7 +4811,7 @@ yydefault: } case 274: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2267 + //line php7/php7.y:2262 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4835,7 +4823,7 @@ yydefault: } case 275: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2277 + //line php7/php7.y:2272 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4847,7 +4835,7 @@ yydefault: } case 276: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2287 + //line php7/php7.y:2282 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4859,7 +4847,7 @@ yydefault: } case 277: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2300 + //line php7/php7.y:2295 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4868,13 +4856,13 @@ yydefault: } case 278: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2307 + //line php7/php7.y:2302 { yyVAL.list = []node.Node{yyDollar[1].node} } case 279: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2312 + //line php7/php7.y:2307 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -4890,7 +4878,7 @@ yydefault: } case 280: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2326 + //line php7/php7.y:2321 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -4907,7 +4895,7 @@ yydefault: } case 281: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2344 + //line php7/php7.y:2339 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4916,13 +4904,13 @@ yydefault: } case 282: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2351 + //line php7/php7.y:2346 { yyVAL.list = []node.Node{yyDollar[1].node} } case 283: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2356 + //line php7/php7.y:2351 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewConstant(name, yyDollar[3].node, yyDollar[4].str) @@ -4937,7 +4925,7 @@ yydefault: } case 284: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2372 + //line php7/php7.y:2367 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewConstant(name, yyDollar[3].node, yyDollar[4].str) @@ -4952,7 +4940,7 @@ yydefault: } case 285: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2388 + //line php7/php7.y:2383 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4961,31 +4949,31 @@ yydefault: } case 286: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2395 + //line php7/php7.y:2390 { yyVAL.list = []node.Node{yyDollar[1].node} } case 287: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2400 + //line php7/php7.y:2395 { yyVAL.node = yyDollar[1].node } case 288: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2405 + //line php7/php7.y:2400 { yyVAL.list = nil } case 289: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2407 + //line php7/php7.y:2402 { yyVAL.list = yyDollar[1].list } case 290: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2412 + //line php7/php7.y:2407 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4994,13 +4982,13 @@ yydefault: } case 291: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2419 + //line php7/php7.y:2414 { yyVAL.list = []node.Node{yyDollar[1].node} } case 292: yyDollar = yyS[yypt-8 : yypt+1] - //line php7/php7.y:2424 + //line php7/php7.y:2419 { if yyDollar[2].node != nil { yyVAL.node = stmt.NewClass(nil, nil, yyDollar[2].node.(*node.ArgumentList), yyDollar[3].ClassExtends, yyDollar[4].ClassImplements, yyDollar[7].list, yyDollar[5].str) @@ -5018,7 +5006,7 @@ yydefault: } case 293: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2443 + //line php7/php7.y:2438 { if yyDollar[3].node != nil { yyVAL.node = expr.NewNew(yyDollar[2].node, yyDollar[3].node.(*node.ArgumentList)) @@ -5033,7 +5021,7 @@ yydefault: } case 294: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2456 + //line php7/php7.y:2451 { yyVAL.node = expr.NewNew(yyDollar[2].node, nil) @@ -5045,7 +5033,7 @@ yydefault: } case 295: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:2469 + //line php7/php7.y:2464 { list := expr.NewList(yyDollar[3].list) yyVAL.node = assign.NewAssign(list, yyDollar[6].node) @@ -5062,7 +5050,7 @@ yydefault: } case 296: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:2484 + //line php7/php7.y:2479 { shortList := expr.NewShortList(yyDollar[2].list) yyVAL.node = assign.NewAssign(shortList, yyDollar[5].node) @@ -5078,7 +5066,7 @@ yydefault: } case 297: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2498 + //line php7/php7.y:2493 { yyVAL.node = assign.NewAssign(yyDollar[1].node, yyDollar[3].node) @@ -5090,7 +5078,7 @@ yydefault: } case 298: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2508 + //line php7/php7.y:2503 { yyVAL.node = assign.NewReference(yyDollar[1].node, yyDollar[4].node) @@ -5103,7 +5091,7 @@ yydefault: } case 299: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2519 + //line php7/php7.y:2514 { yyVAL.node = expr.NewClone(yyDollar[2].node) @@ -5115,7 +5103,7 @@ yydefault: } case 300: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2529 + //line php7/php7.y:2524 { yyVAL.node = assign.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -5127,7 +5115,7 @@ yydefault: } case 301: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2539 + //line php7/php7.y:2534 { yyVAL.node = assign.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -5139,7 +5127,7 @@ yydefault: } case 302: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2549 + //line php7/php7.y:2544 { yyVAL.node = assign.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -5151,7 +5139,7 @@ yydefault: } case 303: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2559 + //line php7/php7.y:2554 { yyVAL.node = assign.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -5163,7 +5151,7 @@ yydefault: } case 304: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2569 + //line php7/php7.y:2564 { yyVAL.node = assign.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -5175,7 +5163,7 @@ yydefault: } case 305: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2579 + //line php7/php7.y:2574 { yyVAL.node = assign.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -5187,7 +5175,7 @@ yydefault: } case 306: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2589 + //line php7/php7.y:2584 { yyVAL.node = assign.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -5199,7 +5187,7 @@ yydefault: } case 307: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2599 + //line php7/php7.y:2594 { yyVAL.node = assign.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -5211,7 +5199,7 @@ yydefault: } case 308: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2609 + //line php7/php7.y:2604 { yyVAL.node = assign.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -5223,7 +5211,7 @@ yydefault: } case 309: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2619 + //line php7/php7.y:2614 { yyVAL.node = assign.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -5235,7 +5223,7 @@ yydefault: } case 310: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2629 + //line php7/php7.y:2624 { yyVAL.node = assign.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -5247,7 +5235,7 @@ yydefault: } case 311: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2639 + //line php7/php7.y:2634 { yyVAL.node = assign.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -5259,7 +5247,7 @@ yydefault: } case 312: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2649 + //line php7/php7.y:2644 { yyVAL.node = expr.NewPostInc(yyDollar[1].node) @@ -5271,7 +5259,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2659 + //line php7/php7.y:2654 { yyVAL.node = expr.NewPreInc(yyDollar[2].node) @@ -5283,7 +5271,7 @@ yydefault: } case 314: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2669 + //line php7/php7.y:2664 { yyVAL.node = expr.NewPostDec(yyDollar[1].node) @@ -5295,7 +5283,7 @@ yydefault: } case 315: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2679 + //line php7/php7.y:2674 { yyVAL.node = expr.NewPreDec(yyDollar[2].node) @@ -5307,7 +5295,7 @@ yydefault: } case 316: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2689 + //line php7/php7.y:2684 { yyVAL.node = binary.NewBooleanOr(yyDollar[1].node, yyDollar[3].node) @@ -5319,7 +5307,7 @@ yydefault: } case 317: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2699 + //line php7/php7.y:2694 { yyVAL.node = binary.NewBooleanAnd(yyDollar[1].node, yyDollar[3].node) @@ -5331,7 +5319,7 @@ yydefault: } case 318: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2709 + //line php7/php7.y:2704 { yyVAL.node = binary.NewLogicalOr(yyDollar[1].node, yyDollar[3].node) @@ -5343,7 +5331,7 @@ yydefault: } case 319: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2719 + //line php7/php7.y:2714 { yyVAL.node = binary.NewLogicalAnd(yyDollar[1].node, yyDollar[3].node) @@ -5355,7 +5343,7 @@ yydefault: } case 320: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2729 + //line php7/php7.y:2724 { yyVAL.node = binary.NewLogicalXor(yyDollar[1].node, yyDollar[3].node) @@ -5367,7 +5355,7 @@ yydefault: } case 321: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2739 + //line php7/php7.y:2734 { yyVAL.node = binary.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -5379,7 +5367,7 @@ yydefault: } case 322: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2749 + //line php7/php7.y:2744 { yyVAL.node = binary.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -5391,7 +5379,7 @@ yydefault: } case 323: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2759 + //line php7/php7.y:2754 { yyVAL.node = binary.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -5403,7 +5391,7 @@ yydefault: } case 324: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2769 + //line php7/php7.y:2764 { yyVAL.node = binary.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -5415,7 +5403,7 @@ yydefault: } case 325: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2779 + //line php7/php7.y:2774 { yyVAL.node = binary.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -5427,7 +5415,7 @@ yydefault: } case 326: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2789 + //line php7/php7.y:2784 { yyVAL.node = binary.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -5439,7 +5427,7 @@ yydefault: } case 327: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2799 + //line php7/php7.y:2794 { yyVAL.node = binary.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -5451,7 +5439,7 @@ yydefault: } case 328: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2809 + //line php7/php7.y:2804 { yyVAL.node = binary.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -5463,7 +5451,7 @@ yydefault: } case 329: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2819 + //line php7/php7.y:2814 { yyVAL.node = binary.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -5475,7 +5463,7 @@ yydefault: } case 330: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2829 + //line php7/php7.y:2824 { yyVAL.node = binary.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -5487,7 +5475,7 @@ yydefault: } case 331: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2839 + //line php7/php7.y:2834 { yyVAL.node = binary.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -5499,7 +5487,7 @@ yydefault: } case 332: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2849 + //line php7/php7.y:2844 { yyVAL.node = binary.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -5511,7 +5499,7 @@ yydefault: } case 333: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2859 + //line php7/php7.y:2854 { yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) @@ -5523,7 +5511,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2869 + //line php7/php7.y:2864 { yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) @@ -5535,7 +5523,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2879 + //line php7/php7.y:2874 { yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) @@ -5547,7 +5535,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2889 + //line php7/php7.y:2884 { yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) @@ -5559,7 +5547,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2899 + //line php7/php7.y:2894 { yyVAL.node = binary.NewIdentical(yyDollar[1].node, yyDollar[3].node) @@ -5571,7 +5559,7 @@ yydefault: } case 338: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2909 + //line php7/php7.y:2904 { yyVAL.node = binary.NewNotIdentical(yyDollar[1].node, yyDollar[3].node) @@ -5583,7 +5571,7 @@ yydefault: } case 339: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2919 + //line php7/php7.y:2914 { yyVAL.node = binary.NewEqual(yyDollar[1].node, yyDollar[3].node) @@ -5595,7 +5583,7 @@ yydefault: } case 340: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2929 + //line php7/php7.y:2924 { yyVAL.node = binary.NewNotEqual(yyDollar[1].node, yyDollar[3].node) @@ -5607,7 +5595,7 @@ yydefault: } case 341: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2939 + //line php7/php7.y:2934 { yyVAL.node = binary.NewSmaller(yyDollar[1].node, yyDollar[3].node) @@ -5619,7 +5607,7 @@ yydefault: } case 342: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2949 + //line php7/php7.y:2944 { yyVAL.node = binary.NewSmallerOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -5631,7 +5619,7 @@ yydefault: } case 343: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2959 + //line php7/php7.y:2954 { yyVAL.node = binary.NewGreater(yyDollar[1].node, yyDollar[3].node) @@ -5643,7 +5631,7 @@ yydefault: } case 344: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2969 + //line php7/php7.y:2964 { yyVAL.node = binary.NewGreaterOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -5655,7 +5643,7 @@ yydefault: } case 345: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2979 + //line php7/php7.y:2974 { yyVAL.node = binary.NewSpaceship(yyDollar[1].node, yyDollar[3].node) @@ -5667,7 +5655,7 @@ yydefault: } case 346: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2989 + //line php7/php7.y:2984 { yyVAL.node = expr.NewInstanceOf(yyDollar[1].node, yyDollar[3].node) @@ -5679,7 +5667,7 @@ yydefault: } case 347: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2999 + //line php7/php7.y:2994 { yyVAL.node = yyDollar[2].node @@ -5689,13 +5677,13 @@ yydefault: } case 348: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3007 + //line php7/php7.y:3002 { yyVAL.node = yyDollar[1].node } case 349: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:3009 + //line php7/php7.y:3004 { yyVAL.node = expr.NewTernary(yyDollar[1].node, yyDollar[3].node, yyDollar[5].node) @@ -5708,7 +5696,7 @@ yydefault: } case 350: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3020 + //line php7/php7.y:3015 { yyVAL.node = expr.NewTernary(yyDollar[1].node, nil, yyDollar[4].node) @@ -5721,7 +5709,7 @@ yydefault: } case 351: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3031 + //line php7/php7.y:3026 { yyVAL.node = binary.NewCoalesce(yyDollar[1].node, yyDollar[3].node) @@ -5733,13 +5721,13 @@ yydefault: } case 352: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3041 + //line php7/php7.y:3036 { yyVAL.node = yyDollar[1].node } case 353: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3043 + //line php7/php7.y:3038 { yyVAL.node = cast.NewInt(yyDollar[2].node) @@ -5751,7 +5739,7 @@ yydefault: } case 354: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3053 + //line php7/php7.y:3048 { yyVAL.node = cast.NewDouble(yyDollar[2].node) @@ -5763,7 +5751,7 @@ yydefault: } case 355: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3063 + //line php7/php7.y:3058 { yyVAL.node = cast.NewString(yyDollar[2].node) @@ -5775,7 +5763,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3073 + //line php7/php7.y:3068 { yyVAL.node = cast.NewArray(yyDollar[2].node) @@ -5787,7 +5775,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3083 + //line php7/php7.y:3078 { yyVAL.node = cast.NewObject(yyDollar[2].node) @@ -5799,7 +5787,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3093 + //line php7/php7.y:3088 { yyVAL.node = cast.NewBool(yyDollar[2].node) @@ -5811,7 +5799,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3103 + //line php7/php7.y:3098 { yyVAL.node = cast.NewUnset(yyDollar[2].node) @@ -5823,7 +5811,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3113 + //line php7/php7.y:3108 { if strings.EqualFold(yyDollar[1].token.Value, "die") { yyVAL.node = expr.NewDie(yyDollar[2].node) @@ -5839,7 +5827,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3127 + //line php7/php7.y:3122 { yyVAL.node = expr.NewErrorSuppress(yyDollar[2].node) @@ -5851,13 +5839,13 @@ yydefault: } case 362: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3137 + //line php7/php7.y:3132 { yyVAL.node = yyDollar[1].node } case 363: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3139 + //line php7/php7.y:3134 { yyVAL.node = expr.NewShellExec(yyDollar[2].list) @@ -5870,7 +5858,7 @@ yydefault: } case 364: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3150 + //line php7/php7.y:3145 { yyVAL.node = expr.NewPrint(yyDollar[2].node) @@ -5882,7 +5870,7 @@ yydefault: } case 365: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3160 + //line php7/php7.y:3155 { yyVAL.node = expr.NewYield(nil, nil) @@ -5894,7 +5882,7 @@ yydefault: } case 366: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3170 + //line php7/php7.y:3165 { yyVAL.node = expr.NewYield(nil, yyDollar[2].node) @@ -5906,7 +5894,7 @@ yydefault: } case 367: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3180 + //line php7/php7.y:3175 { yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node) @@ -5919,7 +5907,7 @@ yydefault: } case 368: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3191 + //line php7/php7.y:3186 { yyVAL.node = expr.NewYieldFrom(yyDollar[2].node) @@ -5931,7 +5919,7 @@ yydefault: } case 369: yyDollar = yyS[yypt-11 : yypt+1] - //line php7/php7.y:3201 + //line php7/php7.y:3196 { yyVAL.node = expr.NewClosure(yyDollar[5].list, yyDollar[7].list, yyDollar[8].node, yyDollar[10].list, false, yyDollar[2].token != nil, yyDollar[3].str) @@ -5950,7 +5938,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-12 : yypt+1] - //line php7/php7.y:3218 + //line php7/php7.y:3213 { yyVAL.node = expr.NewClosure(yyDollar[6].list, yyDollar[8].list, yyDollar[9].node, yyDollar[11].list, true, yyDollar[3].token != nil, yyDollar[4].str) @@ -5970,38 +5958,38 @@ yydefault: } case 371: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3239 + //line php7/php7.y:3234 { yyVAL.str = yylex.(*Parser).PhpDocComment yylex.(*Parser).PhpDocComment = "" } case 372: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3247 + //line php7/php7.y:3242 { yyVAL.token = nil } case 373: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3249 + //line php7/php7.y:3244 { yyVAL.token = yyDollar[1].token } case 374: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3254 + //line php7/php7.y:3249 { yyVAL.list = []node.Node{} } case 375: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3256 + //line php7/php7.y:3251 { yyVAL.list = yyDollar[3].list } case 376: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3261 + //line php7/php7.y:3256 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -6010,17 +5998,17 @@ yydefault: } case 377: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3268 + //line php7/php7.y:3263 { yyVAL.list = []node.Node{yyDollar[1].node} } case 378: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3273 + //line php7/php7.y:3268 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) variable := expr.NewVariable(identifier) - yyVAL.node = expr.NewClosureUse(variable, false) + yyVAL.node = expr.NewClosureUse(variable) // save position yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6032,11 +6020,12 @@ yydefault: } case 379: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3287 + //line php7/php7.y:3282 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[2].token.Value, "$")) variable := expr.NewVariable(identifier) - yyVAL.node = expr.NewClosureUse(variable, true) + reference := expr.NewReference(variable) + yyVAL.node = expr.NewClosureUse(reference) // save position yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -6045,11 +6034,11 @@ yydefault: // save comments yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[1].token, comment.AmpersandToken) - yylex.(*Parser).comments.AddFromToken(variable, yyDollar[2].token, comment.VariableToken) + yylex.(*Parser).comments.AddFromToken(reference, yyDollar[2].token, comment.VariableToken) } case 380: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3305 + //line php7/php7.y:3301 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].node.(*node.ArgumentList)) @@ -6058,7 +6047,7 @@ yydefault: } case 381: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3312 + //line php7/php7.y:3308 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -6070,7 +6059,7 @@ yydefault: } case 382: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3322 + //line php7/php7.y:3318 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -6082,7 +6071,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3332 + //line php7/php7.y:3328 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].node.(*node.ArgumentList)) @@ -6091,7 +6080,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3342 + //line php7/php7.y:3338 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -6103,67 +6092,67 @@ yydefault: } case 385: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3352 + //line php7/php7.y:3348 { yyVAL.node = yyDollar[1].node } case 386: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3357 + //line php7/php7.y:3353 { yyVAL.node = yyDollar[1].node } case 387: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3359 + //line php7/php7.y:3355 { yyVAL.node = yyDollar[1].node } case 388: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3364 + //line php7/php7.y:3360 { yyVAL.node = nil } case 389: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3366 + //line php7/php7.y:3362 { yyVAL.node = yyDollar[2].node } case 390: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3371 + //line php7/php7.y:3367 { yyVAL.list = []node.Node{} } case 391: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3373 + //line php7/php7.y:3369 { yyVAL.list = []node.Node{scalar.NewEncapsedStringPart(yyDollar[1].token.Value)} } case 392: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3375 + //line php7/php7.y:3371 { yyVAL.list = yyDollar[1].list } case 393: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3380 + //line php7/php7.y:3376 { yyVAL.node = nil } case 394: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3382 + //line php7/php7.y:3378 { yyVAL.node = yyDollar[1].node } case 395: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3387 + //line php7/php7.y:3383 { yyVAL.node = expr.NewArray(yyDollar[3].list) @@ -6177,7 +6166,7 @@ yydefault: } case 396: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3399 + //line php7/php7.y:3395 { yyVAL.node = expr.NewShortArray(yyDollar[2].list) @@ -6190,7 +6179,7 @@ yydefault: } case 397: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3410 + //line php7/php7.y:3406 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) @@ -6202,7 +6191,7 @@ yydefault: } case 398: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3423 + //line php7/php7.y:3419 { yyVAL.node = scalar.NewLnumber(yyDollar[1].token.Value) @@ -6214,7 +6203,7 @@ yydefault: } case 399: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3433 + //line php7/php7.y:3429 { yyVAL.node = scalar.NewDnumber(yyDollar[1].token.Value) @@ -6226,7 +6215,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3443 + //line php7/php7.y:3439 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6238,7 +6227,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3453 + //line php7/php7.y:3449 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6250,7 +6239,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3463 + //line php7/php7.y:3459 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6262,7 +6251,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3473 + //line php7/php7.y:3469 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6274,7 +6263,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3483 + //line php7/php7.y:3479 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6286,7 +6275,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3493 + //line php7/php7.y:3489 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6298,7 +6287,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3503 + //line php7/php7.y:3499 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6310,7 +6299,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3513 + //line php7/php7.y:3509 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6322,7 +6311,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3523 + //line php7/php7.y:3519 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, []node.Node{encapsed}) @@ -6336,7 +6325,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3535 + //line php7/php7.y:3531 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, nil) @@ -6348,7 +6337,7 @@ yydefault: } case 410: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3545 + //line php7/php7.y:3541 { yyVAL.node = scalar.NewEncapsed(yyDollar[2].list) @@ -6360,7 +6349,7 @@ yydefault: } case 411: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3555 + //line php7/php7.y:3551 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, yyDollar[2].list) @@ -6372,19 +6361,19 @@ yydefault: } case 412: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3565 + //line php7/php7.y:3561 { yyVAL.node = yyDollar[1].node } case 413: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3567 + //line php7/php7.y:3563 { yyVAL.node = yyDollar[1].node } case 414: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3572 + //line php7/php7.y:3568 { yyVAL.node = expr.NewConstFetch(yyDollar[1].node) @@ -6393,7 +6382,7 @@ yydefault: } case 415: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3579 + //line php7/php7.y:3575 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -6408,7 +6397,7 @@ yydefault: } case 416: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3592 + //line php7/php7.y:3588 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -6423,43 +6412,43 @@ yydefault: } case 417: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3608 + //line php7/php7.y:3604 { yyVAL.node = yyDollar[1].node } case 418: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3610 + //line php7/php7.y:3606 { yyVAL.node = yyDollar[1].node } case 419: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3615 + //line php7/php7.y:3611 { yyVAL.node = nil } case 420: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3617 + //line php7/php7.y:3613 { yyVAL.node = yyDollar[1].node } case 421: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3622 + //line php7/php7.y:3618 { yyVAL.node = yyDollar[1].node } case 422: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3627 + //line php7/php7.y:3623 { yyVAL.node = yyDollar[1].node } case 423: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3629 + //line php7/php7.y:3625 { yyVAL.node = yyDollar[2].node @@ -6469,19 +6458,19 @@ yydefault: } case 424: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3637 + //line php7/php7.y:3633 { yyVAL.node = yyDollar[1].node } case 425: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3642 + //line php7/php7.y:3638 { yyVAL.node = yyDollar[1].node } case 426: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3644 + //line php7/php7.y:3640 { yyVAL.node = yyDollar[2].node @@ -6491,19 +6480,19 @@ yydefault: } case 427: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3652 + //line php7/php7.y:3648 { yyVAL.node = yyDollar[1].node } case 428: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3657 + //line php7/php7.y:3653 { yyVAL.node = yyDollar[1].node } case 429: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3659 + //line php7/php7.y:3655 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -6516,7 +6505,7 @@ yydefault: } case 430: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3670 + //line php7/php7.y:3666 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -6529,7 +6518,7 @@ yydefault: } case 431: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3681 + //line php7/php7.y:3677 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -6542,7 +6531,7 @@ yydefault: } case 432: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3692 + //line php7/php7.y:3688 { yyVAL.node = expr.NewMethodCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -6554,25 +6543,25 @@ yydefault: } case 433: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3702 + //line php7/php7.y:3698 { yyVAL.node = yyDollar[1].node } case 434: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3707 + //line php7/php7.y:3703 { yyVAL.node = yyDollar[1].node } case 435: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3709 + //line php7/php7.y:3705 { yyVAL.node = yyDollar[1].node } case 436: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3711 + //line php7/php7.y:3707 { yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -6584,7 +6573,7 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3724 + //line php7/php7.y:3720 { name := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yyVAL.node = expr.NewVariable(name) @@ -6598,7 +6587,7 @@ yydefault: } case 438: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3736 + //line php7/php7.y:3732 { yyVAL.node = expr.NewVariable(yyDollar[3].node) @@ -6612,7 +6601,7 @@ yydefault: } case 439: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3748 + //line php7/php7.y:3744 { yyVAL.node = expr.NewVariable(yyDollar[2].node) @@ -6624,7 +6613,7 @@ yydefault: } case 440: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3761 + //line php7/php7.y:3757 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -6636,7 +6625,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3771 + //line php7/php7.y:3767 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -6648,13 +6637,13 @@ yydefault: } case 442: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3784 + //line php7/php7.y:3780 { yyVAL.node = yyDollar[1].node } case 443: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3786 + //line php7/php7.y:3782 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -6667,7 +6656,7 @@ yydefault: } case 444: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3797 + //line php7/php7.y:3793 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -6680,7 +6669,7 @@ yydefault: } case 445: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3808 + //line php7/php7.y:3804 { yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -6692,7 +6681,7 @@ yydefault: } case 446: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3818 + //line php7/php7.y:3814 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -6704,7 +6693,7 @@ yydefault: } case 447: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3828 + //line php7/php7.y:3824 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -6716,7 +6705,7 @@ yydefault: } case 448: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3841 + //line php7/php7.y:3837 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -6728,7 +6717,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3851 + //line php7/php7.y:3847 { yyVAL.node = yyDollar[2].node @@ -6738,13 +6727,13 @@ yydefault: } case 450: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3859 + //line php7/php7.y:3855 { yyVAL.node = yyDollar[1].node } case 451: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3864 + //line php7/php7.y:3860 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -6756,7 +6745,7 @@ yydefault: } case 452: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3874 + //line php7/php7.y:3870 { yyVAL.node = yyDollar[2].node @@ -6766,13 +6755,13 @@ yydefault: } case 453: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3882 + //line php7/php7.y:3878 { yyVAL.node = yyDollar[1].node } case 454: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3887 + //line php7/php7.y:3883 { if yyDollar[1].list[len(yyDollar[1].list)-1] == nil { yyVAL.list = yyDollar[1].list[:len(yyDollar[1].list)-1] @@ -6782,19 +6771,19 @@ yydefault: } case 455: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3898 + //line php7/php7.y:3894 { yyVAL.node = nil } case 456: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3900 + //line php7/php7.y:3896 { yyVAL.node = yyDollar[1].node } case 457: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3905 + //line php7/php7.y:3901 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -6803,15 +6792,15 @@ yydefault: } case 458: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3912 + //line php7/php7.y:3908 { yyVAL.list = []node.Node{yyDollar[1].node} } case 459: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3917 + //line php7/php7.y:3913 { - yyVAL.node = expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node, false) + yyVAL.node = expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node) // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -6821,45 +6810,47 @@ yydefault: } case 460: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3927 + //line php7/php7.y:3923 { - yyVAL.node = expr.NewArrayItem(nil, yyDollar[1].node, false) + yyVAL.node = expr.NewArrayItem(nil, yyDollar[1].node) // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) } case 461: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3934 + //line php7/php7.y:3930 { - yyVAL.node = expr.NewArrayItem(yyDollar[1].node, yyDollar[4].node, true) + reference := expr.NewReference(yyDollar[4].node) + yyVAL.node = expr.NewArrayItem(yyDollar[1].node, reference) // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) // save comments yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[2].token, comment.DoubleArrowToken) - yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[3].token, comment.AmpersandToken) + yylex.(*Parser).comments.AddFromToken(reference, yyDollar[3].token, comment.AmpersandToken) } case 462: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3945 + //line php7/php7.y:3942 { - yyVAL.node = expr.NewArrayItem(nil, yyDollar[2].node, true) + reference := expr.NewReference(yyDollar[2].node) + yyVAL.node = expr.NewArrayItem(nil, reference) // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[1].token, comment.AmpersandToken) + yylex.(*Parser).comments.AddFromToken(reference, yyDollar[1].token, comment.AmpersandToken) } case 463: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:3955 + //line php7/php7.y:3953 { // TODO: Cannot use list() as standalone expression list := expr.NewList(yyDollar[5].list) - yyVAL.node = expr.NewArrayItem(yyDollar[1].node, list, false) + yyVAL.node = expr.NewArrayItem(yyDollar[1].node, list) // save position yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[3].token, yyDollar[6].token)) @@ -6873,11 +6864,11 @@ yydefault: } case 464: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3971 + //line php7/php7.y:3969 { // TODO: Cannot use list() as standalone expression list := expr.NewList(yyDollar[3].list) - yyVAL.node = expr.NewArrayItem(nil, list, false) + yyVAL.node = expr.NewArrayItem(nil, list) // save position yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -6890,13 +6881,13 @@ yydefault: } case 465: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3989 + //line php7/php7.y:3987 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 466: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3991 + //line php7/php7.y:3989 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yyVAL.list = append(yyDollar[1].list, encapsed) @@ -6909,13 +6900,13 @@ yydefault: } case 467: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4002 + //line php7/php7.y:4000 { yyVAL.list = []node.Node{yyDollar[1].node} } case 468: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4004 + //line php7/php7.y:4002 { encapsed := scalar.NewEncapsedStringPart(yyDollar[1].token.Value) yyVAL.list = []node.Node{encapsed, yyDollar[2].node} @@ -6928,7 +6919,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4018 + //line php7/php7.y:4016 { name := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yyVAL.node = expr.NewVariable(name) @@ -6942,7 +6933,7 @@ yydefault: } case 470: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4030 + //line php7/php7.y:4028 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -6960,7 +6951,7 @@ yydefault: } case 471: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4046 + //line php7/php7.y:4044 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -6980,7 +6971,7 @@ yydefault: } case 472: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4064 + //line php7/php7.y:4062 { yyVAL.node = expr.NewVariable(yyDollar[2].node) @@ -6993,7 +6984,7 @@ yydefault: } case 473: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4075 + //line php7/php7.y:4073 { name := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = expr.NewVariable(name) @@ -7009,7 +7000,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:4089 + //line php7/php7.y:4087 { identifier := node.NewIdentifier(yyDollar[2].token.Value) variable := expr.NewVariable(identifier) @@ -7029,13 +7020,13 @@ yydefault: } case 475: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4107 + //line php7/php7.y:4105 { yyVAL.node = yyDollar[2].node } case 476: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4113 + //line php7/php7.y:4111 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) @@ -7047,7 +7038,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4123 + //line php7/php7.y:4121 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(yyDollar[1].token.Value); err == nil { @@ -7064,7 +7055,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4138 + //line php7/php7.y:4136 { var lnumber *scalar.Lnumber // TODO: add option to handle 64 bit integer @@ -7095,7 +7086,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4167 + //line php7/php7.y:4165 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yyVAL.node = expr.NewVariable(identifier) @@ -7109,7 +7100,7 @@ yydefault: } case 480: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:4182 + //line php7/php7.y:4180 { yyVAL.node = expr.NewIsset(yyDollar[3].list) @@ -7126,7 +7117,7 @@ yydefault: } case 481: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4197 + //line php7/php7.y:4195 { yyVAL.node = expr.NewEmpty(yyDollar[3].node) @@ -7140,7 +7131,7 @@ yydefault: } case 482: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4209 + //line php7/php7.y:4207 { yyVAL.node = expr.NewInclude(yyDollar[2].node) @@ -7152,7 +7143,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4219 + //line php7/php7.y:4217 { yyVAL.node = expr.NewIncludeOnce(yyDollar[2].node) @@ -7164,7 +7155,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4229 + //line php7/php7.y:4227 { yyVAL.node = expr.NewEval(yyDollar[3].node) @@ -7178,7 +7169,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4241 + //line php7/php7.y:4239 { yyVAL.node = expr.NewRequire(yyDollar[2].node) @@ -7190,7 +7181,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4251 + //line php7/php7.y:4249 { yyVAL.node = expr.NewRequireOnce(yyDollar[2].node) @@ -7202,13 +7193,13 @@ yydefault: } case 487: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4264 + //line php7/php7.y:4262 { yyVAL.list = []node.Node{yyDollar[1].node} } case 488: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4266 + //line php7/php7.y:4264 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -7217,7 +7208,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4276 + //line php7/php7.y:4274 { yyVAL.node = yyDollar[1].node } diff --git a/php7/php7.y b/php7/php7.y index 9cee1c3..3aa2c61 100644 --- a/php7/php7.y +++ b/php7/php7.y @@ -23,7 +23,6 @@ import ( node node.Node token *scanner.Token list []node.Node - foreachVariable foreachVariable str string ClassExtends *stmt.ClassExtends @@ -275,7 +274,7 @@ import ( %type member_modifier %type use_type -%type foreach_variable +%type foreach_variable %type encaps_list backticks_expr namespace_name catch_name_list catch_list class_const_list @@ -963,12 +962,10 @@ statement: switch n := $7.(type) { case *stmt.Foreach : n.Expr = $3 - n.ByRef = $5.byRef - n.Variable = $5.node + n.Variable = $5 case *stmt.AltForeach : n.Expr = $3 - n.ByRef = $5.byRef - n.Variable = $5.node + n.Variable = $5 } $$ = $7 @@ -988,13 +985,11 @@ statement: case *stmt.Foreach : n.Expr = $3 n.Key = $5 - n.ByRef = $7.byRef - n.Variable = $7.node + n.Variable = $7 case *stmt.AltForeach : n.Expr = $3 n.Key = $5 - n.ByRef = $7.byRef - n.Variable = $7.node + n.Variable = $7 } $$ = $9 @@ -1339,41 +1334,41 @@ implements_list: foreach_variable: variable - { $$ = foreachVariable{$1, false} } + { + $$ = $1 + } | '&' variable { - $$ = foreachVariable{$2, true} + $$ = expr.NewReference($2) // save position yylex.(*Parser).positions.AddPosition($2, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - yylex.(*Parser).comments.AddFromToken($2, $1, comment.AmpersandToken) + yylex.(*Parser).comments.AddFromToken($$, $1, comment.AmpersandToken) } | T_LIST '(' array_pair_list ')' { - list := expr.NewList($3) - $$ = foreachVariable{list, false} + $$ = expr.NewList($3) // save position - yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) // save comments - yylex.(*Parser).comments.AddFromToken(list, $1, comment.ListToken) - yylex.(*Parser).comments.AddFromToken(list, $2, comment.OpenParenthesisToken) - yylex.(*Parser).comments.AddFromToken(list, $4, comment.CloseParenthesisToken) + yylex.(*Parser).comments.AddFromToken($$, $1, comment.ListToken) + yylex.(*Parser).comments.AddFromToken($$, $2, comment.OpenParenthesisToken) + yylex.(*Parser).comments.AddFromToken($$, $4, comment.CloseParenthesisToken) } | '[' array_pair_list ']' { - list := expr.NewShortList($2) - $$ = foreachVariable{list, false} + $$ = expr.NewShortList($2) // save position - yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) // save comments - yylex.(*Parser).comments.AddFromToken(list, $1, comment.OpenSquareBracket) - yylex.(*Parser).comments.AddFromToken(list, $3, comment.CloseSquareBracket) + yylex.(*Parser).comments.AddFromToken($$, $1, comment.OpenSquareBracket) + yylex.(*Parser).comments.AddFromToken($$, $3, comment.CloseSquareBracket) } ; @@ -1404,7 +1399,7 @@ for_statement: foreach_statement: statement { - $$ = stmt.NewForeach(nil, nil, nil, $1, false) + $$ = stmt.NewForeach(nil, nil, nil, $1) // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodePosition($1)) @@ -1412,7 +1407,7 @@ foreach_statement: | ':' inner_statement_list T_ENDFOREACH ';' { stmtList := stmt.NewStmtList($2) - $$ = stmt.NewAltForeach(nil, nil, nil, stmtList, false) + $$ = stmt.NewAltForeach(nil, nil, nil, stmtList) // save position yylex.(*Parser).positions.AddPosition(stmtList, yylex.(*Parser).positionBuilder.NewNodeListPosition($2)) @@ -3273,7 +3268,7 @@ lexical_var: { identifier := node.NewIdentifier(strings.TrimLeft($1.Value, "$")) variable := expr.NewVariable(identifier) - $$ = expr.NewClosureUse(variable, false) + $$ = expr.NewClosureUse(variable) // save position yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) @@ -3287,7 +3282,8 @@ lexical_var: { identifier := node.NewIdentifier(strings.TrimLeft($2.Value, "$")) variable := expr.NewVariable(identifier) - $$ = expr.NewClosureUse(variable, true) + reference := expr.NewReference(variable) + $$ = expr.NewClosureUse(reference) // save position yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition($2)) @@ -3296,7 +3292,7 @@ lexical_var: // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.AmpersandToken) - yylex.(*Parser).comments.AddFromToken(variable, $2, comment.VariableToken) + yylex.(*Parser).comments.AddFromToken(reference, $2, comment.VariableToken) } ; @@ -3915,7 +3911,7 @@ non_empty_array_pair_list: array_pair: expr T_DOUBLE_ARROW expr { - $$ = expr.NewArrayItem($1, $3, false) + $$ = expr.NewArrayItem($1, $3) // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) @@ -3925,37 +3921,39 @@ array_pair: } | expr { - $$ = expr.NewArrayItem(nil, $1, false) + $$ = expr.NewArrayItem(nil, $1) // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodePosition($1)) } | expr T_DOUBLE_ARROW '&' variable { - $$ = expr.NewArrayItem($1, $4, true) + reference := expr.NewReference($4) + $$ = expr.NewArrayItem($1, reference) // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.DoubleArrowToken) - yylex.(*Parser).comments.AddFromToken($$, $3, comment.AmpersandToken) + yylex.(*Parser).comments.AddFromToken(reference, $3, comment.AmpersandToken) } | '&' variable { - $$ = expr.NewArrayItem(nil, $2, true) + reference := expr.NewReference($2) + $$ = expr.NewArrayItem(nil, reference) // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments - yylex.(*Parser).comments.AddFromToken($$, $1, comment.AmpersandToken) + yylex.(*Parser).comments.AddFromToken(reference, $1, comment.AmpersandToken) } | expr T_DOUBLE_ARROW T_LIST '(' array_pair_list ')' { // TODO: Cannot use list() as standalone expression list := expr.NewList($5) - $$ = expr.NewArrayItem($1, list, false) + $$ = expr.NewArrayItem($1, list) // save position yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition($3, $6)) @@ -3971,7 +3969,7 @@ array_pair: { // TODO: Cannot use list() as standalone expression list := expr.NewList($3) - $$ = expr.NewArrayItem(nil, list, false) + $$ = expr.NewArrayItem(nil, list) // save position yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) @@ -4279,8 +4277,3 @@ isset_variable: ///////////////////////////////////////////////////////////////////////// %% - -type foreachVariable struct { - node node.Node - byRef bool -} diff --git a/php7/php7_test.go b/php7/php7_test.go index 0d7cbc9..17797ea 100644 --- a/php7/php7_test.go +++ b/php7/php7_test.go @@ -1155,35 +1155,32 @@ func TestPhp7(t *testing.T) { Stmt: &stmt.StmtList{Stmts: []node.Node{}}, }, &stmt.Foreach{ - ByRef: true, - 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.StmtList{Stmts: []node.Node{}}, + 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.StmtList{Stmts: []node.Node{}}, }, &stmt.Foreach{ - ByRef: false, - Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, - Key: &expr.Variable{VarName: &node.Identifier{Value: "k"}}, + Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + Key: &expr.Variable{VarName: &node.Identifier{Value: "k"}}, Variable: &expr.List{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Val: &expr.Variable{VarName: &node.Identifier{Value: "v"}}, + Val: &expr.Variable{VarName: &node.Identifier{Value: "v"}}, }, }, }, Stmt: &stmt.StmtList{Stmts: []node.Node{}}, }, &stmt.Foreach{ - ByRef: false, - Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, - Key: &expr.Variable{VarName: &node.Identifier{Value: "k"}}, + Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + Key: &expr.Variable{VarName: &node.Identifier{Value: "k"}}, Variable: &expr.ShortList{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Val: &expr.Variable{VarName: &node.Identifier{Value: "v"}}, + Val: &expr.Variable{VarName: &node.Identifier{Value: "v"}}, }, }, }, @@ -2062,8 +2059,7 @@ func TestPhp7(t *testing.T) { Expr: &expr.Array{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Val: &scalar.Lnumber{Value: "1"}, + Val: &scalar.Lnumber{Value: "1"}, }, }, }, @@ -2072,13 +2068,11 @@ func TestPhp7(t *testing.T) { Expr: &expr.Array{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Key: &scalar.Lnumber{Value: "1"}, - Val: &scalar.Lnumber{Value: "1"}, + Key: &scalar.Lnumber{Value: "1"}, + Val: &scalar.Lnumber{Value: "1"}, }, &expr.ArrayItem{ - ByRef: true, - Val: &expr.Variable{VarName: &node.Identifier{Value: "b"}}, + Val: &expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, }, }, }, @@ -2147,12 +2141,10 @@ func TestPhp7(t *testing.T) { }, Uses: []node.Node{ &expr.ClosureUse{ - ByRef: false, Variable: &expr.Variable{VarName: &node.Identifier{Value: "c"}}, }, &expr.ClosureUse{ - ByRef: true, - Variable: &expr.Variable{VarName: &node.Identifier{Value: "d"}}, + Variable: &expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "d"}}}, }, }, Stmts: []node.Node{}, @@ -2339,8 +2331,7 @@ func TestPhp7(t *testing.T) { Variable: &expr.List{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Val: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + Val: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, }, }, }, @@ -2352,7 +2343,6 @@ func TestPhp7(t *testing.T) { Variable: &expr.List{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, Val: &expr.ArrayDimFetch{ Variable: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, }, @@ -2367,12 +2357,10 @@ func TestPhp7(t *testing.T) { Variable: &expr.List{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, Val: &expr.List{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Val: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + Val: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, }, }, }, @@ -2478,8 +2466,7 @@ func TestPhp7(t *testing.T) { Expr: &expr.ShortArray{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Val: &scalar.Lnumber{Value: "1"}, + Val: &scalar.Lnumber{Value: "1"}, }, }, }, @@ -2488,13 +2475,11 @@ func TestPhp7(t *testing.T) { Expr: &expr.ShortArray{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Key: &scalar.Lnumber{Value: "1"}, - Val: &scalar.Lnumber{Value: "1"}, + Key: &scalar.Lnumber{Value: "1"}, + Val: &scalar.Lnumber{Value: "1"}, }, &expr.ArrayItem{ - ByRef: true, - Val: &expr.Variable{VarName: &node.Identifier{Value: "b"}}, + Val: &expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, }, }, }, @@ -2504,8 +2489,7 @@ func TestPhp7(t *testing.T) { Variable: &expr.ShortList{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Val: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + Val: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, }, }, }, @@ -2517,7 +2501,6 @@ func TestPhp7(t *testing.T) { Variable: &expr.ShortList{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, Val: &expr.ArrayDimFetch{ Variable: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, }, @@ -2532,12 +2515,10 @@ func TestPhp7(t *testing.T) { Variable: &expr.ShortList{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, Val: &expr.List{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Val: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + Val: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, }, }, }, @@ -3133,8 +3114,7 @@ func TestPhp7(t *testing.T) { Variable: &expr.ShortArray{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Val: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, + Val: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, }, }, }, @@ -3169,8 +3149,7 @@ func TestPhp7(t *testing.T) { Variable: &expr.ShortArray{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Val: &scalar.Lnumber{Value: "1"}, + Val: &scalar.Lnumber{Value: "1"}, }, }, }, @@ -3227,18 +3206,15 @@ func TestPhp7(t *testing.T) { Expr: &expr.ShortArray{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: true, - Key: &scalar.Lnumber{Value: "1"}, - Val: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + Key: &scalar.Lnumber{Value: "1"}, + Val: &expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, }, &expr.ArrayItem{ - ByRef: false, - Key: &scalar.Lnumber{Value: "2"}, + Key: &scalar.Lnumber{Value: "2"}, Val: &expr.List{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Val: &expr.Variable{VarName: &node.Identifier{Value: "b"}}, + Val: &expr.Variable{VarName: &node.Identifier{Value: "b"}}, }, }, }, diff --git a/printer/printer.go b/printer/printer.go index bccbb45..3cf0b5a 100644 --- a/printer/printer.go +++ b/printer/printer.go @@ -272,6 +272,8 @@ func (p *Printer) printNode(n node.Node) { p.printExprPrint(n) case *expr.PropertyFetch: p.printExprPropertyFetch(n) + case *expr.Reference: + p.printExprReference(n) case *expr.Require: p.printExprRequire(n) case *expr.RequireOnce: @@ -964,10 +966,6 @@ func (p *Printer) printExprArrayItem(n node.Node) { io.WriteString(p.w, " => ") } - if nn.ByRef { - io.WriteString(p.w, "&") - } - p.Print(nn.Val) } @@ -1008,11 +1006,6 @@ func (p *Printer) printExprClone(n node.Node) { func (p *Printer) printExprClosureUse(n node.Node) { nn := n.(*expr.ClosureUse) - - if nn.ByRef { - io.WriteString(p.w, "&") - } - p.Print(nn.Variable) } @@ -1211,6 +1204,13 @@ func (p *Printer) printExprPropertyFetch(n node.Node) { p.Print(nn.Property) } +func (p *Printer) printExprReference(n node.Node) { + nn := n.(*expr.Reference) + + io.WriteString(p.w, "&") + p.Print(nn.Variable) +} + func (p *Printer) printExprRequire(n node.Node) { nn := n.(*expr.Require) @@ -1382,10 +1382,6 @@ func (p *Printer) printStmtAltForeach(n node.Node) { io.WriteString(p.w, " => ") } - if nn.ByRef { - io.WriteString(p.w, "&") - } - p.Print(nn.Variable) io.WriteString(p.w, ") :\n") @@ -1769,9 +1765,6 @@ func (p *Printer) printStmtForeach(n node.Node) { io.WriteString(p.w, " => ") } - if nn.ByRef { - io.WriteString(p.w, "&") - } p.Print(nn.Variable) io.WriteString(p.w, ")") diff --git a/printer/printer_test.go b/printer/printer_test.go index e36d781..f741cb8 100644 --- a/printer/printer_test.go +++ b/printer/printer_test.go @@ -1245,9 +1245,8 @@ func TestPrintExprArrayItemWithKey(t *testing.T) { p := printer.NewPrinter(o, " ") p.Print(&expr.ArrayItem{ - ByRef: false, - Key: &scalar.String{Value: "'Hello'"}, - Val: &expr.Variable{VarName: &node.Identifier{Value: "world"}}, + Key: &scalar.String{Value: "'Hello'"}, + Val: &expr.Variable{VarName: &node.Identifier{Value: "world"}}, }) expected := `'Hello' => $world` @@ -1263,8 +1262,7 @@ func TestPrintExprArrayItem(t *testing.T) { p := printer.NewPrinter(o, " ") p.Print(&expr.ArrayItem{ - ByRef: true, - Val: &expr.Variable{VarName: &node.Identifier{Value: "world"}}, + Val: &expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "world"}}}, }) expected := `&$world` @@ -1282,18 +1280,15 @@ func TestPrintExprArray(t *testing.T) { p.Print(&expr.Array{ Items: []node.Node{ &expr.ArrayItem{ - ByRef: false, - Key: &scalar.String{Value: "'Hello'"}, - Val: &expr.Variable{VarName: &node.Identifier{Value: "world"}}, + Key: &scalar.String{Value: "'Hello'"}, + Val: &expr.Variable{VarName: &node.Identifier{Value: "world"}}, }, &expr.ArrayItem{ - ByRef: true, - Key: &scalar.Lnumber{Value: "2"}, - Val: &expr.Variable{VarName: &node.Identifier{Value: "var"}}, + Key: &scalar.Lnumber{Value: "2"}, + Val: &expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "var"}}}, }, &expr.ArrayItem{ - ByRef: false, - Val: &expr.Variable{VarName: &node.Identifier{Value: "var"}}, + Val: &expr.Variable{VarName: &node.Identifier{Value: "var"}}, }, }, }) @@ -1376,8 +1371,7 @@ func TestPrintExprClosureUse(t *testing.T) { p := printer.NewPrinter(o, " ") p.Print(&expr.ClosureUse{ - ByRef: true, - Variable: &expr.Variable{VarName: &node.Identifier{Value: "var"}}, + Variable: &expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "var"}}}, }) expected := `&$var` @@ -1406,11 +1400,9 @@ func TestPrintExprClosure(t *testing.T) { }, Uses: []node.Node{ &expr.ClosureUse{ - ByRef: true, - Variable: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + Variable: &expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, }, &expr.ClosureUse{ - ByRef: false, Variable: &expr.Variable{VarName: &node.Identifier{Value: "b"}}, }, }, @@ -1795,6 +1787,22 @@ func TestPrintPropertyFetch(t *testing.T) { } } +func TestPrintExprReference(t *testing.T) { + o := bytes.NewBufferString("") + + p := printer.NewPrinter(o, " ") + p.Print(&expr.Reference{ + Variable: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, + }) + + expected := `&$foo` + actual := o.String() + + if expected != actual { + t.Errorf("\nexpected: %s\ngot: %s\n", expected, actual) + } +} + func TestPrintRequire(t *testing.T) { o := bytes.NewBufferString("") @@ -1854,9 +1862,8 @@ func TestPrintExprShortArray(t *testing.T) { Val: &expr.Variable{VarName: &node.Identifier{Value: "world"}}, }, &expr.ArrayItem{ - ByRef: true, - Key: &scalar.Lnumber{Value: "2"}, - Val: &expr.Variable{VarName: &node.Identifier{Value: "var"}}, + Key: &scalar.Lnumber{Value: "2"}, + Val: &expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "var"}}}, }, &expr.ArrayItem{ Val: &expr.Variable{VarName: &node.Identifier{Value: "var"}}, @@ -2200,10 +2207,9 @@ func TestPrintAltForeach(t *testing.T) { p.Print(&stmt.Namespace{ Stmts: []node.Node{ &stmt.AltForeach{ - ByRef: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "var"}}, Key: &expr.Variable{VarName: &node.Identifier{Value: "key"}}, - Variable: &expr.Variable{VarName: &node.Identifier{Value: "val"}}, + 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"}}}, @@ -3141,10 +3147,9 @@ func TestPrintStmtForeachNop(t *testing.T) { p := printer.NewPrinter(o, " ") p.Print(&stmt.Foreach{ - ByRef: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, Key: &expr.Variable{VarName: &node.Identifier{Value: "k"}}, - Variable: &expr.Variable{VarName: &node.Identifier{Value: "v"}}, + Variable: &expr.Reference{Variable: &expr.Variable{VarName: &node.Identifier{Value: "v"}}}, Stmt: &stmt.Nop{}, })