From ac74ae32253b1fa15b37be5c7029086091a0e04c Mon Sep 17 00:00:00 2001 From: z7zmey Date: Sat, 12 May 2018 23:10:01 +0300 Subject: [PATCH] create ClassExtends ClassImplements InterfaceExtends nodes --- README.md | 4 +- node/stmt/n_class.go | 12 +- node/stmt/n_class_extends.go | 38 + node/stmt/n_class_implements.go | 42 + node/stmt/n_interface.go | 10 +- node/stmt/n_interface_extends.go | 42 + node/stmt/t_class_test.go | 62 +- node/stmt/t_interface_test.go | 28 +- node/stmt/t_visitor_test.go | 33 +- php5/php5.go | 1289 +++++++++++++-------------- php5/php5.y | 44 +- php5/php5_test.go | 76 +- php7/php7.go | 1294 ++++++++++++++-------------- php7/php7.y | 61 +- php7/php7_test.go | 102 ++- printer/printer.go | 6 +- printer/printer_test.go | 40 +- visitor/namespace_resolver.go | 14 +- visitor/namespace_resolver_test.go | 18 +- 19 files changed, 1720 insertions(+), 1495 deletions(-) create mode 100644 node/stmt/n_class_extends.go create mode 100644 node/stmt/n_class_implements.go create mode 100644 node/stmt/n_interface_extends.go diff --git a/README.md b/README.md index d9c4a93..0bd8d03 100644 --- a/README.md +++ b/README.md @@ -98,7 +98,9 @@ nodes := &stmt.StmtList{ &stmt.Class{ Modifiers: []node.Node{&node.Identifier{Value: "abstract"}}, ClassName: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Bar"}}}, - Extends: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Baz"}}}, + Extends: &stmt.ClassExtends{ + ClassName: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Baz"}}}, + }, Stmts: []node.Node{ &stmt.ClassMethod{ Modifiers: []node.Node{&node.Identifier{Value: "public"}}, diff --git a/node/stmt/n_class.go b/node/stmt/n_class.go index 002a9b2..305490d 100644 --- a/node/stmt/n_class.go +++ b/node/stmt/n_class.go @@ -11,13 +11,13 @@ type Class struct { ClassName node.Node Modifiers []node.Node ArgumentList *node.ArgumentList - Extends node.Node - Implements []node.Node + Extends *ClassExtends + Implements *ClassImplements Stmts []node.Node } // NewClass node constructor -func NewClass(ClassName node.Node, Modifiers []node.Node, ArgumentList *node.ArgumentList, Extends node.Node, Implements []node.Node, Stmts []node.Node, PhpDocComment string) *Class { +func NewClass(ClassName node.Node, Modifiers []node.Node, ArgumentList *node.ArgumentList, Extends *ClassExtends, Implements *ClassImplements, Stmts []node.Node, PhpDocComment string) *Class { return &Class{ PhpDocComment, ClassName, @@ -69,11 +69,7 @@ func (n *Class) Walk(v walker.Visitor) { if n.Implements != nil { vv := v.GetChildrenVisitor("Implements") - for _, nn := range n.Implements { - if nn != nil { - nn.Walk(vv) - } - } + n.Implements.Walk(vv) } if n.Stmts != nil { diff --git a/node/stmt/n_class_extends.go b/node/stmt/n_class_extends.go new file mode 100644 index 0000000..2d7efcc --- /dev/null +++ b/node/stmt/n_class_extends.go @@ -0,0 +1,38 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/walker" +) + +// ClassExtends node +type ClassExtends struct { + ClassName node.Node +} + +// NewClassExtends node constructor +func NewClassExtends(className node.Node) *ClassExtends { + return &ClassExtends{ + className, + } +} + +// Attributes returns node attributes as map +func (n *ClassExtends) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *ClassExtends) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.ClassName != nil { + vv := v.GetChildrenVisitor("ClassName") + n.ClassName.Walk(vv) + } + + v.LeaveNode(n) +} diff --git a/node/stmt/n_class_implements.go b/node/stmt/n_class_implements.go new file mode 100644 index 0000000..00a37a1 --- /dev/null +++ b/node/stmt/n_class_implements.go @@ -0,0 +1,42 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/walker" +) + +// ClassImplements node +type ClassImplements struct { + InterfaceNames []node.Node +} + +// NewClassImplements node constructor +func NewClassImplements(interfaceNames []node.Node) *ClassImplements { + return &ClassImplements{ + interfaceNames, + } +} + +// Attributes returns node attributes as map +func (n *ClassImplements) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *ClassImplements) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.InterfaceNames != nil { + vv := v.GetChildrenVisitor("InterfaceNames") + for _, nn := range n.InterfaceNames { + if nn != nil { + nn.Walk(vv) + } + } + } + + v.LeaveNode(n) +} diff --git a/node/stmt/n_interface.go b/node/stmt/n_interface.go index bd1296d..46524c6 100644 --- a/node/stmt/n_interface.go +++ b/node/stmt/n_interface.go @@ -9,12 +9,12 @@ import ( type Interface struct { PhpDocComment string InterfaceName node.Node - Extends []node.Node + Extends *InterfaceExtends Stmts []node.Node } // NewInterface node constructor -func NewInterface(InterfaceName node.Node, Extends []node.Node, Stmts []node.Node, PhpDocComment string) *Interface { +func NewInterface(InterfaceName node.Node, Extends *InterfaceExtends, Stmts []node.Node, PhpDocComment string) *Interface { return &Interface{ PhpDocComment, InterfaceName, @@ -44,11 +44,7 @@ func (n *Interface) Walk(v walker.Visitor) { if n.Extends != nil { vv := v.GetChildrenVisitor("Extends") - for _, nn := range n.Extends { - if nn != nil { - nn.Walk(vv) - } - } + n.Extends.Walk(vv) } if n.Stmts != nil { diff --git a/node/stmt/n_interface_extends.go b/node/stmt/n_interface_extends.go new file mode 100644 index 0000000..2b1c61a --- /dev/null +++ b/node/stmt/n_interface_extends.go @@ -0,0 +1,42 @@ +package stmt + +import ( + "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/walker" +) + +// InterfaceExtends node +type InterfaceExtends struct { + InterfaceNames []node.Node +} + +// NewInterfaceExtends node constructor +func NewInterfaceExtends(InterfaceNames []node.Node) *InterfaceExtends { + return &InterfaceExtends{ + InterfaceNames, + } +} + +// Attributes returns node attributes as map +func (n *InterfaceExtends) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *InterfaceExtends) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.InterfaceNames != nil { + vv := v.GetChildrenVisitor("InterfaceNames") + for _, nn := range n.InterfaceNames { + if nn != nil { + nn.Walk(vv) + } + } + } + + v.LeaveNode(n) +} diff --git a/node/stmt/t_class_test.go b/node/stmt/t_class_test.go index 7ef2ad3..5b32326 100644 --- a/node/stmt/t_class_test.go +++ b/node/stmt/t_class_test.go @@ -72,9 +72,11 @@ func TestClassExtends(t *testing.T) { Modifiers: []node.Node{ &node.Identifier{Value: "final"}, }, - Extends: &name.Name{ - Parts: []node.Node{ - &name.NamePart{Value: "bar"}, + Extends: &stmt.ClassExtends{ + ClassName: &name.Name{ + Parts: []node.Node{ + &name.NamePart{Value: "bar"}, + }, }, }, Stmts: []node.Node{}, @@ -103,10 +105,12 @@ func TestClassImplement(t *testing.T) { Modifiers: []node.Node{ &node.Identifier{Value: "final"}, }, - Implements: []node.Node{ - &name.Name{ - Parts: []node.Node{ - &name.NamePart{Value: "bar"}, + Implements: &stmt.ClassImplements{ + InterfaceNames: []node.Node{ + &name.Name{ + Parts: []node.Node{ + &name.NamePart{Value: "bar"}, + }, }, }, }, @@ -136,15 +140,17 @@ func TestClassImplements(t *testing.T) { Modifiers: []node.Node{ &node.Identifier{Value: "final"}, }, - Implements: []node.Node{ - &name.Name{ - Parts: []node.Node{ - &name.NamePart{Value: "bar"}, + Implements: &stmt.ClassImplements{ + InterfaceNames: []node.Node{ + &name.Name{ + Parts: []node.Node{ + &name.NamePart{Value: "bar"}, + }, }, - }, - &name.Name{ - Parts: []node.Node{ - &name.NamePart{Value: "baz"}, + &name.Name{ + Parts: []node.Node{ + &name.NamePart{Value: "baz"}, + }, }, }, }, @@ -173,20 +179,24 @@ func TestAnonimousClass(t *testing.T) { Expr: &expr.New{ Class: &stmt.Class{ ArgumentList: &node.ArgumentList{}, - Extends: &name.Name{ - Parts: []node.Node{ - &name.NamePart{Value: "foo"}, - }, - }, - Implements: []node.Node{ - &name.Name{ + Extends: &stmt.ClassExtends{ + ClassName: &name.Name{ Parts: []node.Node{ - &name.NamePart{Value: "bar"}, + &name.NamePart{Value: "foo"}, }, }, - &name.Name{ - Parts: []node.Node{ - &name.NamePart{Value: "baz"}, + }, + Implements: &stmt.ClassImplements{ + InterfaceNames: []node.Node{ + &name.Name{ + Parts: []node.Node{ + &name.NamePart{Value: "bar"}, + }, + }, + &name.Name{ + Parts: []node.Node{ + &name.NamePart{Value: "baz"}, + }, }, }, }, diff --git a/node/stmt/t_interface_test.go b/node/stmt/t_interface_test.go index 524178d..85a64d8 100644 --- a/node/stmt/t_interface_test.go +++ b/node/stmt/t_interface_test.go @@ -43,10 +43,12 @@ func TestInterfaceExtend(t *testing.T) { &stmt.Interface{ PhpDocComment: "", InterfaceName: &node.Identifier{Value: "Foo"}, - Extends: []node.Node{ - &name.Name{ - Parts: []node.Node{ - &name.NamePart{Value: "Bar"}, + Extends: &stmt.InterfaceExtends{ + InterfaceNames: []node.Node{ + &name.Name{ + Parts: []node.Node{ + &name.NamePart{Value: "Bar"}, + }, }, }, }, @@ -74,15 +76,17 @@ func TestInterfaceExtends(t *testing.T) { &stmt.Interface{ PhpDocComment: "", InterfaceName: &node.Identifier{Value: "Foo"}, - Extends: []node.Node{ - &name.Name{ - Parts: []node.Node{ - &name.NamePart{Value: "Bar"}, + Extends: &stmt.InterfaceExtends{ + InterfaceNames: []node.Node{ + &name.Name{ + Parts: []node.Node{ + &name.NamePart{Value: "Bar"}, + }, }, - }, - &name.Name{ - Parts: []node.Node{ - &name.NamePart{Value: "Baz"}, + &name.Name{ + Parts: []node.Node{ + &name.NamePart{Value: "Baz"}, + }, }, }, }, diff --git a/node/stmt/t_visitor_test.go b/node/stmt/t_visitor_test.go index 06cf9a3..f8f5c84 100644 --- a/node/stmt/t_visitor_test.go +++ b/node/stmt/t_visitor_test.go @@ -4,6 +4,8 @@ import ( "reflect" "testing" + "github.com/z7zmey/php-parser/node/name" + "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/node/stmt" @@ -93,8 +95,8 @@ var nodesToTest = []struct { ClassName: &node.Identifier{}, Modifiers: []node.Node{&stmt.Expression{}}, ArgumentList: &node.ArgumentList{}, - Extends: &node.Identifier{}, - Implements: []node.Node{&stmt.Expression{}}, + Extends: &stmt.ClassExtends{}, + Implements: &stmt.ClassImplements{}, Stmts: []node.Node{&stmt.Expression{}}, }, []string{"ClassName", "Modifiers", "ArgumentList", "Extends", "Implements", "Stmts"}, @@ -293,7 +295,7 @@ var nodesToTest = []struct { &stmt.Interface{ PhpDocComment: "/** */", InterfaceName: &node.Identifier{}, - Extends: []node.Node{&stmt.Expression{}}, + Extends: &stmt.InterfaceExtends{}, Stmts: []node.Node{&stmt.Expression{}}, }, []string{"InterfaceName", "Extends", "Stmts"}, @@ -493,6 +495,31 @@ var nodesToTest = []struct { []string{"Adaptations"}, map[string]interface{}{}, }, + { + &stmt.ClassExtends{ + ClassName: &name.Name{}, + }, + []string{"ClassName"}, + map[string]interface{}{}, + }, + { + &stmt.ClassImplements{ + InterfaceNames: []node.Node{ + &name.Name{}, + }, + }, + []string{"InterfaceNames"}, + map[string]interface{}{}, + }, + { + &stmt.InterfaceExtends{ + InterfaceNames: []node.Node{ + &name.Name{}, + }, + }, + []string{"InterfaceNames"}, + map[string]interface{}{}, + }, } type visitorMock struct { diff --git a/php5/php5.go b/php5/php5.go index 5509d4f..916f894 100644 --- a/php5/php5.go +++ b/php5/php5.go @@ -27,6 +27,10 @@ type yySymType struct { list []node.Node foreachVariable foreachVariable simpleIndirectReference simpleIndirectReference + + ClassExtends *stmt.ClassExtends + ClassImplements *stmt.ClassImplements + InterfaceExtends *stmt.InterfaceExtends } const T_INCLUDE = 57346 @@ -341,7 +345,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line php5/php5.y:3993 +//line php5/php5.y:4015 type foreachVariable struct { node node.Node @@ -699,14 +703,14 @@ var yyAct = [...]int{ 706, 703, 704, 608, 39, 589, 39, 39, 590, 591, 521, 684, 255, 260, 261, 572, 970, 260, 261, 956, 982, 839, 958, 39, 994, 961, 964, 39, 39, 521, - 963, 572, 902, 483, 993, 403, 572, 995, 895, 997, - 838, 835, 575, 566, 914, 1005, 916, 979, 1004, 448, - 724, 394, 39, 572, 1011, 531, 924, 389, 926, 927, - 1012, 531, 531, 164, 572, 1015, 992, 341, 697, 919, - 39, 232, 919, 232, 538, 558, 928, 290, 460, 161, - 157, 943, 318, 314, 231, 947, 231, 127, 948, 531, - 335, 944, 1008, 343, 39, 938, 528, 607, 996, 969, - 39, 968, 945, 967, 966, 837, 836, 834, 401, 40, + 963, 572, 902, 483, 993, 895, 572, 995, 838, 997, + 835, 566, 1005, 1004, 914, 724, 916, 979, 394, 448, + 389, 164, 39, 572, 1011, 531, 924, 341, 926, 927, + 1012, 531, 531, 697, 572, 1015, 992, 538, 928, 919, + 39, 232, 919, 232, 290, 558, 460, 161, 157, 318, + 314, 943, 127, 403, 231, 947, 231, 575, 948, 531, + 401, 335, 944, 1008, 39, 343, 938, 528, 607, 996, + 39, 969, 945, 968, 967, 966, 837, 836, 834, 40, 568, 15, 14, 822, 972, 719, 801, 694, 11, 249, 75, 232, 76, 116, 266, 64, 89, 598, 90, 520, 101, 74, 12, 326, 231, 100, 99, 531, 79, 519, @@ -1618,12 +1622,12 @@ var yyPgo = [...]int{ 1080, 1079, 1078, 135, 1077, 1076, 24, 1075, 26, 48, 45, 1074, 708, 34, 1073, 1, 1072, 1070, 27, 1069, 73, 68, 61, 1068, 1067, 1066, 35, 1065, 1063, 4, - 1062, 1061, 1060, 17, 1059, 1058, 1057, 1056, 1055, 51, - 5, 1054, 1053, 1051, 1049, 1048, 2, 1047, 631, 1046, - 18, 22, 1045, 1043, 1042, 15, 1041, 1040, 39, 0, - 1037, 1033, 1032, 117, 1030, 1029, 553, 1028, 1027, 42, - 8, 1026, 9, 1024, 1018, 1017, 14, 49, 1013, 1007, - 1001, 1000, 998, 995, 3, 993, 16, 992, 991, 990, + 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, @@ -1631,29 +1635,29 @@ var yyPgo = [...]int{ } var yyR1 = [...]int{ - 0, 149, 88, 88, 89, 89, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 90, 90, - 4, 4, 4, 4, 91, 91, 5, 5, 5, 5, - 92, 92, 6, 6, 6, 6, 53, 53, 93, 93, + 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, 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, 111, 111, 58, 58, 112, - 112, 113, 113, 59, 109, 109, 56, 51, 52, 147, + 26, 26, 26, 26, 26, 113, 113, 58, 58, 114, + 114, 115, 115, 59, 111, 111, 56, 51, 52, 147, 147, 148, 148, 60, 61, 61, 64, 64, 64, 64, - 65, 65, 2, 121, 121, 117, 117, 122, 122, 146, - 146, 145, 145, 145, 86, 86, 85, 85, 57, 57, - 110, 110, 83, 83, 83, 83, 107, 107, 107, 150, - 150, 87, 87, 103, 103, 104, 104, 54, 54, 55, - 55, 114, 114, 115, 115, 63, 63, 62, 62, 62, - 62, 81, 81, 81, 123, 123, 69, 69, 69, 69, - 94, 94, 27, 27, 27, 95, 95, 95, 95, 116, - 116, 66, 66, 66, 66, 68, 124, 124, 82, 82, - 125, 125, 126, 126, 70, 70, 71, 127, 127, 74, - 74, 73, 72, 72, 75, 75, 84, 84, 118, 118, - 119, 119, 128, 128, 76, 76, 76, 76, 76, 76, - 120, 120, 120, 120, 67, 67, 108, 108, 106, 106, - 105, 105, 134, 134, 132, 132, 133, 133, 133, 135, + 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, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, @@ -1662,27 +1666,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, 102, 102, 101, - 101, 101, 101, 23, 23, 23, 23, 23, 23, 23, + 47, 47, 47, 47, 46, 46, 1, 104, 104, 103, + 103, 103, 103, 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, 80, 80, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 8, 28, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, + 129, 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, 77, 137, 137, 137, 40, 40, 44, + 136, 138, 138, 76, 137, 137, 137, 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, 100, 100, 38, 38, - 38, 99, 99, 98, 98, 98, 98, 98, 98, 98, - 98, 96, 96, 96, 96, 33, 33, 33, 33, 33, + 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, 33, 34, 34, 34, 37, 37, 37, 37, 37, 37, - 37, 37, 97, 97, 36, 36, 30, 30, 31, 32, + 37, 37, 99, 99, 36, 36, 30, 30, 31, 32, } var yyR2 = [...]int{ @@ -1741,7 +1745,7 @@ var yyR2 = [...]int{ } var yyChk = [...]int{ - -1000, -149, -88, -3, 2, -25, -51, -52, 51, 79, + -1000, -149, -90, -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, @@ -1751,99 +1755,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, -89, 82, -11, 8, 9, 66, 67, 81, + -23, -30, -91, 82, -11, 8, 9, 66, 67, 81, 63, 64, 65, 80, -10, -144, -44, -12, -40, -9, - 157, 12, 146, -89, 142, 82, 10, -90, 37, 38, - -4, -89, 82, 144, 158, 145, 10, -93, -48, 146, + 157, 12, 146, -91, 142, 82, 10, -92, 37, 38, + -4, -91, 82, 144, 158, 145, 10, -95, -48, 146, -48, -25, -1, 79, 146, -48, 144, -14, 97, 98, - 144, -14, 144, -15, -19, -14, 144, -94, -27, 12, - 157, -95, -1, 12, -108, -14, 144, 129, 130, 87, + 144, -14, 144, -15, -19, -14, 144, -96, -27, 12, + 157, -97, -1, 12, -110, -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, -89, 79, + 127, 128, 146, -14, 104, 105, -18, -19, -91, 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, -96, -33, 12, - 76, 77, -14, 57, -43, -11, -41, -89, 79, 82, + 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, -96, 17, 17, 75, -96, 148, 146, -99, - -98, -14, 151, 148, 148, 82, -81, 146, -89, 78, - 148, 142, -10, 157, 78, -81, 142, 147, 144, 142, - -88, -89, 144, 158, -91, -5, -89, 82, -92, -6, - -89, 82, 29, -89, 10, 160, -24, 143, 2, -25, - -51, -52, 51, -25, 145, -87, -25, 145, 21, -147, - -106, -105, -14, -83, 142, 145, 144, 144, 144, 144, + -14, 148, -98, 17, 17, 75, -98, 148, 146, -101, + -100, -14, 151, 148, 148, 82, -80, 146, -91, 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, + -51, -52, 51, -25, 145, -86, -25, 145, 21, -147, + -108, -107, -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, -109, - -56, -19, -19, -15, -110, 10, -93, 144, 144, 10, - 146, -65, 55, -121, 55, 58, -14, 151, -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, -14, -14, -14, -14, - -100, -38, -19, 59, 82, -89, 78, 78, 147, 147, + -102, -38, -19, 59, 82, -91, 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, -80, -81, 78, 82, -89, 57, -10, 78, - -97, -36, -19, -15, -19, -15, -14, -13, 140, 75, - 75, -13, -99, 149, -151, 158, 58, -17, -19, -13, - -13, 10, 147, -123, -50, -69, -15, -19, 151, 83, - -81, -39, -40, 10, 52, -13, -14, -39, -40, 10, - -14, 144, -88, 143, -81, -4, 144, 158, 29, -89, - 144, 158, 29, -89, 10, 29, 160, -28, -78, -7, - -31, -89, 79, 82, 60, 148, -8, 62, -79, 18, - 74, -11, 154, 155, 153, 152, 146, 146, -103, -93, - -93, -48, 144, 158, -107, 144, -107, 144, -27, -14, + 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, + -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, 12, 146, -28, -14, 145, -14, 147, 158, 29, 29, - 147, 158, 160, 143, 146, -114, -115, -63, -62, 60, - 61, -45, -89, 79, 82, -117, 56, -45, 142, -122, - -45, -15, -19, -19, 91, 147, 158, 146, -89, -135, + 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, -77, -138, -81, - 148, 142, -10, -14, -40, -89, -139, -40, 147, 158, + 13, 12, 10, 143, 148, 143, -137, -76, -138, -80, + 148, 142, -10, -14, -40, -91, -139, -40, 147, 158, 147, 147, 147, 149, 149, 147, -14, 151, -14, 151, - 149, 149, 147, 158, 147, -17, -14, -81, -81, 149, - 143, -81, -81, 143, 143, -5, 10, 29, -6, 10, + 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, -89, 146, -130, -131, -78, 17, 78, -78, -78, - -78, -78, -78, 147, -54, 93, 94, -104, 22, 144, - -106, -14, 143, 32, 33, -107, 31, -107, 143, 160, - -114, -14, 144, -56, -145, -19, 151, 59, -145, -57, - -25, 145, 10, -28, -111, 41, -114, 147, 158, -147, - 82, -89, 142, -122, -116, 158, -43, 160, -38, -100, + 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, -69, 10, - 10, -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, 145, -78, -89, + -13, -14, 143, -142, -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, -25, -55, 93, 94, 144, 144, -14, -150, 145, 144, 143, 144, 31, -28, 147, -146, 58, -19, 146, -146, - -93, 160, -58, 42, 146, 147, -102, 44, -63, -148, - 83, -89, -116, 143, -66, -118, -67, -68, -119, -128, - 47, 38, 44, -76, 103, 102, 101, 98, 99, 100, - -45, -80, -14, 147, -13, 149, -137, 149, -136, -13, - -13, 149, 143, -141, 57, -14, 151, 149, -78, 145, - 147, -78, -78, -25, 95, -48, 145, -106, -150, -93, - 144, -102, 147, -145, -100, 147, 28, -28, 142, -45, - 142, 142, 146, 12, 143, -120, 12, 144, 158, -1, - -76, 10, -124, -45, 149, 143, 149, 149, -139, -17, - -78, 58, 144, 145, -93, 147, -93, 142, -85, -25, - 145, 147, -85, 144, -93, 12, -93, -93, -101, 12, - 151, 160, 144, 158, 160, 10, -147, 160, -82, 158, - 144, 142, -78, -93, -86, -25, 145, -93, -93, 143, + -95, 160, -58, 42, 146, 147, -104, 44, -63, -148, + 83, -91, -118, 143, -65, -119, -66, -67, -120, -128, + 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, + 151, 160, 144, 158, 160, 10, -147, 160, -81, 158, + 144, 142, -77, -95, -85, -25, 145, -95, -95, 143, 147, 143, 143, 147, 158, 12, -28, 12, -28, 160, - 10, -28, -45, -125, -126, -70, -71, -72, -73, -74, - -45, 10, -93, 143, 26, 142, 12, 151, 160, -28, - 146, 143, -70, 144, 144, 45, 29, 78, 24, 144, - -93, 12, -28, -114, -127, -45, -75, -76, 10, 144, - 143, 147, 158, 10, -112, -113, -59, 41, -84, 144, - 142, -45, -59, 146, -93, -45, 143, 12, 147, 142, - -93, 143, + 10, -28, -45, -125, -126, -69, -70, -71, -72, -73, + -45, 10, -95, 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, } var yyDef = [...]int{ @@ -2327,14 +2331,14 @@ yydefault: case 1: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:269 + //line php5/php5.y:276 { yylex.(*Parser).rootNode = node.NewRoot(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(yylex.(*Parser).rootNode, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) } case 2: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:277 + //line php5/php5.y:284 { if yyDollar[2].node != nil { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -2342,13 +2346,13 @@ yydefault: } case 3: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:282 + //line php5/php5.y:289 { yyVAL.list = []node.Node{} } case 4: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:287 + //line php5/php5.y:294 { namePart := name.NewNamePart(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(namePart, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -2357,7 +2361,7 @@ yydefault: } case 5: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:294 + //line php5/php5.y:301 { namePart := name.NewNamePart(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(namePart, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -2366,32 +2370,32 @@ yydefault: } case 6: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:304 + //line php5/php5.y:311 { // error yyVAL.node = nil } case 7: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:309 + //line php5/php5.y:316 { yyVAL.node = yyDollar[1].node } case 8: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:311 + //line php5/php5.y:318 { yyVAL.node = yyDollar[1].node } case 9: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:313 + //line php5/php5.y:320 { yyVAL.node = yyDollar[1].node } case 10: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:315 + //line php5/php5.y:322 { yyVAL.node = stmt.NewHaltCompiler() yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -2399,7 +2403,7 @@ yydefault: } case 11: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:321 + //line php5/php5.y:328 { name := name.NewName(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) @@ -2411,7 +2415,7 @@ yydefault: } case 12: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:331 + //line php5/php5.y:338 { name := name.NewName(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) @@ -2423,7 +2427,7 @@ yydefault: } case 13: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:341 + //line php5/php5.y:348 { yyVAL.node = stmt.NewNamespace(nil, yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -2431,7 +2435,7 @@ yydefault: } case 14: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:347 + //line php5/php5.y:354 { yyVAL.node = stmt.NewUseList(nil, yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -2439,7 +2443,7 @@ yydefault: } case 15: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:353 + //line php5/php5.y:360 { useType := node.NewIdentifier(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -2451,7 +2455,7 @@ yydefault: } case 16: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:363 + //line php5/php5.y:370 { useType := node.NewIdentifier(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -2463,25 +2467,25 @@ yydefault: } case 17: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:373 + //line php5/php5.y:380 { yyVAL.node = yyDollar[1].node } case 18: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:378 + //line php5/php5.y:385 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 19: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:380 + //line php5/php5.y:387 { yyVAL.list = []node.Node{yyDollar[1].node} } case 20: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:385 + //line php5/php5.y:392 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -2493,7 +2497,7 @@ yydefault: } case 21: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:395 + //line php5/php5.y:402 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -2508,7 +2512,7 @@ yydefault: } case 22: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:408 + //line php5/php5.y:415 { name := name.NewName(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) @@ -2520,7 +2524,7 @@ yydefault: } case 23: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:418 + //line php5/php5.y:425 { name := name.NewName(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) @@ -2535,19 +2539,19 @@ yydefault: } case 24: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:434 + //line php5/php5.y:441 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 25: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:436 + //line php5/php5.y:443 { yyVAL.list = []node.Node{yyDollar[1].node} } case 26: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:441 + //line php5/php5.y:448 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -2559,7 +2563,7 @@ yydefault: } case 27: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:451 + //line php5/php5.y:458 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -2574,7 +2578,7 @@ yydefault: } case 28: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:464 + //line php5/php5.y:471 { name := name.NewName(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) @@ -2586,7 +2590,7 @@ yydefault: } case 29: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:474 + //line php5/php5.y:481 { name := name.NewName(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) @@ -2601,19 +2605,19 @@ yydefault: } case 30: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:490 + //line php5/php5.y:497 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 31: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:492 + //line php5/php5.y:499 { yyVAL.list = []node.Node{yyDollar[1].node} } case 32: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:497 + //line php5/php5.y:504 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -2625,7 +2629,7 @@ yydefault: } case 33: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:507 + //line php5/php5.y:514 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -2640,7 +2644,7 @@ yydefault: } case 34: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:520 + //line php5/php5.y:527 { name := name.NewName(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) @@ -2652,7 +2656,7 @@ yydefault: } case 35: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:530 + //line php5/php5.y:537 { name := name.NewName(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) @@ -2667,7 +2671,7 @@ yydefault: } case 36: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:546 + //line php5/php5.y:553 { name := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -2685,7 +2689,7 @@ yydefault: } case 37: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:562 + //line php5/php5.y:569 { name := node.NewIdentifier(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -2703,7 +2707,7 @@ yydefault: } case 38: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:581 + //line php5/php5.y:588 { if yyDollar[2].node != nil { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -2711,38 +2715,38 @@ yydefault: } case 39: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:587 + //line php5/php5.y:594 { yyVAL.list = []node.Node{} } case 40: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:593 + //line php5/php5.y:600 { // error yyVAL.node = nil } case 41: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:598 + //line php5/php5.y:605 { yyVAL.node = yyDollar[1].node } case 42: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:600 + //line php5/php5.y:607 { yyVAL.node = yyDollar[1].node } case 43: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:602 + //line php5/php5.y:609 { yyVAL.node = yyDollar[1].node } case 44: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:604 + //line php5/php5.y:611 { yyVAL.node = stmt.NewHaltCompiler() yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -2750,13 +2754,13 @@ yydefault: } case 45: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:614 + //line php5/php5.y:621 { yyVAL.node = yyDollar[1].node } case 46: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:616 + //line php5/php5.y:623 { label := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(label, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -2768,7 +2772,7 @@ yydefault: } case 47: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:629 + //line php5/php5.y:636 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -2776,7 +2780,7 @@ yydefault: } case 48: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:635 + //line php5/php5.y:642 { yyVAL.node = stmt.NewIf(yyDollar[2].node, yyDollar[3].node, yyDollar[4].list, yyDollar[5].node) @@ -2792,7 +2796,7 @@ yydefault: } case 49: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:649 + //line php5/php5.y:656 { stmts := stmt.NewStmtList(yyDollar[4].list) yylex.(*Parser).positions.AddPosition(stmts, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[4].list)) @@ -2803,7 +2807,7 @@ yydefault: } case 50: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:658 + //line php5/php5.y:665 { switch n := yyDollar[3].node.(type) { case *stmt.While: @@ -2819,7 +2823,7 @@ yydefault: } case 51: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:672 + //line php5/php5.y:679 { yyVAL.node = stmt.NewDo(yyDollar[2].node, yyDollar[4].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[5].token)) @@ -2827,7 +2831,7 @@ yydefault: } case 52: yyDollar = yyS[yypt-9 : yypt+1] - //line php5/php5.y:678 + //line php5/php5.y:685 { switch n := yyDollar[9].node.(type) { case *stmt.For: @@ -2847,7 +2851,7 @@ yydefault: } case 53: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:696 + //line php5/php5.y:703 { switch n := yyDollar[3].node.(type) { case *stmt.Switch: @@ -2865,7 +2869,7 @@ yydefault: } case 54: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:712 + //line php5/php5.y:719 { yyVAL.node = stmt.NewBreak(nil) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) @@ -2873,7 +2877,7 @@ yydefault: } case 55: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:718 + //line php5/php5.y:725 { yyVAL.node = stmt.NewBreak(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -2881,7 +2885,7 @@ yydefault: } case 56: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:724 + //line php5/php5.y:731 { yyVAL.node = stmt.NewContinue(nil) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) @@ -2889,7 +2893,7 @@ yydefault: } case 57: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:730 + //line php5/php5.y:737 { yyVAL.node = stmt.NewContinue(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -2897,7 +2901,7 @@ yydefault: } case 58: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:736 + //line php5/php5.y:743 { yyVAL.node = stmt.NewReturn(nil) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) @@ -2905,7 +2909,7 @@ yydefault: } case 59: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:742 + //line php5/php5.y:749 { yyVAL.node = stmt.NewReturn(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -2913,7 +2917,7 @@ yydefault: } case 60: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:748 + //line php5/php5.y:755 { yyVAL.node = stmt.NewReturn(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -2921,7 +2925,7 @@ yydefault: } case 61: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:754 + //line php5/php5.y:761 { yyVAL.node = stmt.NewExpression(yyDollar[1].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) @@ -2929,7 +2933,7 @@ yydefault: } case 62: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:760 + //line php5/php5.y:767 { yyVAL.node = stmt.NewGlobal(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -2937,7 +2941,7 @@ yydefault: } case 63: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:766 + //line php5/php5.y:773 { yyVAL.node = stmt.NewStatic(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -2945,7 +2949,7 @@ yydefault: } case 64: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:772 + //line php5/php5.y:779 { yyVAL.node = stmt.NewEcho(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -2953,7 +2957,7 @@ yydefault: } case 65: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:778 + //line php5/php5.y:785 { yyVAL.node = stmt.NewInlineHtml(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -2961,7 +2965,7 @@ yydefault: } case 66: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:784 + //line php5/php5.y:791 { yyVAL.node = stmt.NewExpression(yyDollar[1].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) @@ -2969,7 +2973,7 @@ yydefault: } case 67: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:790 + //line php5/php5.y:797 { yyVAL.node = stmt.NewUnset(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[5].token)) @@ -2977,7 +2981,7 @@ yydefault: } case 68: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:796 + //line php5/php5.y:803 { if yyDollar[6].foreachVariable.node == nil { switch n := yyDollar[8].node.(type) { @@ -3012,7 +3016,7 @@ yydefault: } case 69: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:829 + //line php5/php5.y:836 { if yyDollar[6].foreachVariable.node == nil { switch n := yyDollar[8].node.(type) { @@ -3047,7 +3051,7 @@ yydefault: } case 70: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:862 + //line php5/php5.y:869 { 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)) @@ -3055,7 +3059,7 @@ yydefault: } case 71: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:868 + //line php5/php5.y:875 { yyVAL.node = stmt.NewNop() yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3063,7 +3067,7 @@ yydefault: } case 72: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:874 + //line php5/php5.y:881 { yyVAL.node = stmt.NewTry(yyDollar[3].list, yyDollar[5].list, yyDollar[6].node) @@ -3077,7 +3081,7 @@ yydefault: } case 73: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:886 + //line php5/php5.y:893 { yyVAL.node = stmt.NewThrow(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -3085,7 +3089,7 @@ yydefault: } case 74: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:892 + //line php5/php5.y:899 { label := node.NewIdentifier(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(label, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -3097,13 +3101,13 @@ yydefault: } case 75: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:905 + //line php5/php5.y:912 { yyVAL.list = []node.Node{} } case 76: yyDollar = yyS[yypt-9 : yypt+1] - //line php5/php5.y:907 + //line php5/php5.y:914 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -3121,13 +3125,13 @@ yydefault: } case 77: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:925 + //line php5/php5.y:932 { yyVAL.node = nil } case 78: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:927 + //line php5/php5.y:934 { yyVAL.node = stmt.NewFinally(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -3135,31 +3139,31 @@ yydefault: } case 79: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:936 + //line php5/php5.y:943 { yyVAL.list = yyDollar[1].list } case 80: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:938 + //line php5/php5.y:945 { yyVAL.list = []node.Node{} } case 81: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:943 + //line php5/php5.y:950 { yyVAL.list = []node.Node{yyDollar[1].node} } case 82: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:945 + //line php5/php5.y:952 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 83: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:950 + //line php5/php5.y:957 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -3175,61 +3179,61 @@ yydefault: } case 84: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:967 + //line php5/php5.y:974 { yyVAL.list = []node.Node{yyDollar[1].node} } case 85: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:969 + //line php5/php5.y:976 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 86: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:974 + //line php5/php5.y:981 { yyVAL.node = yyDollar[1].node } case 87: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:979 + //line php5/php5.y:986 { yyVAL.node = yyDollar[1].node } case 88: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:984 + //line php5/php5.y:991 { yyVAL.node = yyDollar[1].node } case 89: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:989 + //line php5/php5.y:996 { yyVAL.token = nil } case 90: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:991 + //line php5/php5.y:998 { yyVAL.token = yyDollar[1].token } case 91: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:996 + //line php5/php5.y:1003 { yyVAL.token = nil } case 92: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:998 + //line php5/php5.y:1005 { yyVAL.token = yyDollar[1].token } case 93: yyDollar = yyS[yypt-9 : yypt+1] - //line php5/php5.y:1003 + //line php5/php5.y:1010 { name := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -3241,7 +3245,7 @@ yydefault: } case 94: yyDollar = yyS[yypt-7 : yypt+1] - //line php5/php5.y:1016 + //line php5/php5.y:1023 { switch n := yyDollar[1].node.(type) { case *stmt.Class: @@ -3249,8 +3253,8 @@ yydefault: yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) n.ClassName = name n.Stmts = yyDollar[6].list - n.Extends = yyDollar[3].node - n.Implements = yyDollar[4].list + n.Extends = yyDollar[3].ClassExtends + n.Implements = yyDollar[4].ClassImplements case *stmt.Trait: // TODO: is it possible that trait extend or implement @@ -3264,19 +3268,19 @@ yydefault: } case 95: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:1037 + //line php5/php5.y:1044 { name := node.NewIdentifier(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) yylex.(*Parser).comments.AddComments(name, yyDollar[2].token.Comments()) - yyVAL.node = stmt.NewInterface(name, yyDollar[3].list, yyDollar[5].list, "") + yyVAL.node = stmt.NewInterface(name, yyDollar[3].InterfaceExtends, yyDollar[5].list, "") yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[6].token)) yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 96: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1051 + //line php5/php5.y:1058 { yyVAL.node = stmt.NewClass(nil, nil, nil, nil, nil, nil, "") yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3284,7 +3288,7 @@ yydefault: } case 97: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1057 + //line php5/php5.y:1064 { classModifier := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(classModifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3296,7 +3300,7 @@ yydefault: } case 98: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1067 + //line php5/php5.y:1074 { yyVAL.node = stmt.NewTrait(nil, nil, "") yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3304,7 +3308,7 @@ yydefault: } case 99: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1073 + //line php5/php5.y:1080 { classModifier := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(classModifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3316,85 +3320,94 @@ yydefault: } case 100: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1086 + //line php5/php5.y:1093 { - yyVAL.node = nil + yyVAL.ClassExtends = nil } case 101: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1088 + //line php5/php5.y:1095 { - yyVAL.node = yyDollar[2].node + yyVAL.ClassExtends = stmt.NewClassExtends(yyDollar[2].node) + + // save position + yylex.(*Parser).positions.AddPosition(yyVAL.ClassExtends, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) } case 102: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1093 + //line php5/php5.y:1105 { yyVAL.token = yyDollar[1].token } case 103: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1098 + //line php5/php5.y:1110 { - yyVAL.list = nil + yyVAL.InterfaceExtends = nil } case 104: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1100 + //line php5/php5.y:1112 { - yyVAL.list = yyDollar[2].list + yyVAL.InterfaceExtends = stmt.NewInterfaceExtends(yyDollar[2].list) + + // save position + yylex.(*Parser).positions.AddPosition(yyVAL.InterfaceExtends, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) } case 105: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1105 + //line php5/php5.y:1122 { - yyVAL.list = nil + yyVAL.ClassImplements = nil } case 106: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1107 + //line php5/php5.y:1124 { - yyVAL.list = yyDollar[2].list + yyVAL.ClassImplements = stmt.NewClassImplements(yyDollar[2].list) + + // save position + yylex.(*Parser).positions.AddPosition(yyVAL.ClassImplements, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) } case 107: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1112 + //line php5/php5.y:1134 { yyVAL.list = []node.Node{yyDollar[1].node} } case 108: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1114 + //line php5/php5.y:1136 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 109: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1119 + //line php5/php5.y:1141 { yyVAL.foreachVariable = foreachVariable{nil, false} } case 110: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1121 + //line php5/php5.y:1143 { yyVAL.foreachVariable = yyDollar[2].foreachVariable } case 111: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1126 + //line php5/php5.y:1148 { yyVAL.foreachVariable = foreachVariable{yyDollar[1].node, false} } case 112: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1128 + //line php5/php5.y:1150 { yyVAL.foreachVariable = foreachVariable{yyDollar[2].node, true} } case 113: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1130 + //line php5/php5.y:1152 { list := expr.NewList(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -3403,14 +3416,14 @@ yydefault: } case 114: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1140 + //line php5/php5.y:1162 { 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:1145 + //line php5/php5.y:1167 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltFor(nil, nil, nil, stmtList) @@ -3420,14 +3433,14 @@ yydefault: } case 116: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1157 + //line php5/php5.y:1179 { yyVAL.node = stmt.NewForeach(nil, nil, nil, yyDollar[1].node, false) 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:1162 + //line php5/php5.y:1184 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltForeach(nil, nil, nil, stmtList, false) @@ -3437,13 +3450,13 @@ yydefault: } case 118: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1174 + //line php5/php5.y:1196 { yyVAL.node = yyDollar[1].node } case 119: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1176 + //line php5/php5.y:1198 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -3451,7 +3464,7 @@ yydefault: } case 120: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1186 + //line php5/php5.y:1208 { name := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3465,7 +3478,7 @@ yydefault: } case 121: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1198 + //line php5/php5.y:1220 { name := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -3479,7 +3492,7 @@ yydefault: } case 122: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1214 + //line php5/php5.y:1236 { caseList := stmt.NewCaseList(yyDollar[2].list) yyVAL.node = stmt.NewSwitch(nil, caseList) @@ -3489,7 +3502,7 @@ yydefault: } case 123: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1222 + //line php5/php5.y:1244 { caseList := stmt.NewCaseList(yyDollar[3].list) yyVAL.node = stmt.NewSwitch(nil, caseList) @@ -3499,7 +3512,7 @@ yydefault: } case 124: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1230 + //line php5/php5.y:1252 { caseList := stmt.NewCaseList(yyDollar[2].list) yyVAL.node = stmt.NewAltSwitch(nil, caseList) @@ -3509,7 +3522,7 @@ yydefault: } case 125: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1238 + //line php5/php5.y:1260 { caseList := stmt.NewCaseList(yyDollar[3].list) @@ -3520,13 +3533,13 @@ yydefault: } case 126: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1251 + //line php5/php5.y:1273 { yyVAL.list = []node.Node{} } case 127: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1253 + //line php5/php5.y:1275 { _case := stmt.NewCase(yyDollar[3].node, yyDollar[5].list) yylex.(*Parser).positions.AddPosition(_case, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[2].token, yyDollar[5].list)) @@ -3535,7 +3548,7 @@ yydefault: } case 128: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1260 + //line php5/php5.y:1282 { _default := stmt.NewDefault(yyDollar[4].list) yylex.(*Parser).positions.AddPosition(_default, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[2].token, yyDollar[4].list)) @@ -3544,14 +3557,14 @@ yydefault: } case 131: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1277 + //line php5/php5.y:1299 { 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:1282 + //line php5/php5.y:1304 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltWhile(nil, stmtList) @@ -3561,13 +3574,13 @@ yydefault: } case 133: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1295 + //line php5/php5.y:1317 { yyVAL.list = nil } case 134: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1297 + //line php5/php5.y:1319 { _elseIf := stmt.NewElseIf(yyDollar[3].node, yyDollar[4].node) yylex.(*Parser).positions.AddPosition(_elseIf, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[2].token, yyDollar[4].node)) @@ -3577,13 +3590,13 @@ yydefault: } case 135: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1309 + //line php5/php5.y:1331 { yyVAL.list = nil } case 136: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1311 + //line php5/php5.y:1333 { stmts := stmt.NewStmtList(yyDollar[5].list) yylex.(*Parser).positions.AddPosition(stmts, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[5].list)) @@ -3596,13 +3609,13 @@ yydefault: } case 137: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1326 + //line php5/php5.y:1348 { yyVAL.node = nil } case 138: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1328 + //line php5/php5.y:1350 { yyVAL.node = stmt.NewElse(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -3610,13 +3623,13 @@ yydefault: } case 139: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1338 + //line php5/php5.y:1360 { yyVAL.node = nil } case 140: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1340 + //line php5/php5.y:1362 { stmts := stmt.NewStmtList(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(stmts, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[3].list)) @@ -3627,31 +3640,31 @@ yydefault: } case 141: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1353 + //line php5/php5.y:1375 { yyVAL.list = yyDollar[1].list } case 142: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1355 + //line php5/php5.y:1377 { yyVAL.list = nil } case 143: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1360 + //line php5/php5.y:1382 { yyVAL.list = []node.Node{yyDollar[1].node} } case 144: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1362 + //line php5/php5.y:1384 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 145: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1367 + //line php5/php5.y:1389 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -3679,7 +3692,7 @@ yydefault: } case 146: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:1393 + //line php5/php5.y:1415 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -3707,13 +3720,13 @@ yydefault: } case 147: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1423 + //line php5/php5.y:1445 { yyVAL.node = nil } case 148: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1425 + //line php5/php5.y:1447 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3721,7 +3734,7 @@ yydefault: } case 149: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1431 + //line php5/php5.y:1453 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3729,13 +3742,13 @@ yydefault: } case 150: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1437 + //line php5/php5.y:1459 { yyVAL.node = yyDollar[1].node } case 151: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1443 + //line php5/php5.y:1465 { yyVAL.node = node.NewArgumentList(nil) @@ -3744,7 +3757,7 @@ yydefault: } case 152: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1450 + //line php5/php5.y:1472 { yyVAL.node = node.NewArgumentList(yyDollar[2].list) @@ -3753,7 +3766,7 @@ yydefault: } case 153: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1457 + //line php5/php5.y:1479 { arg := node.NewArgument(yyDollar[2].node, false, false) yyVAL.node = node.NewArgumentList([]node.Node{arg}) @@ -3764,19 +3777,19 @@ yydefault: } case 154: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1470 + //line php5/php5.y:1492 { yyVAL.list = []node.Node{yyDollar[1].node} } case 155: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1472 + //line php5/php5.y:1494 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 156: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1477 + //line php5/php5.y:1499 { yyVAL.node = node.NewArgument(yyDollar[1].node, false, false) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) @@ -3784,7 +3797,7 @@ yydefault: } case 157: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1483 + //line php5/php5.y:1505 { yyVAL.node = node.NewArgument(yyDollar[1].node, false, false) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) @@ -3792,7 +3805,7 @@ yydefault: } case 158: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1489 + //line php5/php5.y:1511 { yyVAL.node = node.NewArgument(yyDollar[2].node, false, true) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[2].node)) @@ -3800,7 +3813,7 @@ yydefault: } case 159: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1495 + //line php5/php5.y:1517 { 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)) @@ -3808,19 +3821,19 @@ yydefault: } case 160: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1504 + //line php5/php5.y:1526 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 161: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1506 + //line php5/php5.y:1528 { yyVAL.list = []node.Node{yyDollar[1].node} } case 162: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1512 + //line php5/php5.y:1534 { name := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3832,7 +3845,7 @@ yydefault: } case 163: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1522 + //line php5/php5.y:1544 { yyVAL.node = expr.NewVariable(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -3840,7 +3853,7 @@ yydefault: } case 164: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1528 + //line php5/php5.y:1550 { yyVAL.node = expr.NewVariable(yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -3848,7 +3861,7 @@ yydefault: } case 165: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1538 + //line php5/php5.y:1560 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[3].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -3867,7 +3880,7 @@ yydefault: } case 166: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1555 + //line php5/php5.y:1577 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[3].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -3886,7 +3899,7 @@ yydefault: } case 167: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1572 + //line php5/php5.y:1594 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3905,7 +3918,7 @@ yydefault: } case 168: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1589 + //line php5/php5.y:1611 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3924,19 +3937,19 @@ yydefault: } case 169: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1611 + //line php5/php5.y:1633 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 170: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1613 + //line php5/php5.y:1635 { yyVAL.list = []node.Node{} } case 171: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1619 + //line php5/php5.y:1641 { 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)) @@ -3944,19 +3957,19 @@ yydefault: } case 172: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1625 + //line php5/php5.y:1647 { yyVAL.node = yyDollar[1].node } case 173: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1627 + //line php5/php5.y:1649 { yyVAL.node = yyDollar[1].node } case 174: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:1629 + //line php5/php5.y:1651 { name := node.NewIdentifier(yyDollar[4].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -3974,7 +3987,7 @@ yydefault: } case 175: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1648 + //line php5/php5.y:1670 { var adaptationList *stmt.TraitAdaptationList switch n := yyDollar[3].node.(type) { @@ -3990,19 +4003,19 @@ yydefault: } case 176: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1665 + //line php5/php5.y:1687 { yyVAL.list = []node.Node{yyDollar[1].node} } case 177: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1667 + //line php5/php5.y:1689 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 178: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1672 + //line php5/php5.y:1694 { yyVAL.node = stmt.NewNop() @@ -4010,7 +4023,7 @@ yydefault: } case 179: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1678 + //line php5/php5.y:1700 { yyVAL.node = stmt.NewTraitAdaptationList(yyDollar[2].list) @@ -4018,43 +4031,43 @@ yydefault: } case 180: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1687 + //line php5/php5.y:1709 { yyVAL.list = nil } case 181: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1689 + //line php5/php5.y:1711 { yyVAL.list = yyDollar[1].list } case 182: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1694 + //line php5/php5.y:1716 { yyVAL.list = []node.Node{yyDollar[1].node} } case 183: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1696 + //line php5/php5.y:1718 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 184: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1701 + //line php5/php5.y:1723 { yyVAL.node = yyDollar[1].node } case 185: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1703 + //line php5/php5.y:1725 { yyVAL.node = yyDollar[1].node } case 186: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1708 + //line php5/php5.y:1730 { 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)) @@ -4062,19 +4075,19 @@ yydefault: } case 187: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1717 + //line php5/php5.y:1739 { yyVAL.list = []node.Node{yyDollar[1].node} } case 188: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1719 + //line php5/php5.y:1741 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 189: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1724 + //line php5/php5.y:1746 { name := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4086,13 +4099,13 @@ yydefault: } case 190: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1734 + //line php5/php5.y:1756 { yyVAL.node = yyDollar[1].node } case 191: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1739 + //line php5/php5.y:1761 { target := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -4104,7 +4117,7 @@ yydefault: } case 192: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1752 + //line php5/php5.y:1774 { alias := node.NewIdentifier(yyDollar[4].token.Value) yylex.(*Parser).positions.AddPosition(alias, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -4116,7 +4129,7 @@ yydefault: } case 193: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1762 + //line php5/php5.y:1784 { 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)) @@ -4124,19 +4137,19 @@ yydefault: } case 194: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1771 + //line php5/php5.y:1793 { yyVAL.node = nil } case 195: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1773 + //line php5/php5.y:1795 { yyVAL.node = yyDollar[1].node } case 196: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1778 + //line php5/php5.y:1800 { yyVAL.node = stmt.NewNop() @@ -4144,7 +4157,7 @@ yydefault: } case 197: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1784 + //line php5/php5.y:1806 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) @@ -4152,13 +4165,13 @@ yydefault: } case 198: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1793 + //line php5/php5.y:1815 { yyVAL.list = yyDollar[1].list } case 199: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1795 + //line php5/php5.y:1817 { modifier := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(modifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4168,31 +4181,31 @@ yydefault: } case 200: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1806 + //line php5/php5.y:1828 { yyVAL.list = nil } case 201: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1808 + //line php5/php5.y:1830 { yyVAL.list = yyDollar[1].list } case 202: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1813 + //line php5/php5.y:1835 { yyVAL.list = []node.Node{yyDollar[1].node} } case 203: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1815 + //line php5/php5.y:1837 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 204: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1820 + //line php5/php5.y:1842 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4200,7 +4213,7 @@ yydefault: } case 205: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1826 + //line php5/php5.y:1848 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4208,7 +4221,7 @@ yydefault: } case 206: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1832 + //line php5/php5.y:1854 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4216,7 +4229,7 @@ yydefault: } case 207: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1838 + //line php5/php5.y:1860 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4224,7 +4237,7 @@ yydefault: } case 208: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1844 + //line php5/php5.y:1866 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4232,7 +4245,7 @@ yydefault: } case 209: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1850 + //line php5/php5.y:1872 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4240,7 +4253,7 @@ yydefault: } case 210: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1859 + //line php5/php5.y:1881 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[3].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -4258,7 +4271,7 @@ yydefault: } case 211: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1875 + //line php5/php5.y:1897 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[3].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -4276,7 +4289,7 @@ yydefault: } case 212: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1891 + //line php5/php5.y:1913 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4294,7 +4307,7 @@ yydefault: } case 213: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1907 + //line php5/php5.y:1929 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4312,7 +4325,7 @@ yydefault: } case 214: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1926 + //line php5/php5.y:1948 { name := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -4329,7 +4342,7 @@ yydefault: } case 215: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1941 + //line php5/php5.y:1963 { name := node.NewIdentifier(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -4345,55 +4358,55 @@ yydefault: } case 216: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1958 + //line php5/php5.y:1980 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 217: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1960 + //line php5/php5.y:1982 { yyVAL.list = []node.Node{yyDollar[1].node} } case 218: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1966 + //line php5/php5.y:1988 { yyVAL.list = nil } case 219: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1968 + //line php5/php5.y:1990 { yyVAL.list = yyDollar[1].list } case 220: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1973 + //line php5/php5.y:1995 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 221: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1975 + //line php5/php5.y:1997 { yyVAL.list = []node.Node{yyDollar[1].node} } case 222: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1980 + //line php5/php5.y:2002 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 223: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1982 + //line php5/php5.y:2004 { yyVAL.list = yyDollar[1].list } case 224: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1987 + //line php5/php5.y:2009 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) @@ -4402,7 +4415,7 @@ yydefault: } case 225: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1994 + //line php5/php5.y:2016 { fetch := expr.NewArrayDimFetch(nil, yyDollar[2].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[2].node)) @@ -4411,37 +4424,37 @@ yydefault: } case 226: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2004 + //line php5/php5.y:2026 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 227: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2006 + //line php5/php5.y:2028 { yyVAL.list = yyDollar[1].list } case 228: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2008 + //line php5/php5.y:2030 { yyVAL.list = yyDollar[1].list } case 229: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2013 + //line php5/php5.y:2035 { yyVAL.list = nil } case 230: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2015 + //line php5/php5.y:2037 { yyVAL.list = yyDollar[1].list } case 231: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2020 + //line php5/php5.y:2042 { if yyDollar[3].node != nil { @@ -4456,7 +4469,7 @@ yydefault: } case 232: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:2036 + //line php5/php5.y:2058 { list := expr.NewList(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -4468,7 +4481,7 @@ yydefault: } case 233: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2046 + //line php5/php5.y:2068 { 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)) @@ -4476,7 +4489,7 @@ yydefault: } case 234: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2052 + //line php5/php5.y:2074 { 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)) @@ -4484,7 +4497,7 @@ yydefault: } case 235: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:2058 + //line php5/php5.y:2080 { var _new *expr.New @@ -4503,7 +4516,7 @@ yydefault: } case 236: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2075 + //line php5/php5.y:2097 { yyVAL.node = expr.NewClone(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4511,7 +4524,7 @@ yydefault: } case 237: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2081 + //line php5/php5.y:2103 { 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)) @@ -4519,7 +4532,7 @@ yydefault: } case 238: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2087 + //line php5/php5.y:2109 { 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)) @@ -4527,7 +4540,7 @@ yydefault: } case 239: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2093 + //line php5/php5.y:2115 { 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)) @@ -4535,7 +4548,7 @@ yydefault: } case 240: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2099 + //line php5/php5.y:2121 { 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)) @@ -4543,7 +4556,7 @@ yydefault: } case 241: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2105 + //line php5/php5.y:2127 { 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)) @@ -4551,7 +4564,7 @@ yydefault: } case 242: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2111 + //line php5/php5.y:2133 { 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)) @@ -4559,7 +4572,7 @@ yydefault: } case 243: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2117 + //line php5/php5.y:2139 { 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)) @@ -4567,7 +4580,7 @@ yydefault: } case 244: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2123 + //line php5/php5.y:2145 { 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)) @@ -4575,7 +4588,7 @@ yydefault: } case 245: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2129 + //line php5/php5.y:2151 { 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)) @@ -4583,7 +4596,7 @@ yydefault: } case 246: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2135 + //line php5/php5.y:2157 { 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)) @@ -4591,7 +4604,7 @@ yydefault: } case 247: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2141 + //line php5/php5.y:2163 { 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)) @@ -4599,7 +4612,7 @@ yydefault: } case 248: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2147 + //line php5/php5.y:2169 { 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)) @@ -4607,7 +4620,7 @@ yydefault: } case 249: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2153 + //line php5/php5.y:2175 { yyVAL.node = expr.NewPostInc(yyDollar[1].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) @@ -4615,7 +4628,7 @@ yydefault: } case 250: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2159 + //line php5/php5.y:2181 { yyVAL.node = expr.NewPreInc(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4623,7 +4636,7 @@ yydefault: } case 251: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2165 + //line php5/php5.y:2187 { yyVAL.node = expr.NewPostDec(yyDollar[1].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) @@ -4631,7 +4644,7 @@ yydefault: } case 252: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2171 + //line php5/php5.y:2193 { yyVAL.node = expr.NewPreDec(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4639,7 +4652,7 @@ yydefault: } case 253: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2177 + //line php5/php5.y:2199 { 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)) @@ -4647,7 +4660,7 @@ yydefault: } case 254: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2183 + //line php5/php5.y:2205 { 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)) @@ -4655,7 +4668,7 @@ yydefault: } case 255: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2189 + //line php5/php5.y:2211 { 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)) @@ -4663,7 +4676,7 @@ yydefault: } case 256: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2195 + //line php5/php5.y:2217 { 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)) @@ -4671,7 +4684,7 @@ yydefault: } case 257: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2201 + //line php5/php5.y:2223 { 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)) @@ -4679,7 +4692,7 @@ yydefault: } case 258: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2207 + //line php5/php5.y:2229 { 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)) @@ -4687,7 +4700,7 @@ yydefault: } case 259: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2213 + //line php5/php5.y:2235 { 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)) @@ -4695,7 +4708,7 @@ yydefault: } case 260: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2219 + //line php5/php5.y:2241 { 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)) @@ -4703,7 +4716,7 @@ yydefault: } case 261: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2225 + //line php5/php5.y:2247 { 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)) @@ -4711,7 +4724,7 @@ yydefault: } case 262: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2231 + //line php5/php5.y:2253 { 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)) @@ -4719,7 +4732,7 @@ yydefault: } case 263: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2237 + //line php5/php5.y:2259 { 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)) @@ -4727,7 +4740,7 @@ yydefault: } case 264: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2243 + //line php5/php5.y:2265 { 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)) @@ -4735,7 +4748,7 @@ yydefault: } case 265: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2249 + //line php5/php5.y:2271 { 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)) @@ -4743,7 +4756,7 @@ yydefault: } case 266: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2255 + //line php5/php5.y:2277 { 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)) @@ -4751,7 +4764,7 @@ yydefault: } case 267: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2261 + //line php5/php5.y:2283 { 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)) @@ -4759,7 +4772,7 @@ yydefault: } case 268: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2267 + //line php5/php5.y:2289 { 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)) @@ -4767,7 +4780,7 @@ yydefault: } case 269: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2273 + //line php5/php5.y:2295 { 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)) @@ -4775,7 +4788,7 @@ yydefault: } case 270: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2279 + //line php5/php5.y:2301 { yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4783,7 +4796,7 @@ yydefault: } case 271: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2285 + //line php5/php5.y:2307 { yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4791,7 +4804,7 @@ yydefault: } case 272: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2291 + //line php5/php5.y:2313 { yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4799,7 +4812,7 @@ yydefault: } case 273: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2297 + //line php5/php5.y:2319 { yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4807,7 +4820,7 @@ yydefault: } case 274: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2303 + //line php5/php5.y:2325 { 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)) @@ -4815,7 +4828,7 @@ yydefault: } case 275: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2309 + //line php5/php5.y:2331 { 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)) @@ -4823,7 +4836,7 @@ yydefault: } case 276: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2315 + //line php5/php5.y:2337 { 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)) @@ -4831,7 +4844,7 @@ yydefault: } case 277: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2321 + //line php5/php5.y:2343 { 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)) @@ -4839,7 +4852,7 @@ yydefault: } case 278: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2327 + //line php5/php5.y:2349 { 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)) @@ -4847,7 +4860,7 @@ yydefault: } case 279: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2333 + //line php5/php5.y:2355 { 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)) @@ -4855,7 +4868,7 @@ yydefault: } case 280: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2339 + //line php5/php5.y:2361 { 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)) @@ -4863,7 +4876,7 @@ yydefault: } case 281: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2345 + //line php5/php5.y:2367 { 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)) @@ -4871,7 +4884,7 @@ yydefault: } case 282: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2351 + //line php5/php5.y:2373 { 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)) @@ -4879,19 +4892,19 @@ yydefault: } case 283: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2357 + //line php5/php5.y:2379 { yyVAL.node = yyDollar[1].node } case 284: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2359 + //line php5/php5.y:2381 { yyVAL.node = yyDollar[1].node } case 285: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2361 + //line php5/php5.y:2383 { yyVAL.node = yyDollar[2].node @@ -4919,7 +4932,7 @@ yydefault: } case 286: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:2387 + //line php5/php5.y:2409 { 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)) @@ -4927,7 +4940,7 @@ yydefault: } case 287: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2393 + //line php5/php5.y:2415 { 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)) @@ -4935,13 +4948,13 @@ yydefault: } case 288: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2399 + //line php5/php5.y:2421 { yyVAL.node = yyDollar[1].node } case 289: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2401 + //line php5/php5.y:2423 { yyVAL.node = cast.NewInt(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4949,7 +4962,7 @@ yydefault: } case 290: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2407 + //line php5/php5.y:2429 { yyVAL.node = cast.NewDouble(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4957,7 +4970,7 @@ yydefault: } case 291: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2413 + //line php5/php5.y:2435 { yyVAL.node = cast.NewString(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4965,7 +4978,7 @@ yydefault: } case 292: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2419 + //line php5/php5.y:2441 { yyVAL.node = cast.NewArray(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4973,7 +4986,7 @@ yydefault: } case 293: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2425 + //line php5/php5.y:2447 { yyVAL.node = cast.NewObject(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4981,7 +4994,7 @@ yydefault: } case 294: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2431 + //line php5/php5.y:2453 { yyVAL.node = cast.NewBool(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4989,7 +5002,7 @@ yydefault: } case 295: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2437 + //line php5/php5.y:2459 { yyVAL.node = cast.NewUnset(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4997,7 +5010,7 @@ yydefault: } case 296: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2443 + //line php5/php5.y:2465 { if strings.EqualFold(yyDollar[1].token.Value, "die") { yyVAL.node = expr.NewDie(yyDollar[2].node) @@ -5009,7 +5022,7 @@ yydefault: } case 297: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2453 + //line php5/php5.y:2475 { yyVAL.node = expr.NewErrorSuppress(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5017,25 +5030,25 @@ yydefault: } case 298: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2459 + //line php5/php5.y:2481 { yyVAL.node = yyDollar[1].node } case 299: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2461 + //line php5/php5.y:2483 { yyVAL.node = yyDollar[1].node } case 300: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2463 + //line php5/php5.y:2485 { yyVAL.node = yyDollar[1].node } case 301: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2465 + //line php5/php5.y:2487 { yyVAL.node = expr.NewShellExec(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -5043,7 +5056,7 @@ yydefault: } case 302: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2471 + //line php5/php5.y:2493 { yyVAL.node = expr.NewPrint(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5051,7 +5064,7 @@ yydefault: } case 303: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2477 + //line php5/php5.y:2499 { yyVAL.node = expr.NewYield(nil, nil) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5059,7 +5072,7 @@ yydefault: } case 304: yyDollar = yyS[yypt-9 : yypt+1] - //line php5/php5.y:2483 + //line php5/php5.y:2505 { 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)) @@ -5068,7 +5081,7 @@ yydefault: } case 305: yyDollar = yyS[yypt-10 : yypt+1] - //line php5/php5.y:2490 + //line php5/php5.y:2512 { 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)) @@ -5077,7 +5090,7 @@ yydefault: } case 306: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2500 + //line php5/php5.y:2522 { yyVAL.node = expr.NewYield(nil, yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5085,7 +5098,7 @@ yydefault: } case 307: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2506 + //line php5/php5.y:2528 { yyVAL.node = expr.NewYield(nil, yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5093,7 +5106,7 @@ yydefault: } case 308: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2512 + //line php5/php5.y:2534 { 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)) @@ -5101,7 +5114,7 @@ yydefault: } case 309: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2518 + //line php5/php5.y:2540 { 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)) @@ -5109,7 +5122,7 @@ yydefault: } case 310: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2527 + //line php5/php5.y:2549 { 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)) @@ -5117,7 +5130,7 @@ yydefault: } case 311: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2533 + //line php5/php5.y:2555 { 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)) @@ -5125,7 +5138,7 @@ yydefault: } case 312: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2539 + //line php5/php5.y:2561 { str := scalar.NewString(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(str, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5137,7 +5150,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2549 + //line php5/php5.y:2571 { 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)) @@ -5145,7 +5158,7 @@ yydefault: } case 314: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2558 + //line php5/php5.y:2580 { yyVAL.node = expr.NewArray(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -5153,7 +5166,7 @@ yydefault: } case 315: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2564 + //line php5/php5.y:2586 { yyVAL.node = expr.NewShortArray(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -5161,25 +5174,25 @@ yydefault: } case 316: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2573 + //line php5/php5.y:2595 { yyVAL.token = yyDollar[1].token } case 317: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2578 + //line php5/php5.y:2600 { yyVAL.list = []node.Node{} } case 318: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2580 + //line php5/php5.y:2602 { yyVAL.list = yyDollar[3].list } case 319: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2585 + //line php5/php5.y:2607 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[3].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -5197,7 +5210,7 @@ yydefault: } case 320: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2601 + //line php5/php5.y:2623 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -5215,7 +5228,7 @@ yydefault: } case 321: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2617 + //line php5/php5.y:2639 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5233,7 +5246,7 @@ yydefault: } case 322: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2633 + //line php5/php5.y:2655 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[2].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -5251,7 +5264,7 @@ yydefault: } case 323: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2652 + //line php5/php5.y:2674 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -5263,7 +5276,7 @@ yydefault: } case 324: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2662 + //line php5/php5.y:2684 { funcName := name.NewRelative(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(funcName, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) @@ -5275,7 +5288,7 @@ yydefault: } case 325: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2672 + //line php5/php5.y:2694 { funcName := name.NewFullyQualified(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(funcName, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) @@ -5287,7 +5300,7 @@ yydefault: } case 326: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2682 + //line php5/php5.y:2704 { 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)) @@ -5295,7 +5308,7 @@ yydefault: } case 327: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2688 + //line php5/php5.y:2710 { 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)) @@ -5303,7 +5316,7 @@ yydefault: } case 328: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2694 + //line php5/php5.y:2716 { 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)) @@ -5311,7 +5324,7 @@ yydefault: } case 329: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2700 + //line php5/php5.y:2722 { 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)) @@ -5319,7 +5332,7 @@ yydefault: } case 330: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2706 + //line php5/php5.y:2728 { 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)) @@ -5327,7 +5340,7 @@ yydefault: } case 331: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2715 + //line php5/php5.y:2737 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5335,7 +5348,7 @@ yydefault: } case 332: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2721 + //line php5/php5.y:2743 { yyVAL.node = name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -5343,7 +5356,7 @@ yydefault: } case 333: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2727 + //line php5/php5.y:2749 { yyVAL.node = name.NewRelative(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) @@ -5351,7 +5364,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2733 + //line php5/php5.y:2755 { yyVAL.node = name.NewFullyQualified(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) @@ -5359,7 +5372,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2742 + //line php5/php5.y:2764 { yyVAL.node = name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -5367,7 +5380,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2748 + //line php5/php5.y:2770 { yyVAL.node = name.NewRelative(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) @@ -5375,7 +5388,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2754 + //line php5/php5.y:2776 { yyVAL.node = name.NewFullyQualified(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) @@ -5383,19 +5396,19 @@ yydefault: } case 338: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2763 + //line php5/php5.y:2785 { yyVAL.node = yyDollar[1].node } case 339: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2765 + //line php5/php5.y:2787 { yyVAL.node = yyDollar[1].node } case 340: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2770 + //line php5/php5.y:2792 { yyVAL.node = yyDollar[1].node @@ -5433,79 +5446,79 @@ yydefault: } case 341: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2806 + //line php5/php5.y:2828 { yyVAL.node = yyDollar[1].node } case 342: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2812 + //line php5/php5.y:2834 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 343: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2814 + //line php5/php5.y:2836 { yyVAL.list = []node.Node{} } case 344: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2820 + //line php5/php5.y:2842 { yyVAL.list = yyDollar[2].list } case 345: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2825 + //line php5/php5.y:2847 { yyVAL.node = nil } case 346: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2827 + //line php5/php5.y:2849 { yyVAL.node = nil } case 347: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2829 + //line php5/php5.y:2851 { yyVAL.node = yyDollar[1].node } case 348: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2834 + //line php5/php5.y:2856 { yyVAL.list = []node.Node{} } case 349: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2836 + //line php5/php5.y:2858 { yyVAL.list = []node.Node{scalar.NewEncapsedStringPart(yyDollar[1].token.Value)} } case 350: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2838 + //line php5/php5.y:2860 { yyVAL.list = yyDollar[1].list } case 351: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2843 + //line php5/php5.y:2865 { yyVAL.node = nil } case 352: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2845 + //line php5/php5.y:2867 { yyVAL.node = yyDollar[1].node } case 353: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2850 + //line php5/php5.y:2872 { yyVAL.node = scalar.NewLnumber(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5513,7 +5526,7 @@ yydefault: } case 354: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2856 + //line php5/php5.y:2878 { yyVAL.node = scalar.NewDnumber(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5521,7 +5534,7 @@ yydefault: } case 355: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2862 + //line php5/php5.y:2884 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5529,7 +5542,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2868 + //line php5/php5.y:2890 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5537,7 +5550,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2874 + //line php5/php5.y:2896 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5545,7 +5558,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2880 + //line php5/php5.y:2902 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5553,7 +5566,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2886 + //line php5/php5.y:2908 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5561,7 +5574,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2892 + //line php5/php5.y:2914 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5569,7 +5582,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2898 + //line php5/php5.y:2920 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5577,7 +5590,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2904 + //line php5/php5.y:2926 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5585,7 +5598,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2910 + //line php5/php5.y:2932 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(encapsed, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -5597,7 +5610,7 @@ yydefault: } case 364: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2920 + //line php5/php5.y:2942 { 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)) @@ -5605,7 +5618,7 @@ yydefault: } case 365: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2929 + //line php5/php5.y:2951 { target := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -5617,25 +5630,25 @@ yydefault: } case 366: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2942 + //line php5/php5.y:2964 { yyVAL.node = yyDollar[1].node } case 367: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2947 + //line php5/php5.y:2969 { yyVAL.node = yyDollar[1].node } case 368: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2949 + //line php5/php5.y:2971 { yyVAL.node = yyDollar[1].node } case 369: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2951 + //line php5/php5.y:2973 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -5647,7 +5660,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2961 + //line php5/php5.y:2983 { name := name.NewRelative(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) @@ -5659,7 +5672,7 @@ yydefault: } case 371: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2971 + //line php5/php5.y:2993 { name := name.NewFullyQualified(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) @@ -5671,7 +5684,7 @@ yydefault: } case 372: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2981 + //line php5/php5.y:3003 { yyVAL.node = expr.NewArray(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -5679,7 +5692,7 @@ yydefault: } case 373: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2987 + //line php5/php5.y:3009 { yyVAL.node = expr.NewShortArray(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -5687,13 +5700,13 @@ yydefault: } case 374: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2993 + //line php5/php5.y:3015 { yyVAL.node = yyDollar[1].node } case 375: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2995 + //line php5/php5.y:3017 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5701,13 +5714,13 @@ yydefault: } case 376: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3001 + //line php5/php5.y:3023 { yyVAL.node = yyDollar[1].node } case 377: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3006 + //line php5/php5.y:3028 { 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)) @@ -5715,7 +5728,7 @@ yydefault: } case 378: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3012 + //line php5/php5.y:3034 { 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)) @@ -5723,7 +5736,7 @@ yydefault: } case 379: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3018 + //line php5/php5.y:3040 { 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)) @@ -5731,7 +5744,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3024 + //line php5/php5.y:3046 { 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)) @@ -5739,7 +5752,7 @@ yydefault: } case 381: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3030 + //line php5/php5.y:3052 { 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)) @@ -5747,7 +5760,7 @@ yydefault: } case 382: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3036 + //line php5/php5.y:3058 { 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)) @@ -5755,7 +5768,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3042 + //line php5/php5.y:3064 { 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)) @@ -5763,7 +5776,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3048 + //line php5/php5.y:3070 { yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5771,7 +5784,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3054 + //line php5/php5.y:3076 { yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5779,7 +5792,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3060 + //line php5/php5.y:3082 { 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)) @@ -5787,7 +5800,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3066 + //line php5/php5.y:3088 { 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)) @@ -5795,7 +5808,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3072 + //line php5/php5.y:3094 { 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)) @@ -5803,7 +5816,7 @@ yydefault: } case 389: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3078 + //line php5/php5.y:3100 { 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)) @@ -5811,7 +5824,7 @@ yydefault: } case 390: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3084 + //line php5/php5.y:3106 { 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)) @@ -5819,7 +5832,7 @@ yydefault: } case 391: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3090 + //line php5/php5.y:3112 { 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)) @@ -5827,7 +5840,7 @@ yydefault: } case 392: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3096 + //line php5/php5.y:3118 { 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)) @@ -5835,7 +5848,7 @@ yydefault: } case 393: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3102 + //line php5/php5.y:3124 { 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)) @@ -5843,7 +5856,7 @@ yydefault: } case 394: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3108 + //line php5/php5.y:3130 { 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)) @@ -5851,7 +5864,7 @@ yydefault: } case 395: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3114 + //line php5/php5.y:3136 { 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)) @@ -5859,7 +5872,7 @@ yydefault: } case 396: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3120 + //line php5/php5.y:3142 { 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)) @@ -5867,7 +5880,7 @@ yydefault: } case 397: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3126 + //line php5/php5.y:3148 { 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)) @@ -5875,7 +5888,7 @@ yydefault: } case 398: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3132 + //line php5/php5.y:3154 { 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)) @@ -5883,7 +5896,7 @@ yydefault: } case 399: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3138 + //line php5/php5.y:3160 { 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)) @@ -5891,7 +5904,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3144 + //line php5/php5.y:3166 { 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)) @@ -5899,7 +5912,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3150 + //line php5/php5.y:3172 { 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)) @@ -5907,7 +5920,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3156 + //line php5/php5.y:3178 { 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)) @@ -5915,7 +5928,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3162 + //line php5/php5.y:3184 { 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)) @@ -5923,7 +5936,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3168 + //line php5/php5.y:3190 { 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)) @@ -5931,7 +5944,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3174 + //line php5/php5.y:3196 { 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)) @@ -5939,7 +5952,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:3180 + //line php5/php5.y:3202 { 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)) @@ -5947,7 +5960,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3186 + //line php5/php5.y:3208 { yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5955,7 +5968,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3192 + //line php5/php5.y:3214 { yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5963,19 +5976,19 @@ yydefault: } case 409: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3198 + //line php5/php5.y:3220 { yyVAL.node = yyDollar[2].node } case 410: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3203 + //line php5/php5.y:3225 { yyVAL.node = yyDollar[1].node } case 411: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3205 + //line php5/php5.y:3227 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -5987,7 +6000,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3215 + //line php5/php5.y:3237 { name := name.NewRelative(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) @@ -5999,7 +6012,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3225 + //line php5/php5.y:3247 { name := name.NewFullyQualified(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) @@ -6011,7 +6024,7 @@ yydefault: } case 414: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3238 + //line php5/php5.y:3260 { name := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6023,25 +6036,25 @@ yydefault: } case 415: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3248 + //line php5/php5.y:3270 { yyVAL.node = yyDollar[1].node } case 416: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3250 + //line php5/php5.y:3272 { yyVAL.node = yyDollar[1].node } case 417: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3252 + //line php5/php5.y:3274 { yyVAL.node = yyDollar[1].node } case 418: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3254 + //line php5/php5.y:3276 { yyVAL.node = scalar.NewEncapsed(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -6049,7 +6062,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3260 + //line php5/php5.y:3282 { 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)) @@ -6057,7 +6070,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3266 + //line php5/php5.y:3288 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6065,19 +6078,19 @@ yydefault: } case 421: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3275 + //line php5/php5.y:3297 { yyVAL.list = nil } case 422: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3277 + //line php5/php5.y:3299 { yyVAL.list = yyDollar[1].list } case 425: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:3287 + //line php5/php5.y:3309 { arrayItem := expr.NewArrayItem(yyDollar[3].node, yyDollar[5].node, false) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[3].node, yyDollar[5].node)) @@ -6087,7 +6100,7 @@ yydefault: } case 426: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3295 + //line php5/php5.y:3317 { arrayItem := expr.NewArrayItem(nil, yyDollar[3].node, false) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) @@ -6097,7 +6110,7 @@ yydefault: } case 427: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3303 + //line php5/php5.y:3325 { arrayItem := expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node, false) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -6107,7 +6120,7 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3311 + //line php5/php5.y:3333 { arrayItem := expr.NewArrayItem(nil, yyDollar[1].node, false) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) @@ -6117,49 +6130,49 @@ yydefault: } case 429: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3322 + //line php5/php5.y:3344 { yyVAL.node = yyDollar[1].node } case 430: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3324 + //line php5/php5.y:3346 { yyVAL.node = yyDollar[1].node } case 431: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3329 + //line php5/php5.y:3351 { yyVAL.node = yyDollar[2].node } case 432: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3331 + //line php5/php5.y:3353 { yyVAL.node = yyDollar[2].node } case 433: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3337 + //line php5/php5.y:3359 { yyVAL.node = yyDollar[1].node } case 434: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3343 + //line php5/php5.y:3365 { yyVAL.node = yyDollar[1].node } case 435: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3348 + //line php5/php5.y:3370 { yyVAL.node = yyDollar[1].node } case 436: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:3353 + //line php5/php5.y:3375 { yyVAL.node = yyDollar[1].node @@ -6214,25 +6227,25 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3406 + //line php5/php5.y:3428 { yyVAL.node = yyDollar[1].node } case 438: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3411 + //line php5/php5.y:3433 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 439: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3413 + //line php5/php5.y:3435 { yyVAL.list = []node.Node{} } case 440: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3419 + //line php5/php5.y:3441 { if yyDollar[3].list != nil { yyDollar[3].list[0].(*expr.MethodCall).Method = yyDollar[2].list[len(yyDollar[2].list)-1].(*expr.PropertyFetch).Property @@ -6243,7 +6256,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3431 + //line php5/php5.y:3453 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) @@ -6252,7 +6265,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3438 + //line php5/php5.y:3460 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) @@ -6261,38 +6274,38 @@ yydefault: } case 443: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3448 + //line php5/php5.y:3470 { 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:3456 + //line php5/php5.y:3478 { yyVAL.list = []node.Node{yyDollar[1].node} } case 445: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3458 + //line php5/php5.y:3480 { yyVAL.list = yyDollar[1].list } case 446: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3460 + //line php5/php5.y:3482 { yyVAL.list = nil } case 447: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3465 + //line php5/php5.y:3487 { yyVAL.node = yyDollar[1].node } case 448: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3467 + //line php5/php5.y:3489 { yyDollar[1].simpleIndirectReference.last.SetVarName(yyDollar[2].node) @@ -6304,7 +6317,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3480 + //line php5/php5.y:3502 { 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)) @@ -6312,7 +6325,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3486 + //line php5/php5.y:3508 { 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)) @@ -6320,13 +6333,13 @@ yydefault: } case 451: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3496 + //line php5/php5.y:3518 { yyVAL.node = yyDollar[1].node } case 452: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3501 + //line php5/php5.y:3523 { 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)) @@ -6334,7 +6347,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3507 + //line php5/php5.y:3529 { 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)) @@ -6342,31 +6355,31 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3515 + //line php5/php5.y:3537 { yyVAL.node = yyDollar[1].node } case 455: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3516 + //line php5/php5.y:3538 { yyVAL.node = yyDollar[1].node } case 456: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3517 + //line php5/php5.y:3539 { yyVAL.node = yyDollar[1].node } case 457: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3523 + //line php5/php5.y:3545 { yyVAL.node = yyDollar[1].node } case 458: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3525 + //line php5/php5.y:3547 { yyDollar[1].simpleIndirectReference.last.SetVarName(yyDollar[2].node) @@ -6378,13 +6391,13 @@ yydefault: } case 459: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3535 + //line php5/php5.y:3557 { yyVAL.node = yyDollar[1].node } case 460: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3540 + //line php5/php5.y:3562 { 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)) @@ -6392,7 +6405,7 @@ yydefault: } case 461: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3546 + //line php5/php5.y:3568 { 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)) @@ -6400,13 +6413,13 @@ yydefault: } case 462: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3552 + //line php5/php5.y:3574 { yyVAL.node = yyDollar[1].node } case 463: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3558 + //line php5/php5.y:3580 { name := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6418,7 +6431,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3568 + //line php5/php5.y:3590 { yyVAL.node = expr.NewVariable(yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -6426,25 +6439,25 @@ yydefault: } case 465: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3577 + //line php5/php5.y:3599 { yyVAL.node = nil } case 466: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3579 + //line php5/php5.y:3601 { yyVAL.node = yyDollar[1].node } case 467: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3585 + //line php5/php5.y:3607 { yyVAL.list = yyDollar[1].list } case 468: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3587 + //line php5/php5.y:3609 { fetch := expr.NewPropertyFetch(nil, yyDollar[1].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) @@ -6453,7 +6466,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3597 + //line php5/php5.y:3619 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) @@ -6462,7 +6475,7 @@ yydefault: } case 470: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3604 + //line php5/php5.y:3626 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) @@ -6471,7 +6484,7 @@ yydefault: } case 471: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3611 + //line php5/php5.y:3633 { fetch := expr.NewPropertyFetch(nil, yyDollar[1].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) @@ -6480,7 +6493,7 @@ yydefault: } case 472: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3621 + //line php5/php5.y:3643 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6488,13 +6501,13 @@ yydefault: } case 473: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3627 + //line php5/php5.y:3649 { yyVAL.node = yyDollar[2].node } case 474: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3632 + //line php5/php5.y:3654 { n := expr.NewVariable(nil) yylex.(*Parser).positions.AddPosition(n, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6504,7 +6517,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3640 + //line php5/php5.y:3662 { n := expr.NewVariable(nil) yylex.(*Parser).positions.AddPosition(n, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -6518,13 +6531,13 @@ yydefault: } case 476: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3655 + //line php5/php5.y:3677 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 477: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3657 + //line php5/php5.y:3679 { if yyDollar[1].node == nil { yyVAL.list = []node.Node{} @@ -6534,7 +6547,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3669 + //line php5/php5.y:3691 { yyVAL.node = expr.NewArrayItem(nil, yyDollar[1].node, false) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) @@ -6542,7 +6555,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3675 + //line php5/php5.y:3697 { item := expr.NewList(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(item, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -6554,25 +6567,25 @@ yydefault: } case 480: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3685 + //line php5/php5.y:3707 { yyVAL.node = nil } case 481: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3691 + //line php5/php5.y:3713 { yyVAL.list = []node.Node{} } case 482: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3693 + //line php5/php5.y:3715 { yyVAL.list = yyDollar[1].list } case 483: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:3698 + //line php5/php5.y:3720 { arrayItem := expr.NewArrayItem(yyDollar[3].node, yyDollar[5].node, false) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[3].node, yyDollar[5].node)) @@ -6582,7 +6595,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3706 + //line php5/php5.y:3728 { arrayItem := expr.NewArrayItem(nil, yyDollar[3].node, false) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) @@ -6592,7 +6605,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3714 + //line php5/php5.y:3736 { arrayItem := expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node, false) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) @@ -6602,7 +6615,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3722 + //line php5/php5.y:3744 { arrayItem := expr.NewArrayItem(nil, yyDollar[1].node, false) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) @@ -6612,7 +6625,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:3730 + //line php5/php5.y:3752 { arrayItem := expr.NewArrayItem(yyDollar[3].node, yyDollar[6].node, true) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[3].node, yyDollar[6].node)) @@ -6622,7 +6635,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3738 + //line php5/php5.y:3760 { arrayItem := expr.NewArrayItem(nil, yyDollar[4].node, true) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node)) @@ -6632,7 +6645,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3746 + //line php5/php5.y:3768 { arrayItem := expr.NewArrayItem(yyDollar[1].node, yyDollar[4].node, true) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) @@ -6642,7 +6655,7 @@ yydefault: } case 490: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3754 + //line php5/php5.y:3776 { arrayItem := expr.NewArrayItem(nil, yyDollar[2].node, true) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -6652,13 +6665,13 @@ yydefault: } case 491: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3765 + //line php5/php5.y:3787 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 492: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3767 + //line php5/php5.y:3789 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(encapsed, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -6667,13 +6680,13 @@ yydefault: } case 493: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3774 + //line php5/php5.y:3796 { yyVAL.list = []node.Node{yyDollar[1].node} } case 494: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3776 + //line php5/php5.y:3798 { encapsed := scalar.NewEncapsedStringPart(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(encapsed, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6682,7 +6695,7 @@ yydefault: } case 495: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3786 + //line php5/php5.y:3808 { name := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6694,7 +6707,7 @@ yydefault: } case 496: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3796 + //line php5/php5.y:3818 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6709,7 +6722,7 @@ yydefault: } case 497: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3809 + //line php5/php5.y:3831 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6727,7 +6740,7 @@ yydefault: } case 498: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3825 + //line php5/php5.y:3847 { yyVAL.node = yyDollar[2].node yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -6735,7 +6748,7 @@ yydefault: } case 499: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:3831 + //line php5/php5.y:3853 { identifier := node.NewIdentifier(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -6750,13 +6763,13 @@ yydefault: } case 500: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3845 + //line php5/php5.y:3867 { yyVAL.node = yyDollar[2].node } case 501: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3850 + //line php5/php5.y:3872 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6764,7 +6777,7 @@ yydefault: } case 502: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3856 + //line php5/php5.y:3878 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(yyDollar[1].token.Value); err == nil { @@ -6778,7 +6791,7 @@ yydefault: } case 503: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3868 + //line php5/php5.y:3890 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6790,7 +6803,7 @@ yydefault: } case 504: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3881 + //line php5/php5.y:3903 { yyVAL.node = expr.NewIsset(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -6798,7 +6811,7 @@ yydefault: } case 505: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3887 + //line php5/php5.y:3909 { yyVAL.node = expr.NewEmpty(yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -6806,7 +6819,7 @@ yydefault: } case 506: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3893 + //line php5/php5.y:3915 { yyVAL.node = expr.NewEmpty(yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -6814,7 +6827,7 @@ yydefault: } case 507: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3899 + //line php5/php5.y:3921 { yyVAL.node = expr.NewInclude(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -6822,7 +6835,7 @@ yydefault: } case 508: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3905 + //line php5/php5.y:3927 { yyVAL.node = expr.NewIncludeOnce(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -6830,7 +6843,7 @@ yydefault: } case 509: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3911 + //line php5/php5.y:3933 { yyVAL.node = expr.NewEval(yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -6838,7 +6851,7 @@ yydefault: } case 510: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3917 + //line php5/php5.y:3939 { yyVAL.node = expr.NewRequire(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -6846,7 +6859,7 @@ yydefault: } case 511: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3923 + //line php5/php5.y:3945 { yyVAL.node = expr.NewRequireOnce(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -6854,31 +6867,31 @@ yydefault: } case 512: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3932 + //line php5/php5.y:3954 { yyVAL.list = []node.Node{yyDollar[1].node} } case 513: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3934 + //line php5/php5.y:3956 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 514: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3939 + //line php5/php5.y:3961 { yyVAL.node = yyDollar[1].node } case 515: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3941 + //line php5/php5.y:3963 { yyVAL.node = yyDollar[1].node } case 516: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3946 + //line php5/php5.y:3968 { target := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -6890,7 +6903,7 @@ yydefault: } case 517: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3956 + //line php5/php5.y:3978 { target := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -6902,7 +6915,7 @@ yydefault: } case 518: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3969 + //line php5/php5.y:3991 { target := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -6914,7 +6927,7 @@ yydefault: } case 519: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3982 + //line php5/php5.y:4004 { target := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) diff --git a/php5/php5.y b/php5/php5.y index d03a240..704f4a1 100644 --- a/php5/php5.y +++ b/php5/php5.y @@ -19,11 +19,15 @@ import ( %} %union{ - node node.Node - token *scanner.Token - list []node.Node - foreachVariable foreachVariable + node node.Node + token *scanner.Token + list []node.Node + foreachVariable foreachVariable simpleIndirectReference simpleIndirectReference + + ClassExtends *stmt.ClassExtends + ClassImplements *stmt.ClassImplements + InterfaceExtends *stmt.InterfaceExtends } %type $unk @@ -235,7 +239,7 @@ import ( %type exit_expr yield_expr function_declaration_statement class_declaration_statement constant_declaration %type else_single new_else_single unset_variable declare_statement %type finally_statement additional_catch unticked_function_declaration_statement unticked_class_declaration_statement -%type optional_class_type parameter class_entry_type extends_from class_statement class_constant_declaration +%type optional_class_type parameter class_entry_type class_statement class_constant_declaration %type trait_use_statement function_call_parameter trait_adaptation_statement trait_precedence trait_alias %type trait_method_reference_fully_qualified trait_method_reference trait_modifiers member_modifier method %type static_scalar_value static_operation @@ -244,13 +248,16 @@ import ( %type switch_case_list %type method_body %type foreach_statement for_statement while_statement +%type extends_from +%type implements_list +%type interface_extends_list %type top_statement_list namespace_name use_declarations use_function_declarations use_const_declarations %type inner_statement_list global_var_list static_var_list encaps_list isset_variables non_empty_array_pair_list %type array_pair_list assignment_list lexical_var_list lexical_vars elseif_list new_elseif_list non_empty_for_expr %type for_expr case_list echo_expr_list unset_variables declare_list catch_statement additional_catches -%type non_empty_additional_catches parameter_list non_empty_parameter_list class_statement_list implements_list -%type class_statement_list variable_modifiers method_modifiers class_variable_declaration interface_extends_list +%type non_empty_additional_catches parameter_list non_empty_parameter_list class_statement_list +%type class_statement_list variable_modifiers method_modifiers class_variable_declaration %type interface_list non_empty_function_call_parameter_list trait_list trait_adaptation_list non_empty_trait_adaptation_list %type trait_reference_list non_empty_member_modifiers backticks_expr static_array_pair_list non_empty_static_array_pair_list @@ -912,7 +919,7 @@ catch_statement: variable := expr.NewVariable(identifier) yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition($4)) yylex.(*Parser).comments.AddComments(variable, $4.Comments()) - + catch := stmt.NewCatch([]node.Node{$3}, variable, $7) yylex.(*Parser).positions.AddPosition(catch, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $8)) yylex.(*Parser).comments.AddComments(catch, $1.Comments()) @@ -1085,7 +1092,12 @@ extends_from: /* empty */ { $$ = nil } | T_EXTENDS fully_qualified_class_name - { $$ = $2 } + { + $$ = stmt.NewClassExtends($2); + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) + } ; interface_entry: @@ -1097,14 +1109,24 @@ interface_extends_list: /* empty */ { $$ = nil } | T_EXTENDS interface_list - { $$ = $2 } + { + $$ = stmt.NewInterfaceExtends($2); + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) + } ; implements_list: /* empty */ { $$ = nil } | T_IMPLEMENTS interface_list - { $$ = $2 } + { + $$ = stmt.NewClassImplements($2); + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) + } ; interface_list: diff --git a/php5/php5_test.go b/php5/php5_test.go index ca6338f..44de74c 100644 --- a/php5/php5_test.go +++ b/php5/php5_test.go @@ -852,20 +852,8 @@ func TestPhp5(t *testing.T) { Modifiers: []node.Node{ &node.Identifier{Value: "final"}, }, - Extends: &name.Name{ - Parts: []node.Node{ - &name.NamePart{Value: "bar"}, - }, - }, - Stmts: []node.Node{}, - }, - &stmt.Class{ - ClassName: &node.Identifier{Value: "foo"}, - Modifiers: []node.Node{ - &node.Identifier{Value: "final"}, - }, - Implements: []node.Node{ - &name.Name{ + Extends: &stmt.ClassExtends{ + ClassName: &name.Name{ Parts: []node.Node{ &name.NamePart{Value: "bar"}, }, @@ -878,15 +866,33 @@ func TestPhp5(t *testing.T) { Modifiers: []node.Node{ &node.Identifier{Value: "final"}, }, - Implements: []node.Node{ - &name.Name{ - Parts: []node.Node{ - &name.NamePart{Value: "bar"}, + Implements: &stmt.ClassImplements{ + InterfaceNames: []node.Node{ + &name.Name{ + Parts: []node.Node{ + &name.NamePart{Value: "bar"}, + }, }, }, - &name.Name{ - Parts: []node.Node{ - &name.NamePart{Value: "baz"}, + }, + Stmts: []node.Node{}, + }, + &stmt.Class{ + ClassName: &node.Identifier{Value: "foo"}, + Modifiers: []node.Node{ + &node.Identifier{Value: "final"}, + }, + Implements: &stmt.ClassImplements{ + InterfaceNames: []node.Node{ + &name.Name{ + Parts: []node.Node{ + &name.NamePart{Value: "bar"}, + }, + }, + &name.Name{ + Parts: []node.Node{ + &name.NamePart{Value: "baz"}, + }, }, }, }, @@ -1236,10 +1242,12 @@ func TestPhp5(t *testing.T) { &stmt.Interface{ PhpDocComment: "", InterfaceName: &node.Identifier{Value: "Foo"}, - Extends: []node.Node{ - &name.Name{ - Parts: []node.Node{ - &name.NamePart{Value: "Bar"}, + Extends: &stmt.InterfaceExtends{ + InterfaceNames: []node.Node{ + &name.Name{ + Parts: []node.Node{ + &name.NamePart{Value: "Bar"}, + }, }, }, }, @@ -1248,15 +1256,17 @@ func TestPhp5(t *testing.T) { &stmt.Interface{ PhpDocComment: "", InterfaceName: &node.Identifier{Value: "Foo"}, - Extends: []node.Node{ - &name.Name{ - Parts: []node.Node{ - &name.NamePart{Value: "Bar"}, + Extends: &stmt.InterfaceExtends{ + InterfaceNames: []node.Node{ + &name.Name{ + Parts: []node.Node{ + &name.NamePart{Value: "Bar"}, + }, }, - }, - &name.Name{ - Parts: []node.Node{ - &name.NamePart{Value: "Baz"}, + &name.Name{ + Parts: []node.Node{ + &name.NamePart{Value: "Baz"}, + }, }, }, }, diff --git a/php7/php7.go b/php7/php7.go index 5f0d217..f41d3b7 100644 --- a/php7/php7.go +++ b/php7/php7.go @@ -28,6 +28,10 @@ type yySymType struct { list []node.Node foreachVariable foreachVariable str string + + ClassExtends *stmt.ClassExtends + ClassImplements *stmt.ClassImplements + InterfaceExtends *stmt.InterfaceExtends } const T_INCLUDE = 57346 @@ -342,7 +346,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line php7/php7.y:4286 +//line php7/php7.y:4281 type foreachVariable struct { node node.Node @@ -622,11 +626,11 @@ var yyAct = [...]int{ 758, 193, 232, 760, 187, 686, 763, 669, 670, 777, 671, 770, 1, 772, 766, 38, 797, 779, 798, 775, 579, 791, 546, 800, 787, 739, 134, 546, 546, 112, - 736, 737, 230, 381, 231, 663, 234, 531, 222, 810, - 527, 256, 257, 521, 738, 106, 860, 740, 818, 805, - 526, 256, 257, 367, 873, 824, 145, 792, 827, 142, - 806, 323, 817, 232, 823, 149, 719, 836, 660, 255, - 822, 834, 251, 639, 278, 255, 845, 928, 830, 645, + 736, 737, 230, 663, 231, 531, 234, 222, 521, 810, + 527, 256, 257, 860, 738, 106, 367, 740, 818, 805, + 526, 256, 257, 873, 145, 824, 792, 142, 827, 323, + 806, 149, 817, 232, 823, 836, 719, 660, 822, 255, + 251, 834, 381, 639, 278, 255, 845, 928, 830, 645, 422, 255, 840, 849, 224, 43, 282, 42, 16, 15, 851, 843, 599, 267, 546, 49, 546, 848, 745, 746, 747, 744, 743, 742, 853, 48, 867, 108, 671, 255, @@ -1429,17 +1433,17 @@ var yyPgo = [...]int{ 0, 897, 896, 51, 9, 895, 3, 29, 16, 894, 11, 31, 79, 78, 49, 45, 893, 21, 892, 73, - 19, 55, 891, 0, 80, 890, 889, 38, 141, 47, - 25, 887, 36, 886, 56, 62, 883, 10, 880, 879, - 872, 868, 13, 46, 866, 858, 100, 84, 199, 856, - 855, 853, 5, 852, 83, 40, 845, 138, 43, 840, - 837, 835, 825, 823, 119, 822, 819, 818, 817, 12, - 815, 814, 44, 42, 32, 2, 15, 629, 41, 74, - 812, 809, 807, 14, 806, 803, 8, 686, 20, 536, - 802, 121, 800, 798, 797, 71, 795, 33, 791, 789, - 30, 37, 787, 786, 28, 784, 783, 545, 776, 18, - 773, 768, 26, 767, 63, 1, 4, 765, 17, 763, - 39, 761, 760, 755, 7, 745, 6, 742, + 19, 55, 891, 0, 80, 890, 889, 38, 141, 25, + 887, 36, 886, 56, 62, 883, 10, 880, 879, 872, + 868, 13, 46, 866, 858, 100, 84, 199, 856, 855, + 853, 5, 852, 83, 40, 845, 138, 43, 840, 837, + 835, 825, 823, 119, 822, 819, 818, 817, 12, 815, + 814, 44, 42, 32, 2, 15, 629, 41, 74, 812, + 809, 807, 14, 806, 803, 47, 39, 802, 8, 686, + 20, 536, 800, 121, 798, 797, 795, 71, 791, 33, + 789, 787, 30, 37, 786, 784, 28, 783, 776, 545, + 773, 18, 768, 767, 26, 765, 63, 1, 4, 763, + 17, 761, 760, 755, 7, 745, 6, 742, } var yyR1 = [...]int{ @@ -1450,48 +1454,48 @@ var yyR1 = [...]int{ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, - 5, 5, 5, 5, 5, 5, 6, 6, 114, 114, - 91, 91, 10, 10, 10, 9, 9, 9, 9, 9, + 5, 5, 5, 5, 5, 5, 6, 6, 116, 116, + 93, 93, 10, 10, 10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 87, 87, 16, 16, 18, 18, 7, 7, 101, 101, - 100, 100, 107, 107, 17, 17, 20, 20, 19, 19, - 95, 95, 115, 115, 22, 22, 22, 22, 22, 22, + 89, 89, 16, 16, 18, 18, 7, 7, 103, 103, + 102, 102, 109, 109, 17, 17, 20, 20, 19, 19, + 97, 97, 117, 117, 22, 22, 22, 22, 22, 22, 22, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 93, 93, 92, 92, 26, - 26, 106, 106, 27, 12, 1, 1, 2, 2, 13, - 13, 125, 125, 77, 77, 14, 15, 29, 29, 119, - 119, 120, 120, 88, 88, 88, 88, 84, 84, 83, - 83, 25, 25, 81, 81, 81, 81, 104, 104, 104, - 8, 8, 85, 85, 68, 68, 66, 66, 70, 70, - 67, 67, 116, 116, 117, 117, 30, 30, 31, 31, - 76, 76, 74, 74, 74, 75, 75, 78, 78, 113, - 113, 32, 32, 99, 99, 34, 103, 103, 35, 35, - 118, 118, 36, 36, 36, 36, 124, 124, 80, 80, - 80, 105, 105, 37, 37, 38, 39, 39, 39, 39, - 41, 41, 40, 82, 82, 122, 122, 121, 121, 123, - 123, 86, 86, 86, 86, 86, 86, 102, 102, 42, - 42, 94, 94, 69, 21, 96, 96, 43, 97, 97, - 98, 98, 45, 44, 44, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 126, 3, 3, 109, 109, 108, 108, 52, 52, - 53, 53, 53, 53, 46, 46, 47, 47, 50, 50, - 90, 90, 90, 79, 79, 57, 57, 57, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 58, 58, 58, 23, 23, 24, - 24, 56, 59, 59, 59, 60, 60, 60, 61, 61, - 61, 61, 61, 61, 28, 28, 28, 48, 48, 48, - 62, 62, 63, 63, 63, 63, 63, 63, 54, 54, - 54, 55, 55, 55, 112, 72, 72, 111, 111, 71, - 71, 71, 71, 71, 71, 89, 89, 89, 89, 64, - 64, 64, 64, 64, 64, 64, 65, 65, 65, 65, - 49, 49, 49, 49, 49, 49, 49, 110, 110, 73, + 11, 11, 11, 11, 11, 95, 95, 94, 94, 26, + 26, 108, 108, 27, 12, 1, 1, 2, 2, 13, + 13, 125, 125, 76, 76, 14, 15, 85, 85, 87, + 87, 86, 86, 90, 90, 90, 90, 83, 83, 82, + 82, 25, 25, 80, 80, 80, 80, 106, 106, 106, + 8, 8, 84, 84, 67, 67, 65, 65, 69, 69, + 66, 66, 118, 118, 119, 119, 29, 29, 30, 30, + 75, 75, 73, 73, 73, 74, 74, 77, 77, 115, + 115, 31, 31, 101, 101, 33, 105, 105, 34, 34, + 120, 120, 35, 35, 35, 35, 124, 124, 79, 79, + 79, 107, 107, 36, 36, 37, 38, 38, 38, 38, + 40, 40, 39, 81, 81, 122, 122, 121, 121, 123, + 123, 88, 88, 88, 88, 88, 88, 104, 104, 41, + 41, 96, 96, 68, 21, 98, 98, 42, 99, 99, + 100, 100, 44, 43, 43, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 126, 3, 3, 111, 111, 110, 110, 51, 51, + 52, 52, 52, 52, 45, 45, 46, 46, 49, 49, + 92, 92, 92, 78, 78, 56, 56, 56, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 57, 57, 57, 23, 23, 24, + 24, 55, 58, 58, 58, 59, 59, 59, 60, 60, + 60, 60, 60, 60, 28, 28, 28, 47, 47, 47, + 61, 61, 62, 62, 62, 62, 62, 62, 53, 53, + 53, 54, 54, 54, 114, 71, 71, 113, 113, 70, + 70, 70, 70, 70, 70, 91, 91, 91, 91, 63, + 63, 63, 63, 63, 63, 63, 64, 64, 64, 64, + 48, 48, 48, 48, 48, 48, 48, 112, 112, 72, } var yyR2 = [...]int{ @@ -1547,50 +1551,50 @@ var yyR2 = [...]int{ } var yyChk = [...]int{ - -1000, -127, -114, -9, 2, -11, -12, -13, -14, -15, - 51, 79, 44, 38, 142, -66, -67, 21, 20, 23, + -1000, -127, -116, -9, 2, -11, -12, -13, -14, -15, + 51, 79, 44, 38, 142, -65, -66, 21, 20, 23, 30, 34, 35, 39, 46, 98, 19, 14, -23, 48, 25, 27, 144, 40, 43, 36, 10, 37, -125, 52, - 53, 54, -68, -70, -28, -33, -77, 7, -61, -62, - -59, 59, 148, 92, 104, 105, 153, 152, 154, 155, - 146, -44, -49, 107, 108, 109, 110, 111, 112, 113, - 6, 156, -51, 141, 96, 97, 106, 99, 100, -48, - -58, -53, -46, -56, -57, 91, 49, 50, 4, 5, + 53, 54, -67, -69, -28, -32, -76, 7, -60, -61, + -58, 59, 148, 92, 104, 105, 153, 152, 154, 155, + 146, -43, -48, 107, 108, 109, 110, 111, 112, 113, + 6, 156, -50, 141, 96, 97, 106, 99, 100, -47, + -57, -52, -45, -55, -56, 91, 49, 50, 4, 5, 84, 85, 86, 8, 9, 66, 67, 81, 63, 64, - 65, 80, 62, 74, 140, 12, 157, -10, -60, 60, - 18, -91, 82, 146, 82, -91, 142, 10, -18, -87, - -107, -91, 82, 37, 38, -19, -20, -95, -21, 10, - -115, 146, -11, 37, 79, 146, 146, -24, -23, 98, - -24, -24, -99, -34, -48, -103, 37, -35, 12, -96, - -43, -23, 144, 129, 130, 87, 89, 88, 159, 151, + 65, 80, 62, 74, 140, 12, 157, -10, -59, 60, + 18, -93, 82, 146, 82, -93, 142, 10, -18, -89, + -109, -93, 82, 37, 38, -19, -20, -97, -21, 10, + -117, 146, -11, 37, 79, 146, 146, -24, -23, 98, + -24, -24, -101, -33, -47, -105, 37, -34, 12, -98, + -42, -23, 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, 115, 90, 150, 114, 146, 146, 146, 142, -23, 10, 145, -3, - 151, 52, -77, 10, 10, 10, 93, 94, 93, 95, + 151, 52, -76, 10, 10, 10, 93, 94, 93, 95, 94, 160, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 104, 105, 146, 148, 142, 57, - 146, -112, -111, -72, -71, -23, 151, 59, -23, -28, - -58, 146, -57, 98, 148, -28, -23, -23, -23, -23, - -23, -23, -23, -23, -23, -23, -23, -23, -50, 146, - -23, -90, 17, -89, -64, 12, 76, 77, -23, -23, - -23, 148, 78, 78, -47, -45, -46, -63, 52, -10, - -48, 146, 146, -23, -23, 146, -23, -23, 17, 75, - -89, -89, 17, 142, -48, -78, 146, -78, 146, 82, - -91, 147, -91, 144, 142, -114, 144, -16, -107, -91, - 82, 144, 158, 82, 29, -91, -20, 144, 158, 160, + 146, -114, -113, -71, -70, -23, 151, 59, -23, -28, + -57, 146, -56, 98, 148, -28, -23, -23, -23, -23, + -23, -23, -23, -23, -23, -23, -23, -23, -49, 146, + -23, -92, 17, -91, -63, 12, 76, 77, -23, -23, + -23, 148, 78, 78, -46, -44, -45, -62, 52, -10, + -47, 146, 146, -23, -23, 146, -23, -23, 17, 75, + -91, -91, 17, 142, -47, -77, 146, -77, 146, 82, + -93, 147, -93, 144, 142, -116, 144, -16, -109, -93, + 82, 144, 158, 82, 29, -93, -20, 144, 158, 160, -22, 143, 2, -11, -12, -13, -14, -15, 51, -23, - 21, -3, -97, -98, -23, -23, 144, 144, 144, 144, + 21, -3, -99, -100, -23, -23, 144, 144, 144, 144, 158, 144, 158, -3, 160, 144, 158, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, - -23, -23, -23, -47, -23, 145, -23, -106, -27, -28, - -23, -95, -115, 144, 144, 10, -126, 10, -29, 55, - -126, -119, 55, 146, -11, 146, 144, 145, -23, 151, + -23, -23, -23, -46, -23, 145, -23, -108, -27, -28, + -23, -97, -117, 144, 144, 10, -126, 10, -85, 55, + -126, -87, 55, 146, -11, 146, 144, 145, -23, 151, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, - -23, -23, -23, -24, -23, -55, 10, 142, -48, -112, - 149, 158, 58, -28, 146, -23, -112, 147, -24, 141, - -64, -64, 17, 148, 57, -23, 11, -28, 58, -24, - -54, -6, -48, 142, 10, -5, -4, 98, 99, 100, + -23, -23, -23, -24, -23, -54, 10, 142, -47, -114, + 149, 158, 58, -28, 146, -23, -114, 147, -24, 141, + -63, -63, 17, 148, 57, -23, 11, -28, 58, -24, + -53, -6, -47, 142, 10, -5, -4, 98, 99, 100, 101, 102, 103, 4, 5, 84, 85, 86, 87, 88, 89, 90, 91, 92, 6, 7, 93, 94, 95, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, @@ -1598,49 +1602,49 @@ var yyChk = [...]int{ 50, 35, 36, 37, 38, 39, 96, 97, 59, 30, 31, 32, 33, 34, 60, 61, 55, 56, 79, 53, 54, 52, 62, 63, 65, 64, 66, 67, 81, 80, - -54, -6, -48, -79, -78, 78, 148, 142, 57, 78, - -79, -110, -73, -23, -23, -23, 75, 75, 140, -23, - 147, -113, -32, -23, 83, -112, 10, 144, -114, 143, - 144, 144, 82, -91, -19, 82, -91, 142, 10, 82, - -21, -23, 146, 147, 146, 144, 158, 147, -34, -35, - -126, -23, -43, 145, -23, -7, 158, 29, 147, 143, - -126, 146, -29, -120, 56, -10, 142, -126, -124, -10, - -23, -23, -115, -23, 147, 149, 143, -78, -23, 147, - 160, -72, -23, 151, 59, -112, 147, 149, 147, -65, + -53, -6, -47, -78, -77, 78, 148, 142, 57, 78, + -78, -112, -72, -23, -23, -23, 75, 75, 140, -23, + 147, -115, -31, -23, 83, -114, 10, 144, -116, 143, + 144, 144, 82, -93, -19, 82, -93, 142, 10, 82, + -21, -23, 146, 147, 146, 144, 158, 147, -33, -34, + -126, -23, -42, 145, -23, -7, 158, 29, 147, 143, + -126, 146, -85, -86, 56, -10, 142, -126, -124, -10, + -23, -23, -117, -23, 147, 149, 143, -77, -23, 147, + 160, -71, -23, 151, 59, -114, 147, 149, 147, -64, 10, 13, 152, 12, 10, 143, 143, 148, 143, -23, - 149, -78, -23, -78, -48, -24, -23, -55, -48, -29, + 149, -77, -23, -77, -47, -24, -23, -54, -47, -85, -7, 158, 147, 147, 143, -7, 158, -23, 147, 143, - 142, 82, -101, -17, -20, -87, 142, -126, 147, -85, - -11, 145, -23, -97, -23, -81, 142, 145, 146, -23, - 147, -27, -88, -28, 151, 59, 148, -25, -11, 145, - -93, 146, -116, -117, -30, -31, -76, -74, 150, 60, - 61, -10, -120, -126, -124, -118, 142, 158, 147, 147, + 142, 82, -103, -17, -20, -89, 142, -126, 147, -84, + -11, 145, -23, -99, -23, -80, 142, 145, 146, -23, + 147, -27, -90, -28, 151, 59, 148, -25, -11, 145, + -95, 146, -118, -119, -29, -30, -75, -73, 150, 60, + 61, -10, -86, -126, -124, -120, 142, 158, 147, 147, 95, -11, 145, 143, 160, -23, -28, 146, 147, 149, - 13, -23, 143, 149, 143, -120, 147, -73, 147, -32, - -100, -20, 142, -7, 158, -20, -101, 144, -115, 147, - 144, -104, 144, -104, 144, -116, 144, 147, 58, -28, - 146, -112, -115, -26, 41, 42, -116, 147, 158, -1, - 151, -74, -126, 142, 143, -36, -122, -121, 44, -123, - 47, -86, 103, 102, 101, 98, 99, 100, -118, -10, - -11, 145, 144, -115, -23, -112, 149, -126, -7, 158, - -100, 143, -17, -7, 22, 144, -97, 143, 32, 33, - -104, 31, -104, 147, -83, -11, 145, -88, -28, -112, - 149, 28, 146, 142, 147, -109, 44, -30, -2, 83, - 142, -118, -102, -42, 12, 38, 37, -124, -86, 143, - -115, 147, 143, 142, 143, -20, -7, 143, 144, 147, - -23, -8, 145, 144, 143, 144, 31, -109, -115, 147, - 147, 144, -92, -10, -115, -75, 145, -75, 146, 12, - -118, 143, 144, 158, -126, 160, -94, -69, -6, -3, - -80, 144, 142, -118, 143, -84, -11, 145, -8, -115, - 144, -75, 26, -83, 12, 159, 143, 142, -76, 142, - -108, -52, 12, 151, 160, 143, -42, -23, 144, 158, - 160, -6, 143, -105, -37, -38, -39, -40, -41, -10, - -6, 79, 10, 143, -115, -115, 142, 144, 147, -10, - -115, -115, 147, 158, 12, -23, -126, -69, -23, -126, - 143, -37, 144, 144, 45, 29, 78, 24, -115, 142, - 143, 143, -52, -126, 146, -124, 10, -4, -86, -6, - 144, 143, -115, -116, -6, 143, 147, -75, -82, 144, - 142, -115, 143, + 13, -23, 143, 149, 143, -86, 147, -72, 147, -31, + -102, -20, 142, -7, 158, -20, -103, 144, -117, 147, + 144, -106, 144, -106, 144, -118, 144, 147, 58, -28, + 146, -114, -117, -26, 41, 42, -118, 147, 158, -1, + 151, -73, -126, 142, 143, -35, -122, -121, 44, -123, + 47, -88, 103, 102, 101, 98, 99, 100, -120, -10, + -11, 145, 144, -117, -23, -114, 149, -126, -7, 158, + -102, 143, -17, -7, 22, 144, -99, 143, 32, 33, + -106, 31, -106, 147, -82, -11, 145, -90, -28, -114, + 149, 28, 146, 142, 147, -111, 44, -29, -2, 83, + 142, -120, -104, -41, 12, 38, 37, -124, -88, 143, + -117, 147, 143, 142, 143, -20, -7, 143, 144, 147, + -23, -8, 145, 144, 143, 144, 31, -111, -117, 147, + 147, 144, -94, -10, -117, -74, 145, -74, 146, 12, + -120, 143, 144, 158, -126, 160, -96, -68, -6, -3, + -79, 144, 142, -120, 143, -83, -11, 145, -8, -117, + 144, -74, 26, -82, 12, 159, 143, 142, -75, 142, + -110, -51, 12, 151, 160, 143, -41, -23, 144, 158, + 160, -6, 143, -107, -36, -37, -38, -39, -40, -10, + -6, 79, 10, 143, -117, -117, 142, 144, 147, -10, + -117, -117, 147, 158, 12, -23, -126, -68, -23, -126, + 143, -36, 144, 144, 45, 29, 78, 24, -117, 142, + 143, 143, -51, -126, 146, -124, 10, -4, -88, -6, + 144, 143, -117, -118, -6, 143, 147, -74, -81, 144, + 142, -117, 143, } var yyDef = [...]int{ @@ -2115,7 +2119,7 @@ yydefault: case 1: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:292 + //line php7/php7.y:299 { yylex.(*Parser).rootNode = node.NewRoot(yyDollar[1].list) @@ -2124,463 +2128,463 @@ yydefault: } case 2: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:301 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 3: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:301 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 4: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:301 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 5: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:301 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 6: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:301 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 7: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:301 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 8: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:301 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 9: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:301 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 10: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:302 + //line php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 11: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:302 + //line php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 12: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:302 + //line php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 13: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:302 + //line php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 14: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:302 + //line php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 15: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:302 + //line php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 16: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:302 + //line php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 17: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:302 + //line php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 18: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:302 + //line php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 19: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:302 + //line php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 20: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:302 + //line php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 21: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:302 + //line php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 22: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:303 + //line php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 23: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:303 + //line php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 24: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:303 + //line php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 25: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:303 + //line php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 26: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:303 + //line php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 27: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:303 + //line php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 28: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:303 + //line php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 29: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:303 + //line php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 30: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:303 + //line php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 31: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:303 + //line php7/php7.y:310 { yyVAL.token = yyDollar[1].token } case 32: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:304 + //line php7/php7.y:311 { yyVAL.token = yyDollar[1].token } case 33: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:304 + //line php7/php7.y:311 { yyVAL.token = yyDollar[1].token } case 34: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:304 + //line php7/php7.y:311 { yyVAL.token = yyDollar[1].token } case 35: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:304 + //line php7/php7.y:311 { yyVAL.token = yyDollar[1].token } case 36: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:304 + //line php7/php7.y:311 { yyVAL.token = yyDollar[1].token } case 37: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:304 + //line php7/php7.y:311 { yyVAL.token = yyDollar[1].token } case 38: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:304 + //line php7/php7.y:311 { yyVAL.token = yyDollar[1].token } case 39: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:304 + //line php7/php7.y:311 { yyVAL.token = yyDollar[1].token } case 40: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:304 + //line php7/php7.y:311 { yyVAL.token = yyDollar[1].token } case 41: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:304 + //line php7/php7.y:311 { yyVAL.token = yyDollar[1].token } case 42: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:305 + //line php7/php7.y:312 { yyVAL.token = yyDollar[1].token } case 43: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:305 + //line php7/php7.y:312 { yyVAL.token = yyDollar[1].token } case 44: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:305 + //line php7/php7.y:312 { yyVAL.token = yyDollar[1].token } case 45: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:305 + //line php7/php7.y:312 { yyVAL.token = yyDollar[1].token } case 46: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:305 + //line php7/php7.y:312 { yyVAL.token = yyDollar[1].token } case 47: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:305 + //line php7/php7.y:312 { yyVAL.token = yyDollar[1].token } case 48: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:305 + //line php7/php7.y:312 { yyVAL.token = yyDollar[1].token } case 49: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:305 + //line php7/php7.y:312 { yyVAL.token = yyDollar[1].token } case 50: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:305 + //line php7/php7.y:312 { yyVAL.token = yyDollar[1].token } case 51: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:305 + //line php7/php7.y:312 { yyVAL.token = yyDollar[1].token } case 52: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:305 + //line php7/php7.y:312 { yyVAL.token = yyDollar[1].token } case 53: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:306 + //line php7/php7.y:313 { yyVAL.token = yyDollar[1].token } case 54: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:306 + //line php7/php7.y:313 { yyVAL.token = yyDollar[1].token } case 55: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:306 + //line php7/php7.y:313 { yyVAL.token = yyDollar[1].token } case 56: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:306 + //line php7/php7.y:313 { yyVAL.token = yyDollar[1].token } case 57: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:306 + //line php7/php7.y:313 { yyVAL.token = yyDollar[1].token } case 58: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:306 + //line php7/php7.y:313 { yyVAL.token = yyDollar[1].token } case 59: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:306 + //line php7/php7.y:313 { yyVAL.token = yyDollar[1].token } case 60: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:306 + //line php7/php7.y:313 { yyVAL.token = yyDollar[1].token } case 61: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:307 + //line php7/php7.y:314 { yyVAL.token = yyDollar[1].token } case 62: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:307 + //line php7/php7.y:314 { yyVAL.token = yyDollar[1].token } case 63: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:307 + //line php7/php7.y:314 { yyVAL.token = yyDollar[1].token } case 64: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:307 + //line php7/php7.y:314 { yyVAL.token = yyDollar[1].token } case 65: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:307 + //line php7/php7.y:314 { yyVAL.token = yyDollar[1].token } case 66: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:307 + //line php7/php7.y:314 { yyVAL.token = yyDollar[1].token } case 67: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:307 + //line php7/php7.y:314 { yyVAL.token = yyDollar[1].token } case 68: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:307 + //line php7/php7.y:314 { yyVAL.token = yyDollar[1].token } case 69: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:312 + //line php7/php7.y:319 { yyVAL.token = yyDollar[1].token } case 70: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:313 + //line php7/php7.y:320 { yyVAL.token = yyDollar[1].token } case 71: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:313 + //line php7/php7.y:320 { yyVAL.token = yyDollar[1].token } case 72: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:313 + //line php7/php7.y:320 { yyVAL.token = yyDollar[1].token } case 73: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:313 + //line php7/php7.y:320 { yyVAL.token = yyDollar[1].token } case 74: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:313 + //line php7/php7.y:320 { yyVAL.token = yyDollar[1].token } case 75: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:313 + //line php7/php7.y:320 { yyVAL.token = yyDollar[1].token } case 76: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:318 + //line php7/php7.y:325 { yyVAL.token = yyDollar[1].token } case 77: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:320 + //line php7/php7.y:327 { yyVAL.token = yyDollar[1].token } case 78: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:325 + //line php7/php7.y:332 { if yyDollar[2].node != nil { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -2588,13 +2592,13 @@ yydefault: } case 79: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:331 + //line php7/php7.y:338 { yyVAL.list = []node.Node{} } case 80: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:336 + //line php7/php7.y:343 { namePart := name.NewNamePart(yyDollar[1].token.Value) yyVAL.list = []node.Node{namePart} @@ -2607,7 +2611,7 @@ yydefault: } case 81: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:347 + //line php7/php7.y:354 { namePart := name.NewNamePart(yyDollar[3].token.Value) yyVAL.list = append(yyDollar[1].list, namePart) @@ -2621,7 +2625,7 @@ yydefault: } case 82: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:362 + //line php7/php7.y:369 { yyVAL.node = name.NewName(yyDollar[1].list) @@ -2630,7 +2634,7 @@ yydefault: } case 83: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:369 + //line php7/php7.y:376 { yyVAL.node = name.NewRelative(yyDollar[3].list) @@ -2643,7 +2647,7 @@ yydefault: } case 84: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:380 + //line php7/php7.y:387 { yyVAL.node = name.NewFullyQualified(yyDollar[2].list) @@ -2655,44 +2659,44 @@ yydefault: } case 85: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:393 + //line php7/php7.y:400 { // error yyVAL.node = nil } case 86: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:398 + //line php7/php7.y:405 { yyVAL.node = yyDollar[1].node } case 87: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:400 + //line php7/php7.y:407 { yyVAL.node = yyDollar[1].node } case 88: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:402 + //line php7/php7.y:409 { yyVAL.node = yyDollar[1].node } case 89: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:404 + //line php7/php7.y:411 { yyVAL.node = yyDollar[1].node } case 90: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:406 + //line php7/php7.y:413 { yyVAL.node = yyDollar[1].node } case 91: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:408 + //line php7/php7.y:415 { yyVAL.node = stmt.NewHaltCompiler() @@ -2707,7 +2711,7 @@ yydefault: } case 92: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:421 + //line php7/php7.y:428 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewNamespace(name, nil) @@ -2722,7 +2726,7 @@ yydefault: } case 93: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:434 + //line php7/php7.y:441 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewNamespace(name, yyDollar[4].list) @@ -2738,7 +2742,7 @@ yydefault: } case 94: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:448 + //line php7/php7.y:455 { yyVAL.node = stmt.NewNamespace(nil, yyDollar[3].list) @@ -2752,7 +2756,7 @@ yydefault: } case 95: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:460 + //line php7/php7.y:467 { yyVAL.node = yyDollar[2].node @@ -2765,7 +2769,7 @@ yydefault: } case 96: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:471 + //line php7/php7.y:478 { yyVAL.node = yyDollar[3].node.(*stmt.GroupUse).SetUseType(yyDollar[2].node) @@ -2778,7 +2782,7 @@ yydefault: } case 97: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:482 + //line php7/php7.y:489 { yyVAL.node = stmt.NewUseList(nil, yyDollar[2].list) @@ -2791,7 +2795,7 @@ yydefault: } case 98: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:493 + //line php7/php7.y:500 { yyVAL.node = stmt.NewUseList(yyDollar[2].node, yyDollar[3].list) @@ -2804,7 +2808,7 @@ yydefault: } case 99: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:504 + //line php7/php7.y:511 { yyVAL.node = stmt.NewConstList(yyDollar[2].list) @@ -2817,7 +2821,7 @@ yydefault: } case 100: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:518 + //line php7/php7.y:525 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -2829,7 +2833,7 @@ yydefault: } case 101: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:528 + //line php7/php7.y:535 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -2841,7 +2845,7 @@ yydefault: } case 102: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:541 + //line php7/php7.y:548 { name := name.NewName(yyDollar[1].list) yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[4].list) @@ -2860,7 +2864,7 @@ yydefault: } case 103: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:558 + //line php7/php7.y:565 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[5].list) @@ -2880,7 +2884,7 @@ yydefault: } case 104: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:579 + //line php7/php7.y:586 { name := name.NewName(yyDollar[1].list) yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[4].list) @@ -2899,7 +2903,7 @@ yydefault: } case 105: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:596 + //line php7/php7.y:603 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[5].list) @@ -2919,19 +2923,19 @@ yydefault: } case 106: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:617 + //line php7/php7.y:624 { yyVAL.token = nil } case 107: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:619 + //line php7/php7.y:626 { yyVAL.token = yyDollar[1].token } case 108: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:624 + //line php7/php7.y:631 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -2940,13 +2944,13 @@ yydefault: } case 109: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:631 + //line php7/php7.y:638 { yyVAL.list = []node.Node{yyDollar[1].node} } case 110: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:636 + //line php7/php7.y:643 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -2955,13 +2959,13 @@ yydefault: } case 111: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:643 + //line php7/php7.y:650 { yyVAL.list = []node.Node{yyDollar[1].node} } case 112: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:648 + //line php7/php7.y:655 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -2970,25 +2974,25 @@ yydefault: } case 113: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:655 + //line php7/php7.y:662 { yyVAL.list = []node.Node{yyDollar[1].node} } case 114: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:660 + //line php7/php7.y:667 { yyVAL.node = yyDollar[1].node } case 115: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:662 + //line php7/php7.y:669 { yyVAL.node = yyDollar[2].node.(*stmt.Use).SetUseType(yyDollar[1].node) } case 116: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:667 + //line php7/php7.y:674 { name := name.NewName(yyDollar[1].list) yyVAL.node = stmt.NewUse(nil, name, nil) @@ -2999,7 +3003,7 @@ yydefault: } case 117: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:676 + //line php7/php7.y:683 { name := name.NewName(yyDollar[1].list) alias := node.NewIdentifier(yyDollar[3].token.Value) @@ -3016,13 +3020,13 @@ yydefault: } case 118: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:694 + //line php7/php7.y:701 { yyVAL.node = yyDollar[1].node } case 119: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:696 + //line php7/php7.y:703 { yyVAL.node = yyDollar[2].node @@ -3031,7 +3035,7 @@ yydefault: } case 120: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:706 + //line php7/php7.y:713 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3040,13 +3044,13 @@ yydefault: } case 121: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:713 + //line php7/php7.y:720 { yyVAL.list = []node.Node{yyDollar[1].node} } case 122: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:718 + //line php7/php7.y:725 { if yyDollar[2].node != nil { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -3054,50 +3058,50 @@ yydefault: } case 123: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:724 + //line php7/php7.y:731 { yyVAL.list = []node.Node{} } case 124: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:729 + //line php7/php7.y:736 { // error yyVAL.node = nil } case 125: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:734 + //line php7/php7.y:741 { yyVAL.node = yyDollar[1].node } case 126: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:736 + //line php7/php7.y:743 { yyVAL.node = yyDollar[1].node } case 127: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:738 + //line php7/php7.y:745 { yyVAL.node = yyDollar[1].node } case 128: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:740 + //line php7/php7.y:747 { yyVAL.node = yyDollar[1].node } case 129: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:742 + //line php7/php7.y:749 { yyVAL.node = yyDollar[1].node } case 130: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:744 + //line php7/php7.y:751 { yyVAL.node = stmt.NewHaltCompiler() @@ -3112,7 +3116,7 @@ yydefault: } case 131: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:759 + //line php7/php7.y:766 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) @@ -3125,19 +3129,19 @@ yydefault: } case 132: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:770 + //line php7/php7.y:777 { yyVAL.node = yyDollar[1].node } case 133: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:772 + //line php7/php7.y:779 { yyVAL.node = yyDollar[1].node } case 134: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:774 + //line php7/php7.y:781 { switch n := yyDollar[5].node.(type) { case *stmt.While: @@ -3158,7 +3162,7 @@ yydefault: } case 135: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:793 + //line php7/php7.y:800 { yyVAL.node = stmt.NewDo(yyDollar[2].node, yyDollar[5].node) @@ -3174,7 +3178,7 @@ yydefault: } case 136: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:807 + //line php7/php7.y:814 { switch n := yyDollar[9].node.(type) { case *stmt.For: @@ -3201,7 +3205,7 @@ yydefault: } case 137: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:832 + //line php7/php7.y:839 { switch n := yyDollar[5].node.(type) { case *stmt.Switch: @@ -3224,7 +3228,7 @@ yydefault: } case 138: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:853 + //line php7/php7.y:860 { yyVAL.node = stmt.NewBreak(yyDollar[2].node) @@ -3237,7 +3241,7 @@ yydefault: } case 139: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:864 + //line php7/php7.y:871 { yyVAL.node = stmt.NewContinue(yyDollar[2].node) @@ -3250,7 +3254,7 @@ yydefault: } case 140: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:875 + //line php7/php7.y:882 { yyVAL.node = stmt.NewReturn(yyDollar[2].node) @@ -3263,7 +3267,7 @@ yydefault: } case 141: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:886 + //line php7/php7.y:893 { yyVAL.node = stmt.NewGlobal(yyDollar[2].list) @@ -3276,7 +3280,7 @@ yydefault: } case 142: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:897 + //line php7/php7.y:904 { yyVAL.node = stmt.NewStatic(yyDollar[2].list) @@ -3289,7 +3293,7 @@ yydefault: } case 143: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:908 + //line php7/php7.y:915 { yyVAL.node = stmt.NewEcho(yyDollar[2].list) @@ -3302,7 +3306,7 @@ yydefault: } case 144: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:919 + //line php7/php7.y:926 { yyVAL.node = stmt.NewInlineHtml(yyDollar[1].token.Value) @@ -3314,7 +3318,7 @@ yydefault: } case 145: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:929 + //line php7/php7.y:936 { yyVAL.node = stmt.NewExpression(yyDollar[1].node) @@ -3326,7 +3330,7 @@ yydefault: } case 146: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:939 + //line php7/php7.y:946 { yyVAL.node = stmt.NewUnset(yyDollar[3].list) @@ -3344,7 +3348,7 @@ yydefault: } case 147: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:955 + //line php7/php7.y:962 { switch n := yyDollar[7].node.(type) { case *stmt.Foreach: @@ -3370,7 +3374,7 @@ yydefault: } case 148: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:979 + //line php7/php7.y:986 { switch n := yyDollar[9].node.(type) { case *stmt.Foreach: @@ -3399,7 +3403,7 @@ yydefault: } case 149: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1006 + //line php7/php7.y:1013 { yyVAL.node = stmt.NewDeclare(yyDollar[3].list, yyDollar[5].node) @@ -3413,7 +3417,7 @@ yydefault: } case 150: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1018 + //line php7/php7.y:1025 { yyVAL.node = stmt.NewNop() @@ -3425,7 +3429,7 @@ yydefault: } case 151: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1028 + //line php7/php7.y:1035 { if yyDollar[6].node == nil { yyVAL.node = stmt.NewTry(yyDollar[3].list, yyDollar[5].list, yyDollar[6].node) @@ -3442,7 +3446,7 @@ yydefault: } case 152: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1043 + //line php7/php7.y:1050 { yyVAL.node = stmt.NewThrow(yyDollar[2].node) @@ -3455,7 +3459,7 @@ yydefault: } case 153: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1054 + //line php7/php7.y:1061 { label := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewGoto(label) @@ -3471,7 +3475,7 @@ yydefault: } case 154: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1068 + //line php7/php7.y:1075 { label := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewLabel(label) @@ -3486,13 +3490,13 @@ yydefault: } case 155: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1083 + //line php7/php7.y:1090 { yyVAL.list = []node.Node{} } case 156: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:1085 + //line php7/php7.y:1092 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[5].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -3514,13 +3518,13 @@ yydefault: } case 157: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1107 + //line php7/php7.y:1114 { yyVAL.list = []node.Node{yyDollar[1].node} } case 158: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1109 + //line php7/php7.y:1116 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3529,13 +3533,13 @@ yydefault: } case 159: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1119 + //line php7/php7.y:1126 { yyVAL.node = nil } case 160: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1121 + //line php7/php7.y:1128 { yyVAL.node = stmt.NewFinally(yyDollar[3].list) @@ -3549,13 +3553,13 @@ yydefault: } case 161: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1136 + //line php7/php7.y:1143 { yyVAL.list = []node.Node{yyDollar[1].node} } case 162: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1138 + //line php7/php7.y:1145 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3564,13 +3568,13 @@ yydefault: } case 163: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1148 + //line php7/php7.y:1155 { yyVAL.node = yyDollar[1].node } case 164: yyDollar = yyS[yypt-11 : yypt+1] - //line php7/php7.y:1153 + //line php7/php7.y:1160 { 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) @@ -3592,34 +3596,34 @@ yydefault: } case 165: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1177 + //line php7/php7.y:1184 { yyVAL.token = nil } case 166: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1179 + //line php7/php7.y:1186 { yyVAL.token = yyDollar[1].token } case 167: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1184 + //line php7/php7.y:1191 { yyVAL.token = nil } case 168: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1186 + //line php7/php7.y:1193 { yyVAL.token = yyDollar[1].token } case 169: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:1191 + //line php7/php7.y:1198 { name := node.NewIdentifier(yyDollar[3].token.Value) - yyVAL.node = stmt.NewClass(name, yyDollar[1].list, nil, yyDollar[4].node, yyDollar[5].list, yyDollar[8].list, yyDollar[6].str) + yyVAL.node = stmt.NewClass(name, yyDollar[1].list, nil, yyDollar[4].ClassExtends, yyDollar[5].ClassImplements, yyDollar[8].list, yyDollar[6].str) // save position yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -3628,21 +3632,15 @@ yydefault: // save comments yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[2].token, comment.ClassToken) yylex.(*Parser).comments.AddFromToken(name, yyDollar[3].token, comment.StringToken) - if yyDollar[4].node != nil { - yylex.(*Parser).comments.AddFromChildNode(yyVAL.node, yyDollar[4].node) - } - if yyDollar[5].list != nil { - yylex.(*Parser).comments.AddFromChildNode(yyVAL.node, firstNode(yyDollar[5].list)) - } yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[7].token, comment.OpenCurlyBracesToken) yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[9].token, comment.CloseCurlyBracesToken) } case 170: yyDollar = yyS[yypt-8 : yypt+1] - //line php7/php7.y:1212 + //line php7/php7.y:1213 { name := node.NewIdentifier(yyDollar[2].token.Value) - yyVAL.node = stmt.NewClass(name, nil, nil, yyDollar[3].node, yyDollar[4].list, yyDollar[7].list, yyDollar[5].str) + yyVAL.node = stmt.NewClass(name, nil, nil, yyDollar[3].ClassExtends, yyDollar[4].ClassImplements, yyDollar[7].list, yyDollar[5].str) // save position yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -3651,30 +3649,24 @@ yydefault: // save comments yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[1].token, comment.ClassToken) yylex.(*Parser).comments.AddFromToken(name, yyDollar[2].token, comment.StringToken) - if yyDollar[3].node != nil { - yylex.(*Parser).comments.AddFromChildNode(yyVAL.node, yyDollar[3].node) - } - if yyDollar[4].list != nil { - yylex.(*Parser).comments.AddFromChildNode(yyVAL.node, firstNode(yyDollar[4].list)) - } yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[6].token, comment.OpenCurlyBracesToken) yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[8].token, comment.CloseCurlyBracesToken) } case 171: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1236 + //line php7/php7.y:1231 { yyVAL.list = []node.Node{yyDollar[1].node} } case 172: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1238 + //line php7/php7.y:1233 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 173: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1243 + //line php7/php7.y:1238 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -3686,7 +3678,7 @@ yydefault: } case 174: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1253 + //line php7/php7.y:1248 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -3698,7 +3690,7 @@ yydefault: } case 175: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1266 + //line php7/php7.y:1261 { name := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewTrait(name, yyDollar[5].list, yyDollar[3].str) @@ -3715,10 +3707,10 @@ yydefault: } case 176: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:1284 + //line php7/php7.y:1279 { name := node.NewIdentifier(yyDollar[2].token.Value) - yyVAL.node = stmt.NewInterface(name, yyDollar[3].list, yyDollar[6].list, yyDollar[4].str) + yyVAL.node = stmt.NewInterface(name, yyDollar[3].InterfaceExtends, yyDollar[6].list, yyDollar[4].str) // save position yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -3727,66 +3719,72 @@ yydefault: // save comments yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[1].token, comment.InterfaceToken) yylex.(*Parser).comments.AddFromToken(name, yyDollar[2].token, comment.StringToken) - if yyDollar[3].list != nil { - yylex.(*Parser).comments.AddFromChildNode(yyVAL.node, firstNode(yyDollar[3].list)) - } yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[5].token, comment.OpenCurlyBracesToken) yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[7].token, comment.CloseCurlyBracesToken) } case 177: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1305 + //line php7/php7.y:1297 { - yyVAL.node = nil + yyVAL.ClassExtends = nil } case 178: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1307 + //line php7/php7.y:1299 { - yyVAL.node = yyDollar[2].node + yyVAL.ClassExtends = stmt.NewClassExtends(yyDollar[2].node) + + // save position + yylex.(*Parser).positions.AddPosition(yyVAL.ClassExtends, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) // save comments - yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[1].token, comment.ExtendsToken) + yylex.(*Parser).comments.AddFromToken(yyVAL.ClassExtends, yyDollar[1].token, comment.ExtendsToken) } case 179: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1317 + //line php7/php7.y:1312 { - yyVAL.list = nil + yyVAL.InterfaceExtends = nil } case 180: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1319 + //line php7/php7.y:1314 { - yyVAL.list = yyDollar[2].list + yyVAL.InterfaceExtends = stmt.NewInterfaceExtends(yyDollar[2].list) + + // save position + yylex.(*Parser).positions.AddPosition(yyVAL.InterfaceExtends, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) // save comments - yylex.(*Parser).comments.AddFromToken(firstNode(yyVAL.list), yyDollar[1].token, comment.ExtendsToken) + yylex.(*Parser).comments.AddFromToken(yyVAL.InterfaceExtends, yyDollar[1].token, comment.ExtendsToken) } case 181: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1329 + //line php7/php7.y:1327 { - yyVAL.list = nil + yyVAL.ClassImplements = nil } case 182: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1331 + //line php7/php7.y:1329 { - yyVAL.list = yyDollar[2].list + yyVAL.ClassImplements = stmt.NewClassImplements(yyDollar[2].list) + + // save position + yylex.(*Parser).positions.AddPosition(yyVAL.ClassImplements, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) // save comments - yylex.(*Parser).comments.AddFromToken(firstNode(yyVAL.list), yyDollar[1].token, comment.ImplementsToken) + yylex.(*Parser).comments.AddFromToken(yyVAL.ClassImplements, yyDollar[1].token, comment.ImplementsToken) } case 183: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1341 + //line php7/php7.y:1342 { yyVAL.foreachVariable = foreachVariable{yyDollar[1].node, false} } case 184: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1343 + //line php7/php7.y:1344 { yyVAL.foreachVariable = foreachVariable{yyDollar[2].node, true} @@ -3798,7 +3796,7 @@ yydefault: } case 185: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1353 + //line php7/php7.y:1354 { list := expr.NewList(yyDollar[3].list) yyVAL.foreachVariable = foreachVariable{list, false} @@ -3813,7 +3811,7 @@ yydefault: } case 186: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1366 + //line php7/php7.y:1367 { list := expr.NewShortList(yyDollar[2].list) yyVAL.foreachVariable = foreachVariable{list, false} @@ -3827,7 +3825,7 @@ yydefault: } case 187: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1381 + //line php7/php7.y:1382 { yyVAL.node = stmt.NewFor(nil, nil, nil, yyDollar[1].node) @@ -3836,7 +3834,7 @@ yydefault: } case 188: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1388 + //line php7/php7.y:1389 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltFor(nil, nil, nil, stmtList) @@ -3852,7 +3850,7 @@ yydefault: } case 189: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1405 + //line php7/php7.y:1406 { yyVAL.node = stmt.NewForeach(nil, nil, nil, yyDollar[1].node, false) @@ -3861,7 +3859,7 @@ yydefault: } case 190: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1412 + //line php7/php7.y:1413 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltForeach(nil, nil, nil, stmtList, false) @@ -3877,13 +3875,13 @@ yydefault: } case 191: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1429 + //line php7/php7.y:1430 { yyVAL.node = yyDollar[1].node } case 192: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1431 + //line php7/php7.y:1432 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) @@ -3897,7 +3895,7 @@ yydefault: } case 193: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1446 + //line php7/php7.y:1447 { caseList := stmt.NewCaseList(yyDollar[2].list) yyVAL.node = stmt.NewSwitch(nil, caseList) @@ -3912,7 +3910,7 @@ yydefault: } case 194: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1459 + //line php7/php7.y:1460 { caseList := stmt.NewCaseList(yyDollar[3].list) yyVAL.node = stmt.NewSwitch(nil, caseList) @@ -3928,7 +3926,7 @@ yydefault: } case 195: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1473 + //line php7/php7.y:1474 { caseList := stmt.NewCaseList(yyDollar[2].list) yyVAL.node = stmt.NewAltSwitch(nil, caseList) @@ -3944,7 +3942,7 @@ yydefault: } case 196: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1487 + //line php7/php7.y:1488 { caseList := stmt.NewCaseList(yyDollar[3].list) @@ -3962,13 +3960,13 @@ yydefault: } case 197: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1506 + //line php7/php7.y:1507 { yyVAL.list = []node.Node{} } case 198: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1508 + //line php7/php7.y:1509 { _case := stmt.NewCase(yyDollar[3].node, yyDollar[5].list) yyVAL.list = append(yyDollar[1].list, _case) @@ -3982,7 +3980,7 @@ yydefault: } case 199: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1520 + //line php7/php7.y:1521 { _default := stmt.NewDefault(yyDollar[4].list) yyVAL.list = append(yyDollar[1].list, _default) @@ -3996,19 +3994,19 @@ yydefault: } case 200: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1535 + //line php7/php7.y:1536 { yyVAL.token = yyDollar[1].token } case 201: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1537 + //line php7/php7.y:1538 { yyVAL.token = yyDollar[1].token } case 202: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1542 + //line php7/php7.y:1543 { yyVAL.node = stmt.NewWhile(nil, yyDollar[1].node) @@ -4017,7 +4015,7 @@ yydefault: } case 203: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1549 + //line php7/php7.y:1550 { stmtList := stmt.NewStmtList(yyDollar[2].list) yyVAL.node = stmt.NewAltWhile(nil, stmtList) @@ -4033,7 +4031,7 @@ yydefault: } case 204: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1566 + //line php7/php7.y:1567 { yyVAL.node = stmt.NewIf(yyDollar[3].node, yyDollar[5].node, nil, nil) @@ -4047,7 +4045,7 @@ yydefault: } case 205: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1578 + //line php7/php7.y:1579 { _elseIf := stmt.NewElseIf(yyDollar[4].node, yyDollar[6].node) yyVAL.node = yyDollar[1].node.(*stmt.If).AddElseIf(_elseIf) @@ -4063,13 +4061,13 @@ yydefault: } case 206: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1595 + //line php7/php7.y:1596 { yyVAL.node = yyDollar[1].node } case 207: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1597 + //line php7/php7.y:1598 { _else := stmt.NewElse(yyDollar[3].node) yyVAL.node = yyDollar[1].node.(*stmt.If).SetElse(_else) @@ -4083,7 +4081,7 @@ yydefault: } case 208: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1612 + //line php7/php7.y:1613 { stmts := stmt.NewStmtList(yyDollar[6].list) yyVAL.node = stmt.NewAltIf(yyDollar[3].node, stmts, nil, nil) @@ -4100,7 +4098,7 @@ yydefault: } case 209: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:1627 + //line php7/php7.y:1628 { stmts := stmt.NewStmtList(yyDollar[7].list) _elseIf := stmt.NewAltElseIf(yyDollar[4].node, stmts) @@ -4118,7 +4116,7 @@ yydefault: } case 210: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1646 + //line php7/php7.y:1647 { yyVAL.node = yyDollar[1].node @@ -4131,7 +4129,7 @@ yydefault: } case 211: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1657 + //line php7/php7.y:1658 { stmts := stmt.NewStmtList(yyDollar[4].list) _else := stmt.NewAltElse(stmts) @@ -4150,25 +4148,25 @@ yydefault: } case 212: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1677 + //line php7/php7.y:1678 { yyVAL.list = yyDollar[1].list } case 213: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1679 + //line php7/php7.y:1680 { yyVAL.list = nil } case 214: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1684 + //line php7/php7.y:1685 { yyVAL.list = []node.Node{yyDollar[1].node} } case 215: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1686 + //line php7/php7.y:1687 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4177,7 +4175,7 @@ yydefault: } case 216: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1696 + //line php7/php7.y:1697 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -4216,7 +4214,7 @@ yydefault: } case 217: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1733 + //line php7/php7.y:1734 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -4255,25 +4253,25 @@ yydefault: } case 218: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1773 + //line php7/php7.y:1774 { yyVAL.node = nil } case 219: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1775 + //line php7/php7.y:1776 { yyVAL.node = yyDollar[1].node } case 220: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1780 + //line php7/php7.y:1781 { yyVAL.node = yyDollar[1].node } case 221: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1782 + //line php7/php7.y:1783 { yyVAL.node = node.NewNullable(yyDollar[2].node) @@ -4285,7 +4283,7 @@ yydefault: } case 222: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1795 + //line php7/php7.y:1796 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4297,7 +4295,7 @@ yydefault: } case 223: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1805 + //line php7/php7.y:1806 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4309,19 +4307,19 @@ yydefault: } case 224: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1815 + //line php7/php7.y:1816 { yyVAL.node = yyDollar[1].node } case 225: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1820 + //line php7/php7.y:1821 { yyVAL.node = nil } case 226: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1822 + //line php7/php7.y:1823 { yyVAL.node = yyDollar[2].node @@ -4330,7 +4328,7 @@ yydefault: } case 227: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1832 + //line php7/php7.y:1833 { yyVAL.node = node.NewArgumentList(nil) @@ -4339,7 +4337,7 @@ yydefault: } case 228: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1839 + //line php7/php7.y:1840 { yyVAL.node = node.NewArgumentList(yyDollar[2].list) @@ -4348,13 +4346,13 @@ yydefault: } case 229: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1849 + //line php7/php7.y:1850 { yyVAL.list = []node.Node{yyDollar[1].node} } case 230: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1851 + //line php7/php7.y:1852 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4363,7 +4361,7 @@ yydefault: } case 231: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1861 + //line php7/php7.y:1862 { yyVAL.node = node.NewArgument(yyDollar[1].node, false, false) @@ -4372,7 +4370,7 @@ yydefault: } case 232: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1868 + //line php7/php7.y:1869 { yyVAL.node = node.NewArgument(yyDollar[2].node, true, false) @@ -4384,7 +4382,7 @@ yydefault: } case 233: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1881 + //line php7/php7.y:1882 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4393,19 +4391,19 @@ yydefault: } case 234: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1888 + //line php7/php7.y:1889 { yyVAL.list = []node.Node{yyDollar[1].node} } case 235: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1893 + //line php7/php7.y:1894 { yyVAL.node = yyDollar[1].node } case 236: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1898 + //line php7/php7.y:1899 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4414,13 +4412,13 @@ yydefault: } case 237: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1905 + //line php7/php7.y:1906 { yyVAL.list = []node.Node{yyDollar[1].node} } case 238: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1910 + //line php7/php7.y:1911 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -4436,7 +4434,7 @@ yydefault: } case 239: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1924 + //line php7/php7.y:1925 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -4453,19 +4451,19 @@ yydefault: } case 240: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1942 + //line php7/php7.y:1943 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 241: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1944 + //line php7/php7.y:1945 { yyVAL.list = []node.Node{} } case 242: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1949 + //line php7/php7.y:1950 { yyVAL.node = stmt.NewPropertyList(yyDollar[1].list, yyDollar[2].list) @@ -4477,7 +4475,7 @@ yydefault: } case 243: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1959 + //line php7/php7.y:1960 { yyVAL.node = stmt.NewClassConstList(yyDollar[1].list, yyDollar[3].list) @@ -4490,7 +4488,7 @@ yydefault: } case 244: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1970 + //line php7/php7.y:1971 { var adaptationList *stmt.TraitAdaptationList @@ -4512,7 +4510,7 @@ yydefault: } case 245: yyDollar = yyS[yypt-10 : yypt+1] - //line php7/php7.y:1990 + //line php7/php7.y:1991 { 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) @@ -4536,13 +4534,13 @@ yydefault: } case 246: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2015 + //line php7/php7.y:2016 { yyVAL.list = []node.Node{yyDollar[1].node} } case 247: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2017 + //line php7/php7.y:2018 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4551,7 +4549,7 @@ yydefault: } case 248: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2027 + //line php7/php7.y:2028 { yyVAL.node = stmt.NewNop() @@ -4563,7 +4561,7 @@ yydefault: } case 249: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2037 + //line php7/php7.y:2038 { yyVAL.node = stmt.NewTraitAdaptationList(nil) @@ -4575,7 +4573,7 @@ yydefault: } case 250: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2047 + //line php7/php7.y:2048 { yyVAL.node = stmt.NewTraitAdaptationList(yyDollar[2].list) @@ -4587,19 +4585,19 @@ yydefault: } case 251: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2060 + //line php7/php7.y:2061 { yyVAL.list = []node.Node{yyDollar[1].node} } case 252: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2062 + //line php7/php7.y:2063 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 253: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2067 + //line php7/php7.y:2068 { yyVAL.node = yyDollar[1].node @@ -4608,7 +4606,7 @@ yydefault: } case 254: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2074 + //line php7/php7.y:2075 { yyVAL.node = yyDollar[1].node @@ -4617,7 +4615,7 @@ yydefault: } case 255: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2084 + //line php7/php7.y:2085 { yyVAL.node = stmt.NewTraitUsePrecedence(yyDollar[1].node, yyDollar[3].list) @@ -4629,7 +4627,7 @@ yydefault: } case 256: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2097 + //line php7/php7.y:2098 { alias := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, alias) @@ -4644,7 +4642,7 @@ yydefault: } case 257: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2110 + //line php7/php7.y:2111 { alias := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, alias) @@ -4659,7 +4657,7 @@ yydefault: } case 258: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2123 + //line php7/php7.y:2124 { alias := node.NewIdentifier(yyDollar[4].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, alias) @@ -4674,7 +4672,7 @@ yydefault: } case 259: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2136 + //line php7/php7.y:2137 { yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, nil) @@ -4686,7 +4684,7 @@ yydefault: } case 260: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2149 + //line php7/php7.y:2150 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewTraitMethodRef(nil, name) @@ -4700,13 +4698,13 @@ yydefault: } case 261: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2161 + //line php7/php7.y:2162 { yyVAL.node = yyDollar[1].node } case 262: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2166 + //line php7/php7.y:2167 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitMethodRef(yyDollar[1].node, target) @@ -4721,7 +4719,7 @@ yydefault: } case 263: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2182 + //line php7/php7.y:2183 { yyVAL.node = stmt.NewNop() @@ -4733,7 +4731,7 @@ yydefault: } case 264: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2192 + //line php7/php7.y:2193 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) @@ -4746,13 +4744,13 @@ yydefault: } case 265: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2206 + //line php7/php7.y:2207 { yyVAL.list = yyDollar[1].list } case 266: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2208 + //line php7/php7.y:2209 { modifier := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.list = []node.Node{modifier} @@ -4765,31 +4763,31 @@ yydefault: } case 267: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2222 + //line php7/php7.y:2223 { yyVAL.list = nil } case 268: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2224 + //line php7/php7.y:2225 { yyVAL.list = yyDollar[1].list } case 269: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2229 + //line php7/php7.y:2230 { yyVAL.list = []node.Node{yyDollar[1].node} } case 270: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2231 + //line php7/php7.y:2232 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 271: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2236 + //line php7/php7.y:2237 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4801,7 +4799,7 @@ yydefault: } case 272: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2246 + //line php7/php7.y:2247 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4813,7 +4811,7 @@ yydefault: } case 273: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2256 + //line php7/php7.y:2257 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4825,7 +4823,7 @@ yydefault: } case 274: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2266 + //line php7/php7.y:2267 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4837,7 +4835,7 @@ yydefault: } case 275: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2276 + //line php7/php7.y:2277 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4849,7 +4847,7 @@ yydefault: } case 276: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2286 + //line php7/php7.y:2287 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4861,7 +4859,7 @@ yydefault: } case 277: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2299 + //line php7/php7.y:2300 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4870,13 +4868,13 @@ yydefault: } case 278: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2306 + //line php7/php7.y:2307 { yyVAL.list = []node.Node{yyDollar[1].node} } case 279: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2311 + //line php7/php7.y:2312 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -4892,7 +4890,7 @@ yydefault: } case 280: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2325 + //line php7/php7.y:2326 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -4909,7 +4907,7 @@ yydefault: } case 281: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2343 + //line php7/php7.y:2344 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4918,13 +4916,13 @@ yydefault: } case 282: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2350 + //line php7/php7.y:2351 { yyVAL.list = []node.Node{yyDollar[1].node} } case 283: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2355 + //line php7/php7.y:2356 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewConstant(name, yyDollar[3].node, yyDollar[4].str) @@ -4939,7 +4937,7 @@ yydefault: } case 284: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2371 + //line php7/php7.y:2372 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewConstant(name, yyDollar[3].node, yyDollar[4].str) @@ -4954,7 +4952,7 @@ yydefault: } case 285: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2387 + //line php7/php7.y:2388 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4963,31 +4961,31 @@ yydefault: } case 286: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2394 + //line php7/php7.y:2395 { yyVAL.list = []node.Node{yyDollar[1].node} } case 287: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2399 + //line php7/php7.y:2400 { yyVAL.node = yyDollar[1].node } case 288: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2404 + //line php7/php7.y:2405 { yyVAL.list = nil } case 289: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2406 + //line php7/php7.y:2407 { yyVAL.list = yyDollar[1].list } case 290: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2411 + //line php7/php7.y:2412 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4996,18 +4994,18 @@ yydefault: } case 291: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2418 + //line php7/php7.y:2419 { yyVAL.list = []node.Node{yyDollar[1].node} } case 292: yyDollar = yyS[yypt-8 : yypt+1] - //line php7/php7.y:2423 + //line php7/php7.y:2424 { if yyDollar[2].node != nil { - yyVAL.node = stmt.NewClass(nil, nil, yyDollar[2].node.(*node.ArgumentList), yyDollar[3].node, yyDollar[4].list, yyDollar[7].list, yyDollar[5].str) + yyVAL.node = stmt.NewClass(nil, nil, yyDollar[2].node.(*node.ArgumentList), yyDollar[3].ClassExtends, yyDollar[4].ClassImplements, yyDollar[7].list, yyDollar[5].str) } else { - yyVAL.node = stmt.NewClass(nil, nil, nil, yyDollar[3].node, yyDollar[4].list, yyDollar[7].list, yyDollar[5].str) + yyVAL.node = stmt.NewClass(nil, nil, nil, yyDollar[3].ClassExtends, yyDollar[4].ClassImplements, yyDollar[7].list, yyDollar[5].str) } // save position @@ -5015,18 +5013,12 @@ yydefault: // save comments yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[1].token, comment.ClassToken) - if yyDollar[3].node != nil { - yylex.(*Parser).comments.AddFromChildNode(yyVAL.node, yyDollar[3].node) - } - if yyDollar[4].list != nil { - yylex.(*Parser).comments.AddFromChildNode(yyVAL.node, firstNode(yyDollar[4].list)) - } yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[6].token, comment.OpenCurlyBracesToken) yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[8].token, comment.CloseCurlyBracesToken) } case 293: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2448 + //line php7/php7.y:2443 { if yyDollar[3].node != nil { yyVAL.node = expr.NewNew(yyDollar[2].node, yyDollar[3].node.(*node.ArgumentList)) @@ -5041,7 +5033,7 @@ yydefault: } case 294: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2461 + //line php7/php7.y:2456 { yyVAL.node = expr.NewNew(yyDollar[2].node, nil) @@ -5053,7 +5045,7 @@ yydefault: } case 295: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:2474 + //line php7/php7.y:2469 { list := expr.NewList(yyDollar[3].list) yyVAL.node = assign.NewAssign(list, yyDollar[6].node) @@ -5070,7 +5062,7 @@ yydefault: } case 296: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:2489 + //line php7/php7.y:2484 { shortList := expr.NewShortList(yyDollar[2].list) yyVAL.node = assign.NewAssign(shortList, yyDollar[5].node) @@ -5086,7 +5078,7 @@ yydefault: } case 297: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2503 + //line php7/php7.y:2498 { yyVAL.node = assign.NewAssign(yyDollar[1].node, yyDollar[3].node) @@ -5098,7 +5090,7 @@ yydefault: } case 298: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2513 + //line php7/php7.y:2508 { yyVAL.node = assign.NewReference(yyDollar[1].node, yyDollar[4].node) @@ -5111,7 +5103,7 @@ yydefault: } case 299: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2524 + //line php7/php7.y:2519 { yyVAL.node = expr.NewClone(yyDollar[2].node) @@ -5123,7 +5115,7 @@ yydefault: } case 300: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2534 + //line php7/php7.y:2529 { yyVAL.node = assign.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -5135,7 +5127,7 @@ yydefault: } case 301: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2544 + //line php7/php7.y:2539 { yyVAL.node = assign.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -5147,7 +5139,7 @@ yydefault: } case 302: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2554 + //line php7/php7.y:2549 { yyVAL.node = assign.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -5159,7 +5151,7 @@ yydefault: } case 303: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2564 + //line php7/php7.y:2559 { yyVAL.node = assign.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -5171,7 +5163,7 @@ yydefault: } case 304: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2574 + //line php7/php7.y:2569 { yyVAL.node = assign.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -5183,7 +5175,7 @@ yydefault: } case 305: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2584 + //line php7/php7.y:2579 { yyVAL.node = assign.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -5195,7 +5187,7 @@ yydefault: } case 306: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2594 + //line php7/php7.y:2589 { yyVAL.node = assign.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -5207,7 +5199,7 @@ yydefault: } case 307: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2604 + //line php7/php7.y:2599 { yyVAL.node = assign.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -5219,7 +5211,7 @@ yydefault: } case 308: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2614 + //line php7/php7.y:2609 { yyVAL.node = assign.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -5231,7 +5223,7 @@ yydefault: } case 309: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2624 + //line php7/php7.y:2619 { yyVAL.node = assign.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -5243,7 +5235,7 @@ yydefault: } case 310: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2634 + //line php7/php7.y:2629 { yyVAL.node = assign.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -5255,7 +5247,7 @@ yydefault: } case 311: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2644 + //line php7/php7.y:2639 { yyVAL.node = assign.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -5267,7 +5259,7 @@ yydefault: } case 312: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2654 + //line php7/php7.y:2649 { yyVAL.node = expr.NewPostInc(yyDollar[1].node) @@ -5279,7 +5271,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2664 + //line php7/php7.y:2659 { yyVAL.node = expr.NewPreInc(yyDollar[2].node) @@ -5291,7 +5283,7 @@ yydefault: } case 314: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2674 + //line php7/php7.y:2669 { yyVAL.node = expr.NewPostDec(yyDollar[1].node) @@ -5303,7 +5295,7 @@ yydefault: } case 315: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2684 + //line php7/php7.y:2679 { yyVAL.node = expr.NewPreDec(yyDollar[2].node) @@ -5315,7 +5307,7 @@ yydefault: } case 316: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2694 + //line php7/php7.y:2689 { yyVAL.node = binary.NewBooleanOr(yyDollar[1].node, yyDollar[3].node) @@ -5327,7 +5319,7 @@ yydefault: } case 317: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2704 + //line php7/php7.y:2699 { yyVAL.node = binary.NewBooleanAnd(yyDollar[1].node, yyDollar[3].node) @@ -5339,7 +5331,7 @@ yydefault: } case 318: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2714 + //line php7/php7.y:2709 { yyVAL.node = binary.NewLogicalOr(yyDollar[1].node, yyDollar[3].node) @@ -5351,7 +5343,7 @@ yydefault: } case 319: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2724 + //line php7/php7.y:2719 { yyVAL.node = binary.NewLogicalAnd(yyDollar[1].node, yyDollar[3].node) @@ -5363,7 +5355,7 @@ yydefault: } case 320: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2734 + //line php7/php7.y:2729 { yyVAL.node = binary.NewLogicalXor(yyDollar[1].node, yyDollar[3].node) @@ -5375,7 +5367,7 @@ yydefault: } case 321: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2744 + //line php7/php7.y:2739 { yyVAL.node = binary.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -5387,7 +5379,7 @@ yydefault: } case 322: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2754 + //line php7/php7.y:2749 { yyVAL.node = binary.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -5399,7 +5391,7 @@ yydefault: } case 323: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2764 + //line php7/php7.y:2759 { yyVAL.node = binary.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -5411,7 +5403,7 @@ yydefault: } case 324: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2774 + //line php7/php7.y:2769 { yyVAL.node = binary.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -5423,7 +5415,7 @@ yydefault: } case 325: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2784 + //line php7/php7.y:2779 { yyVAL.node = binary.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -5435,7 +5427,7 @@ yydefault: } case 326: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2794 + //line php7/php7.y:2789 { yyVAL.node = binary.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -5447,7 +5439,7 @@ yydefault: } case 327: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2804 + //line php7/php7.y:2799 { yyVAL.node = binary.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -5459,7 +5451,7 @@ yydefault: } case 328: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2814 + //line php7/php7.y:2809 { yyVAL.node = binary.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -5471,7 +5463,7 @@ yydefault: } case 329: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2824 + //line php7/php7.y:2819 { yyVAL.node = binary.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -5483,7 +5475,7 @@ yydefault: } case 330: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2834 + //line php7/php7.y:2829 { yyVAL.node = binary.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -5495,7 +5487,7 @@ yydefault: } case 331: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2844 + //line php7/php7.y:2839 { yyVAL.node = binary.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -5507,7 +5499,7 @@ yydefault: } case 332: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2854 + //line php7/php7.y:2849 { yyVAL.node = binary.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -5519,7 +5511,7 @@ yydefault: } case 333: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2864 + //line php7/php7.y:2859 { yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) @@ -5531,7 +5523,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2874 + //line php7/php7.y:2869 { yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) @@ -5543,7 +5535,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2884 + //line php7/php7.y:2879 { yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) @@ -5555,7 +5547,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2894 + //line php7/php7.y:2889 { yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) @@ -5567,7 +5559,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2904 + //line php7/php7.y:2899 { yyVAL.node = binary.NewIdentical(yyDollar[1].node, yyDollar[3].node) @@ -5579,7 +5571,7 @@ yydefault: } case 338: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2914 + //line php7/php7.y:2909 { yyVAL.node = binary.NewNotIdentical(yyDollar[1].node, yyDollar[3].node) @@ -5591,7 +5583,7 @@ yydefault: } case 339: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2924 + //line php7/php7.y:2919 { yyVAL.node = binary.NewEqual(yyDollar[1].node, yyDollar[3].node) @@ -5603,7 +5595,7 @@ yydefault: } case 340: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2934 + //line php7/php7.y:2929 { yyVAL.node = binary.NewNotEqual(yyDollar[1].node, yyDollar[3].node) @@ -5615,7 +5607,7 @@ yydefault: } case 341: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2944 + //line php7/php7.y:2939 { yyVAL.node = binary.NewSmaller(yyDollar[1].node, yyDollar[3].node) @@ -5627,7 +5619,7 @@ yydefault: } case 342: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2954 + //line php7/php7.y:2949 { yyVAL.node = binary.NewSmallerOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -5639,7 +5631,7 @@ yydefault: } case 343: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2964 + //line php7/php7.y:2959 { yyVAL.node = binary.NewGreater(yyDollar[1].node, yyDollar[3].node) @@ -5651,7 +5643,7 @@ yydefault: } case 344: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2974 + //line php7/php7.y:2969 { yyVAL.node = binary.NewGreaterOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -5663,7 +5655,7 @@ yydefault: } case 345: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2984 + //line php7/php7.y:2979 { yyVAL.node = binary.NewSpaceship(yyDollar[1].node, yyDollar[3].node) @@ -5675,7 +5667,7 @@ yydefault: } case 346: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2994 + //line php7/php7.y:2989 { yyVAL.node = expr.NewInstanceOf(yyDollar[1].node, yyDollar[3].node) @@ -5687,7 +5679,7 @@ yydefault: } case 347: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3004 + //line php7/php7.y:2999 { yyVAL.node = yyDollar[2].node @@ -5697,13 +5689,13 @@ yydefault: } case 348: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3012 + //line php7/php7.y:3007 { yyVAL.node = yyDollar[1].node } case 349: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:3014 + //line php7/php7.y:3009 { yyVAL.node = expr.NewTernary(yyDollar[1].node, yyDollar[3].node, yyDollar[5].node) @@ -5716,7 +5708,7 @@ yydefault: } case 350: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3025 + //line php7/php7.y:3020 { yyVAL.node = expr.NewTernary(yyDollar[1].node, nil, yyDollar[4].node) @@ -5729,7 +5721,7 @@ yydefault: } case 351: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3036 + //line php7/php7.y:3031 { yyVAL.node = binary.NewCoalesce(yyDollar[1].node, yyDollar[3].node) @@ -5741,13 +5733,13 @@ yydefault: } case 352: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3046 + //line php7/php7.y:3041 { yyVAL.node = yyDollar[1].node } case 353: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3048 + //line php7/php7.y:3043 { yyVAL.node = cast.NewInt(yyDollar[2].node) @@ -5759,7 +5751,7 @@ yydefault: } case 354: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3058 + //line php7/php7.y:3053 { yyVAL.node = cast.NewDouble(yyDollar[2].node) @@ -5771,7 +5763,7 @@ yydefault: } case 355: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3068 + //line php7/php7.y:3063 { yyVAL.node = cast.NewString(yyDollar[2].node) @@ -5783,7 +5775,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3078 + //line php7/php7.y:3073 { yyVAL.node = cast.NewArray(yyDollar[2].node) @@ -5795,7 +5787,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3088 + //line php7/php7.y:3083 { yyVAL.node = cast.NewObject(yyDollar[2].node) @@ -5807,7 +5799,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3098 + //line php7/php7.y:3093 { yyVAL.node = cast.NewBool(yyDollar[2].node) @@ -5819,7 +5811,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3108 + //line php7/php7.y:3103 { yyVAL.node = cast.NewUnset(yyDollar[2].node) @@ -5831,7 +5823,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3118 + //line php7/php7.y:3113 { if strings.EqualFold(yyDollar[1].token.Value, "die") { yyVAL.node = expr.NewDie(yyDollar[2].node) @@ -5847,7 +5839,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3132 + //line php7/php7.y:3127 { yyVAL.node = expr.NewErrorSuppress(yyDollar[2].node) @@ -5859,13 +5851,13 @@ yydefault: } case 362: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3142 + //line php7/php7.y:3137 { yyVAL.node = yyDollar[1].node } case 363: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3144 + //line php7/php7.y:3139 { yyVAL.node = expr.NewShellExec(yyDollar[2].list) @@ -5878,7 +5870,7 @@ yydefault: } case 364: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3155 + //line php7/php7.y:3150 { yyVAL.node = expr.NewPrint(yyDollar[2].node) @@ -5890,7 +5882,7 @@ yydefault: } case 365: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3165 + //line php7/php7.y:3160 { yyVAL.node = expr.NewYield(nil, nil) @@ -5902,7 +5894,7 @@ yydefault: } case 366: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3175 + //line php7/php7.y:3170 { yyVAL.node = expr.NewYield(nil, yyDollar[2].node) @@ -5914,7 +5906,7 @@ yydefault: } case 367: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3185 + //line php7/php7.y:3180 { yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node) @@ -5927,7 +5919,7 @@ yydefault: } case 368: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3196 + //line php7/php7.y:3191 { yyVAL.node = expr.NewYieldFrom(yyDollar[2].node) @@ -5939,7 +5931,7 @@ yydefault: } case 369: yyDollar = yyS[yypt-11 : yypt+1] - //line php7/php7.y:3206 + //line php7/php7.y:3201 { yyVAL.node = expr.NewClosure(yyDollar[5].list, yyDollar[7].list, yyDollar[8].node, yyDollar[10].list, false, yyDollar[2].token != nil, yyDollar[3].str) @@ -5958,7 +5950,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-12 : yypt+1] - //line php7/php7.y:3223 + //line php7/php7.y:3218 { yyVAL.node = expr.NewClosure(yyDollar[6].list, yyDollar[8].list, yyDollar[9].node, yyDollar[11].list, true, yyDollar[3].token != nil, yyDollar[4].str) @@ -5978,38 +5970,38 @@ yydefault: } case 371: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3244 + //line php7/php7.y:3239 { yyVAL.str = yylex.(*Parser).PhpDocComment yylex.(*Parser).PhpDocComment = "" } case 372: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3252 + //line php7/php7.y:3247 { yyVAL.token = nil } case 373: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3254 + //line php7/php7.y:3249 { yyVAL.token = yyDollar[1].token } case 374: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3259 + //line php7/php7.y:3254 { yyVAL.list = []node.Node{} } case 375: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3261 + //line php7/php7.y:3256 { yyVAL.list = yyDollar[3].list } case 376: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3266 + //line php7/php7.y:3261 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -6018,13 +6010,13 @@ yydefault: } case 377: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3273 + //line php7/php7.y:3268 { yyVAL.list = []node.Node{yyDollar[1].node} } case 378: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3278 + //line php7/php7.y:3273 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -6040,7 +6032,7 @@ yydefault: } case 379: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3292 + //line php7/php7.y:3287 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[2].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -6057,7 +6049,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3310 + //line php7/php7.y:3305 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].node.(*node.ArgumentList)) @@ -6066,7 +6058,7 @@ yydefault: } case 381: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3317 + //line php7/php7.y:3312 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -6078,7 +6070,7 @@ yydefault: } case 382: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3327 + //line php7/php7.y:3322 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -6090,7 +6082,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3337 + //line php7/php7.y:3332 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].node.(*node.ArgumentList)) @@ -6099,7 +6091,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3347 + //line php7/php7.y:3342 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -6111,67 +6103,67 @@ yydefault: } case 385: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3357 + //line php7/php7.y:3352 { yyVAL.node = yyDollar[1].node } case 386: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3362 + //line php7/php7.y:3357 { yyVAL.node = yyDollar[1].node } case 387: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3364 + //line php7/php7.y:3359 { yyVAL.node = yyDollar[1].node } case 388: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3369 + //line php7/php7.y:3364 { yyVAL.node = nil } case 389: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3371 + //line php7/php7.y:3366 { yyVAL.node = yyDollar[2].node } case 390: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3376 + //line php7/php7.y:3371 { yyVAL.list = []node.Node{} } case 391: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3378 + //line php7/php7.y:3373 { yyVAL.list = []node.Node{scalar.NewEncapsedStringPart(yyDollar[1].token.Value)} } case 392: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3380 + //line php7/php7.y:3375 { yyVAL.list = yyDollar[1].list } case 393: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3385 + //line php7/php7.y:3380 { yyVAL.node = nil } case 394: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3387 + //line php7/php7.y:3382 { yyVAL.node = yyDollar[1].node } case 395: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3392 + //line php7/php7.y:3387 { yyVAL.node = expr.NewArray(yyDollar[3].list) @@ -6185,7 +6177,7 @@ yydefault: } case 396: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3404 + //line php7/php7.y:3399 { yyVAL.node = expr.NewShortArray(yyDollar[2].list) @@ -6198,7 +6190,7 @@ yydefault: } case 397: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3415 + //line php7/php7.y:3410 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) @@ -6210,7 +6202,7 @@ yydefault: } case 398: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3428 + //line php7/php7.y:3423 { yyVAL.node = scalar.NewLnumber(yyDollar[1].token.Value) @@ -6222,7 +6214,7 @@ yydefault: } case 399: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3438 + //line php7/php7.y:3433 { yyVAL.node = scalar.NewDnumber(yyDollar[1].token.Value) @@ -6234,7 +6226,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3448 + //line php7/php7.y:3443 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6246,7 +6238,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3458 + //line php7/php7.y:3453 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6258,7 +6250,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3468 + //line php7/php7.y:3463 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6270,7 +6262,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3478 + //line php7/php7.y:3473 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6282,7 +6274,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3488 + //line php7/php7.y:3483 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6294,7 +6286,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3498 + //line php7/php7.y:3493 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6306,7 +6298,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3508 + //line php7/php7.y:3503 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6318,7 +6310,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3518 + //line php7/php7.y:3513 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6330,7 +6322,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3528 + //line php7/php7.y:3523 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, []node.Node{encapsed}) @@ -6344,7 +6336,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3540 + //line php7/php7.y:3535 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, nil) @@ -6356,7 +6348,7 @@ yydefault: } case 410: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3550 + //line php7/php7.y:3545 { yyVAL.node = scalar.NewEncapsed(yyDollar[2].list) @@ -6368,7 +6360,7 @@ yydefault: } case 411: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3560 + //line php7/php7.y:3555 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, yyDollar[2].list) @@ -6380,19 +6372,19 @@ yydefault: } case 412: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3570 + //line php7/php7.y:3565 { yyVAL.node = yyDollar[1].node } case 413: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3572 + //line php7/php7.y:3567 { yyVAL.node = yyDollar[1].node } case 414: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3577 + //line php7/php7.y:3572 { yyVAL.node = expr.NewConstFetch(yyDollar[1].node) @@ -6401,7 +6393,7 @@ yydefault: } case 415: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3584 + //line php7/php7.y:3579 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -6416,7 +6408,7 @@ yydefault: } case 416: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3597 + //line php7/php7.y:3592 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -6431,43 +6423,43 @@ yydefault: } case 417: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3613 + //line php7/php7.y:3608 { yyVAL.node = yyDollar[1].node } case 418: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3615 + //line php7/php7.y:3610 { yyVAL.node = yyDollar[1].node } case 419: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3620 + //line php7/php7.y:3615 { yyVAL.node = nil } case 420: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3622 + //line php7/php7.y:3617 { yyVAL.node = yyDollar[1].node } case 421: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3627 + //line php7/php7.y:3622 { yyVAL.node = yyDollar[1].node } case 422: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3632 + //line php7/php7.y:3627 { yyVAL.node = yyDollar[1].node } case 423: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3634 + //line php7/php7.y:3629 { yyVAL.node = yyDollar[2].node @@ -6477,19 +6469,19 @@ yydefault: } case 424: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3642 + //line php7/php7.y:3637 { yyVAL.node = yyDollar[1].node } case 425: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3647 + //line php7/php7.y:3642 { yyVAL.node = yyDollar[1].node } case 426: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3649 + //line php7/php7.y:3644 { yyVAL.node = yyDollar[2].node @@ -6499,19 +6491,19 @@ yydefault: } case 427: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3657 + //line php7/php7.y:3652 { yyVAL.node = yyDollar[1].node } case 428: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3662 + //line php7/php7.y:3657 { yyVAL.node = yyDollar[1].node } case 429: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3664 + //line php7/php7.y:3659 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -6524,7 +6516,7 @@ yydefault: } case 430: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3675 + //line php7/php7.y:3670 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -6537,7 +6529,7 @@ yydefault: } case 431: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3686 + //line php7/php7.y:3681 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -6550,7 +6542,7 @@ yydefault: } case 432: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3697 + //line php7/php7.y:3692 { yyVAL.node = expr.NewMethodCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) @@ -6562,25 +6554,25 @@ yydefault: } case 433: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3707 + //line php7/php7.y:3702 { yyVAL.node = yyDollar[1].node } case 434: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3712 + //line php7/php7.y:3707 { yyVAL.node = yyDollar[1].node } case 435: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3714 + //line php7/php7.y:3709 { yyVAL.node = yyDollar[1].node } case 436: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3716 + //line php7/php7.y:3711 { yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -6592,7 +6584,7 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3729 + //line php7/php7.y:3724 { name := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yyVAL.node = expr.NewVariable(name) @@ -6606,7 +6598,7 @@ yydefault: } case 438: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3741 + //line php7/php7.y:3736 { yyVAL.node = expr.NewVariable(yyDollar[3].node) @@ -6620,7 +6612,7 @@ yydefault: } case 439: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3753 + //line php7/php7.y:3748 { yyVAL.node = expr.NewVariable(yyDollar[2].node) @@ -6632,7 +6624,7 @@ yydefault: } case 440: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3766 + //line php7/php7.y:3761 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -6644,7 +6636,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3776 + //line php7/php7.y:3771 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -6656,13 +6648,13 @@ yydefault: } case 442: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3789 + //line php7/php7.y:3784 { yyVAL.node = yyDollar[1].node } case 443: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3791 + //line php7/php7.y:3786 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -6675,7 +6667,7 @@ yydefault: } case 444: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3802 + //line php7/php7.y:3797 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -6688,7 +6680,7 @@ yydefault: } case 445: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3813 + //line php7/php7.y:3808 { yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -6700,7 +6692,7 @@ yydefault: } case 446: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3823 + //line php7/php7.y:3818 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -6712,7 +6704,7 @@ yydefault: } case 447: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3833 + //line php7/php7.y:3828 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -6724,7 +6716,7 @@ yydefault: } case 448: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3846 + //line php7/php7.y:3841 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -6736,7 +6728,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3856 + //line php7/php7.y:3851 { yyVAL.node = yyDollar[2].node @@ -6746,13 +6738,13 @@ yydefault: } case 450: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3864 + //line php7/php7.y:3859 { yyVAL.node = yyDollar[1].node } case 451: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3869 + //line php7/php7.y:3864 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -6764,7 +6756,7 @@ yydefault: } case 452: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3879 + //line php7/php7.y:3874 { yyVAL.node = yyDollar[2].node @@ -6774,13 +6766,13 @@ yydefault: } case 453: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3887 + //line php7/php7.y:3882 { yyVAL.node = yyDollar[1].node } case 454: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3892 + //line php7/php7.y:3887 { if yyDollar[1].list[len(yyDollar[1].list)-1] == nil { yyVAL.list = yyDollar[1].list[:len(yyDollar[1].list)-1] @@ -6790,19 +6782,19 @@ yydefault: } case 455: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3903 + //line php7/php7.y:3898 { yyVAL.node = nil } case 456: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3905 + //line php7/php7.y:3900 { yyVAL.node = yyDollar[1].node } case 457: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3910 + //line php7/php7.y:3905 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -6811,13 +6803,13 @@ yydefault: } case 458: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3917 + //line php7/php7.y:3912 { yyVAL.list = []node.Node{yyDollar[1].node} } case 459: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3922 + //line php7/php7.y:3917 { yyVAL.node = expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node, false) @@ -6829,7 +6821,7 @@ yydefault: } case 460: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3932 + //line php7/php7.y:3927 { yyVAL.node = expr.NewArrayItem(nil, yyDollar[1].node, false) @@ -6838,7 +6830,7 @@ yydefault: } case 461: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3939 + //line php7/php7.y:3934 { yyVAL.node = expr.NewArrayItem(yyDollar[1].node, yyDollar[4].node, true) @@ -6851,7 +6843,7 @@ yydefault: } case 462: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3950 + //line php7/php7.y:3945 { yyVAL.node = expr.NewArrayItem(nil, yyDollar[2].node, true) @@ -6863,7 +6855,7 @@ yydefault: } case 463: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:3960 + //line php7/php7.y:3955 { // TODO: Cannot use list() as standalone expression list := expr.NewList(yyDollar[5].list) @@ -6881,7 +6873,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3976 + //line php7/php7.y:3971 { // TODO: Cannot use list() as standalone expression list := expr.NewList(yyDollar[3].list) @@ -6898,13 +6890,13 @@ yydefault: } case 465: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3994 + //line php7/php7.y:3989 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 466: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3996 + //line php7/php7.y:3991 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yyVAL.list = append(yyDollar[1].list, encapsed) @@ -6917,13 +6909,13 @@ yydefault: } case 467: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4007 + //line php7/php7.y:4002 { yyVAL.list = []node.Node{yyDollar[1].node} } case 468: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4009 + //line php7/php7.y:4004 { encapsed := scalar.NewEncapsedStringPart(yyDollar[1].token.Value) yyVAL.list = []node.Node{encapsed, yyDollar[2].node} @@ -6936,7 +6928,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4023 + //line php7/php7.y:4018 { name := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yyVAL.node = expr.NewVariable(name) @@ -6950,7 +6942,7 @@ yydefault: } case 470: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4035 + //line php7/php7.y:4030 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -6968,7 +6960,7 @@ yydefault: } case 471: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4051 + //line php7/php7.y:4046 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -6988,7 +6980,7 @@ yydefault: } case 472: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4069 + //line php7/php7.y:4064 { yyVAL.node = expr.NewVariable(yyDollar[2].node) @@ -7001,7 +6993,7 @@ yydefault: } case 473: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4080 + //line php7/php7.y:4075 { name := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = expr.NewVariable(name) @@ -7017,7 +7009,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:4094 + //line php7/php7.y:4089 { identifier := node.NewIdentifier(yyDollar[2].token.Value) variable := expr.NewVariable(identifier) @@ -7037,13 +7029,13 @@ yydefault: } case 475: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4112 + //line php7/php7.y:4107 { yyVAL.node = yyDollar[2].node } case 476: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4118 + //line php7/php7.y:4113 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) @@ -7055,7 +7047,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4128 + //line php7/php7.y:4123 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(yyDollar[1].token.Value); err == nil { @@ -7072,7 +7064,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4143 + //line php7/php7.y:4138 { var lnumber *scalar.Lnumber // TODO: add option to handle 64 bit integer @@ -7103,7 +7095,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4172 + //line php7/php7.y:4167 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yyVAL.node = expr.NewVariable(identifier) @@ -7117,7 +7109,7 @@ yydefault: } case 480: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:4187 + //line php7/php7.y:4182 { yyVAL.node = expr.NewIsset(yyDollar[3].list) @@ -7134,7 +7126,7 @@ yydefault: } case 481: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4202 + //line php7/php7.y:4197 { yyVAL.node = expr.NewEmpty(yyDollar[3].node) @@ -7148,7 +7140,7 @@ yydefault: } case 482: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4214 + //line php7/php7.y:4209 { yyVAL.node = expr.NewInclude(yyDollar[2].node) @@ -7160,7 +7152,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4224 + //line php7/php7.y:4219 { yyVAL.node = expr.NewIncludeOnce(yyDollar[2].node) @@ -7172,7 +7164,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4234 + //line php7/php7.y:4229 { yyVAL.node = expr.NewEval(yyDollar[3].node) @@ -7186,7 +7178,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4246 + //line php7/php7.y:4241 { yyVAL.node = expr.NewRequire(yyDollar[2].node) @@ -7198,7 +7190,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4256 + //line php7/php7.y:4251 { yyVAL.node = expr.NewRequireOnce(yyDollar[2].node) @@ -7210,13 +7202,13 @@ yydefault: } case 487: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4269 + //line php7/php7.y:4264 { yyVAL.list = []node.Node{yyDollar[1].node} } case 488: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4271 + //line php7/php7.y:4266 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -7225,7 +7217,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4281 + //line php7/php7.y:4276 { yyVAL.node = yyDollar[1].node } diff --git a/php7/php7.y b/php7/php7.y index 6f70528..9cee1c3 100644 --- a/php7/php7.y +++ b/php7/php7.y @@ -20,11 +20,15 @@ import ( %} %union{ - node node.Node - token *scanner.Token - list []node.Node - foreachVariable foreachVariable - str string + node node.Node + token *scanner.Token + list []node.Node + foreachVariable foreachVariable + str string + + ClassExtends *stmt.ClassExtends + ClassImplements *stmt.ClassImplements + InterfaceExtends *stmt.InterfaceExtends } %type $unk @@ -243,7 +247,7 @@ import ( %type const_decl inner_statement %type expr optional_expr %type declare_statement finally_statement unset_variable variable -%type extends_from parameter optional_type argument expr_without_variable global_var +%type parameter optional_type argument expr_without_variable global_var %type static_var class_statement trait_adaptation trait_precedence trait_alias %type absolute_trait_method_reference trait_method_reference property echo_expr %type new_expr anonymous_class class_name class_name_reference simple_variable @@ -265,6 +269,9 @@ import ( %type switch_case_list %type method_body %type foreach_statement for_statement while_statement +%type extends_from +%type implements_list +%type interface_extends_list %type member_modifier %type use_type @@ -278,7 +285,7 @@ import ( %type use_declarations lexical_var_list lexical_vars isset_variables non_empty_array_pair_list %type array_pair_list non_empty_argument_list top_statement_list %type inner_statement_list parameter_list non_empty_parameter_list class_statement_list -%type interface_extends_list implements_list method_modifiers variable_modifiers +%type method_modifiers variable_modifiers %type non_empty_member_modifiers name_list class_modifiers %type backup_doc_comment @@ -1199,12 +1206,6 @@ class_declaration_statement: // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.ClassToken) yylex.(*Parser).comments.AddFromToken(name, $3, comment.StringToken) - if $4 != nil { - yylex.(*Parser).comments.AddFromChildNode($$, $4) - } - if $5 != nil { - yylex.(*Parser).comments.AddFromChildNode($$, firstNode($5)) - } yylex.(*Parser).comments.AddFromToken($$, $7, comment.OpenCurlyBracesToken) yylex.(*Parser).comments.AddFromToken($$, $9, comment.CloseCurlyBracesToken) } @@ -1220,12 +1221,6 @@ class_declaration_statement: // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.ClassToken) yylex.(*Parser).comments.AddFromToken(name, $2, comment.StringToken) - if $3 != nil { - yylex.(*Parser).comments.AddFromChildNode($$, $3) - } - if $4 != nil { - yylex.(*Parser).comments.AddFromChildNode($$, firstNode($4)) - } yylex.(*Parser).comments.AddFromToken($$, $6, comment.OpenCurlyBracesToken) yylex.(*Parser).comments.AddFromToken($$, $8, comment.CloseCurlyBracesToken) } @@ -1292,9 +1287,6 @@ interface_declaration_statement: // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.InterfaceToken) yylex.(*Parser).comments.AddFromToken(name, $2, comment.StringToken) - if $3 != nil { - yylex.(*Parser).comments.AddFromChildNode($$, firstNode($3)) - } yylex.(*Parser).comments.AddFromToken($$, $5, comment.OpenCurlyBracesToken) yylex.(*Parser).comments.AddFromToken($$, $7, comment.CloseCurlyBracesToken) } @@ -1305,7 +1297,10 @@ extends_from: { $$ = nil } | T_EXTENDS name { - $$ = $2; + $$ = stmt.NewClassExtends($2); + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.ExtendsToken) @@ -1317,10 +1312,13 @@ interface_extends_list: { $$ = nil } | T_EXTENDS name_list { - $$ = $2; + $$ = stmt.NewInterfaceExtends($2); + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) // save comments - yylex.(*Parser).comments.AddFromToken(firstNode($$), $1, comment.ExtendsToken) + yylex.(*Parser).comments.AddFromToken($$, $1, comment.ExtendsToken) } ; @@ -1329,10 +1327,13 @@ implements_list: { $$ = nil } | T_IMPLEMENTS name_list { - $$ = $2; + $$ = stmt.NewClassImplements($2); + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) // save comments - yylex.(*Parser).comments.AddFromToken(firstNode($$), $1, comment.ImplementsToken) + yylex.(*Parser).comments.AddFromToken($$, $1, comment.ImplementsToken) } ; @@ -2432,12 +2433,6 @@ anonymous_class: // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.ClassToken) - if $3 != nil { - yylex.(*Parser).comments.AddFromChildNode($$, $3) - } - if $4 != nil { - yylex.(*Parser).comments.AddFromChildNode($$, firstNode($4)) - } yylex.(*Parser).comments.AddFromToken($$, $6, comment.OpenCurlyBracesToken) yylex.(*Parser).comments.AddFromToken($$, $8, comment.CloseCurlyBracesToken) } diff --git a/php7/php7_test.go b/php7/php7_test.go index 5db2890..0d7cbc9 100644 --- a/php7/php7_test.go +++ b/php7/php7_test.go @@ -925,20 +925,8 @@ func TestPhp7(t *testing.T) { Modifiers: []node.Node{ &node.Identifier{Value: "final"}, }, - Extends: &name.Name{ - Parts: []node.Node{ - &name.NamePart{Value: "bar"}, - }, - }, - Stmts: []node.Node{}, - }, - &stmt.Class{ - ClassName: &node.Identifier{Value: "foo"}, - Modifiers: []node.Node{ - &node.Identifier{Value: "final"}, - }, - Implements: []node.Node{ - &name.Name{ + Extends: &stmt.ClassExtends{ + ClassName: &name.Name{ Parts: []node.Node{ &name.NamePart{Value: "bar"}, }, @@ -951,15 +939,33 @@ func TestPhp7(t *testing.T) { Modifiers: []node.Node{ &node.Identifier{Value: "final"}, }, - Implements: []node.Node{ - &name.Name{ - Parts: []node.Node{ - &name.NamePart{Value: "bar"}, + Implements: &stmt.ClassImplements{ + InterfaceNames: []node.Node{ + &name.Name{ + Parts: []node.Node{ + &name.NamePart{Value: "bar"}, + }, }, }, - &name.Name{ - Parts: []node.Node{ - &name.NamePart{Value: "baz"}, + }, + Stmts: []node.Node{}, + }, + &stmt.Class{ + ClassName: &node.Identifier{Value: "foo"}, + Modifiers: []node.Node{ + &node.Identifier{Value: "final"}, + }, + Implements: &stmt.ClassImplements{ + InterfaceNames: []node.Node{ + &name.Name{ + Parts: []node.Node{ + &name.NamePart{Value: "bar"}, + }, + }, + &name.Name{ + Parts: []node.Node{ + &name.NamePart{Value: "baz"}, + }, }, }, }, @@ -970,20 +976,24 @@ func TestPhp7(t *testing.T) { Class: &stmt.Class{ ArgumentList: &node.ArgumentList{}, - Extends: &name.Name{ - Parts: []node.Node{ - &name.NamePart{Value: "foo"}, - }, - }, - Implements: []node.Node{ - &name.Name{ + Extends: &stmt.ClassExtends{ + ClassName: &name.Name{ Parts: []node.Node{ - &name.NamePart{Value: "bar"}, + &name.NamePart{Value: "foo"}, }, }, - &name.Name{ - Parts: []node.Node{ - &name.NamePart{Value: "baz"}, + }, + Implements: &stmt.ClassImplements{ + InterfaceNames: []node.Node{ + &name.Name{ + Parts: []node.Node{ + &name.NamePart{Value: "bar"}, + }, + }, + &name.Name{ + Parts: []node.Node{ + &name.NamePart{Value: "baz"}, + }, }, }, }, @@ -1294,10 +1304,12 @@ func TestPhp7(t *testing.T) { &stmt.Interface{ PhpDocComment: "", InterfaceName: &node.Identifier{Value: "Foo"}, - Extends: []node.Node{ - &name.Name{ - Parts: []node.Node{ - &name.NamePart{Value: "Bar"}, + Extends: &stmt.InterfaceExtends{ + InterfaceNames: []node.Node{ + &name.Name{ + Parts: []node.Node{ + &name.NamePart{Value: "Bar"}, + }, }, }, }, @@ -1306,15 +1318,17 @@ func TestPhp7(t *testing.T) { &stmt.Interface{ PhpDocComment: "", InterfaceName: &node.Identifier{Value: "Foo"}, - Extends: []node.Node{ - &name.Name{ - Parts: []node.Node{ - &name.NamePart{Value: "Bar"}, + Extends: &stmt.InterfaceExtends{ + InterfaceNames: []node.Node{ + &name.Name{ + Parts: []node.Node{ + &name.NamePart{Value: "Bar"}, + }, }, - }, - &name.Name{ - Parts: []node.Node{ - &name.NamePart{Value: "Baz"}, + &name.Name{ + Parts: []node.Node{ + &name.NamePart{Value: "Baz"}, + }, }, }, }, diff --git a/printer/printer.go b/printer/printer.go index df62c20..bccbb45 100644 --- a/printer/printer.go +++ b/printer/printer.go @@ -1553,12 +1553,12 @@ func (p *Printer) printStmtClass(n node.Node) { if nn.Extends != nil { io.WriteString(p.w, " extends ") - p.Print(nn.Extends) + p.Print(nn.Extends.ClassName) } if nn.Implements != nil { io.WriteString(p.w, " implements ") - p.joinPrint(", ", nn.Implements) + p.joinPrint(", ", nn.Implements.InterfaceNames) } io.WriteString(p.w, "\n") @@ -1910,7 +1910,7 @@ func (p *Printer) printStmtInterface(n node.Node) { if nn.Extends != nil { io.WriteString(p.w, " extends ") - p.joinPrint(", ", nn.Extends) + p.joinPrint(", ", nn.Extends.InterfaceNames) } io.WriteString(p.w, "\n") diff --git a/printer/printer_test.go b/printer/printer_test.go index a34997e..e36d781 100644 --- a/printer/printer_test.go +++ b/printer/printer_test.go @@ -35,9 +35,11 @@ func TestPrintFile(t *testing.T) { &name.NamePart{Value: "Bar"}, }, }, - Extends: &name.Name{ - Parts: []node.Node{ - &name.NamePart{Value: "Baz"}, + Extends: &stmt.ClassExtends{ + ClassName: &name.Name{ + Parts: []node.Node{ + &name.NamePart{Value: "Baz"}, + }, }, }, Stmts: []node.Node{ @@ -2482,10 +2484,14 @@ func TestPrintStmtClass(t *testing.T) { &stmt.Class{ Modifiers: []node.Node{&node.Identifier{Value: "abstract"}}, ClassName: &node.Identifier{Value: "Foo"}, - Extends: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Bar"}}}, - Implements: []node.Node{ - &name.Name{Parts: []node.Node{&name.NamePart{Value: "Baz"}}}, - &name.Name{Parts: []node.Node{&name.NamePart{Value: "Quuz"}}}, + Extends: &stmt.ClassExtends{ + ClassName: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Bar"}}}, + }, + Implements: &stmt.ClassImplements{ + InterfaceNames: []node.Node{ + &name.Name{Parts: []node.Node{&name.NamePart{Value: "Baz"}}}, + &name.Name{Parts: []node.Node{&name.NamePart{Value: "Quuz"}}}, + }, }, Stmts: []node.Node{ &stmt.ClassConstList{ @@ -2533,10 +2539,14 @@ func TestPrintStmtAnonymousClass(t *testing.T) { }, }, }, - Extends: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Bar"}}}, - Implements: []node.Node{ - &name.Name{Parts: []node.Node{&name.NamePart{Value: "Baz"}}}, - &name.Name{Parts: []node.Node{&name.NamePart{Value: "Quuz"}}}, + Extends: &stmt.ClassExtends{ + ClassName: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Bar"}}}, + }, + Implements: &stmt.ClassImplements{ + InterfaceNames: []node.Node{ + &name.Name{Parts: []node.Node{&name.NamePart{Value: "Baz"}}}, + &name.Name{Parts: []node.Node{&name.NamePart{Value: "Quuz"}}}, + }, }, Stmts: []node.Node{ &stmt.ClassConstList{ @@ -3382,9 +3392,11 @@ func TestPrintInterface(t *testing.T) { Stmts: []node.Node{ &stmt.Interface{ InterfaceName: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}}, - Extends: []node.Node{ - &name.Name{Parts: []node.Node{&name.NamePart{Value: "Bar"}}}, - &name.Name{Parts: []node.Node{&name.NamePart{Value: "Baz"}}}, + Extends: &stmt.InterfaceExtends{ + InterfaceNames: []node.Node{ + &name.Name{Parts: []node.Node{&name.NamePart{Value: "Bar"}}}, + &name.Name{Parts: []node.Node{&name.NamePart{Value: "Baz"}}}, + }, }, Stmts: []node.Node{ &stmt.ClassMethod{ diff --git a/visitor/namespace_resolver.go b/visitor/namespace_resolver.go index 056aff1..7bac124 100644 --- a/visitor/namespace_resolver.go +++ b/visitor/namespace_resolver.go @@ -66,11 +66,13 @@ func (nsr *NamespaceResolver) EnterNode(w walker.Walkable) bool { case *stmt.Class: if n.Extends != nil { - nsr.ResolveName(n.Extends, "") + nsr.ResolveName(n.Extends.ClassName, "") } - for _, interfaceName := range n.Implements { - nsr.ResolveName(interfaceName, "") + if n.Implements != nil { + for _, interfaceName := range n.Implements.InterfaceNames { + nsr.ResolveName(interfaceName, "") + } } if n.ClassName != nil { @@ -78,8 +80,10 @@ func (nsr *NamespaceResolver) EnterNode(w walker.Walkable) bool { } case *stmt.Interface: - for _, interfaceName := range n.Extends { - nsr.ResolveName(interfaceName, "") + if n.Extends != nil { + for _, interfaceName := range n.Extends.InterfaceNames { + nsr.ResolveName(interfaceName, "") + } } nsr.AddNamespacedName(n, n.InterfaceName.(*node.Identifier).Value) diff --git a/visitor/namespace_resolver_test.go b/visitor/namespace_resolver_test.go index a6f3131..4eb7700 100644 --- a/visitor/namespace_resolver_test.go +++ b/visitor/namespace_resolver_test.go @@ -411,9 +411,13 @@ func TestResolveClassName(t *testing.T) { class := &stmt.Class{ PhpDocComment: "", ClassName: &node.Identifier{Value: "A"}, - Extends: nameAB, - Implements: []node.Node{ - nameBC, + Extends: &stmt.ClassExtends{ + ClassName: nameAB, + }, + Implements: &stmt.ClassImplements{ + InterfaceNames: []node.Node{ + nameBC, + }, }, } @@ -442,9 +446,11 @@ func TestResolveInterfaceName(t *testing.T) { interfaceNode := &stmt.Interface{ PhpDocComment: "", InterfaceName: &node.Identifier{Value: "A"}, - Extends: []node.Node{ - nameAB, - nameBC, + Extends: &stmt.InterfaceExtends{ + InterfaceNames: []node.Node{ + nameAB, + nameBC, + }, }, }