From 8fc4c60bfeef790351ed231c0b63d552bb804a57 Mon Sep 17 00:00:00 2001 From: z7zmey Date: Sun, 29 Apr 2018 19:58:49 +0300 Subject: [PATCH] create ArgumentList node --- node/expr/assign/t_assign_op_test.go | 12 +- node/expr/n_function_call.go | 18 +- node/expr/n_method_call.go | 20 +- node/expr/n_new.go | 18 +- node/expr/n_static_call.go | 20 +- node/expr/t_function_call_test.go | 48 +- node/expr/t_method_call_test.go | 6 +- node/expr/t_new_test.go | 12 +- node/expr/t_static_call_test.go | 22 +- node/expr/t_visitor_test.go | 28 +- node/n_argument_list.go | 41 + node/name/t_name_test.go | 6 +- node/scalar/t_encapsed_test.go | 6 +- node/stmt/n_class.go | 16 +- node/stmt/t_class_test.go | 5 +- node/stmt/t_global_test.go | 2 +- node/stmt/t_visitor_test.go | 10 +- node/t_node_test.go | 104 +- node/t_visitor_test.go | 9 + php5/php5.go | 1348 +++++++++++++------------- php5/php5.y | 75 +- php5/php5_test.go | 182 ++-- php7/php7.go | 1098 ++++++++++----------- php7/php7.y | 449 ++++----- php7/php7_test.go | 155 +-- printer/printer.go | 14 +- printer/printer_test.go | 80 +- visitor/namespace_resolver_test.go | 38 +- 28 files changed, 2010 insertions(+), 1832 deletions(-) create mode 100644 node/n_argument_list.go diff --git a/node/expr/assign/t_assign_op_test.go b/node/expr/assign/t_assign_op_test.go index a901fae..90e3527 100644 --- a/node/expr/assign/t_assign_op_test.go +++ b/node/expr/assign/t_assign_op_test.go @@ -99,11 +99,13 @@ func TestReferenceArgs(t *testing.T) { &name.NamePart{Value: "Foo"}, }, }, - Arguments: []node.Node{ - &node.Argument{ - Variadic: false, - IsReference: false, - Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{ + Variadic: false, + IsReference: false, + Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}, + }, }, }, }, diff --git a/node/expr/n_function_call.go b/node/expr/n_function_call.go index 22f2d07..2d17fdc 100644 --- a/node/expr/n_function_call.go +++ b/node/expr/n_function_call.go @@ -7,15 +7,15 @@ import ( // FunctionCall node type FunctionCall struct { - Function node.Node - Arguments []node.Node + Function node.Node + ArgumentList *node.ArgumentList } // NewFunctionCall node constructor -func NewFunctionCall(Function node.Node, Arguments []node.Node) *FunctionCall { +func NewFunctionCall(Function node.Node, ArgumentList *node.ArgumentList) *FunctionCall { return &FunctionCall{ Function, - Arguments, + ArgumentList, } } @@ -36,13 +36,9 @@ func (n *FunctionCall) Walk(v walker.Visitor) { n.Function.Walk(vv) } - if n.Arguments != nil { - vv := v.GetChildrenVisitor("Arguments") - for _, nn := range n.Arguments { - if nn != nil { - nn.Walk(vv) - } - } + if n.ArgumentList != nil { + vv := v.GetChildrenVisitor("ArgumentList") + n.ArgumentList.Walk(vv) } v.LeaveNode(n) diff --git a/node/expr/n_method_call.go b/node/expr/n_method_call.go index 8746418..1bcc4fb 100644 --- a/node/expr/n_method_call.go +++ b/node/expr/n_method_call.go @@ -7,17 +7,17 @@ import ( // MethodCall node type MethodCall struct { - Variable node.Node - Method node.Node - Arguments []node.Node + Variable node.Node + Method node.Node + ArgumentList *node.ArgumentList } // NewMethodCall node constructor -func NewMethodCall(Variable node.Node, Method node.Node, Arguments []node.Node) *MethodCall { +func NewMethodCall(Variable node.Node, Method node.Node, ArgumentList *node.ArgumentList) *MethodCall { return &MethodCall{ Variable, Method, - Arguments, + ArgumentList, } } @@ -43,13 +43,9 @@ func (n *MethodCall) Walk(v walker.Visitor) { n.Method.Walk(vv) } - if n.Arguments != nil { - vv := v.GetChildrenVisitor("Arguments") - for _, nn := range n.Arguments { - if nn != nil { - nn.Walk(vv) - } - } + if n.ArgumentList != nil { + vv := v.GetChildrenVisitor("ArgumentList") + n.ArgumentList.Walk(vv) } v.LeaveNode(n) diff --git a/node/expr/n_new.go b/node/expr/n_new.go index d773daf..c68b102 100644 --- a/node/expr/n_new.go +++ b/node/expr/n_new.go @@ -7,15 +7,15 @@ import ( // New node type New struct { - Class node.Node - Arguments []node.Node + Class node.Node + ArgumentList *node.ArgumentList } // NewNew node constructor -func NewNew(Class node.Node, Arguments []node.Node) *New { +func NewNew(Class node.Node, ArgumentList *node.ArgumentList) *New { return &New{ Class, - Arguments, + ArgumentList, } } @@ -36,13 +36,9 @@ func (n *New) Walk(v walker.Visitor) { n.Class.Walk(vv) } - if n.Arguments != nil { - vv := v.GetChildrenVisitor("Arguments") - for _, nn := range n.Arguments { - if nn != nil { - nn.Walk(vv) - } - } + if n.ArgumentList != nil { + vv := v.GetChildrenVisitor("ArgumentList") + n.ArgumentList.Walk(vv) } v.LeaveNode(n) diff --git a/node/expr/n_static_call.go b/node/expr/n_static_call.go index a9cded4..0324a6c 100644 --- a/node/expr/n_static_call.go +++ b/node/expr/n_static_call.go @@ -7,17 +7,17 @@ import ( // StaticCall node type StaticCall struct { - Class node.Node - Call node.Node - Arguments []node.Node + Class node.Node + Call node.Node + ArgumentList *node.ArgumentList } // NewStaticCall node constructor -func NewStaticCall(Class node.Node, Call node.Node, Arguments []node.Node) *StaticCall { +func NewStaticCall(Class node.Node, Call node.Node, ArgumentList *node.ArgumentList) *StaticCall { return &StaticCall{ Class, Call, - Arguments, + ArgumentList, } } @@ -43,13 +43,9 @@ func (n *StaticCall) Walk(v walker.Visitor) { n.Call.Walk(vv) } - if n.Arguments != nil { - vv := v.GetChildrenVisitor("Arguments") - for _, nn := range n.Arguments { - if nn != nil { - nn.Walk(vv) - } - } + if n.ArgumentList != nil { + vv := v.GetChildrenVisitor("ArgumentList") + n.ArgumentList.Walk(vv) } v.LeaveNode(n) diff --git a/node/expr/t_function_call_test.go b/node/expr/t_function_call_test.go index 03d4c33..8bb96dc 100644 --- a/node/expr/t_function_call_test.go +++ b/node/expr/t_function_call_test.go @@ -29,7 +29,7 @@ func TestFunctionCall(t *testing.T) { &name.NamePart{Value: "foo"}, }, }, - Arguments: []node.Node{}, + ArgumentList: &node.ArgumentList{}, }, }, }, @@ -58,7 +58,7 @@ func TestFunctionCallRelative(t *testing.T) { &name.NamePart{Value: "foo"}, }, }, - Arguments: []node.Node{}, + ArgumentList: &node.ArgumentList{}, }, }, }, @@ -87,12 +87,14 @@ func TestFunctionFullyQualified(t *testing.T) { &name.NamePart{Value: "foo"}, }, }, - Arguments: []node.Node{ - &node.Argument{ - Variadic: false, - IsReference: false, - Expr: &expr.ShortArray{ - Items: []node.Node{}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{ + Variadic: false, + IsReference: false, + Expr: &expr.ShortArray{ + Items: []node.Node{}, + }, }, }, }, @@ -120,12 +122,14 @@ func TestFunctionCallVar(t *testing.T) { &stmt.Expression{ Expr: &expr.FunctionCall{ Function: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, - Arguments: []node.Node{ - &node.Argument{ - Variadic: false, - IsReference: false, - Expr: &expr.Yield{ - Value: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{ + Variadic: false, + IsReference: false, + Expr: &expr.Yield{ + Value: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + }, }, }, }, @@ -157,13 +161,15 @@ func TestFunctionCallExprArg(t *testing.T) { &name.NamePart{Value: "ceil"}, }, }, - Arguments: []node.Node{ - &node.Argument{ - Variadic: false, - IsReference: false, - Expr: &binary.Div{ - Left: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, - Right: &scalar.Lnumber{Value: "3"}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{ + Variadic: false, + IsReference: false, + Expr: &binary.Div{ + Left: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, + Right: &scalar.Lnumber{Value: "3"}, + }, }, }, }, diff --git a/node/expr/t_method_call_test.go b/node/expr/t_method_call_test.go index bcd5376..05ae22a 100644 --- a/node/expr/t_method_call_test.go +++ b/node/expr/t_method_call_test.go @@ -19,9 +19,9 @@ func TestMethodCall(t *testing.T) { Stmts: []node.Node{ &stmt.Expression{ Expr: &expr.MethodCall{ - Variable: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, - Method: &node.Identifier{Value: "foo"}, - Arguments: []node.Node{}, + Variable: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + Method: &node.Identifier{Value: "foo"}, + ArgumentList: &node.ArgumentList{}, }, }, }, diff --git a/node/expr/t_new_test.go b/node/expr/t_new_test.go index 656abdf..e286459 100644 --- a/node/expr/t_new_test.go +++ b/node/expr/t_new_test.go @@ -54,7 +54,7 @@ func TestNewRelative(t *testing.T) { &name.NamePart{Value: "Foo"}, }, }, - Arguments: []node.Node{}, + ArgumentList: &node.ArgumentList{}, }, }, }, @@ -83,7 +83,7 @@ func TestNewFullyQualified(t *testing.T) { &name.NamePart{Value: "Foo"}, }, }, - Arguments: []node.Node{}, + ArgumentList: &node.ArgumentList{}, }, }, }, @@ -109,9 +109,11 @@ func TestNewAnonymous(t *testing.T) { Expr: &expr.New{ Class: &stmt.Class{ PhpDocComment: "", - Args: []node.Node{ - &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, - &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, + &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + }, }, Stmts: []node.Node{}, }, diff --git a/node/expr/t_static_call_test.go b/node/expr/t_static_call_test.go index 4b03128..9d3601b 100644 --- a/node/expr/t_static_call_test.go +++ b/node/expr/t_static_call_test.go @@ -26,8 +26,8 @@ func TestStaticCall(t *testing.T) { &name.NamePart{Value: "Foo"}, }, }, - Call: &node.Identifier{Value: "bar"}, - Arguments: []node.Node{}, + Call: &node.Identifier{Value: "bar"}, + ArgumentList: &node.ArgumentList{}, }, }, }, @@ -56,8 +56,8 @@ func TestStaticCallRelative(t *testing.T) { &name.NamePart{Value: "Foo"}, }, }, - Call: &node.Identifier{Value: "bar"}, - Arguments: []node.Node{}, + Call: &node.Identifier{Value: "bar"}, + ArgumentList: &node.ArgumentList{}, }, }, }, @@ -86,8 +86,8 @@ func TestStaticCallFullyQualified(t *testing.T) { &name.NamePart{Value: "Foo"}, }, }, - Call: &node.Identifier{Value: "bar"}, - Arguments: []node.Node{}, + Call: &node.Identifier{Value: "bar"}, + ArgumentList: &node.ArgumentList{}, }, }, }, @@ -116,8 +116,8 @@ func TestStaticCallVar(t *testing.T) { &name.NamePart{Value: "Foo"}, }, }, - Call: &expr.Variable{VarName: &node.Identifier{Value: "bar"}}, - Arguments: []node.Node{}, + Call: &expr.Variable{VarName: &node.Identifier{Value: "bar"}}, + ArgumentList: &node.ArgumentList{}, }, }, }, @@ -141,9 +141,9 @@ func TestStaticCallVarVar(t *testing.T) { Stmts: []node.Node{ &stmt.Expression{ Expr: &expr.StaticCall{ - Class: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, - Call: &expr.Variable{VarName: &node.Identifier{Value: "bar"}}, - Arguments: []node.Node{}, + Class: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, + Call: &expr.Variable{VarName: &node.Identifier{Value: "bar"}}, + ArgumentList: &node.ArgumentList{}, }, }, }, diff --git a/node/expr/t_visitor_test.go b/node/expr/t_visitor_test.go index 89a9261..1434ee7 100644 --- a/node/expr/t_visitor_test.go +++ b/node/expr/t_visitor_test.go @@ -146,10 +146,10 @@ var nodesToTest = []struct { }, { &expr.FunctionCall{ - Function: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, - Arguments: []node.Node{&node.Argument{}}, + Function: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + ArgumentList: &node.ArgumentList{}, }, - []string{"Function", "Arguments"}, + []string{"Function", "ArgumentList"}, map[string]interface{}{}, }, { @@ -194,19 +194,19 @@ var nodesToTest = []struct { }, { &expr.MethodCall{ - Variable: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, - Method: &node.Identifier{Value: "foo"}, - Arguments: []node.Node{&node.Argument{}}, + Variable: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + Method: &node.Identifier{Value: "foo"}, + ArgumentList: &node.ArgumentList{}, }, - []string{"Variable", "Method", "Arguments"}, + []string{"Variable", "Method", "ArgumentList"}, map[string]interface{}{}, }, { &expr.New{ - Class: &name.Name{}, - Arguments: []node.Node{&node.Argument{}}, + Class: &name.Name{}, + ArgumentList: &node.ArgumentList{}, }, - []string{"Class", "Arguments"}, + []string{"Class", "ArgumentList"}, map[string]interface{}{}, }, { @@ -295,11 +295,11 @@ var nodesToTest = []struct { }, { &expr.StaticCall{ - Class: &name.Name{}, - Call: &node.Identifier{Value: "foo"}, - Arguments: []node.Node{&node.Argument{}}, + Class: &name.Name{}, + Call: &node.Identifier{Value: "foo"}, + ArgumentList: &node.ArgumentList{}, }, - []string{"Class", "Call", "Arguments"}, + []string{"Class", "Call", "ArgumentList"}, map[string]interface{}{}, }, { diff --git a/node/n_argument_list.go b/node/n_argument_list.go new file mode 100644 index 0000000..843030f --- /dev/null +++ b/node/n_argument_list.go @@ -0,0 +1,41 @@ +package node + +import ( + "github.com/z7zmey/php-parser/walker" +) + +// ArgumentList node +type ArgumentList struct { + Arguments []Node +} + +// NewArgumentList node constructor +func NewArgumentList(Arguments []Node) *ArgumentList { + return &ArgumentList{ + Arguments, + } +} + +// Attributes returns node attributes as map +func (n *ArgumentList) Attributes() map[string]interface{} { + return nil +} + +// Walk traverses nodes +// Walk is invoked recursively until v.EnterNode returns true +func (n *ArgumentList) Walk(v walker.Visitor) { + if v.EnterNode(n) == false { + return + } + + if n.Arguments != nil { + vv := v.GetChildrenVisitor("Arguments") + for _, nn := range n.Arguments { + if nn != nil { + nn.Walk(vv) + } + } + } + + v.LeaveNode(n) +} diff --git a/node/name/t_name_test.go b/node/name/t_name_test.go index 7cd1396..be8414f 100644 --- a/node/name/t_name_test.go +++ b/node/name/t_name_test.go @@ -38,7 +38,7 @@ func TestName(t *testing.T) { Function: &name.Name{ Parts: []node.Node{&name.NamePart{Value: "foo"}}, }, - Arguments: []node.Node{}, + ArgumentList: &node.ArgumentList{}, }, }, }, @@ -65,7 +65,7 @@ func TestFullyQualified(t *testing.T) { Function: &name.FullyQualified{ Parts: []node.Node{&name.NamePart{Value: "foo"}}, }, - Arguments: []node.Node{}, + ArgumentList: &node.ArgumentList{}, }, }, }, @@ -92,7 +92,7 @@ func TestRelative(t *testing.T) { Function: &name.Relative{ Parts: []node.Node{&name.NamePart{Value: "foo"}}, }, - Arguments: []node.Node{}, + ArgumentList: &node.ArgumentList{}, }, }, }, diff --git a/node/scalar/t_encapsed_test.go b/node/scalar/t_encapsed_test.go index 2e13d96..1c02adf 100644 --- a/node/scalar/t_encapsed_test.go +++ b/node/scalar/t_encapsed_test.go @@ -221,9 +221,9 @@ func TestCurlyOpenMethodCall(t *testing.T) { Parts: []node.Node{ &scalar.EncapsedStringPart{Value: "test "}, &expr.MethodCall{ - Variable: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, - Method: &node.Identifier{Value: "bar"}, - Arguments: []node.Node{}, + Variable: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, + Method: &node.Identifier{Value: "bar"}, + ArgumentList: &node.ArgumentList{}, }, }, }, diff --git a/node/stmt/n_class.go b/node/stmt/n_class.go index 6301874..002a9b2 100644 --- a/node/stmt/n_class.go +++ b/node/stmt/n_class.go @@ -10,19 +10,19 @@ type Class struct { PhpDocComment string ClassName node.Node Modifiers []node.Node - Args []node.Node + ArgumentList *node.ArgumentList Extends node.Node Implements []node.Node Stmts []node.Node } // NewClass node constructor -func NewClass(ClassName node.Node, Modifiers []node.Node, Args []node.Node, Extends node.Node, Implements []node.Node, Stmts []node.Node, PhpDocComment string) *Class { +func NewClass(ClassName node.Node, Modifiers []node.Node, ArgumentList *node.ArgumentList, Extends node.Node, Implements []node.Node, Stmts []node.Node, PhpDocComment string) *Class { return &Class{ PhpDocComment, ClassName, Modifiers, - Args, + ArgumentList, Extends, Implements, Stmts, @@ -57,13 +57,9 @@ func (n *Class) Walk(v walker.Visitor) { } } - if n.Args != nil { - vv := v.GetChildrenVisitor("Args") - for _, nn := range n.Args { - if nn != nil { - nn.Walk(vv) - } - } + if n.ArgumentList != nil { + vv := v.GetChildrenVisitor("ArgumentList") + n.ArgumentList.Walk(vv) } if n.Extends != nil { diff --git a/node/stmt/t_class_test.go b/node/stmt/t_class_test.go index c3c6d31..fced4c7 100644 --- a/node/stmt/t_class_test.go +++ b/node/stmt/t_class_test.go @@ -2,9 +2,10 @@ package stmt_test import ( "bytes" + "testing" + "github.com/z7zmey/php-parser/node/expr" "github.com/z7zmey/php-parser/node/name" - "testing" "github.com/z7zmey/php-parser/node" "github.com/z7zmey/php-parser/node/stmt" @@ -171,7 +172,7 @@ func TestAnonimousClass(t *testing.T) { &stmt.Expression{ Expr: &expr.New{ Class: &stmt.Class{ - Args: []node.Node{}, + ArgumentList: &node.ArgumentList{}, Extends: &name.Name{ Parts: []node.Node{ &name.NamePart{Value: "foo"}, diff --git a/node/stmt/t_global_test.go b/node/stmt/t_global_test.go index 7d72898..1565966 100644 --- a/node/stmt/t_global_test.go +++ b/node/stmt/t_global_test.go @@ -53,7 +53,7 @@ func TestGlobalVars(t *testing.T) { &name.NamePart{Value: "foo"}, }, }, - Arguments: []node.Node{}, + ArgumentList: &node.ArgumentList{}, }, }, }, diff --git a/node/stmt/t_visitor_test.go b/node/stmt/t_visitor_test.go index 85b185a..0ec5c3c 100644 --- a/node/stmt/t_visitor_test.go +++ b/node/stmt/t_visitor_test.go @@ -92,12 +92,12 @@ var nodesToTest = []struct { PhpDocComment: "/** */", ClassName: &node.Identifier{}, Modifiers: []node.Node{&stmt.Expression{}}, - Args: []node.Node{&stmt.Expression{}}, - Extends: &node.Identifier{}, - Implements: []node.Node{&stmt.Expression{}}, - Stmts: []node.Node{&stmt.Expression{}}, + ArgumentList: &node.ArgumentList{}, + Extends: &node.Identifier{}, + Implements: []node.Node{&stmt.Expression{}}, + Stmts: []node.Node{&stmt.Expression{}}, }, - []string{"ClassName", "Modifiers", "Args", "Extends", "Implements", "Stmts"}, + []string{"ClassName", "Modifiers", "ArgumentList", "Extends", "Implements", "Stmts"}, map[string]interface{}{"PhpDocComment": "/** */"}, }, { diff --git a/node/t_node_test.go b/node/t_node_test.go index b7dc2c0..efb75e3 100644 --- a/node/t_node_test.go +++ b/node/t_node_test.go @@ -70,18 +70,22 @@ func TestPhp7ArgumentNode(t *testing.T) { &stmt.Expression{ Expr: &expr.FunctionCall{ Function: &name.Name{Parts: []node.Node{&name.NamePart{Value: "foo"}}}, - Arguments: []node.Node{ - &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, - &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, + &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + }, }, }, }, &stmt.Expression{ Expr: &expr.FunctionCall{ Function: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, - Arguments: []node.Node{ - &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, - &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, + &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + }, }, }, }, @@ -89,9 +93,11 @@ func TestPhp7ArgumentNode(t *testing.T) { Expr: &expr.MethodCall{ Variable: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, Method: &node.Identifier{Value: "bar"}, - Arguments: []node.Node{ - &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, - &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, + &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + }, }, }, }, @@ -99,9 +105,11 @@ func TestPhp7ArgumentNode(t *testing.T) { Expr: &expr.StaticCall{ Class: &name.Name{Parts: []node.Node{&name.NamePart{Value: "foo"}}}, Call: &node.Identifier{Value: "bar"}, - Arguments: []node.Node{ - &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, - &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, + &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + }, }, }, }, @@ -109,18 +117,22 @@ func TestPhp7ArgumentNode(t *testing.T) { Expr: &expr.StaticCall{ Class: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, Call: &node.Identifier{Value: "bar"}, - Arguments: []node.Node{ - &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, - &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, + &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + }, }, }, }, &stmt.Expression{ Expr: &expr.New{ Class: &name.Name{Parts: []node.Node{&name.NamePart{Value: "foo"}}}, - Arguments: []node.Node{ - &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, - &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, + &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + }, }, }, }, @@ -128,9 +140,11 @@ func TestPhp7ArgumentNode(t *testing.T) { Expr: &expr.New{ Class: &stmt.Class{ PhpDocComment: "/** anonymous class */", - Args: []node.Node{ - &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, - &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, + &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + }, }, Stmts: []node.Node{}, }, @@ -160,18 +174,22 @@ func TestPhp5ArgumentNode(t *testing.T) { &stmt.Expression{ Expr: &expr.FunctionCall{ Function: &name.Name{Parts: []node.Node{&name.NamePart{Value: "foo"}}}, - Arguments: []node.Node{ - &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, - &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, + &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + }, }, }, }, &stmt.Expression{ Expr: &expr.FunctionCall{ Function: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, - Arguments: []node.Node{ - &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, - &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, + &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + }, }, }, }, @@ -179,9 +197,11 @@ func TestPhp5ArgumentNode(t *testing.T) { Expr: &expr.MethodCall{ Variable: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, Method: &node.Identifier{Value: "bar"}, - Arguments: []node.Node{ - &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, - &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, + &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + }, }, }, }, @@ -189,9 +209,11 @@ func TestPhp5ArgumentNode(t *testing.T) { Expr: &expr.StaticCall{ Class: &name.Name{Parts: []node.Node{&name.NamePart{Value: "foo"}}}, Call: &node.Identifier{Value: "bar"}, - Arguments: []node.Node{ - &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, - &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, + &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + }, }, }, }, @@ -199,18 +221,22 @@ func TestPhp5ArgumentNode(t *testing.T) { Expr: &expr.StaticCall{ Class: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, Call: &node.Identifier{Value: "bar"}, - Arguments: []node.Node{ - &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, - &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, + &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + }, }, }, }, &stmt.Expression{ Expr: &expr.New{ Class: &name.Name{Parts: []node.Node{&name.NamePart{Value: "foo"}}}, - Arguments: []node.Node{ - &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, - &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, + &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + }, }, }, }, diff --git a/node/t_visitor_test.go b/node/t_visitor_test.go index 1fc3545..262a4f5 100644 --- a/node/t_visitor_test.go +++ b/node/t_visitor_test.go @@ -44,6 +44,15 @@ var nodesToTest = []struct { []string{"VariableType", "Variable", "DefaultValue"}, map[string]interface{}{"ByRef": false, "Variadic": true}, }, + { + &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{}, + }, + }, + []string{"Arguments"}, + map[string]interface{}{}, + }, } type visitorMock struct { diff --git a/php5/php5.go b/php5/php5.go index 51560c5..7e0c848 100644 --- a/php5/php5.go +++ b/php5/php5.go @@ -344,7 +344,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line php5/php5.y:3858 +//line php5/php5.y:3873 type foreachVariable struct { node node.Node @@ -1638,41 +1638,41 @@ var yyPgo = [...]int{ 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, - 39, 0, 1045, 1043, 1042, 117, 1041, 1040, 553, 1037, - 1033, 42, 8, 1032, 9, 1030, 1029, 1028, 14, 49, - 1027, 1026, 1024, 1018, 1017, 1013, 3, 1007, 16, 1001, - 1000, 998, 995, 993, 28, 992, 991, 990, 988, 985, - 983, 982, 21, 980, 976, 974, 25, 971, 23, 12, - 962, 40, 961, 959, 958, 955, 41, 6, 19, 18, - 22, 953, 945, 939, 13, 937, 933, 930, 15, 853, + 18, 22, 39, 0, 1045, 1043, 1042, 117, 1041, 1040, + 553, 1037, 1033, 42, 8, 1032, 9, 1030, 1029, 1028, + 14, 49, 1027, 1026, 1024, 1018, 1017, 1013, 3, 1007, + 16, 1001, 1000, 998, 995, 993, 28, 992, 991, 990, + 988, 985, 983, 982, 21, 980, 976, 974, 25, 971, + 23, 12, 962, 40, 961, 959, 958, 955, 41, 6, + 19, 953, 945, 939, 13, 937, 933, 930, 15, 853, 7, 20, } var yyR1 = [...]int{ - 0, 149, 80, 80, 81, 81, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 82, 82, - 4, 4, 4, 4, 83, 83, 5, 5, 5, 5, - 84, 84, 6, 6, 6, 6, 53, 53, 85, 85, + 0, 149, 82, 82, 83, 83, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 84, 84, + 4, 4, 4, 4, 85, 85, 5, 5, 5, 5, + 86, 86, 6, 6, 6, 6, 53, 53, 87, 87, 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, 103, 103, 58, 58, 104, - 104, 105, 105, 59, 101, 101, 56, 51, 52, 144, + 26, 26, 26, 26, 26, 105, 105, 58, 58, 106, + 106, 107, 107, 59, 103, 103, 56, 51, 52, 144, 144, 145, 145, 60, 61, 61, 64, 64, 64, 64, - 65, 65, 2, 113, 113, 109, 109, 114, 114, 138, - 138, 137, 137, 137, 147, 147, 148, 148, 57, 57, - 102, 102, 141, 141, 141, 141, 99, 99, 99, 150, - 150, 146, 146, 95, 95, 96, 96, 54, 54, 55, - 55, 106, 106, 107, 107, 63, 63, 62, 62, 62, - 62, 140, 140, 140, 115, 115, 69, 69, 69, 69, - 86, 86, 27, 27, 27, 87, 87, 87, 87, 108, - 108, 66, 66, 66, 66, 68, 116, 116, 143, 143, - 117, 117, 118, 118, 70, 70, 71, 119, 119, 74, - 74, 73, 72, 72, 75, 75, 142, 142, 110, 110, - 111, 111, 120, 120, 76, 76, 76, 76, 76, 76, - 112, 112, 112, 112, 67, 67, 100, 100, 98, 98, - 97, 97, 126, 126, 124, 124, 125, 125, 125, 127, - 127, 42, 15, 15, 15, 15, 15, 15, 15, 15, + 65, 65, 2, 115, 115, 111, 111, 116, 116, 140, + 140, 139, 139, 139, 147, 147, 148, 148, 57, 57, + 104, 104, 141, 141, 141, 141, 101, 101, 101, 150, + 150, 146, 146, 97, 97, 98, 98, 54, 54, 55, + 55, 108, 108, 109, 109, 63, 63, 62, 62, 62, + 62, 81, 81, 81, 117, 117, 69, 69, 69, 69, + 88, 88, 27, 27, 27, 89, 89, 89, 89, 110, + 110, 66, 66, 66, 66, 68, 118, 118, 143, 143, + 119, 119, 120, 120, 70, 70, 71, 121, 121, 74, + 74, 73, 72, 72, 75, 75, 142, 142, 112, 112, + 113, 113, 122, 122, 76, 76, 76, 76, 76, 76, + 114, 114, 114, 114, 67, 67, 102, 102, 100, 100, + 99, 99, 128, 128, 126, 126, 127, 127, 127, 129, + 129, 42, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, @@ -1680,27 +1680,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, 94, 94, 93, - 93, 93, 93, 23, 23, 23, 23, 23, 23, 23, + 47, 47, 47, 47, 46, 46, 1, 96, 96, 95, + 95, 95, 95, 23, 23, 23, 23, 23, 23, 23, 23, 11, 11, 11, 11, 45, 45, 45, 43, 43, - 41, 41, 134, 134, 133, 49, 49, 49, 121, 121, - 121, 139, 139, 7, 7, 7, 7, 7, 7, 7, + 41, 41, 136, 136, 135, 49, 49, 49, 123, 123, + 123, 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, 35, 35, 35, 35, 29, 29, 29, 29, 29, 29, - 29, 122, 122, 151, 151, 123, 123, 123, 123, 14, - 14, 48, 48, 16, 17, 18, 19, 19, 135, 135, - 128, 130, 130, 77, 129, 129, 129, 40, 40, 44, + 29, 124, 124, 151, 151, 125, 125, 125, 125, 14, + 14, 48, 48, 16, 17, 18, 19, 19, 137, 137, + 130, 132, 132, 77, 131, 131, 131, 40, 40, 44, 44, 12, 22, 22, 20, 20, 20, 21, 21, 21, - 10, 10, 10, 9, 9, 13, 13, 131, 131, 132, - 132, 132, 39, 39, 136, 136, 92, 92, 38, 38, - 38, 91, 91, 90, 90, 90, 90, 90, 90, 90, - 90, 88, 88, 88, 88, 33, 33, 33, 33, 33, + 10, 10, 10, 9, 9, 13, 13, 133, 133, 134, + 134, 134, 39, 39, 138, 138, 94, 94, 38, 38, + 38, 93, 93, 92, 92, 92, 92, 92, 92, 92, + 92, 90, 90, 90, 90, 33, 33, 33, 33, 33, 33, 34, 34, 34, 37, 37, 37, 37, 37, 37, - 37, 37, 89, 89, 36, 36, 30, 30, 31, 32, + 37, 37, 91, 91, 36, 36, 30, 30, 31, 32, } var yyR2 = [...]int{ @@ -1759,7 +1759,7 @@ var yyR2 = [...]int{ } var yyChk = [...]int{ - -1000, -149, -80, -3, 2, -25, -51, -52, 51, 79, + -1000, -149, -82, -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, @@ -1769,99 +1769,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, -81, 82, -11, 8, 9, 66, 67, 81, - 63, 64, 65, 80, -10, -136, -44, -12, -40, -9, - 157, 12, 146, -81, 142, 82, 10, -82, 37, 38, - -4, -81, 82, 144, 158, 145, 10, -85, -48, 146, + -23, -30, -83, 82, -11, 8, 9, 66, 67, 81, + 63, 64, 65, 80, -10, -138, -44, -12, -40, -9, + 157, 12, 146, -83, 142, 82, 10, -84, 37, 38, + -4, -83, 82, 144, 158, 145, 10, -87, -48, 146, -48, -25, -1, 79, 146, -48, 144, -14, 97, 98, - 144, -14, 144, -15, -19, -14, 144, -86, -27, 12, - 157, -87, -1, 12, -100, -14, 144, 129, 130, 87, + 144, -14, 144, -15, -19, -14, 144, -88, -27, 12, + 157, -89, -1, 12, -102, -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, -144, 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, -81, 79, + 127, 128, 146, -14, 104, 105, -18, -19, -83, 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, -121, 17, -88, -33, 12, - 76, 77, -14, 57, -43, -11, -41, -81, 79, 82, - -21, -10, -136, -12, 146, 146, -14, -14, 146, -14, - -14, 148, -88, 17, 17, 75, -88, 148, 146, -91, - -90, -14, 151, 148, 148, 82, -140, 146, -81, 78, - 148, 142, -10, 157, 78, -140, 142, 147, 144, 142, - -80, -81, 144, 158, -83, -5, -81, 82, -84, -6, - -81, 82, 29, -81, 10, 160, -24, 143, 2, -25, + 146, -48, -14, 148, 148, -123, 17, -90, -33, 12, + 76, 77, -14, 57, -43, -11, -41, -83, 79, 82, + -21, -10, -138, -12, 146, 146, -14, -14, 146, -14, + -14, 148, -90, 17, 17, 75, -90, 148, 146, -93, + -92, -14, 151, 148, 148, 82, -81, 146, -83, 78, + 148, 142, -10, 157, 78, -81, 142, 147, 144, 142, + -82, -83, 144, 158, -85, -5, -83, 82, -86, -6, + -83, 82, 29, -83, 10, 160, -24, 143, 2, -25, -51, -52, 51, -25, 145, -146, -25, 145, 21, -144, - -98, -97, -14, -141, 142, 145, 144, 144, 144, 144, + -100, -99, -14, -141, 142, 145, 144, 144, 144, 144, 144, 158, -16, 142, -19, 144, 158, -144, 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, -101, - -56, -19, -19, -15, -102, 10, -85, 144, 144, 10, - 146, -65, 55, -113, 55, 58, -14, 151, -14, -14, + -14, -14, -14, -14, -14, -14, -43, -14, 145, -103, + -56, -19, -19, -15, -104, 10, -87, 144, 144, 10, + 146, -65, 55, -115, 55, 58, -14, 151, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, - -92, -38, -19, 59, 82, -81, 78, 78, 147, 147, + -94, -38, -19, 59, 82, -83, 78, 78, 147, 147, 147, 147, -13, -14, -13, 141, -33, -33, 17, 148, - 57, -14, 11, -19, -131, -132, -40, -39, -10, -136, - 10, 142, -139, -140, 78, 82, -81, 57, -10, 78, - -89, -36, -19, -15, -19, -15, -14, -13, 140, 75, - 75, -13, -91, 149, -151, 158, 58, -17, -19, -13, - -13, 10, 147, -115, -50, -69, -15, -19, 151, 83, - -140, -39, -40, 10, 52, -13, -14, -39, -40, 10, - -14, 144, -80, 143, -140, -4, 144, 158, 29, -81, - 144, 158, 29, -81, 10, 29, 160, -28, -78, -7, - -31, -81, 79, 82, 60, 148, -8, 62, -79, 18, - 74, -11, 154, 155, 153, 152, 146, 146, -95, -85, - -85, -48, 144, 158, -99, 144, -99, 144, -27, -14, + 57, -14, 11, -19, -133, -134, -40, -39, -10, -138, + 10, 142, -80, -81, 78, 82, -83, 57, -10, 78, + -91, -36, -19, -15, -19, -15, -14, -13, 140, 75, + 75, -13, -93, 149, -151, 158, 58, -17, -19, -13, + -13, 10, 147, -117, -50, -69, -15, -19, 151, 83, + -81, -39, -40, 10, 52, -13, -14, -39, -40, 10, + -14, 144, -82, 143, -81, -4, 144, 158, 29, -83, + 144, 158, 29, -83, 10, 29, 160, -28, -78, -7, + -31, -83, 79, 82, 60, 148, -8, 62, -79, 18, + 74, -11, 154, 155, 153, 152, 146, 146, -97, -87, + -87, -48, 144, 158, -101, 144, -101, 144, -27, -14, 12, 146, -28, -14, 145, -14, 147, 158, 29, 29, - 147, 158, 160, 143, 146, -106, -107, -63, -62, 60, - 61, -45, -81, 79, 82, -109, 56, -45, 142, -114, - -45, -15, -19, -19, 91, 147, 158, 146, -81, -127, - -125, -124, -126, 148, -128, 57, 149, 149, -34, 10, - 13, 12, 10, 143, 148, 143, -129, -77, -130, -140, - 148, 142, -10, -14, -40, -81, -131, -40, 147, 158, + 147, 158, 160, 143, 146, -108, -109, -63, -62, 60, + 61, -45, -83, 79, 82, -111, 56, -45, 142, -116, + -45, -15, -19, -19, 91, 147, 158, 146, -83, -129, + -127, -126, -128, 148, -130, 57, 149, 149, -34, 10, + 13, 12, 10, 143, 148, 143, -131, -77, -132, -81, + 148, 142, -10, -14, -40, -83, -133, -40, 147, 158, 147, 147, 147, 149, 149, 147, -14, 151, -14, 151, - 149, 149, 147, 158, 147, -17, -14, -140, -140, 149, - 143, -140, -140, 143, 143, -5, 10, 29, -6, 10, + 149, 149, 147, 158, 147, -17, -14, -81, -81, 149, + 143, -81, -81, 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, -81, 146, -122, -123, -78, 17, 78, -78, -78, - -78, -78, -78, 147, -54, 93, 94, -96, 22, 144, - -98, -14, 143, 32, 33, -99, 31, -99, 143, 160, - -106, -14, 144, -56, -137, -19, 151, 59, -137, -57, - -25, 145, 10, -28, -103, 41, -106, 147, 158, -144, - 82, -81, 142, -114, -108, 158, -43, 160, -38, -92, - 148, -126, -128, -13, -131, 149, -14, -135, 148, 148, - -13, -14, 143, -134, -36, 58, -17, -17, -69, 10, + 82, -83, 146, -124, -125, -78, 17, 78, -78, -78, + -78, -78, -78, 147, -54, 93, 94, -98, 22, 144, + -100, -14, 143, 32, 33, -101, 31, -101, 143, 160, + -108, -14, 144, -56, -139, -19, 151, 59, -139, -57, + -25, 145, 10, -28, -105, 41, -108, 147, 158, -144, + 82, -83, 142, -116, -110, 158, -43, 160, -38, -94, + 148, -128, -130, -13, -133, 149, -14, -137, 148, 148, + -13, -14, 143, -136, -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, -81, - -122, 149, -151, 158, 58, 10, 52, 147, 144, -48, + -78, -78, -78, -78, -78, -78, -78, 145, -78, -83, + -124, 149, -151, 158, 58, 10, 52, 147, 144, -48, -25, -55, 93, 94, 144, 144, -14, -150, 145, 144, - 143, 144, 31, -28, 147, -138, 58, -19, 146, -138, - -85, 160, -58, 42, 146, 147, -94, 44, -63, -145, - 83, -81, -108, 143, -66, -110, -67, -68, -111, -120, + 143, 144, 31, -28, 147, -140, 58, -19, 146, -140, + -87, 160, -58, 42, 146, 147, -96, 44, -63, -145, + 83, -83, -110, 143, -66, -112, -67, -68, -113, -122, 47, 38, 44, -76, 103, 102, 101, 98, 99, 100, - -45, -139, -14, 147, -13, 149, -129, 149, -128, -13, - -13, 149, 143, -133, 57, -14, 151, 149, -78, 145, - 147, -78, -78, -25, 95, -48, 145, -98, -150, -85, - 144, -94, 147, -137, -92, 147, 28, -28, 142, -45, - 142, 142, 146, 12, 143, -112, 12, 144, 158, -1, - -76, 10, -116, -45, 149, 143, 149, 149, -131, -17, - -78, 58, 144, 145, -85, 147, -85, 142, -148, -25, - 145, 147, -148, 144, -85, 12, -85, -85, -93, 12, + -45, -80, -14, 147, -13, 149, -131, 149, -130, -13, + -13, 149, 143, -135, 57, -14, 151, 149, -78, 145, + 147, -78, -78, -25, 95, -48, 145, -100, -150, -87, + 144, -96, 147, -139, -94, 147, 28, -28, 142, -45, + 142, 142, 146, 12, 143, -114, 12, 144, 158, -1, + -76, 10, -118, -45, 149, 143, 149, 149, -133, -17, + -78, 58, 144, 145, -87, 147, -87, 142, -148, -25, + 145, 147, -148, 144, -87, 12, -87, -87, -95, 12, 151, 160, 144, 158, 160, 10, -144, 160, -143, 158, - 144, 142, -78, -85, -147, -25, 145, -85, -85, 143, + 144, 142, -78, -87, -147, -25, 145, -87, -87, 143, 147, 143, 143, 147, 158, 12, -28, 12, -28, 160, - 10, -28, -45, -117, -118, -70, -71, -72, -73, -74, - -45, 10, -85, 143, 26, 142, 12, 151, 160, -28, + 10, -28, -45, -119, -120, -70, -71, -72, -73, -74, + -45, 10, -87, 143, 26, 142, 12, 151, 160, -28, 146, 143, -70, 144, 144, 45, 29, 78, 24, 144, - -85, 12, -28, -106, -119, -45, -75, -76, 10, 144, - 143, 147, 158, 10, -104, -105, -59, 41, -142, 144, - 142, -45, -59, 146, -85, -45, 143, 12, 147, 142, - -85, 143, + -87, 12, -28, -108, -121, -45, -75, -76, 10, 144, + 143, 147, 158, 10, -106, -107, -59, 41, -142, 144, + 142, -45, -59, 146, -87, -45, 143, 12, 147, 142, + -87, 143, } var yyDef = [...]int{ @@ -2345,14 +2345,14 @@ yydefault: case 1: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:269 + //line php5/php5.y:270 { yylex.(*Parser).rootNode = stmt.NewStmtList(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:278 { if yyDollar[2].node != nil { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -2360,13 +2360,13 @@ yydefault: } case 3: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:282 + //line php5/php5.y:283 { yyVAL.list = []node.Node{} } case 4: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:287 + //line php5/php5.y:288 { namePart := name.NewNamePart(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(namePart, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -2375,7 +2375,7 @@ yydefault: } case 5: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:294 + //line php5/php5.y:295 { namePart := name.NewNamePart(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(namePart, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -2384,32 +2384,32 @@ yydefault: } case 6: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:304 + //line php5/php5.y:305 { // error yyVAL.node = nil } case 7: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:309 + //line php5/php5.y:310 { yyVAL.node = yyDollar[1].node } case 8: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:311 + //line php5/php5.y:312 { yyVAL.node = yyDollar[1].node } case 9: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:313 + //line php5/php5.y:314 { yyVAL.node = yyDollar[1].node } case 10: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:315 + //line php5/php5.y:316 { yyVAL.node = stmt.NewHaltCompiler() yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -2417,7 +2417,7 @@ yydefault: } case 11: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:321 + //line php5/php5.y:322 { name := name.NewName(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) @@ -2429,7 +2429,7 @@ yydefault: } case 12: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:331 + //line php5/php5.y:332 { name := name.NewName(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) @@ -2441,7 +2441,7 @@ yydefault: } case 13: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:341 + //line php5/php5.y:342 { yyVAL.node = stmt.NewNamespace(nil, yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -2449,7 +2449,7 @@ yydefault: } case 14: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:347 + //line php5/php5.y:348 { yyVAL.node = stmt.NewUseList(nil, yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -2457,7 +2457,7 @@ yydefault: } case 15: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:353 + //line php5/php5.y:354 { useType := node.NewIdentifier(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -2469,7 +2469,7 @@ yydefault: } case 16: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:363 + //line php5/php5.y:364 { useType := node.NewIdentifier(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -2481,25 +2481,25 @@ yydefault: } case 17: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:373 + //line php5/php5.y:374 { yyVAL.node = yyDollar[1].node } case 18: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:378 + //line php5/php5.y:379 { 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:381 { yyVAL.list = []node.Node{yyDollar[1].node} } case 20: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:385 + //line php5/php5.y:386 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -2511,7 +2511,7 @@ yydefault: } case 21: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:395 + //line php5/php5.y:396 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -2526,7 +2526,7 @@ yydefault: } case 22: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:408 + //line php5/php5.y:409 { name := name.NewName(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) @@ -2538,7 +2538,7 @@ yydefault: } case 23: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:418 + //line php5/php5.y:419 { name := name.NewName(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) @@ -2553,19 +2553,19 @@ yydefault: } case 24: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:434 + //line php5/php5.y:435 { 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:437 { yyVAL.list = []node.Node{yyDollar[1].node} } case 26: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:441 + //line php5/php5.y:442 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -2577,7 +2577,7 @@ yydefault: } case 27: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:451 + //line php5/php5.y:452 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -2592,7 +2592,7 @@ yydefault: } case 28: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:464 + //line php5/php5.y:465 { name := name.NewName(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) @@ -2604,7 +2604,7 @@ yydefault: } case 29: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:474 + //line php5/php5.y:475 { name := name.NewName(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) @@ -2619,19 +2619,19 @@ yydefault: } case 30: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:490 + //line php5/php5.y:491 { 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:493 { yyVAL.list = []node.Node{yyDollar[1].node} } case 32: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:497 + //line php5/php5.y:498 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -2643,7 +2643,7 @@ yydefault: } case 33: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:507 + //line php5/php5.y:508 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -2658,7 +2658,7 @@ yydefault: } case 34: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:520 + //line php5/php5.y:521 { name := name.NewName(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) @@ -2670,7 +2670,7 @@ yydefault: } case 35: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:530 + //line php5/php5.y:531 { name := name.NewName(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[2].list)) @@ -2685,7 +2685,7 @@ yydefault: } case 36: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:546 + //line php5/php5.y:547 { name := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -2703,7 +2703,7 @@ yydefault: } case 37: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:562 + //line php5/php5.y:563 { name := node.NewIdentifier(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -2721,7 +2721,7 @@ yydefault: } case 38: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:581 + //line php5/php5.y:582 { if yyDollar[2].node != nil { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -2729,38 +2729,38 @@ yydefault: } case 39: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:587 + //line php5/php5.y:588 { yyVAL.list = []node.Node{} } case 40: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:593 + //line php5/php5.y:594 { // error yyVAL.node = nil } case 41: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:598 + //line php5/php5.y:599 { yyVAL.node = yyDollar[1].node } case 42: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:600 + //line php5/php5.y:601 { yyVAL.node = yyDollar[1].node } case 43: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:602 + //line php5/php5.y:603 { yyVAL.node = yyDollar[1].node } case 44: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:604 + //line php5/php5.y:605 { yyVAL.node = stmt.NewHaltCompiler() yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -2768,13 +2768,13 @@ yydefault: } case 45: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:614 + //line php5/php5.y:615 { yyVAL.node = yyDollar[1].node } case 46: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:616 + //line php5/php5.y:617 { label := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(label, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -2786,7 +2786,7 @@ yydefault: } case 47: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:629 + //line php5/php5.y:630 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -2794,7 +2794,7 @@ yydefault: } case 48: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:635 + //line php5/php5.y:636 { yyVAL.node = stmt.NewIf(yyDollar[2].node, yyDollar[3].node, yyDollar[4].list, yyDollar[5].node) @@ -2810,7 +2810,7 @@ yydefault: } case 49: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:649 + //line php5/php5.y:650 { stmts := stmt.NewStmtList(yyDollar[4].list) yylex.(*Parser).positions.AddPosition(stmts, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[4].list)) @@ -2821,7 +2821,7 @@ yydefault: } case 50: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:658 + //line php5/php5.y:659 { if yyDollar[3].altSyntaxNode.isAlt { yyVAL.node = stmt.NewAltWhile(yyDollar[2].node, yyDollar[3].altSyntaxNode.node) @@ -2833,7 +2833,7 @@ yydefault: } case 51: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:668 + //line php5/php5.y:669 { 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)) @@ -2841,7 +2841,7 @@ yydefault: } case 52: yyDollar = yyS[yypt-9 : yypt+1] - //line php5/php5.y:674 + //line php5/php5.y:675 { if yyDollar[9].altSyntaxNode.isAlt { yyVAL.node = stmt.NewAltFor(yyDollar[3].list, yyDollar[5].list, yyDollar[7].list, yyDollar[9].altSyntaxNode.node) @@ -2853,7 +2853,7 @@ yydefault: } case 53: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:684 + //line php5/php5.y:685 { if yyDollar[3].nodesWithEndToken.endToken.Value == ";" { yyVAL.node = stmt.NewAltSwitch(yyDollar[2].node, yyDollar[3].nodesWithEndToken.nodes) @@ -2865,7 +2865,7 @@ yydefault: } case 54: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:694 + //line php5/php5.y:695 { yyVAL.node = stmt.NewBreak(nil) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) @@ -2873,7 +2873,7 @@ yydefault: } case 55: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:700 + //line php5/php5.y:701 { 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 +2881,7 @@ yydefault: } case 56: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:706 + //line php5/php5.y:707 { yyVAL.node = stmt.NewContinue(nil) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) @@ -2889,7 +2889,7 @@ yydefault: } case 57: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:712 + //line php5/php5.y:713 { 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 +2897,7 @@ yydefault: } case 58: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:718 + //line php5/php5.y:719 { yyVAL.node = stmt.NewReturn(nil) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) @@ -2905,7 +2905,7 @@ yydefault: } case 59: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:724 + //line php5/php5.y:725 { 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 +2913,7 @@ yydefault: } case 60: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:730 + //line php5/php5.y:731 { 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 +2921,7 @@ yydefault: } case 61: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:736 + //line php5/php5.y:737 { 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 +2929,7 @@ yydefault: } case 62: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:742 + //line php5/php5.y:743 { 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 +2937,7 @@ yydefault: } case 63: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:748 + //line php5/php5.y:749 { 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 +2945,7 @@ yydefault: } case 64: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:754 + //line php5/php5.y:755 { 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 +2953,7 @@ yydefault: } case 65: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:760 + //line php5/php5.y:761 { yyVAL.node = stmt.NewInlineHtml(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -2961,7 +2961,7 @@ yydefault: } case 66: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:766 + //line php5/php5.y:767 { 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 +2969,7 @@ yydefault: } case 67: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:772 + //line php5/php5.y:773 { 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 +2977,7 @@ yydefault: } case 68: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:778 + //line php5/php5.y:779 { if yyDollar[6].foreachVariable.node == nil { if yyDollar[8].altSyntaxNode.isAlt { @@ -2997,7 +2997,7 @@ yydefault: } case 69: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:796 + //line php5/php5.y:797 { if yyDollar[6].foreachVariable.node == nil { if yyDollar[8].altSyntaxNode.isAlt { @@ -3017,7 +3017,7 @@ yydefault: } case 70: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:814 + //line php5/php5.y:815 { 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)) @@ -3025,7 +3025,7 @@ yydefault: } case 71: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:820 + //line php5/php5.y:821 { yyVAL.node = stmt.NewNop() yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3033,7 +3033,7 @@ yydefault: } case 72: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:826 + //line php5/php5.y:827 { yyVAL.node = stmt.NewTry(yyDollar[3].list, yyDollar[5].list, yyDollar[6].node) @@ -3047,7 +3047,7 @@ yydefault: } case 73: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:838 + //line php5/php5.y:839 { yyVAL.node = stmt.NewThrow(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -3055,7 +3055,7 @@ yydefault: } case 74: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:844 + //line php5/php5.y:845 { label := node.NewIdentifier(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(label, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -3067,13 +3067,13 @@ yydefault: } case 75: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:857 + //line php5/php5.y:858 { yyVAL.list = []node.Node{} } case 76: yyDollar = yyS[yypt-9 : yypt+1] - //line php5/php5.y:859 + //line php5/php5.y:860 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -3091,13 +3091,13 @@ yydefault: } case 77: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:877 + //line php5/php5.y:878 { yyVAL.node = nil } case 78: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:879 + //line php5/php5.y:880 { yyVAL.node = stmt.NewFinally(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -3105,31 +3105,31 @@ yydefault: } case 79: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:888 + //line php5/php5.y:889 { yyVAL.list = yyDollar[1].list } case 80: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:890 + //line php5/php5.y:891 { yyVAL.list = []node.Node{} } case 81: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:895 + //line php5/php5.y:896 { yyVAL.list = []node.Node{yyDollar[1].node} } case 82: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:897 + //line php5/php5.y:898 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 83: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:902 + //line php5/php5.y:903 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -3145,61 +3145,61 @@ yydefault: } case 84: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:919 + //line php5/php5.y:920 { yyVAL.list = []node.Node{yyDollar[1].node} } case 85: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:921 + //line php5/php5.y:922 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 86: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:926 + //line php5/php5.y:927 { yyVAL.node = yyDollar[1].node } case 87: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:931 + //line php5/php5.y:932 { yyVAL.node = yyDollar[1].node } case 88: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:936 + //line php5/php5.y:937 { yyVAL.node = yyDollar[1].node } case 89: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:941 + //line php5/php5.y:942 { yyVAL.boolWithToken = boolWithToken{false, nil} } case 90: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:943 + //line php5/php5.y:944 { yyVAL.boolWithToken = boolWithToken{true, yyDollar[1].token} } case 91: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:948 + //line php5/php5.y:949 { yyVAL.boolWithToken = boolWithToken{false, nil} } case 92: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:950 + //line php5/php5.y:951 { yyVAL.boolWithToken = boolWithToken{true, yyDollar[1].token} } case 93: yyDollar = yyS[yypt-9 : yypt+1] - //line php5/php5.y:955 + //line php5/php5.y:956 { name := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -3211,7 +3211,7 @@ yydefault: } case 94: yyDollar = yyS[yypt-7 : yypt+1] - //line php5/php5.y:968 + //line php5/php5.y:969 { switch n := yyDollar[1].node.(type) { case *stmt.Class: @@ -3234,7 +3234,7 @@ yydefault: } case 95: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:989 + //line php5/php5.y:990 { name := node.NewIdentifier(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -3246,7 +3246,7 @@ yydefault: } case 96: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1003 + //line php5/php5.y:1004 { yyVAL.node = stmt.NewClass(nil, nil, nil, nil, nil, nil, "") yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3254,7 +3254,7 @@ yydefault: } case 97: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1009 + //line php5/php5.y:1010 { classModifier := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(classModifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3266,7 +3266,7 @@ yydefault: } case 98: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1019 + //line php5/php5.y:1020 { yyVAL.node = stmt.NewTrait(nil, nil, "") yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3274,7 +3274,7 @@ yydefault: } case 99: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1025 + //line php5/php5.y:1026 { classModifier := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(classModifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3286,85 +3286,85 @@ yydefault: } case 100: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1038 + //line php5/php5.y:1039 { yyVAL.node = nil } case 101: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1040 + //line php5/php5.y:1041 { yyVAL.node = yyDollar[2].node } case 102: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1045 + //line php5/php5.y:1046 { yyVAL.token = yyDollar[1].token } case 103: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1050 + //line php5/php5.y:1051 { yyVAL.list = nil } case 104: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1052 + //line php5/php5.y:1053 { yyVAL.list = yyDollar[2].list } case 105: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1057 + //line php5/php5.y:1058 { yyVAL.list = nil } case 106: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1059 + //line php5/php5.y:1060 { yyVAL.list = yyDollar[2].list } case 107: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1064 + //line php5/php5.y:1065 { yyVAL.list = []node.Node{yyDollar[1].node} } case 108: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1066 + //line php5/php5.y:1067 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 109: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1071 + //line php5/php5.y:1072 { yyVAL.foreachVariable = foreachVariable{nil, false} } case 110: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1073 + //line php5/php5.y:1074 { yyVAL.foreachVariable = yyDollar[2].foreachVariable } case 111: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1078 + //line php5/php5.y:1079 { yyVAL.foreachVariable = foreachVariable{yyDollar[1].node, false} } case 112: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1080 + //line php5/php5.y:1081 { yyVAL.foreachVariable = foreachVariable{yyDollar[2].node, true} } case 113: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1082 + //line php5/php5.y:1083 { list := expr.NewList(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -3373,39 +3373,39 @@ yydefault: } case 114: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1092 + //line php5/php5.y:1093 { yyVAL.altSyntaxNode = altSyntaxNode{yyDollar[1].node, false} } case 115: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1094 + //line php5/php5.y:1095 { yyVAL.altSyntaxNode = altSyntaxNode{stmt.NewStmtList(yyDollar[2].list), true} yylex.(*Parser).positions.AddPosition(yyVAL.altSyntaxNode.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) } case 116: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1103 + //line php5/php5.y:1104 { yyVAL.altSyntaxNode = altSyntaxNode{yyDollar[1].node, false} } case 117: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1105 + //line php5/php5.y:1106 { yyVAL.altSyntaxNode = altSyntaxNode{stmt.NewStmtList(yyDollar[2].list), true} yylex.(*Parser).positions.AddPosition(yyVAL.altSyntaxNode.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) } case 118: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1114 + //line php5/php5.y:1115 { yyVAL.node = yyDollar[1].node } case 119: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1116 + //line php5/php5.y:1117 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -3413,7 +3413,7 @@ yydefault: } case 120: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1126 + //line php5/php5.y:1127 { name := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3427,7 +3427,7 @@ yydefault: } case 121: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1138 + //line php5/php5.y:1139 { name := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -3441,37 +3441,37 @@ yydefault: } case 122: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1154 + //line php5/php5.y:1155 { yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[2].list, yyDollar[3].token} } case 123: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1156 + //line php5/php5.y:1157 { yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[3].list, yyDollar[4].token} } case 124: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1158 + //line php5/php5.y:1159 { yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[2].list, yyDollar[4].token} } case 125: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1160 + //line php5/php5.y:1161 { yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[3].list, yyDollar[5].token} } case 126: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1166 + //line php5/php5.y:1167 { yyVAL.list = []node.Node{} } case 127: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1168 + //line php5/php5.y:1169 { _case := stmt.NewCase(yyDollar[3].node, yyDollar[5].list) yylex.(*Parser).positions.AddPosition(_case, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[2].token, yyDollar[5].list)) @@ -3480,7 +3480,7 @@ yydefault: } case 128: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1175 + //line php5/php5.y:1176 { _default := stmt.NewDefault(yyDollar[4].list) yylex.(*Parser).positions.AddPosition(_default, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[2].token, yyDollar[4].list)) @@ -3489,26 +3489,26 @@ yydefault: } case 131: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1192 + //line php5/php5.y:1193 { yyVAL.altSyntaxNode = altSyntaxNode{yyDollar[1].node, false} } case 132: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1194 + //line php5/php5.y:1195 { yyVAL.altSyntaxNode = altSyntaxNode{stmt.NewStmtList(yyDollar[2].list), true} yylex.(*Parser).positions.AddPosition(yyVAL.altSyntaxNode.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) } case 133: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1204 + //line php5/php5.y:1205 { yyVAL.list = nil } case 134: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1206 + //line php5/php5.y:1207 { _elseIf := stmt.NewElseIf(yyDollar[3].node, yyDollar[4].node) yylex.(*Parser).positions.AddPosition(_elseIf, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[2].token, yyDollar[4].node)) @@ -3518,13 +3518,13 @@ yydefault: } case 135: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1218 + //line php5/php5.y:1219 { yyVAL.list = nil } case 136: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1220 + //line php5/php5.y:1221 { stmts := stmt.NewStmtList(yyDollar[5].list) yylex.(*Parser).positions.AddPosition(stmts, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[5].list)) @@ -3537,13 +3537,13 @@ yydefault: } case 137: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1235 + //line php5/php5.y:1236 { yyVAL.node = nil } case 138: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1237 + //line php5/php5.y:1238 { yyVAL.node = stmt.NewElse(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -3551,13 +3551,13 @@ yydefault: } case 139: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1247 + //line php5/php5.y:1248 { yyVAL.node = nil } case 140: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1249 + //line php5/php5.y:1250 { stmts := stmt.NewStmtList(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(stmts, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[3].list)) @@ -3568,31 +3568,31 @@ yydefault: } case 141: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1262 + //line php5/php5.y:1263 { yyVAL.list = yyDollar[1].list } case 142: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1264 + //line php5/php5.y:1265 { yyVAL.list = nil } case 143: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1269 + //line php5/php5.y:1270 { yyVAL.list = []node.Node{yyDollar[1].node} } case 144: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1271 + //line php5/php5.y:1272 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 145: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1276 + //line php5/php5.y:1277 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -3620,7 +3620,7 @@ yydefault: } case 146: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:1302 + //line php5/php5.y:1303 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -3648,13 +3648,13 @@ yydefault: } case 147: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1332 + //line php5/php5.y:1333 { yyVAL.node = nil } case 148: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1334 + //line php5/php5.y:1335 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3662,7 +3662,7 @@ yydefault: } case 149: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1340 + //line php5/php5.y:1341 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3670,47 +3670,54 @@ yydefault: } case 150: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1346 + //line php5/php5.y:1347 { yyVAL.node = yyDollar[1].node } case 151: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1352 + //line php5/php5.y:1353 { - yyVAL.nodesWithEndToken = &nodesWithEndToken{[]node.Node{}, yyDollar[2].token} + yyVAL.node = node.NewArgumentList(nil) + + // save position + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) } case 152: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1354 + //line php5/php5.y:1360 { - yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[2].list, yyDollar[3].token} + yyVAL.node = node.NewArgumentList(yyDollar[2].list) + + // save position + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) } case 153: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1356 + //line php5/php5.y:1367 { arg := node.NewArgument(yyDollar[2].node, false, false) - yylex.(*Parser).positions.AddPosition(arg, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[2].node)) - yylex.(*Parser).comments.AddComments(arg, yylex.(*Parser).comments[yyDollar[2].node]) + yyVAL.node = node.NewArgumentList([]node.Node{arg}) - yyVAL.nodesWithEndToken = &nodesWithEndToken{[]node.Node{arg}, yyDollar[3].token} + // save position + yylex.(*Parser).positions.AddPosition(arg, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[2].node)) + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) } case 154: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1368 + //line php5/php5.y:1380 { yyVAL.list = []node.Node{yyDollar[1].node} } case 155: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1370 + //line php5/php5.y:1382 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 156: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1375 + //line php5/php5.y:1387 { yyVAL.node = node.NewArgument(yyDollar[1].node, false, false) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) @@ -3718,7 +3725,7 @@ yydefault: } case 157: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1381 + //line php5/php5.y:1393 { yyVAL.node = node.NewArgument(yyDollar[1].node, false, false) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) @@ -3726,7 +3733,7 @@ yydefault: } case 158: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1387 + //line php5/php5.y:1399 { yyVAL.node = node.NewArgument(yyDollar[2].node, false, true) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[2].node)) @@ -3734,7 +3741,7 @@ yydefault: } case 159: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1393 + //line php5/php5.y:1405 { 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)) @@ -3742,19 +3749,19 @@ yydefault: } case 160: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1402 + //line php5/php5.y:1414 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 161: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1404 + //line php5/php5.y:1416 { yyVAL.list = []node.Node{yyDollar[1].node} } case 162: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1410 + //line php5/php5.y:1422 { name := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3766,7 +3773,7 @@ yydefault: } case 163: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1420 + //line php5/php5.y:1432 { yyVAL.node = expr.NewVariable(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -3774,7 +3781,7 @@ yydefault: } case 164: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1426 + //line php5/php5.y:1438 { yyVAL.node = expr.NewVariable(yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -3782,7 +3789,7 @@ yydefault: } case 165: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1436 + //line php5/php5.y:1448 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[3].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -3801,7 +3808,7 @@ yydefault: } case 166: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1453 + //line php5/php5.y:1465 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[3].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -3820,7 +3827,7 @@ yydefault: } case 167: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1470 + //line php5/php5.y:1482 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3839,7 +3846,7 @@ yydefault: } case 168: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1487 + //line php5/php5.y:1499 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -3858,19 +3865,19 @@ yydefault: } case 169: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1509 + //line php5/php5.y:1521 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 170: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1511 + //line php5/php5.y:1523 { yyVAL.list = []node.Node{} } case 171: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1517 + //line php5/php5.y:1529 { 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)) @@ -3878,19 +3885,19 @@ yydefault: } case 172: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1523 + //line php5/php5.y:1535 { yyVAL.node = yyDollar[1].node } case 173: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1525 + //line php5/php5.y:1537 { yyVAL.node = yyDollar[1].node } case 174: yyDollar = yyS[yypt-8 : yypt+1] - //line php5/php5.y:1527 + //line php5/php5.y:1539 { name := node.NewIdentifier(yyDollar[4].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -3902,7 +3909,7 @@ yydefault: } case 175: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1540 + //line php5/php5.y:1552 { yyVAL.node = stmt.NewTraitUse(yyDollar[2].list, yyDollar[3].nodesWithEndToken.nodes) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].nodesWithEndToken.endToken)) @@ -3910,67 +3917,67 @@ yydefault: } case 176: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1549 + //line php5/php5.y:1561 { yyVAL.list = []node.Node{yyDollar[1].node} } case 177: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1551 + //line php5/php5.y:1563 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 178: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1556 + //line php5/php5.y:1568 { yyVAL.nodesWithEndToken = &nodesWithEndToken{nil, yyDollar[1].token} } case 179: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1558 + //line php5/php5.y:1570 { yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[2].list, yyDollar[3].token} } case 180: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1563 + //line php5/php5.y:1575 { yyVAL.list = nil } case 181: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1565 + //line php5/php5.y:1577 { yyVAL.list = yyDollar[1].list } case 182: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1570 + //line php5/php5.y:1582 { yyVAL.list = []node.Node{yyDollar[1].node} } case 183: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1572 + //line php5/php5.y:1584 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 184: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1577 + //line php5/php5.y:1589 { yyVAL.node = yyDollar[1].node } case 185: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1579 + //line php5/php5.y:1591 { yyVAL.node = yyDollar[1].node } case 186: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1584 + //line php5/php5.y:1596 { 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)) @@ -3978,19 +3985,19 @@ yydefault: } case 187: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1593 + //line php5/php5.y:1605 { yyVAL.list = []node.Node{yyDollar[1].node} } case 188: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1595 + //line php5/php5.y:1607 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 189: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1600 + //line php5/php5.y:1612 { name := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4002,13 +4009,13 @@ yydefault: } case 190: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1610 + //line php5/php5.y:1622 { yyVAL.node = yyDollar[1].node } case 191: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1615 + //line php5/php5.y:1627 { target := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -4020,7 +4027,7 @@ yydefault: } case 192: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1628 + //line php5/php5.y:1640 { alias := node.NewIdentifier(yyDollar[4].token.Value) yylex.(*Parser).positions.AddPosition(alias, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -4032,7 +4039,7 @@ yydefault: } case 193: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1638 + //line php5/php5.y:1650 { 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)) @@ -4040,37 +4047,37 @@ yydefault: } case 194: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1647 + //line php5/php5.y:1659 { yyVAL.node = nil } case 195: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1649 + //line php5/php5.y:1661 { yyVAL.node = yyDollar[1].node } case 196: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1654 + //line php5/php5.y:1666 { yyVAL.nodesWithEndToken = &nodesWithEndToken{nil, yyDollar[1].token} } case 197: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1656 + //line php5/php5.y:1668 { yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[2].list, yyDollar[3].token} } case 198: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1661 + //line php5/php5.y:1673 { yyVAL.list = yyDollar[1].list } case 199: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1663 + //line php5/php5.y:1675 { modifier := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(modifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4080,45 +4087,29 @@ yydefault: } case 200: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1674 + //line php5/php5.y:1686 { yyVAL.list = nil } case 201: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1676 + //line php5/php5.y:1688 { yyVAL.list = yyDollar[1].list } case 202: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1681 + //line php5/php5.y:1693 { yyVAL.list = []node.Node{yyDollar[1].node} } case 203: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1683 + //line php5/php5.y:1695 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 204: - yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1688 - { - yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) - } - case 205: - yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1694 - { - yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) - yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) - } - case 206: yyDollar = yyS[yypt-1 : yypt+1] //line php5/php5.y:1700 { @@ -4126,7 +4117,7 @@ yydefault: yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } - case 207: + case 205: yyDollar = yyS[yypt-1 : yypt+1] //line php5/php5.y:1706 { @@ -4134,7 +4125,7 @@ yydefault: yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } - case 208: + case 206: yyDollar = yyS[yypt-1 : yypt+1] //line php5/php5.y:1712 { @@ -4142,7 +4133,7 @@ yydefault: yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } - case 209: + case 207: yyDollar = yyS[yypt-1 : yypt+1] //line php5/php5.y:1718 { @@ -4150,9 +4141,25 @@ yydefault: yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } + case 208: + yyDollar = yyS[yypt-1 : yypt+1] + //line php5/php5.y:1724 + { + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + } + case 209: + yyDollar = yyS[yypt-1 : yypt+1] + //line php5/php5.y:1730 + { + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) + yylex.(*Parser).comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) + } case 210: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1727 + //line php5/php5.y:1739 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[3].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -4170,7 +4177,7 @@ yydefault: } case 211: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1743 + //line php5/php5.y:1755 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[3].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -4188,7 +4195,7 @@ yydefault: } case 212: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1759 + //line php5/php5.y:1771 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4206,7 +4213,7 @@ yydefault: } case 213: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1775 + //line php5/php5.y:1787 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4224,7 +4231,7 @@ yydefault: } case 214: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:1794 + //line php5/php5.y:1806 { name := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -4241,7 +4248,7 @@ yydefault: } case 215: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1809 + //line php5/php5.y:1821 { name := node.NewIdentifier(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -4257,55 +4264,55 @@ yydefault: } case 216: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1826 + //line php5/php5.y:1838 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 217: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1828 + //line php5/php5.y:1840 { yyVAL.list = []node.Node{yyDollar[1].node} } case 218: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1834 + //line php5/php5.y:1846 { yyVAL.list = nil } case 219: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1836 + //line php5/php5.y:1848 { yyVAL.list = yyDollar[1].list } case 220: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1841 + //line php5/php5.y:1853 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 221: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1843 + //line php5/php5.y:1855 { yyVAL.list = []node.Node{yyDollar[1].node} } case 222: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1848 + //line php5/php5.y:1860 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 223: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1850 + //line php5/php5.y:1862 { yyVAL.list = yyDollar[1].list } case 224: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1855 + //line php5/php5.y:1867 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) @@ -4314,7 +4321,7 @@ yydefault: } case 225: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1862 + //line php5/php5.y:1874 { fetch := expr.NewArrayDimFetch(nil, yyDollar[2].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[2].node)) @@ -4323,41 +4330,42 @@ yydefault: } case 226: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1872 + //line php5/php5.y:1884 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 227: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1874 + //line php5/php5.y:1886 { yyVAL.list = yyDollar[1].list } case 228: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1876 + //line php5/php5.y:1888 { yyVAL.list = yyDollar[1].list } case 229: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:1881 + //line php5/php5.y:1893 { yyVAL.list = nil } case 230: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:1883 + //line php5/php5.y:1895 { yyVAL.list = yyDollar[1].list } case 231: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1888 + //line php5/php5.y:1900 { - if yyDollar[3].nodesWithEndToken != nil { - yyVAL.node = expr.NewNew(yyDollar[2].node, yyDollar[3].nodesWithEndToken.nodes) - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].nodesWithEndToken.endToken)) + + if yyDollar[3].node != nil { + yyVAL.node = expr.NewNew(yyDollar[2].node, yyDollar[3].node.(*node.ArgumentList)) + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) } else { yyVAL.node = expr.NewNew(yyDollar[2].node, nil) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4367,7 +4375,7 @@ yydefault: } case 232: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:1903 + //line php5/php5.y:1916 { list := expr.NewList(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(list, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -4379,7 +4387,7 @@ yydefault: } case 233: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1913 + //line php5/php5.y:1926 { 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)) @@ -4387,7 +4395,7 @@ yydefault: } case 234: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:1919 + //line php5/php5.y:1932 { 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)) @@ -4395,14 +4403,16 @@ yydefault: } case 235: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:1925 + //line php5/php5.y:1938 { - _new := expr.NewNew(yyDollar[5].node, nil) - yylex.(*Parser).positions.AddPosition(_new, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[4].token, yyDollar[5].node)) + var _new *expr.New - if yyDollar[6].nodesWithEndToken != nil { - _new = expr.NewNew(yyDollar[5].node, yyDollar[6].nodesWithEndToken.nodes) - yylex.(*Parser).positions.AddPosition(_new, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[4].token, yyDollar[6].nodesWithEndToken.endToken)) + if yyDollar[6].node != nil { + _new = expr.NewNew(yyDollar[5].node, yyDollar[6].node.(*node.ArgumentList)) + yylex.(*Parser).positions.AddPosition(_new, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[4].token, yyDollar[6].node)) + } else { + _new = expr.NewNew(yyDollar[5].node, nil) + yylex.(*Parser).positions.AddPosition(_new, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[4].token, yyDollar[5].node)) } yylex.(*Parser).comments.AddComments(_new, yylex.(*Parser).comments[yyDollar[1].node]) @@ -4412,7 +4422,7 @@ yydefault: } case 236: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:1940 + //line php5/php5.y:1955 { yyVAL.node = expr.NewClone(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4420,7 +4430,7 @@ yydefault: } case 237: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1946 + //line php5/php5.y:1961 { 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)) @@ -4428,7 +4438,7 @@ yydefault: } case 238: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1952 + //line php5/php5.y:1967 { 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)) @@ -4436,7 +4446,7 @@ yydefault: } case 239: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1958 + //line php5/php5.y:1973 { 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)) @@ -4444,7 +4454,7 @@ yydefault: } case 240: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1964 + //line php5/php5.y:1979 { 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)) @@ -4452,7 +4462,7 @@ yydefault: } case 241: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1970 + //line php5/php5.y:1985 { 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)) @@ -4460,7 +4470,7 @@ yydefault: } case 242: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1976 + //line php5/php5.y:1991 { 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)) @@ -4468,7 +4478,7 @@ yydefault: } case 243: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1982 + //line php5/php5.y:1997 { 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)) @@ -4476,7 +4486,7 @@ yydefault: } case 244: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1988 + //line php5/php5.y:2003 { 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)) @@ -4484,7 +4494,7 @@ yydefault: } case 245: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:1994 + //line php5/php5.y:2009 { 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)) @@ -4492,7 +4502,7 @@ yydefault: } case 246: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2000 + //line php5/php5.y:2015 { 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)) @@ -4500,7 +4510,7 @@ yydefault: } case 247: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2006 + //line php5/php5.y:2021 { 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)) @@ -4508,7 +4518,7 @@ yydefault: } case 248: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2012 + //line php5/php5.y:2027 { 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)) @@ -4516,7 +4526,7 @@ yydefault: } case 249: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2018 + //line php5/php5.y:2033 { yyVAL.node = expr.NewPostInc(yyDollar[1].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) @@ -4524,7 +4534,7 @@ yydefault: } case 250: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2024 + //line php5/php5.y:2039 { yyVAL.node = expr.NewPreInc(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4532,7 +4542,7 @@ yydefault: } case 251: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2030 + //line php5/php5.y:2045 { yyVAL.node = expr.NewPostDec(yyDollar[1].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) @@ -4540,7 +4550,7 @@ yydefault: } case 252: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2036 + //line php5/php5.y:2051 { yyVAL.node = expr.NewPreDec(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4548,7 +4558,7 @@ yydefault: } case 253: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2042 + //line php5/php5.y:2057 { 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)) @@ -4556,7 +4566,7 @@ yydefault: } case 254: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2048 + //line php5/php5.y:2063 { 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)) @@ -4564,7 +4574,7 @@ yydefault: } case 255: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2054 + //line php5/php5.y:2069 { 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)) @@ -4572,7 +4582,7 @@ yydefault: } case 256: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2060 + //line php5/php5.y:2075 { 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)) @@ -4580,7 +4590,7 @@ yydefault: } case 257: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2066 + //line php5/php5.y:2081 { 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)) @@ -4588,7 +4598,7 @@ yydefault: } case 258: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2072 + //line php5/php5.y:2087 { 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)) @@ -4596,7 +4606,7 @@ yydefault: } case 259: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2078 + //line php5/php5.y:2093 { 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)) @@ -4604,7 +4614,7 @@ yydefault: } case 260: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2084 + //line php5/php5.y:2099 { 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)) @@ -4612,7 +4622,7 @@ yydefault: } case 261: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2090 + //line php5/php5.y:2105 { 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)) @@ -4620,7 +4630,7 @@ yydefault: } case 262: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2096 + //line php5/php5.y:2111 { 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)) @@ -4628,7 +4638,7 @@ yydefault: } case 263: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2102 + //line php5/php5.y:2117 { 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)) @@ -4636,7 +4646,7 @@ yydefault: } case 264: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2108 + //line php5/php5.y:2123 { 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)) @@ -4644,7 +4654,7 @@ yydefault: } case 265: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2114 + //line php5/php5.y:2129 { 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)) @@ -4652,7 +4662,7 @@ yydefault: } case 266: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2120 + //line php5/php5.y:2135 { 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)) @@ -4660,7 +4670,7 @@ yydefault: } case 267: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2126 + //line php5/php5.y:2141 { 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)) @@ -4668,7 +4678,7 @@ yydefault: } case 268: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2132 + //line php5/php5.y:2147 { 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)) @@ -4676,7 +4686,7 @@ yydefault: } case 269: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2138 + //line php5/php5.y:2153 { 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)) @@ -4684,7 +4694,7 @@ yydefault: } case 270: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2144 + //line php5/php5.y:2159 { yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4692,7 +4702,7 @@ yydefault: } case 271: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2150 + //line php5/php5.y:2165 { yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4700,7 +4710,7 @@ yydefault: } case 272: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2156 + //line php5/php5.y:2171 { yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4708,7 +4718,7 @@ yydefault: } case 273: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2162 + //line php5/php5.y:2177 { yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4716,7 +4726,7 @@ yydefault: } case 274: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2168 + //line php5/php5.y:2183 { 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)) @@ -4724,7 +4734,7 @@ yydefault: } case 275: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2174 + //line php5/php5.y:2189 { 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)) @@ -4732,7 +4742,7 @@ yydefault: } case 276: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2180 + //line php5/php5.y:2195 { 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)) @@ -4740,7 +4750,7 @@ yydefault: } case 277: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2186 + //line php5/php5.y:2201 { 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)) @@ -4748,7 +4758,7 @@ yydefault: } case 278: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2192 + //line php5/php5.y:2207 { 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)) @@ -4756,7 +4766,7 @@ yydefault: } case 279: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2198 + //line php5/php5.y:2213 { 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)) @@ -4764,7 +4774,7 @@ yydefault: } case 280: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2204 + //line php5/php5.y:2219 { 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)) @@ -4772,7 +4782,7 @@ yydefault: } case 281: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2210 + //line php5/php5.y:2225 { 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)) @@ -4780,7 +4790,7 @@ yydefault: } case 282: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2216 + //line php5/php5.y:2231 { 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)) @@ -4788,19 +4798,19 @@ yydefault: } case 283: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2222 + //line php5/php5.y:2237 { yyVAL.node = yyDollar[1].node } case 284: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2224 + //line php5/php5.y:2239 { yyVAL.node = yyDollar[1].node } case 285: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2226 + //line php5/php5.y:2241 { yyVAL.node = yyDollar[2].node @@ -4828,7 +4838,7 @@ yydefault: } case 286: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:2252 + //line php5/php5.y:2267 { 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)) @@ -4836,7 +4846,7 @@ yydefault: } case 287: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2258 + //line php5/php5.y:2273 { 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)) @@ -4844,13 +4854,13 @@ yydefault: } case 288: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2264 + //line php5/php5.y:2279 { yyVAL.node = yyDollar[1].node } case 289: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2266 + //line php5/php5.y:2281 { yyVAL.node = cast.NewInt(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4858,7 +4868,7 @@ yydefault: } case 290: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2272 + //line php5/php5.y:2287 { yyVAL.node = cast.NewDouble(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4866,7 +4876,7 @@ yydefault: } case 291: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2278 + //line php5/php5.y:2293 { yyVAL.node = cast.NewString(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4874,7 +4884,7 @@ yydefault: } case 292: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2284 + //line php5/php5.y:2299 { yyVAL.node = cast.NewArray(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4882,7 +4892,7 @@ yydefault: } case 293: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2290 + //line php5/php5.y:2305 { yyVAL.node = cast.NewObject(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4890,7 +4900,7 @@ yydefault: } case 294: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2296 + //line php5/php5.y:2311 { yyVAL.node = cast.NewBool(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4898,7 +4908,7 @@ yydefault: } case 295: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2302 + //line php5/php5.y:2317 { yyVAL.node = cast.NewUnset(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4906,7 +4916,7 @@ yydefault: } case 296: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2308 + //line php5/php5.y:2323 { if strings.EqualFold(yyDollar[1].token.Value, "die") { yyVAL.node = expr.NewDie(yyDollar[2].node) @@ -4918,7 +4928,7 @@ yydefault: } case 297: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2318 + //line php5/php5.y:2333 { yyVAL.node = expr.NewErrorSuppress(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4926,25 +4936,25 @@ yydefault: } case 298: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2324 + //line php5/php5.y:2339 { yyVAL.node = yyDollar[1].node } case 299: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2326 + //line php5/php5.y:2341 { yyVAL.node = yyDollar[1].node } case 300: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2328 + //line php5/php5.y:2343 { yyVAL.node = yyDollar[1].node } case 301: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2330 + //line php5/php5.y:2345 { yyVAL.node = expr.NewShellExec(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -4952,7 +4962,7 @@ yydefault: } case 302: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2336 + //line php5/php5.y:2351 { yyVAL.node = expr.NewPrint(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4960,7 +4970,7 @@ yydefault: } case 303: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2342 + //line php5/php5.y:2357 { yyVAL.node = expr.NewYield(nil, nil) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -4968,7 +4978,7 @@ yydefault: } case 304: yyDollar = yyS[yypt-9 : yypt+1] - //line php5/php5.y:2348 + //line php5/php5.y:2363 { yyVAL.node = expr.NewClosure(yyDollar[4].list, yyDollar[6].list, nil, yyDollar[8].list, false, yyDollar[2].boolWithToken.value, "") yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[9].token)) @@ -4977,7 +4987,7 @@ yydefault: } case 305: yyDollar = yyS[yypt-10 : yypt+1] - //line php5/php5.y:2355 + //line php5/php5.y:2370 { yyVAL.node = expr.NewClosure(yyDollar[5].list, yyDollar[7].list, nil, yyDollar[9].list, true, yyDollar[3].boolWithToken.value, "") yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[10].token)) @@ -4986,7 +4996,7 @@ yydefault: } case 306: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2365 + //line php5/php5.y:2380 { yyVAL.node = expr.NewYield(nil, yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4994,7 +5004,7 @@ yydefault: } case 307: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2371 + //line php5/php5.y:2386 { yyVAL.node = expr.NewYield(nil, yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5002,7 +5012,7 @@ yydefault: } case 308: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2377 + //line php5/php5.y:2392 { 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)) @@ -5010,7 +5020,7 @@ yydefault: } case 309: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2383 + //line php5/php5.y:2398 { 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)) @@ -5018,7 +5028,7 @@ yydefault: } case 310: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2392 + //line php5/php5.y:2407 { 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)) @@ -5026,7 +5036,7 @@ yydefault: } case 311: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2398 + //line php5/php5.y:2413 { 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)) @@ -5034,7 +5044,7 @@ yydefault: } case 312: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2404 + //line php5/php5.y:2419 { str := scalar.NewString(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(str, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5046,7 +5056,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2414 + //line php5/php5.y:2429 { 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)) @@ -5054,7 +5064,7 @@ yydefault: } case 314: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2423 + //line php5/php5.y:2438 { yyVAL.node = expr.NewArray(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -5062,7 +5072,7 @@ yydefault: } case 315: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2429 + //line php5/php5.y:2444 { yyVAL.node = expr.NewShortArray(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -5070,25 +5080,25 @@ yydefault: } case 316: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2438 + //line php5/php5.y:2453 { yyVAL.token = yyDollar[1].token } case 317: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2443 + //line php5/php5.y:2458 { yyVAL.list = []node.Node{} } case 318: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2445 + //line php5/php5.y:2460 { yyVAL.list = yyDollar[3].list } case 319: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2450 + //line php5/php5.y:2465 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[3].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -5106,7 +5116,7 @@ yydefault: } case 320: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2466 + //line php5/php5.y:2481 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[4].token)) @@ -5124,7 +5134,7 @@ yydefault: } case 321: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2482 + //line php5/php5.y:2497 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5142,7 +5152,7 @@ yydefault: } case 322: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2498 + //line php5/php5.y:2513 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[2].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -5160,83 +5170,83 @@ yydefault: } case 323: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2517 + //line php5/php5.y:2532 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) yylex.(*Parser).comments.AddComments(name, yylex.(*Parser).listGetFirstNodeComments(yyDollar[1].list)) - yyVAL.node = expr.NewFunctionCall(name, yyDollar[2].nodesWithEndToken.nodes) - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(name, yyDollar[2].nodesWithEndToken.endToken)) + yyVAL.node = expr.NewFunctionCall(name, yyDollar[2].node.(*node.ArgumentList)) + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(name, yyDollar[2].node)) yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[name]) } case 324: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2527 + //line php5/php5.y:2542 { funcName := name.NewRelative(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(funcName, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) yylex.(*Parser).comments.AddComments(funcName, yyDollar[1].token.Comments()) - yyVAL.node = expr.NewFunctionCall(funcName, yyDollar[4].nodesWithEndToken.nodes) - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(funcName, yyDollar[4].nodesWithEndToken.endToken)) + yyVAL.node = expr.NewFunctionCall(funcName, yyDollar[4].node.(*node.ArgumentList)) + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(funcName, yyDollar[4].node)) yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[funcName]) } case 325: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2537 + //line php5/php5.y:2552 { funcName := name.NewFullyQualified(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(funcName, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) yylex.(*Parser).comments.AddComments(funcName, yyDollar[1].token.Comments()) - yyVAL.node = expr.NewFunctionCall(funcName, yyDollar[3].nodesWithEndToken.nodes) - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(funcName, yyDollar[3].nodesWithEndToken.endToken)) + yyVAL.node = expr.NewFunctionCall(funcName, yyDollar[3].node.(*node.ArgumentList)) + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(funcName, yyDollar[3].node)) yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[funcName]) } case 326: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2547 + //line php5/php5.y:2562 { - yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].nodesWithEndToken.nodes) - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].nodesWithEndToken.endToken)) + 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)) yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) } case 327: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2553 + //line php5/php5.y:2568 { - yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].nodesWithEndToken.nodes) - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].nodesWithEndToken.endToken)) + 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)) yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) } case 328: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2559 + //line php5/php5.y:2574 { - yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].nodesWithEndToken.nodes) - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].nodesWithEndToken.endToken)) + 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)) yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) } case 329: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2565 + //line php5/php5.y:2580 { - yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].nodesWithEndToken.nodes) - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].nodesWithEndToken.endToken)) + 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)) yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) } case 330: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2571 + //line php5/php5.y:2586 { - yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].nodesWithEndToken.nodes) - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].nodesWithEndToken.endToken)) + 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)) yylex.(*Parser).comments.AddComments(yyVAL.node, yylex.(*Parser).comments[yyDollar[1].node]) } case 331: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2580 + //line php5/php5.y:2595 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5244,7 +5254,7 @@ yydefault: } case 332: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2586 + //line php5/php5.y:2601 { yyVAL.node = name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -5252,7 +5262,7 @@ yydefault: } case 333: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2592 + //line php5/php5.y:2607 { yyVAL.node = name.NewRelative(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) @@ -5260,7 +5270,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2598 + //line php5/php5.y:2613 { yyVAL.node = name.NewFullyQualified(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) @@ -5268,7 +5278,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2607 + //line php5/php5.y:2622 { yyVAL.node = name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -5276,7 +5286,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2613 + //line php5/php5.y:2628 { yyVAL.node = name.NewRelative(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) @@ -5284,7 +5294,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2619 + //line php5/php5.y:2634 { yyVAL.node = name.NewFullyQualified(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) @@ -5292,19 +5302,19 @@ yydefault: } case 338: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2628 + //line php5/php5.y:2643 { yyVAL.node = yyDollar[1].node } case 339: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2630 + //line php5/php5.y:2645 { yyVAL.node = yyDollar[1].node } case 340: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2635 + //line php5/php5.y:2650 { yyVAL.node = yyDollar[1].node @@ -5342,79 +5352,79 @@ yydefault: } case 341: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2671 + //line php5/php5.y:2686 { yyVAL.node = yyDollar[1].node } case 342: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2677 + //line php5/php5.y:2692 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 343: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2679 + //line php5/php5.y:2694 { yyVAL.list = []node.Node{} } case 344: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2685 + //line php5/php5.y:2700 { yyVAL.list = yyDollar[2].list } case 345: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2690 + //line php5/php5.y:2705 { yyVAL.node = nil } case 346: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2692 + //line php5/php5.y:2707 { yyVAL.node = nil } case 347: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2694 + //line php5/php5.y:2709 { yyVAL.node = yyDollar[1].node } case 348: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2699 + //line php5/php5.y:2714 { yyVAL.list = []node.Node{} } case 349: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2701 + //line php5/php5.y:2716 { yyVAL.list = []node.Node{scalar.NewEncapsedStringPart(yyDollar[1].token.Value)} } case 350: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2703 + //line php5/php5.y:2718 { yyVAL.list = yyDollar[1].list } case 351: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:2708 + //line php5/php5.y:2723 { - yyVAL.nodesWithEndToken = nil + yyVAL.node = nil } case 352: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2710 + //line php5/php5.y:2725 { - yyVAL.nodesWithEndToken = yyDollar[1].nodesWithEndToken + yyVAL.node = yyDollar[1].node } case 353: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2715 + //line php5/php5.y:2730 { yyVAL.node = scalar.NewLnumber(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5422,7 +5432,7 @@ yydefault: } case 354: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2721 + //line php5/php5.y:2736 { yyVAL.node = scalar.NewDnumber(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5430,7 +5440,7 @@ yydefault: } case 355: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2727 + //line php5/php5.y:2742 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5438,7 +5448,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2733 + //line php5/php5.y:2748 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5446,7 +5456,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2739 + //line php5/php5.y:2754 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5454,7 +5464,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2745 + //line php5/php5.y:2760 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5462,7 +5472,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2751 + //line php5/php5.y:2766 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5470,7 +5480,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2757 + //line php5/php5.y:2772 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5478,7 +5488,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2763 + //line php5/php5.y:2778 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5486,7 +5496,7 @@ yydefault: } case 362: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2769 + //line php5/php5.y:2784 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5494,7 +5504,7 @@ yydefault: } case 363: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2775 + //line php5/php5.y:2790 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(encapsed, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -5506,7 +5516,7 @@ yydefault: } case 364: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2785 + //line php5/php5.y:2800 { 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)) @@ -5514,7 +5524,7 @@ yydefault: } case 365: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2794 + //line php5/php5.y:2809 { target := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -5526,25 +5536,25 @@ yydefault: } case 366: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2807 + //line php5/php5.y:2822 { yyVAL.node = yyDollar[1].node } case 367: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2812 + //line php5/php5.y:2827 { yyVAL.node = yyDollar[1].node } case 368: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2814 + //line php5/php5.y:2829 { yyVAL.node = yyDollar[1].node } case 369: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2816 + //line php5/php5.y:2831 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -5556,7 +5566,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2826 + //line php5/php5.y:2841 { name := name.NewRelative(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) @@ -5568,7 +5578,7 @@ yydefault: } case 371: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2836 + //line php5/php5.y:2851 { name := name.NewFullyQualified(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) @@ -5580,7 +5590,7 @@ yydefault: } case 372: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2846 + //line php5/php5.y:2861 { yyVAL.node = expr.NewArray(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -5588,7 +5598,7 @@ yydefault: } case 373: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2852 + //line php5/php5.y:2867 { yyVAL.node = expr.NewShortArray(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -5596,13 +5606,13 @@ yydefault: } case 374: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2858 + //line php5/php5.y:2873 { yyVAL.node = yyDollar[1].node } case 375: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2860 + //line php5/php5.y:2875 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5610,13 +5620,13 @@ yydefault: } case 376: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:2866 + //line php5/php5.y:2881 { yyVAL.node = yyDollar[1].node } case 377: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:2871 + //line php5/php5.y:2886 { 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)) @@ -5624,7 +5634,7 @@ yydefault: } case 378: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2877 + //line php5/php5.y:2892 { 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)) @@ -5632,7 +5642,7 @@ yydefault: } case 379: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2883 + //line php5/php5.y:2898 { 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)) @@ -5640,7 +5650,7 @@ yydefault: } case 380: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2889 + //line php5/php5.y:2904 { 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)) @@ -5648,7 +5658,7 @@ yydefault: } case 381: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2895 + //line php5/php5.y:2910 { 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)) @@ -5656,7 +5666,7 @@ yydefault: } case 382: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2901 + //line php5/php5.y:2916 { 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)) @@ -5664,7 +5674,7 @@ yydefault: } case 383: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2907 + //line php5/php5.y:2922 { 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)) @@ -5672,7 +5682,7 @@ yydefault: } case 384: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2913 + //line php5/php5.y:2928 { yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5680,7 +5690,7 @@ yydefault: } case 385: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:2919 + //line php5/php5.y:2934 { yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5688,7 +5698,7 @@ yydefault: } case 386: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2925 + //line php5/php5.y:2940 { 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)) @@ -5696,7 +5706,7 @@ yydefault: } case 387: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2931 + //line php5/php5.y:2946 { 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)) @@ -5704,7 +5714,7 @@ yydefault: } case 388: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2937 + //line php5/php5.y:2952 { 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)) @@ -5712,7 +5722,7 @@ yydefault: } case 389: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2943 + //line php5/php5.y:2958 { 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)) @@ -5720,7 +5730,7 @@ yydefault: } case 390: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2949 + //line php5/php5.y:2964 { 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)) @@ -5728,7 +5738,7 @@ yydefault: } case 391: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2955 + //line php5/php5.y:2970 { 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)) @@ -5736,7 +5746,7 @@ yydefault: } case 392: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2961 + //line php5/php5.y:2976 { 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)) @@ -5744,7 +5754,7 @@ yydefault: } case 393: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2967 + //line php5/php5.y:2982 { 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)) @@ -5752,7 +5762,7 @@ yydefault: } case 394: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2973 + //line php5/php5.y:2988 { 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)) @@ -5760,7 +5770,7 @@ yydefault: } case 395: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2979 + //line php5/php5.y:2994 { 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)) @@ -5768,7 +5778,7 @@ yydefault: } case 396: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2985 + //line php5/php5.y:3000 { 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)) @@ -5776,7 +5786,7 @@ yydefault: } case 397: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2991 + //line php5/php5.y:3006 { 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)) @@ -5784,7 +5794,7 @@ yydefault: } case 398: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:2997 + //line php5/php5.y:3012 { 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)) @@ -5792,7 +5802,7 @@ yydefault: } case 399: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3003 + //line php5/php5.y:3018 { 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)) @@ -5800,7 +5810,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3009 + //line php5/php5.y:3024 { 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)) @@ -5808,7 +5818,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3015 + //line php5/php5.y:3030 { 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)) @@ -5816,7 +5826,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3021 + //line php5/php5.y:3036 { 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)) @@ -5824,7 +5834,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3027 + //line php5/php5.y:3042 { 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)) @@ -5832,7 +5842,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3033 + //line php5/php5.y:3048 { 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)) @@ -5840,7 +5850,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3039 + //line php5/php5.y:3054 { 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)) @@ -5848,7 +5858,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:3045 + //line php5/php5.y:3060 { 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)) @@ -5856,7 +5866,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3051 + //line php5/php5.y:3066 { yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5864,7 +5874,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3057 + //line php5/php5.y:3072 { yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -5872,19 +5882,19 @@ yydefault: } case 409: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3063 + //line php5/php5.y:3078 { yyVAL.node = yyDollar[2].node } case 410: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3068 + //line php5/php5.y:3083 { yyVAL.node = yyDollar[1].node } case 411: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3070 + //line php5/php5.y:3085 { name := name.NewName(yyDollar[1].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition(yyDollar[1].list)) @@ -5896,7 +5906,7 @@ yydefault: } case 412: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3080 + //line php5/php5.y:3095 { name := name.NewRelative(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) @@ -5908,7 +5918,7 @@ yydefault: } case 413: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3090 + //line php5/php5.y:3105 { name := name.NewFullyQualified(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) @@ -5920,7 +5930,7 @@ yydefault: } case 414: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3103 + //line php5/php5.y:3118 { name := node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5932,25 +5942,25 @@ yydefault: } case 415: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3113 + //line php5/php5.y:3128 { yyVAL.node = yyDollar[1].node } case 416: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3115 + //line php5/php5.y:3130 { yyVAL.node = yyDollar[1].node } case 417: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3117 + //line php5/php5.y:3132 { yyVAL.node = yyDollar[1].node } case 418: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3119 + //line php5/php5.y:3134 { yyVAL.node = scalar.NewEncapsed(yyDollar[2].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -5958,7 +5968,7 @@ yydefault: } case 419: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3125 + //line php5/php5.y:3140 { 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)) @@ -5966,7 +5976,7 @@ yydefault: } case 420: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3131 + //line php5/php5.y:3146 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -5974,19 +5984,19 @@ yydefault: } case 421: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3140 + //line php5/php5.y:3155 { yyVAL.list = nil } case 422: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3142 + //line php5/php5.y:3157 { yyVAL.list = yyDollar[1].list } case 425: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:3152 + //line php5/php5.y:3167 { 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)) @@ -5996,7 +6006,7 @@ yydefault: } case 426: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3160 + //line php5/php5.y:3175 { arrayItem := expr.NewArrayItem(nil, yyDollar[3].node, false) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) @@ -6006,7 +6016,7 @@ yydefault: } case 427: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3168 + //line php5/php5.y:3183 { 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)) @@ -6016,7 +6026,7 @@ yydefault: } case 428: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3176 + //line php5/php5.y:3191 { arrayItem := expr.NewArrayItem(nil, yyDollar[1].node, false) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) @@ -6026,49 +6036,49 @@ yydefault: } case 429: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3187 + //line php5/php5.y:3202 { yyVAL.node = yyDollar[1].node } case 430: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3189 + //line php5/php5.y:3204 { yyVAL.node = yyDollar[1].node } case 431: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3194 + //line php5/php5.y:3209 { yyVAL.node = yyDollar[2].node } case 432: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3196 + //line php5/php5.y:3211 { yyVAL.node = yyDollar[2].node } case 433: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3202 + //line php5/php5.y:3217 { yyVAL.node = yyDollar[1].node } case 434: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3208 + //line php5/php5.y:3223 { yyVAL.node = yyDollar[1].node } case 435: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3213 + //line php5/php5.y:3228 { yyVAL.node = yyDollar[1].node } case 436: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:3218 + //line php5/php5.y:3233 { yyVAL.node = yyDollar[1].node @@ -6123,25 +6133,25 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3271 + //line php5/php5.y:3286 { yyVAL.node = yyDollar[1].node } case 438: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3276 + //line php5/php5.y:3291 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].list...) } case 439: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3278 + //line php5/php5.y:3293 { yyVAL.list = []node.Node{} } case 440: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3284 + //line php5/php5.y:3299 { if yyDollar[3].list != nil { yyDollar[3].list[0].(*expr.MethodCall).Method = yyDollar[2].list[len(yyDollar[2].list)-1].(*expr.PropertyFetch).Property @@ -6152,7 +6162,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3296 + //line php5/php5.y:3311 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) @@ -6161,7 +6171,7 @@ yydefault: } case 442: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3303 + //line php5/php5.y:3318 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) @@ -6170,38 +6180,38 @@ yydefault: } case 443: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3313 + //line php5/php5.y:3328 { - yyVAL.node = expr.NewMethodCall(nil, nil, yyDollar[1].nodesWithEndToken.nodes) - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeListTokenPosition(yyDollar[1].nodesWithEndToken.nodes, yyDollar[1].nodesWithEndToken.endToken)) + 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:3321 + //line php5/php5.y:3336 { yyVAL.list = []node.Node{yyDollar[1].node} } case 445: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3323 + //line php5/php5.y:3338 { yyVAL.list = yyDollar[1].list } case 446: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3325 + //line php5/php5.y:3340 { yyVAL.list = nil } case 447: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3330 + //line php5/php5.y:3345 { yyVAL.node = yyDollar[1].node } case 448: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3332 + //line php5/php5.y:3347 { yyDollar[1].simpleIndirectReference.last.SetVarName(yyDollar[2].node) @@ -6213,7 +6223,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3345 + //line php5/php5.y:3360 { 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)) @@ -6221,7 +6231,7 @@ yydefault: } case 450: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3351 + //line php5/php5.y:3366 { 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)) @@ -6229,13 +6239,13 @@ yydefault: } case 451: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3361 + //line php5/php5.y:3376 { yyVAL.node = yyDollar[1].node } case 452: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3366 + //line php5/php5.y:3381 { 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)) @@ -6243,7 +6253,7 @@ yydefault: } case 453: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3372 + //line php5/php5.y:3387 { 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)) @@ -6251,31 +6261,31 @@ yydefault: } case 454: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3380 + //line php5/php5.y:3395 { yyVAL.node = yyDollar[1].node } case 455: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3381 + //line php5/php5.y:3396 { yyVAL.node = yyDollar[1].node } case 456: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3382 + //line php5/php5.y:3397 { yyVAL.node = yyDollar[1].node } case 457: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3388 + //line php5/php5.y:3403 { yyVAL.node = yyDollar[1].node } case 458: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3390 + //line php5/php5.y:3405 { yyDollar[1].simpleIndirectReference.last.SetVarName(yyDollar[2].node) @@ -6287,13 +6297,13 @@ yydefault: } case 459: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3400 + //line php5/php5.y:3415 { yyVAL.node = yyDollar[1].node } case 460: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3405 + //line php5/php5.y:3420 { 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)) @@ -6301,7 +6311,7 @@ yydefault: } case 461: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3411 + //line php5/php5.y:3426 { 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)) @@ -6309,13 +6319,13 @@ yydefault: } case 462: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3417 + //line php5/php5.y:3432 { yyVAL.node = yyDollar[1].node } case 463: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3423 + //line php5/php5.y:3438 { name := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6327,7 +6337,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3433 + //line php5/php5.y:3448 { yyVAL.node = expr.NewVariable(yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -6335,25 +6345,25 @@ yydefault: } case 465: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3442 + //line php5/php5.y:3457 { yyVAL.node = nil } case 466: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3444 + //line php5/php5.y:3459 { yyVAL.node = yyDollar[1].node } case 467: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3450 + //line php5/php5.y:3465 { yyVAL.list = yyDollar[1].list } case 468: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3452 + //line php5/php5.y:3467 { fetch := expr.NewPropertyFetch(nil, yyDollar[1].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) @@ -6362,7 +6372,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3462 + //line php5/php5.y:3477 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) @@ -6371,7 +6381,7 @@ yydefault: } case 470: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3469 + //line php5/php5.y:3484 { fetch := expr.NewArrayDimFetch(nil, yyDollar[3].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) @@ -6380,7 +6390,7 @@ yydefault: } case 471: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3476 + //line php5/php5.y:3491 { fetch := expr.NewPropertyFetch(nil, yyDollar[1].node) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) @@ -6389,7 +6399,7 @@ yydefault: } case 472: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3486 + //line php5/php5.y:3501 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6397,13 +6407,13 @@ yydefault: } case 473: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3492 + //line php5/php5.y:3507 { yyVAL.node = yyDollar[2].node } case 474: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3497 + //line php5/php5.y:3512 { n := expr.NewVariable(nil) yylex.(*Parser).positions.AddPosition(n, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6413,7 +6423,7 @@ yydefault: } case 475: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3505 + //line php5/php5.y:3520 { n := expr.NewVariable(nil) yylex.(*Parser).positions.AddPosition(n, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -6427,13 +6437,13 @@ yydefault: } case 476: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3520 + //line php5/php5.y:3535 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 477: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3522 + //line php5/php5.y:3537 { if yyDollar[1].node == nil { yyVAL.list = []node.Node{} @@ -6443,7 +6453,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3534 + //line php5/php5.y:3549 { yyVAL.node = expr.NewArrayItem(nil, yyDollar[1].node, false) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) @@ -6451,7 +6461,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3540 + //line php5/php5.y:3555 { item := expr.NewList(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(item, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -6463,25 +6473,25 @@ yydefault: } case 480: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3550 + //line php5/php5.y:3565 { yyVAL.node = nil } case 481: yyDollar = yyS[yypt-0 : yypt+1] - //line php5/php5.y:3556 + //line php5/php5.y:3571 { yyVAL.list = []node.Node{} } case 482: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3558 + //line php5/php5.y:3573 { yyVAL.list = yyDollar[1].list } case 483: yyDollar = yyS[yypt-5 : yypt+1] - //line php5/php5.y:3563 + //line php5/php5.y:3578 { 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)) @@ -6491,7 +6501,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3571 + //line php5/php5.y:3586 { arrayItem := expr.NewArrayItem(nil, yyDollar[3].node, false) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[3].node)) @@ -6501,7 +6511,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3579 + //line php5/php5.y:3594 { 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)) @@ -6511,7 +6521,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3587 + //line php5/php5.y:3602 { arrayItem := expr.NewArrayItem(nil, yyDollar[1].node, false) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewNodePosition(yyDollar[1].node)) @@ -6521,7 +6531,7 @@ yydefault: } case 487: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:3595 + //line php5/php5.y:3610 { 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)) @@ -6531,7 +6541,7 @@ yydefault: } case 488: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3603 + //line php5/php5.y:3618 { arrayItem := expr.NewArrayItem(nil, yyDollar[4].node, true) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node)) @@ -6541,7 +6551,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3611 + //line php5/php5.y:3626 { 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)) @@ -6551,7 +6561,7 @@ yydefault: } case 490: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3619 + //line php5/php5.y:3634 { arrayItem := expr.NewArrayItem(nil, yyDollar[2].node, true) yylex.(*Parser).positions.AddPosition(arrayItem, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -6561,13 +6571,13 @@ yydefault: } case 491: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3630 + //line php5/php5.y:3645 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 492: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3632 + //line php5/php5.y:3647 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(encapsed, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -6576,13 +6586,13 @@ yydefault: } case 493: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3639 + //line php5/php5.y:3654 { yyVAL.list = []node.Node{yyDollar[1].node} } case 494: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3641 + //line php5/php5.y:3656 { encapsed := scalar.NewEncapsedStringPart(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(encapsed, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6591,7 +6601,7 @@ yydefault: } case 495: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3651 + //line php5/php5.y:3666 { name := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6603,7 +6613,7 @@ yydefault: } case 496: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3661 + //line php5/php5.y:3676 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6618,7 +6628,7 @@ yydefault: } case 497: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3674 + //line php5/php5.y:3689 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6636,7 +6646,7 @@ yydefault: } case 498: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3690 + //line php5/php5.y:3705 { yyVAL.node = yyDollar[2].node yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) @@ -6644,7 +6654,7 @@ yydefault: } case 499: yyDollar = yyS[yypt-6 : yypt+1] - //line php5/php5.y:3696 + //line php5/php5.y:3711 { identifier := node.NewIdentifier(yyDollar[2].token.Value) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[2].token)) @@ -6659,13 +6669,13 @@ yydefault: } case 500: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3710 + //line php5/php5.y:3725 { yyVAL.node = yyDollar[2].node } case 501: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3715 + //line php5/php5.y:3730 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6673,7 +6683,7 @@ yydefault: } case 502: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3721 + //line php5/php5.y:3736 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(yyDollar[1].token.Value); err == nil { @@ -6687,7 +6697,7 @@ yydefault: } case 503: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3733 + //line php5/php5.y:3748 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yylex.(*Parser).positions.AddPosition(identifier, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[1].token)) @@ -6699,7 +6709,7 @@ yydefault: } case 504: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3746 + //line php5/php5.y:3761 { yyVAL.node = expr.NewIsset(yyDollar[3].list) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -6707,7 +6717,7 @@ yydefault: } case 505: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3752 + //line php5/php5.y:3767 { yyVAL.node = expr.NewEmpty(yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -6715,7 +6725,7 @@ yydefault: } case 506: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3758 + //line php5/php5.y:3773 { yyVAL.node = expr.NewEmpty(yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -6723,7 +6733,7 @@ yydefault: } case 507: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3764 + //line php5/php5.y:3779 { yyVAL.node = expr.NewInclude(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -6731,7 +6741,7 @@ yydefault: } case 508: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3770 + //line php5/php5.y:3785 { yyVAL.node = expr.NewIncludeOnce(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -6739,7 +6749,7 @@ yydefault: } case 509: yyDollar = yyS[yypt-4 : yypt+1] - //line php5/php5.y:3776 + //line php5/php5.y:3791 { yyVAL.node = expr.NewEval(yyDollar[3].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) @@ -6747,7 +6757,7 @@ yydefault: } case 510: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3782 + //line php5/php5.y:3797 { yyVAL.node = expr.NewRequire(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -6755,7 +6765,7 @@ yydefault: } case 511: yyDollar = yyS[yypt-2 : yypt+1] - //line php5/php5.y:3788 + //line php5/php5.y:3803 { yyVAL.node = expr.NewRequireOnce(yyDollar[2].node) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -6763,31 +6773,31 @@ yydefault: } case 512: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3797 + //line php5/php5.y:3812 { yyVAL.list = []node.Node{yyDollar[1].node} } case 513: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3799 + //line php5/php5.y:3814 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 514: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3804 + //line php5/php5.y:3819 { yyVAL.node = yyDollar[1].node } case 515: yyDollar = yyS[yypt-1 : yypt+1] - //line php5/php5.y:3806 + //line php5/php5.y:3821 { yyVAL.node = yyDollar[1].node } case 516: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3811 + //line php5/php5.y:3826 { target := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -6799,7 +6809,7 @@ yydefault: } case 517: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3821 + //line php5/php5.y:3836 { target := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -6811,7 +6821,7 @@ yydefault: } case 518: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3834 + //line php5/php5.y:3849 { target := node.NewIdentifier(yyDollar[3].token.Value) yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition(yyDollar[3].token)) @@ -6823,7 +6833,7 @@ yydefault: } case 519: yyDollar = yyS[yypt-3 : yypt+1] - //line php5/php5.y:3847 + //line php5/php5.y:3862 { 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 8d620e6..fe82192 100644 --- a/php5/php5.y +++ b/php5/php5.y @@ -242,6 +242,7 @@ import ( %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 +%type ctor_arguments function_call_parameter_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 @@ -258,7 +259,7 @@ import ( %type simple_indirect_reference %type foreach_variable foreach_optional_arg -%type ctor_arguments function_call_parameter_list switch_case_list method_body trait_adaptations +%type switch_case_list method_body trait_adaptations %type is_reference is_variadic %type while_statement for_statement foreach_statement @@ -1349,16 +1350,27 @@ optional_class_type: function_call_parameter_list: '(' ')' - { $$ = &nodesWithEndToken{[]node.Node{}, $2} } + { + $$ = node.NewArgumentList(nil) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) + } | '(' non_empty_function_call_parameter_list ')' - { $$ = &nodesWithEndToken{$2, $3} } + { + $$ = node.NewArgumentList($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) + } | '(' yield_expr ')' { arg := node.NewArgument($2, false, false) - yylex.(*Parser).positions.AddPosition(arg, yylex.(*Parser).positionBuilder.NewNodePosition($2)) - yylex.(*Parser).comments.AddComments(arg, yylex.(*Parser).comments[$2]) + $$ = node.NewArgumentList([]node.Node{arg}) - $$ = &nodesWithEndToken{[]node.Node{arg}, $3} + // save position + yylex.(*Parser).positions.AddPosition(arg, yylex.(*Parser).positionBuilder.NewNodePosition($2)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) } ; @@ -1886,9 +1898,10 @@ instance_call: new_expr: T_NEW class_name_reference ctor_arguments { + if $3 != nil { - $$ = expr.NewNew($2, $3.nodes) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3.endToken)) + $$ = expr.NewNew($2, $3.(*node.ArgumentList)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) } else { $$ = expr.NewNew($2, nil) yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) @@ -1923,12 +1936,14 @@ expr_without_variable: } | variable '=' '&' T_NEW class_name_reference ctor_arguments { - _new := expr.NewNew($5, nil) - yylex.(*Parser).positions.AddPosition(_new, yylex.(*Parser).positionBuilder.NewTokenNodePosition($4, $5)) + var _new *expr.New if $6 != nil { - _new = expr.NewNew($5, $6.nodes) - yylex.(*Parser).positions.AddPosition(_new, yylex.(*Parser).positionBuilder.NewTokensPosition($4, $6.endToken)) + _new = expr.NewNew($5, $6.(*node.ArgumentList)) + yylex.(*Parser).positions.AddPosition(_new, yylex.(*Parser).positionBuilder.NewTokenNodePosition($4, $6)) + } else { + _new = expr.NewNew($5, nil) + yylex.(*Parser).positions.AddPosition(_new, yylex.(*Parser).positionBuilder.NewTokenNodePosition($4, $5)) } yylex.(*Parser).comments.AddComments(_new, yylex.(*Parser).comments[$1]) @@ -2519,8 +2534,8 @@ function_call: yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewNodeListPosition($1)) yylex.(*Parser).comments.AddComments(name, yylex.(*Parser).listGetFirstNodeComments($1)) - $$ = expr.NewFunctionCall(name, $2.nodes) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(name, $2.endToken)) + $$ = expr.NewFunctionCall(name, $2.(*node.ArgumentList)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition(name, $2)) yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[name]) } | T_NAMESPACE T_NS_SEPARATOR namespace_name function_call_parameter_list @@ -2529,8 +2544,8 @@ function_call: yylex.(*Parser).positions.AddPosition(funcName, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $3)) yylex.(*Parser).comments.AddComments(funcName, $1.Comments()) - $$ = expr.NewFunctionCall(funcName, $4.nodes) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(funcName, $4.endToken)) + $$ = expr.NewFunctionCall(funcName, $4.(*node.ArgumentList)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition(funcName, $4)) yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[funcName]) } | T_NS_SEPARATOR namespace_name function_call_parameter_list @@ -2539,38 +2554,38 @@ function_call: yylex.(*Parser).positions.AddPosition(funcName, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($1, $2)) yylex.(*Parser).comments.AddComments(funcName, $1.Comments()) - $$ = expr.NewFunctionCall(funcName, $3.nodes) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(funcName, $3.endToken)) + $$ = expr.NewFunctionCall(funcName, $3.(*node.ArgumentList)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition(funcName, $3)) yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[funcName]) } | class_name T_PAAMAYIM_NEKUDOTAYIM variable_name function_call_parameter_list { - $$ = expr.NewStaticCall($1, $3, $4.nodes) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4.endToken)) + $$ = expr.NewStaticCall($1, $3, $4.(*node.ArgumentList)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) } | class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects function_call_parameter_list { - $$ = expr.NewStaticCall($1, $3, $4.nodes) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4.endToken)) + $$ = expr.NewStaticCall($1, $3, $4.(*node.ArgumentList)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_name function_call_parameter_list { - $$ = expr.NewStaticCall($1, $3, $4.nodes) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4.endToken)) + $$ = expr.NewStaticCall($1, $3, $4.(*node.ArgumentList)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects function_call_parameter_list { - $$ = expr.NewStaticCall($1, $3, $4.nodes) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4.endToken)) + $$ = expr.NewStaticCall($1, $3, $4.(*node.ArgumentList)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) } | variable_without_objects function_call_parameter_list { - $$ = expr.NewFunctionCall($1, $2.nodes) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2.endToken)) + $$ = expr.NewFunctionCall($1, $2.(*node.ArgumentList)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $2)) yylex.(*Parser).comments.AddComments($$, yylex.(*Parser).comments[$1]) } ; @@ -3311,8 +3326,8 @@ array_method_dereference: method: function_call_parameter_list { - $$ = expr.NewMethodCall(nil, nil, $1.nodes) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($1.nodes, $1.endToken)) + $$ = expr.NewMethodCall(nil, nil, $1.(*node.ArgumentList)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodePosition($1)) } ; diff --git a/php5/php5_test.go b/php5/php5_test.go index 4dccea5..093aa6a 100644 --- a/php5/php5_test.go +++ b/php5/php5_test.go @@ -434,18 +434,22 @@ func TestPhp5(t *testing.T) { &stmt.Expression{ Expr: &expr.FunctionCall{ Function: &name.Name{Parts: []node.Node{&name.NamePart{Value: "foo"}}}, - Arguments: []node.Node{ - &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, - &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, + &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + }, }, }, }, &stmt.Expression{ Expr: &expr.FunctionCall{ Function: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, - Arguments: []node.Node{ - &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, - &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, + &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + }, }, }, }, @@ -453,9 +457,11 @@ func TestPhp5(t *testing.T) { Expr: &expr.MethodCall{ Variable: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, Method: &node.Identifier{Value: "bar"}, - Arguments: []node.Node{ - &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, - &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, + &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + }, }, }, }, @@ -463,9 +469,11 @@ func TestPhp5(t *testing.T) { Expr: &expr.StaticCall{ Class: &name.Name{Parts: []node.Node{&name.NamePart{Value: "foo"}}}, Call: &node.Identifier{Value: "bar"}, - Arguments: []node.Node{ - &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, - &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, + &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + }, }, }, }, @@ -473,18 +481,22 @@ func TestPhp5(t *testing.T) { Expr: &expr.StaticCall{ Class: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, Call: &node.Identifier{Value: "bar"}, - Arguments: []node.Node{ - &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, - &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, + &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + }, }, }, }, &stmt.Expression{ Expr: &expr.New{ Class: &name.Name{Parts: []node.Node{&name.NamePart{Value: "foo"}}}, - Arguments: []node.Node{ - &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, - &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, + &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + }, }, }, }, @@ -665,9 +677,9 @@ func TestPhp5(t *testing.T) { Parts: []node.Node{ &scalar.EncapsedStringPart{Value: "test "}, &expr.MethodCall{ - Variable: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, - Method: &node.Identifier{Value: "bar"}, - Arguments: []node.Node{}, + Variable: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, + Method: &node.Identifier{Value: "bar"}, + ArgumentList: &node.ArgumentList{}, }, }, }, @@ -1134,7 +1146,7 @@ func TestPhp5(t *testing.T) { &name.NamePart{Value: "foo"}, }, }, - Arguments: []node.Node{}, + ArgumentList: &node.ArgumentList{}, }, }, }, @@ -2081,7 +2093,7 @@ func TestPhp5(t *testing.T) { &name.NamePart{Value: "foo"}, }, }, - Arguments: []node.Node{}, + ArgumentList: &node.ArgumentList{}, }, }, &stmt.Expression{ @@ -2091,11 +2103,13 @@ func TestPhp5(t *testing.T) { &name.NamePart{Value: "foo"}, }, }, - Arguments: []node.Node{ - &node.Argument{ - Variadic: false, - IsReference: true, - Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{ + Variadic: false, + IsReference: true, + Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + }, }, }, }, @@ -2107,12 +2121,14 @@ func TestPhp5(t *testing.T) { &name.NamePart{Value: "foo"}, }, }, - Arguments: []node.Node{ - &node.Argument{ - Variadic: false, - IsReference: false, - Expr: &expr.ShortArray{ - Items: []node.Node{}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{ + Variadic: false, + IsReference: false, + Expr: &expr.ShortArray{ + Items: []node.Node{}, + }, }, }, }, @@ -2121,12 +2137,14 @@ func TestPhp5(t *testing.T) { &stmt.Expression{ Expr: &expr.FunctionCall{ Function: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, - Arguments: []node.Node{ - &node.Argument{ - Variadic: false, - IsReference: false, - Expr: &expr.Yield{ - Value: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{ + Variadic: false, + IsReference: false, + Expr: &expr.Yield{ + Value: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + }, }, }, }, @@ -2281,9 +2299,9 @@ func TestPhp5(t *testing.T) { }, &stmt.Expression{ Expr: &expr.MethodCall{ - Variable: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, - Method: &node.Identifier{Value: "foo"}, - Arguments: []node.Node{}, + Variable: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + Method: &node.Identifier{Value: "foo"}, + ArgumentList: &node.ArgumentList{}, }, }, &stmt.Expression{ @@ -2302,7 +2320,7 @@ func TestPhp5(t *testing.T) { &name.NamePart{Value: "Foo"}, }, }, - Arguments: []node.Node{}, + ArgumentList: &node.ArgumentList{}, }, }, &stmt.Expression{ @@ -2312,7 +2330,7 @@ func TestPhp5(t *testing.T) { &name.NamePart{Value: "Foo"}, }, }, - Arguments: []node.Node{}, + ArgumentList: &node.ArgumentList{}, }, }, &stmt.Expression{ @@ -2346,8 +2364,8 @@ func TestPhp5(t *testing.T) { }, Property: &node.Identifier{Value: "bar"}, }, - Method: &node.Identifier{Value: "baz"}, - Arguments: []node.Node{}, + Method: &node.Identifier{Value: "baz"}, + ArgumentList: &node.ArgumentList{}, }, Property: &node.Identifier{Value: "quux"}, }, @@ -2358,9 +2376,9 @@ func TestPhp5(t *testing.T) { Expr: &expr.ArrayDimFetch{ Variable: &expr.ArrayDimFetch{ Variable: &expr.MethodCall{ - Variable: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, - Method: &node.Identifier{Value: "foo"}, - Arguments: []node.Node{}, + Variable: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + Method: &node.Identifier{Value: "foo"}, + ArgumentList: &node.ArgumentList{}, }, Dim: &scalar.Lnumber{Value: "1"}, }, @@ -2424,8 +2442,8 @@ func TestPhp5(t *testing.T) { &name.NamePart{Value: "Foo"}, }, }, - Call: &node.Identifier{Value: "bar"}, - Arguments: []node.Node{}, + Call: &node.Identifier{Value: "bar"}, + ArgumentList: &node.ArgumentList{}, }, }, &stmt.Expression{ @@ -2435,8 +2453,8 @@ func TestPhp5(t *testing.T) { &name.NamePart{Value: "Foo"}, }, }, - Call: &node.Identifier{Value: "bar"}, - Arguments: []node.Node{}, + Call: &node.Identifier{Value: "bar"}, + ArgumentList: &node.ArgumentList{}, }, }, &stmt.Expression{ @@ -2446,8 +2464,8 @@ func TestPhp5(t *testing.T) { &name.NamePart{Value: "Foo"}, }, }, - Call: &node.Identifier{Value: "bar"}, - Arguments: []node.Node{}, + Call: &node.Identifier{Value: "bar"}, + ArgumentList: &node.ArgumentList{}, }, }, &stmt.Expression{ @@ -2457,15 +2475,15 @@ func TestPhp5(t *testing.T) { &name.NamePart{Value: "Foo"}, }, }, - Call: &expr.Variable{VarName: &node.Identifier{Value: "bar"}}, - Arguments: []node.Node{}, + Call: &expr.Variable{VarName: &node.Identifier{Value: "bar"}}, + ArgumentList: &node.ArgumentList{}, }, }, &stmt.Expression{ Expr: &expr.StaticCall{ - Class: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, - Call: &expr.Variable{VarName: &node.Identifier{Value: "bar"}}, - Arguments: []node.Node{}, + Class: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, + Call: &expr.Variable{VarName: &node.Identifier{Value: "bar"}}, + ArgumentList: &node.ArgumentList{}, }, }, &stmt.Expression{ @@ -2815,11 +2833,13 @@ func TestPhp5(t *testing.T) { &name.NamePart{Value: "Foo"}, }, }, - Arguments: []node.Node{ - &node.Argument{ - Variadic: false, - IsReference: false, - Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{ + Variadic: false, + IsReference: false, + Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}, + }, }, }, }, @@ -2910,7 +2930,7 @@ func TestPhp5(t *testing.T) { &name.NamePart{Value: "Foo"}, }, }, - Arguments: []node.Node{}, + ArgumentList: &node.ArgumentList{}, }, }, &stmt.Expression{ @@ -2922,10 +2942,10 @@ func TestPhp5(t *testing.T) { &name.NamePart{Value: "Foo"}, }, }, - Arguments: []node.Node{}, + ArgumentList: &node.ArgumentList{}, }, - Method: &node.Identifier{Value: "bar"}, - Arguments: []node.Node{}, + Method: &node.Identifier{Value: "bar"}, + ArgumentList: &node.ArgumentList{}, }, Property: &node.Identifier{Value: "baz"}, }, @@ -2939,7 +2959,7 @@ func TestPhp5(t *testing.T) { &name.NamePart{Value: "Foo"}, }, }, - Arguments: []node.Node{}, + ArgumentList: &node.ArgumentList{}, }, Dim: &scalar.Lnumber{Value: "0"}, }, @@ -2955,12 +2975,12 @@ func TestPhp5(t *testing.T) { &name.NamePart{Value: "Foo"}, }, }, - Arguments: []node.Node{}, + ArgumentList: &node.ArgumentList{}, }, Dim: &scalar.Lnumber{Value: "0"}, }, - Method: &node.Identifier{Value: "bar"}, - Arguments: []node.Node{}, + Method: &node.Identifier{Value: "bar"}, + ArgumentList: &node.ArgumentList{}, }, }, &stmt.Expression{ @@ -3574,16 +3594,16 @@ func TestPhp5(t *testing.T) { }, &stmt.Expression{ Expr: &expr.FunctionCall{ - Function: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, - Arguments: []node.Node{}, + Function: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, + ArgumentList: &node.ArgumentList{}, }, }, &stmt.Expression{ Expr: &expr.ArrayDimFetch{ Variable: &expr.ArrayDimFetch{ Variable: &expr.FunctionCall{ - Function: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, - Arguments: []node.Node{}, + Function: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, + ArgumentList: &node.ArgumentList{}, }, Dim: &scalar.Lnumber{Value: "0"}, }, @@ -3601,9 +3621,9 @@ func TestPhp5(t *testing.T) { }, &stmt.Expression{ Expr: &expr.StaticCall{ - Class: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, - Call: &expr.Variable{VarName: &node.Identifier{Value: "bar"}}, - Arguments: []node.Node{}, + Class: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, + Call: &expr.Variable{VarName: &node.Identifier{Value: "bar"}}, + ArgumentList: &node.ArgumentList{}, }, }, &stmt.Expression{ diff --git a/php7/php7.go b/php7/php7.go index b4eac43..32ba4b3 100644 --- a/php7/php7.go +++ b/php7/php7.go @@ -345,7 +345,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line php7/php7.y:4114 +//line php7/php7.y:4125 type foreachVariable struct { node node.Node @@ -1452,8 +1452,8 @@ var yyPgo = [...]int{ 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, 8, 686, - 20, 812, 809, 807, 41, 74, 536, 806, 121, 803, + 815, 814, 44, 42, 32, 2, 15, 629, 41, 74, + 8, 686, 20, 812, 809, 807, 536, 806, 121, 803, 802, 800, 71, 798, 33, 797, 795, 30, 37, 791, 789, 28, 787, 786, 545, 784, 18, 783, 776, 26, 773, 63, 1, 4, 768, 17, 767, 39, 765, 763, @@ -1471,7 +1471,7 @@ var yyR1 = [...]int{ 5, 5, 5, 5, 5, 5, 6, 6, 111, 111, 88, 88, 10, 10, 10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 79, 79, 16, 16, 18, 18, 7, 7, 98, 98, + 81, 81, 16, 16, 18, 18, 7, 7, 98, 98, 97, 97, 104, 104, 17, 17, 20, 20, 19, 19, 92, 92, 112, 112, 22, 22, 22, 22, 22, 22, 22, 11, 11, 11, 11, 11, 11, 11, 11, 11, @@ -1479,16 +1479,16 @@ var yyR1 = [...]int{ 11, 11, 11, 11, 11, 90, 90, 89, 89, 26, 26, 103, 103, 27, 12, 1, 1, 2, 2, 13, 13, 122, 122, 77, 77, 14, 15, 29, 29, 116, - 116, 117, 117, 80, 80, 80, 80, 125, 125, 126, - 126, 25, 25, 82, 82, 82, 82, 101, 101, 101, + 116, 117, 117, 82, 82, 82, 82, 125, 125, 126, + 126, 25, 25, 84, 84, 84, 84, 101, 101, 101, 8, 8, 124, 124, 68, 68, 66, 66, 70, 70, 67, 67, 113, 113, 114, 114, 30, 30, 31, 31, - 76, 76, 74, 74, 74, 75, 75, 84, 84, 110, + 76, 76, 74, 74, 74, 75, 75, 78, 78, 110, 110, 32, 32, 96, 96, 34, 100, 100, 35, 35, - 115, 115, 36, 36, 36, 36, 121, 121, 83, 83, - 83, 102, 102, 37, 37, 38, 39, 39, 39, 39, - 41, 41, 40, 81, 81, 119, 119, 118, 118, 120, - 120, 78, 78, 78, 78, 78, 78, 99, 99, 42, + 115, 115, 36, 36, 36, 36, 121, 121, 85, 85, + 85, 102, 102, 37, 37, 38, 39, 39, 39, 39, + 41, 41, 40, 83, 83, 119, 119, 118, 118, 120, + 120, 80, 80, 80, 80, 80, 80, 99, 99, 42, 42, 91, 91, 69, 21, 93, 93, 43, 94, 94, 95, 95, 45, 44, 44, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, @@ -1500,7 +1500,7 @@ var yyR1 = [...]int{ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 123, 3, 3, 106, 106, 105, 105, 52, 52, 53, 53, 53, 53, 46, 46, 47, 47, 50, 50, - 87, 87, 87, 85, 85, 57, 57, 57, 51, 51, + 87, 87, 87, 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, @@ -1576,7 +1576,7 @@ var yyChk = [...]int{ -58, -53, -46, -56, -57, 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, -88, 82, 146, 82, -88, 142, 10, -18, -79, + 18, -88, 82, 146, 82, -88, 142, 10, -18, -81, -104, -88, 82, 37, 38, -19, -20, -92, -21, 10, -112, 146, -11, 37, 79, 146, 146, -24, -23, 98, -24, -24, -96, -34, -48, -100, 37, -35, 12, -93, @@ -1593,7 +1593,7 @@ var yyChk = [...]int{ -23, -87, 17, -86, -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, - -86, -86, 17, 142, -48, -84, 146, -84, 146, 82, + -86, -86, 17, 142, -48, -78, 146, -78, 146, 82, -88, 147, -88, 144, 142, -111, 144, -16, -104, -88, 82, 144, 158, 82, 29, -88, -20, 144, 158, 160, -22, 143, 2, -11, -12, -13, -14, -15, 51, -23, @@ -1616,21 +1616,21 @@ 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, -85, -84, 78, 148, 142, 57, 78, - -85, -107, -73, -23, -23, -23, 75, 75, 140, -23, + -54, -6, -48, -79, -78, 78, 148, 142, 57, 78, + -79, -107, -73, -23, -23, -23, 75, 75, 140, -23, 147, -110, -32, -23, 83, -109, 10, 144, -111, 143, 144, 144, 82, -88, -19, 82, -88, 142, 10, 82, -21, -23, 146, 147, 146, 144, 158, 147, -34, -35, -123, -23, -43, 145, -23, -7, 158, 29, 147, 143, -123, 146, -29, -117, 56, -10, 142, -123, -121, -10, - -23, -23, -112, -23, 147, 149, 143, -84, -23, 147, + -23, -23, -112, -23, 147, 149, 143, -78, -23, 147, 160, -72, -23, 151, 59, -109, 147, 149, 147, -65, 10, 13, 152, 12, 10, 143, 143, 148, 143, -23, - 149, -84, -23, -84, -48, -24, -23, -55, -48, -29, + 149, -78, -23, -78, -48, -24, -23, -55, -48, -29, -7, 158, 147, 147, 143, -7, 158, -23, 147, 143, - 142, 82, -98, -17, -20, -79, 142, -123, 147, -124, - -11, 145, -23, -94, -23, -82, 142, 145, 146, -23, - 147, -27, -80, -28, 151, 59, 148, -25, -11, 145, + 142, 82, -98, -17, -20, -81, 142, -123, 147, -124, + -11, 145, -23, -94, -23, -84, 142, 145, 146, -23, + 147, -27, -82, -28, 151, 59, 148, -25, -11, 145, -90, 146, -113, -114, -30, -31, -76, -74, 150, 60, 61, -10, -117, -123, -121, -115, 142, 158, 147, 147, 95, -11, 145, 143, 160, -23, -28, 146, 147, 149, @@ -1639,25 +1639,25 @@ var yyChk = [...]int{ 144, -101, 144, -101, 144, -113, 144, 147, 58, -28, 146, -109, -112, -26, 41, 42, -113, 147, 158, -1, 151, -74, -123, 142, 143, -36, -119, -118, 44, -120, - 47, -78, 103, 102, 101, 98, 99, 100, -115, -10, + 47, -80, 103, 102, 101, 98, 99, 100, -115, -10, -11, 145, 144, -112, -23, -109, 149, -123, -7, 158, -97, 143, -17, -7, 22, 144, -94, 143, 32, 33, - -101, 31, -101, 147, -126, -11, 145, -80, -28, -109, + -101, 31, -101, 147, -126, -11, 145, -82, -28, -109, 149, 28, 146, 142, 147, -106, 44, -30, -2, 83, - 142, -115, -99, -42, 12, 38, 37, -121, -78, 143, + 142, -115, -99, -42, 12, 38, 37, -121, -80, 143, -112, 147, 143, 142, 143, -20, -7, 143, 144, 147, -23, -8, 145, 144, 143, 144, 31, -106, -112, 147, 147, 144, -89, -10, -112, -75, 145, -75, 146, 12, -115, 143, 144, 158, -123, 160, -91, -69, -6, -3, - -83, 144, 142, -115, 143, -125, -11, 145, -8, -112, + -85, 144, 142, -115, 143, -125, -11, 145, -8, -112, 144, -75, 26, -126, 12, 159, 143, 142, -76, 142, -105, -52, 12, 151, 160, 143, -42, -23, 144, 158, 160, -6, 143, -102, -37, -38, -39, -40, -41, -10, -6, 79, 10, 143, -112, -112, 142, 144, 147, -10, -112, -112, 147, 158, 12, -23, -123, -69, -23, -123, 143, -37, 144, 144, 45, 29, 78, 24, -112, 142, - 143, 143, -52, -123, 146, -121, 10, -4, -78, -6, - 144, 143, -112, -113, -6, 143, 147, -75, -81, 144, + 143, 143, -52, -123, 146, -121, 10, -4, -80, -6, + 144, 143, -112, -113, -6, 143, 147, -75, -83, 144, 142, -112, 143, } var yyDef = [...]int{ @@ -2133,7 +2133,7 @@ yydefault: case 1: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:293 + //line php7/php7.y:294 { yylex.(*Parser).rootNode = stmt.NewStmtList(yyDollar[1].list) @@ -2142,463 +2142,463 @@ yydefault: } case 2: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:302 + //line php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 3: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:302 + //line php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 4: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:302 + //line php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 5: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:302 + //line php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 6: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:302 + //line php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 7: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:302 + //line php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 8: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:302 + //line php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 9: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:302 + //line php7/php7.y:303 { yyVAL.token = yyDollar[1].token } case 10: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:303 + //line php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 11: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:303 + //line php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 12: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:303 + //line php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 13: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:303 + //line php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 14: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:303 + //line php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 15: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:303 + //line php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 16: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:303 + //line php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 17: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:303 + //line php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 18: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:303 + //line php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 19: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:303 + //line php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 20: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:303 + //line php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 21: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:303 + //line php7/php7.y:304 { yyVAL.token = yyDollar[1].token } case 22: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:304 + //line php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 23: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:304 + //line php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 24: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:304 + //line php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 25: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:304 + //line php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 26: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:304 + //line php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 27: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:304 + //line php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 28: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:304 + //line php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 29: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:304 + //line php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 30: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:304 + //line php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 31: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:304 + //line php7/php7.y:305 { yyVAL.token = yyDollar[1].token } case 32: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:305 + //line php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 33: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:305 + //line php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 34: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:305 + //line php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 35: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:305 + //line php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 36: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:305 + //line php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 37: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:305 + //line php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 38: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:305 + //line php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 39: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:305 + //line php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 40: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:305 + //line php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 41: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:305 + //line php7/php7.y:306 { yyVAL.token = yyDollar[1].token } case 42: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:306 + //line php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 43: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:306 + //line php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 44: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:306 + //line php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 45: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:306 + //line php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 46: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:306 + //line php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 47: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:306 + //line php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 48: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:306 + //line php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 49: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:306 + //line php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 50: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:306 + //line php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 51: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:306 + //line php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 52: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:306 + //line php7/php7.y:307 { yyVAL.token = yyDollar[1].token } case 53: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:307 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 54: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:307 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 55: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:307 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 56: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:307 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 57: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:307 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 58: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:307 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 59: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:307 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 60: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:307 + //line php7/php7.y:308 { yyVAL.token = yyDollar[1].token } case 61: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:308 + //line php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 62: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:308 + //line php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 63: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:308 + //line php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 64: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:308 + //line php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 65: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:308 + //line php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 66: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:308 + //line php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 67: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:308 + //line php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 68: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:308 + //line php7/php7.y:309 { yyVAL.token = yyDollar[1].token } case 69: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:313 + //line php7/php7.y:314 { yyVAL.token = yyDollar[1].token } case 70: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:314 + //line php7/php7.y:315 { yyVAL.token = yyDollar[1].token } case 71: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:314 + //line php7/php7.y:315 { yyVAL.token = yyDollar[1].token } case 72: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:314 + //line php7/php7.y:315 { yyVAL.token = yyDollar[1].token } case 73: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:314 + //line php7/php7.y:315 { yyVAL.token = yyDollar[1].token } case 74: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:314 + //line php7/php7.y:315 { yyVAL.token = yyDollar[1].token } case 75: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:314 + //line php7/php7.y:315 { yyVAL.token = yyDollar[1].token } case 76: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:319 + //line php7/php7.y:320 { yyVAL.token = yyDollar[1].token } case 77: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:321 + //line php7/php7.y:322 { yyVAL.token = yyDollar[1].token } case 78: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:326 + //line php7/php7.y:327 { if yyDollar[2].node != nil { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -2606,13 +2606,13 @@ yydefault: } case 79: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:332 + //line php7/php7.y:333 { yyVAL.list = []node.Node{} } case 80: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:337 + //line php7/php7.y:338 { namePart := name.NewNamePart(yyDollar[1].token.Value) yyVAL.list = []node.Node{namePart} @@ -2625,7 +2625,7 @@ yydefault: } case 81: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:348 + //line php7/php7.y:349 { namePart := name.NewNamePart(yyDollar[3].token.Value) yyVAL.list = append(yyDollar[1].list, namePart) @@ -2639,7 +2639,7 @@ yydefault: } case 82: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:363 + //line php7/php7.y:364 { yyVAL.node = name.NewName(yyDollar[1].list) @@ -2648,7 +2648,7 @@ yydefault: } case 83: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:370 + //line php7/php7.y:371 { yyVAL.node = name.NewRelative(yyDollar[3].list) @@ -2661,7 +2661,7 @@ yydefault: } case 84: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:381 + //line php7/php7.y:382 { yyVAL.node = name.NewFullyQualified(yyDollar[2].list) @@ -2673,44 +2673,44 @@ yydefault: } case 85: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:394 + //line php7/php7.y:395 { // error yyVAL.node = nil } case 86: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:399 + //line php7/php7.y:400 { yyVAL.node = yyDollar[1].node } case 87: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:401 + //line php7/php7.y:402 { yyVAL.node = yyDollar[1].node } case 88: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:403 + //line php7/php7.y:404 { yyVAL.node = yyDollar[1].node } case 89: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:405 + //line php7/php7.y:406 { yyVAL.node = yyDollar[1].node } case 90: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:407 + //line php7/php7.y:408 { yyVAL.node = yyDollar[1].node } case 91: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:409 + //line php7/php7.y:410 { yyVAL.node = stmt.NewHaltCompiler() @@ -2725,7 +2725,7 @@ yydefault: } case 92: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:422 + //line php7/php7.y:423 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewNamespace(name, nil) @@ -2740,7 +2740,7 @@ yydefault: } case 93: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:435 + //line php7/php7.y:436 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewNamespace(name, yyDollar[4].list) @@ -2756,7 +2756,7 @@ yydefault: } case 94: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:449 + //line php7/php7.y:450 { yyVAL.node = stmt.NewNamespace(nil, yyDollar[3].list) @@ -2770,7 +2770,7 @@ yydefault: } case 95: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:461 + //line php7/php7.y:462 { yyVAL.node = yyDollar[2].node @@ -2783,7 +2783,7 @@ yydefault: } case 96: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:472 + //line php7/php7.y:473 { yyVAL.node = yyDollar[3].node.(*stmt.GroupUse).SetUseType(yyDollar[2].node) @@ -2796,7 +2796,7 @@ yydefault: } case 97: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:483 + //line php7/php7.y:484 { yyVAL.node = stmt.NewUseList(nil, yyDollar[2].list) @@ -2809,7 +2809,7 @@ yydefault: } case 98: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:494 + //line php7/php7.y:495 { yyVAL.node = stmt.NewUseList(yyDollar[2].node, yyDollar[3].list) @@ -2822,7 +2822,7 @@ yydefault: } case 99: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:505 + //line php7/php7.y:506 { yyVAL.node = stmt.NewConstList(yyDollar[2].list) @@ -2835,7 +2835,7 @@ yydefault: } case 100: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:519 + //line php7/php7.y:520 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -2847,7 +2847,7 @@ yydefault: } case 101: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:529 + //line php7/php7.y:530 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -2859,7 +2859,7 @@ yydefault: } case 102: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:542 + //line php7/php7.y:543 { name := name.NewName(yyDollar[1].list) yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[4].list) @@ -2878,7 +2878,7 @@ yydefault: } case 103: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:559 + //line php7/php7.y:560 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[5].list) @@ -2898,7 +2898,7 @@ yydefault: } case 104: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:580 + //line php7/php7.y:581 { name := name.NewName(yyDollar[1].list) yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[4].list) @@ -2917,7 +2917,7 @@ yydefault: } case 105: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:597 + //line php7/php7.y:598 { name := name.NewName(yyDollar[2].list) yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[5].list) @@ -2937,19 +2937,19 @@ yydefault: } case 106: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:618 + //line php7/php7.y:619 { yyVAL.token = nil } case 107: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:620 + //line php7/php7.y:621 { yyVAL.token = yyDollar[1].token } case 108: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:625 + //line php7/php7.y:626 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -2958,13 +2958,13 @@ yydefault: } case 109: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:632 + //line php7/php7.y:633 { yyVAL.list = []node.Node{yyDollar[1].node} } case 110: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:637 + //line php7/php7.y:638 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -2973,13 +2973,13 @@ yydefault: } case 111: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:644 + //line php7/php7.y:645 { yyVAL.list = []node.Node{yyDollar[1].node} } case 112: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:649 + //line php7/php7.y:650 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -2988,25 +2988,25 @@ yydefault: } case 113: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:656 + //line php7/php7.y:657 { yyVAL.list = []node.Node{yyDollar[1].node} } case 114: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:661 + //line php7/php7.y:662 { yyVAL.node = yyDollar[1].node } case 115: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:663 + //line php7/php7.y:664 { yyVAL.node = yyDollar[2].node.(*stmt.Use).SetUseType(yyDollar[1].node) } case 116: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:668 + //line php7/php7.y:669 { name := name.NewName(yyDollar[1].list) yyVAL.node = stmt.NewUse(nil, name, nil) @@ -3017,7 +3017,7 @@ yydefault: } case 117: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:677 + //line php7/php7.y:678 { name := name.NewName(yyDollar[1].list) alias := node.NewIdentifier(yyDollar[3].token.Value) @@ -3034,13 +3034,13 @@ yydefault: } case 118: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:695 + //line php7/php7.y:696 { yyVAL.node = yyDollar[1].node } case 119: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:697 + //line php7/php7.y:698 { yyVAL.node = yyDollar[2].node @@ -3049,7 +3049,7 @@ yydefault: } case 120: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:707 + //line php7/php7.y:708 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3058,13 +3058,13 @@ yydefault: } case 121: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:714 + //line php7/php7.y:715 { yyVAL.list = []node.Node{yyDollar[1].node} } case 122: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:719 + //line php7/php7.y:720 { if yyDollar[2].node != nil { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) @@ -3072,50 +3072,50 @@ yydefault: } case 123: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:725 + //line php7/php7.y:726 { yyVAL.list = []node.Node{} } case 124: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:730 + //line php7/php7.y:731 { // error yyVAL.node = nil } case 125: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:735 + //line php7/php7.y:736 { yyVAL.node = yyDollar[1].node } case 126: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:737 + //line php7/php7.y:738 { yyVAL.node = yyDollar[1].node } case 127: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:739 + //line php7/php7.y:740 { yyVAL.node = yyDollar[1].node } case 128: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:741 + //line php7/php7.y:742 { yyVAL.node = yyDollar[1].node } case 129: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:743 + //line php7/php7.y:744 { yyVAL.node = yyDollar[1].node } case 130: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:745 + //line php7/php7.y:746 { yyVAL.node = stmt.NewHaltCompiler() @@ -3130,7 +3130,7 @@ yydefault: } case 131: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:760 + //line php7/php7.y:761 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) @@ -3143,19 +3143,19 @@ yydefault: } case 132: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:771 + //line php7/php7.y:772 { yyVAL.node = yyDollar[1].node } case 133: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:773 + //line php7/php7.y:774 { yyVAL.node = yyDollar[1].node } case 134: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:775 + //line php7/php7.y:776 { if yyDollar[5].altSyntaxNode.isAlt { yyVAL.node = stmt.NewAltWhile(yyDollar[3].node, yyDollar[5].altSyntaxNode.node) @@ -3173,7 +3173,7 @@ yydefault: } case 135: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:791 + //line php7/php7.y:792 { yyVAL.node = stmt.NewDo(yyDollar[2].node, yyDollar[5].node) @@ -3189,7 +3189,7 @@ yydefault: } case 136: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:805 + //line php7/php7.y:806 { if yyDollar[9].altSyntaxNode.isAlt { yyVAL.node = stmt.NewAltFor(yyDollar[3].list, yyDollar[5].list, yyDollar[7].list, yyDollar[9].altSyntaxNode.node) @@ -3209,7 +3209,7 @@ yydefault: } case 137: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:823 + //line php7/php7.y:824 { if yyDollar[5].nodesWithEndToken.endToken.Value == ";" { yyVAL.node = stmt.NewAltSwitch(yyDollar[3].node, yyDollar[5].nodesWithEndToken.nodes) @@ -3227,7 +3227,7 @@ yydefault: } case 138: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:839 + //line php7/php7.y:840 { yyVAL.node = stmt.NewBreak(yyDollar[2].node) @@ -3240,7 +3240,7 @@ yydefault: } case 139: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:850 + //line php7/php7.y:851 { yyVAL.node = stmt.NewContinue(yyDollar[2].node) @@ -3253,7 +3253,7 @@ yydefault: } case 140: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:861 + //line php7/php7.y:862 { yyVAL.node = stmt.NewReturn(yyDollar[2].node) @@ -3266,7 +3266,7 @@ yydefault: } case 141: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:872 + //line php7/php7.y:873 { yyVAL.node = stmt.NewGlobal(yyDollar[2].list) @@ -3279,7 +3279,7 @@ yydefault: } case 142: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:883 + //line php7/php7.y:884 { yyVAL.node = stmt.NewStatic(yyDollar[2].list) @@ -3292,7 +3292,7 @@ yydefault: } case 143: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:894 + //line php7/php7.y:895 { yyVAL.node = stmt.NewEcho(yyDollar[2].list) @@ -3305,7 +3305,7 @@ yydefault: } case 144: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:905 + //line php7/php7.y:906 { yyVAL.node = stmt.NewInlineHtml(yyDollar[1].token.Value) @@ -3317,7 +3317,7 @@ yydefault: } case 145: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:915 + //line php7/php7.y:916 { yyVAL.node = stmt.NewExpression(yyDollar[1].node) @@ -3329,7 +3329,7 @@ yydefault: } case 146: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:925 + //line php7/php7.y:926 { yyVAL.node = stmt.NewUnset(yyDollar[3].list) @@ -3347,7 +3347,7 @@ yydefault: } case 147: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:941 + //line php7/php7.y:942 { if yyDollar[7].altSyntaxNode.isAlt { yyVAL.node = stmt.NewAltForeach(yyDollar[3].node, nil, yyDollar[5].foreachVariable.node, yyDollar[7].altSyntaxNode.node, yyDollar[5].foreachVariable.byRef) @@ -3366,7 +3366,7 @@ yydefault: } case 148: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:958 + //line php7/php7.y:959 { if yyDollar[9].altSyntaxNode.isAlt { yyVAL.node = stmt.NewAltForeach(yyDollar[3].node, yyDollar[5].node, yyDollar[7].foreachVariable.node, yyDollar[9].altSyntaxNode.node, yyDollar[7].foreachVariable.byRef) @@ -3386,7 +3386,7 @@ yydefault: } case 149: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:976 + //line php7/php7.y:977 { yyVAL.node = stmt.NewDeclare(yyDollar[3].list, yyDollar[5].node) @@ -3400,7 +3400,7 @@ yydefault: } case 150: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:988 + //line php7/php7.y:989 { yyVAL.node = stmt.NewNop() @@ -3412,7 +3412,7 @@ yydefault: } case 151: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:998 + //line php7/php7.y:999 { if yyDollar[6].node == nil { yyVAL.node = stmt.NewTry(yyDollar[3].list, yyDollar[5].list, yyDollar[6].node) @@ -3429,7 +3429,7 @@ yydefault: } case 152: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1013 + //line php7/php7.y:1014 { yyVAL.node = stmt.NewThrow(yyDollar[2].node) @@ -3442,7 +3442,7 @@ yydefault: } case 153: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1024 + //line php7/php7.y:1025 { label := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewGoto(label) @@ -3458,7 +3458,7 @@ yydefault: } case 154: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1038 + //line php7/php7.y:1039 { label := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewLabel(label) @@ -3473,13 +3473,13 @@ yydefault: } case 155: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1053 + //line php7/php7.y:1054 { yyVAL.list = []node.Node{} } case 156: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:1055 + //line php7/php7.y:1056 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[5].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -3501,13 +3501,13 @@ yydefault: } case 157: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1077 + //line php7/php7.y:1078 { yyVAL.list = []node.Node{yyDollar[1].node} } case 158: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1079 + //line php7/php7.y:1080 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3516,13 +3516,13 @@ yydefault: } case 159: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1089 + //line php7/php7.y:1090 { yyVAL.node = nil } case 160: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1091 + //line php7/php7.y:1092 { yyVAL.node = stmt.NewFinally(yyDollar[3].list) @@ -3536,13 +3536,13 @@ yydefault: } case 161: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1106 + //line php7/php7.y:1107 { yyVAL.list = []node.Node{yyDollar[1].node} } case 162: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1108 + //line php7/php7.y:1109 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -3551,13 +3551,13 @@ yydefault: } case 163: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1118 + //line php7/php7.y:1119 { yyVAL.node = yyDollar[1].node } case 164: yyDollar = yyS[yypt-11 : yypt+1] - //line php7/php7.y:1123 + //line php7/php7.y:1124 { name := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewFunction(name, yyDollar[2].boolWithToken.value, yyDollar[6].list, yyDollar[8].node, yyDollar[10].list, yyDollar[4].str) @@ -3579,31 +3579,31 @@ yydefault: } case 165: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1146 + //line php7/php7.y:1147 { yyVAL.boolWithToken = boolWithToken{false, nil} } case 166: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1148 + //line php7/php7.y:1149 { yyVAL.boolWithToken = boolWithToken{true, yyDollar[1].token} } case 167: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1153 + //line php7/php7.y:1154 { yyVAL.boolWithToken = boolWithToken{false, nil} } case 168: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1155 + //line php7/php7.y:1156 { yyVAL.boolWithToken = boolWithToken{true, yyDollar[1].token} } case 169: yyDollar = yyS[yypt-9 : yypt+1] - //line php7/php7.y:1160 + //line php7/php7.y:1161 { 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) @@ -3626,7 +3626,7 @@ yydefault: } case 170: yyDollar = yyS[yypt-8 : yypt+1] - //line php7/php7.y:1181 + //line php7/php7.y:1182 { 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) @@ -3649,19 +3649,19 @@ yydefault: } case 171: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1205 + //line php7/php7.y:1206 { yyVAL.list = []node.Node{yyDollar[1].node} } case 172: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1207 + //line php7/php7.y:1208 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 173: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1212 + //line php7/php7.y:1213 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -3673,7 +3673,7 @@ yydefault: } case 174: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1222 + //line php7/php7.y:1223 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -3685,7 +3685,7 @@ yydefault: } case 175: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1235 + //line php7/php7.y:1236 { name := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewTrait(name, yyDollar[5].list, yyDollar[3].str) @@ -3702,7 +3702,7 @@ yydefault: } case 176: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:1253 + //line php7/php7.y:1254 { name := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = stmt.NewInterface(name, yyDollar[3].list, yyDollar[6].list, yyDollar[4].str) @@ -3722,13 +3722,13 @@ yydefault: } case 177: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1274 + //line php7/php7.y:1275 { yyVAL.node = nil } case 178: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1276 + //line php7/php7.y:1277 { yyVAL.node = yyDollar[2].node @@ -3737,13 +3737,13 @@ yydefault: } case 179: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1286 + //line php7/php7.y:1287 { yyVAL.list = nil } case 180: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1288 + //line php7/php7.y:1289 { yyVAL.list = yyDollar[2].list @@ -3752,13 +3752,13 @@ yydefault: } case 181: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1298 + //line php7/php7.y:1299 { yyVAL.list = nil } case 182: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1300 + //line php7/php7.y:1301 { yyVAL.list = yyDollar[2].list @@ -3767,13 +3767,13 @@ yydefault: } case 183: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1310 + //line php7/php7.y:1311 { yyVAL.foreachVariable = foreachVariable{yyDollar[1].node, false} } case 184: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1312 + //line php7/php7.y:1313 { yyVAL.foreachVariable = foreachVariable{yyDollar[2].node, true} @@ -3785,7 +3785,7 @@ yydefault: } case 185: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1322 + //line php7/php7.y:1323 { list := expr.NewList(yyDollar[3].list) yyVAL.foreachVariable = foreachVariable{list, false} @@ -3800,7 +3800,7 @@ yydefault: } case 186: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1335 + //line php7/php7.y:1336 { list := expr.NewShortList(yyDollar[2].list) yyVAL.foreachVariable = foreachVariable{list, false} @@ -3814,13 +3814,13 @@ yydefault: } case 187: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1350 + //line php7/php7.y:1351 { yyVAL.altSyntaxNode = altSyntaxNode{yyDollar[1].node, false} } case 188: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1352 + //line php7/php7.y:1353 { yyVAL.altSyntaxNode = altSyntaxNode{stmt.NewStmtList(yyDollar[2].list), true} @@ -3834,13 +3834,13 @@ yydefault: } case 189: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1367 + //line php7/php7.y:1368 { yyVAL.altSyntaxNode = altSyntaxNode{yyDollar[1].node, false} } case 190: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1369 + //line php7/php7.y:1370 { yyVAL.altSyntaxNode = altSyntaxNode{stmt.NewStmtList(yyDollar[2].list), true} @@ -3854,13 +3854,13 @@ yydefault: } case 191: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1384 + //line php7/php7.y:1385 { yyVAL.node = yyDollar[1].node } case 192: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1386 + //line php7/php7.y:1387 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) @@ -3874,37 +3874,37 @@ yydefault: } case 193: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1400 + //line php7/php7.y:1401 { yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[2].list, yyDollar[3].token} } case 194: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1401 + //line php7/php7.y:1402 { yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[3].list, yyDollar[4].token} } case 195: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1402 + //line php7/php7.y:1403 { yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[2].list, yyDollar[4].token} } case 196: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1403 + //line php7/php7.y:1404 { yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[3].list, yyDollar[5].token} } case 197: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1408 + //line php7/php7.y:1409 { yyVAL.list = []node.Node{} } case 198: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1410 + //line php7/php7.y:1411 { _case := stmt.NewCase(yyDollar[3].node, yyDollar[5].list) yyVAL.list = append(yyDollar[1].list, _case) @@ -3918,7 +3918,7 @@ yydefault: } case 199: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1422 + //line php7/php7.y:1423 { _default := stmt.NewDefault(yyDollar[4].list) yyVAL.list = append(yyDollar[1].list, _default) @@ -3932,25 +3932,25 @@ yydefault: } case 200: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1437 + //line php7/php7.y:1438 { yyVAL.token = yyDollar[1].token } case 201: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1439 + //line php7/php7.y:1440 { yyVAL.token = yyDollar[1].token } case 202: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1444 + //line php7/php7.y:1445 { yyVAL.altSyntaxNode = altSyntaxNode{yyDollar[1].node, false} } case 203: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1446 + //line php7/php7.y:1447 { yyVAL.altSyntaxNode = altSyntaxNode{stmt.NewStmtList(yyDollar[2].list), true} @@ -3964,7 +3964,7 @@ yydefault: } case 204: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:1461 + //line php7/php7.y:1462 { yyVAL.node = stmt.NewIf(yyDollar[3].node, yyDollar[5].node, nil, nil) @@ -3978,7 +3978,7 @@ yydefault: } case 205: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1473 + //line php7/php7.y:1474 { _elseIf := stmt.NewElseIf(yyDollar[4].node, yyDollar[6].node) yyVAL.node = yyDollar[1].node.(*stmt.If).AddElseIf(_elseIf) @@ -3994,13 +3994,13 @@ yydefault: } case 206: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1490 + //line php7/php7.y:1491 { yyVAL.node = yyDollar[1].node } case 207: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1492 + //line php7/php7.y:1493 { _else := stmt.NewElse(yyDollar[3].node) yyVAL.node = yyDollar[1].node.(*stmt.If).SetElse(_else) @@ -4014,7 +4014,7 @@ yydefault: } case 208: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1507 + //line php7/php7.y:1508 { stmts := stmt.NewStmtList(yyDollar[6].list) yyVAL.node = stmt.NewAltIf(yyDollar[3].node, stmts, nil, nil) @@ -4031,7 +4031,7 @@ yydefault: } case 209: yyDollar = yyS[yypt-7 : yypt+1] - //line php7/php7.y:1522 + //line php7/php7.y:1523 { stmts := stmt.NewStmtList(yyDollar[7].list) _elseIf := stmt.NewAltElseIf(yyDollar[4].node, stmts) @@ -4049,7 +4049,7 @@ yydefault: } case 210: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1541 + //line php7/php7.y:1542 { yyVAL.node = yyDollar[1].node @@ -4062,7 +4062,7 @@ yydefault: } case 211: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1552 + //line php7/php7.y:1553 { stmts := stmt.NewStmtList(yyDollar[4].list) _else := stmt.NewAltElse(stmts) @@ -4081,25 +4081,25 @@ yydefault: } case 212: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1572 + //line php7/php7.y:1573 { yyVAL.list = yyDollar[1].list } case 213: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1574 + //line php7/php7.y:1575 { yyVAL.list = nil } case 214: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1579 + //line php7/php7.y:1580 { yyVAL.list = []node.Node{yyDollar[1].node} } case 215: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1581 + //line php7/php7.y:1582 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4108,7 +4108,7 @@ yydefault: } case 216: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1591 + //line php7/php7.y:1592 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -4147,7 +4147,7 @@ yydefault: } case 217: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:1628 + //line php7/php7.y:1629 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[4].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -4186,25 +4186,25 @@ yydefault: } case 218: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1668 + //line php7/php7.y:1669 { yyVAL.node = nil } case 219: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1670 + //line php7/php7.y:1671 { yyVAL.node = yyDollar[1].node } case 220: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1675 + //line php7/php7.y:1676 { yyVAL.node = yyDollar[1].node } case 221: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1677 + //line php7/php7.y:1678 { yyVAL.node = node.NewNullable(yyDollar[2].node) @@ -4216,7 +4216,7 @@ yydefault: } case 222: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1690 + //line php7/php7.y:1691 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4228,7 +4228,7 @@ yydefault: } case 223: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1700 + //line php7/php7.y:1701 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4240,19 +4240,19 @@ yydefault: } case 224: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1710 + //line php7/php7.y:1711 { yyVAL.node = yyDollar[1].node } case 225: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1715 + //line php7/php7.y:1716 { yyVAL.node = nil } case 226: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1717 + //line php7/php7.y:1718 { yyVAL.node = yyDollar[2].node @@ -4261,25 +4261,31 @@ yydefault: } case 227: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1727 + //line php7/php7.y:1728 { - yyVAL.nodesWithEndToken = &nodesWithEndToken{[]node.Node{}, yyDollar[2].token} + yyVAL.node = node.NewArgumentList(nil) + + // save position + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) } case 228: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1729 + //line php7/php7.y:1735 { - yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[2].list, yyDollar[4].token} + yyVAL.node = node.NewArgumentList(yyDollar[2].list) + + // save position + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) } case 229: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1734 + //line php7/php7.y:1745 { yyVAL.list = []node.Node{yyDollar[1].node} } case 230: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1736 + //line php7/php7.y:1747 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4288,7 +4294,7 @@ yydefault: } case 231: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1746 + //line php7/php7.y:1757 { yyVAL.node = node.NewArgument(yyDollar[1].node, false, false) @@ -4297,7 +4303,7 @@ yydefault: } case 232: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1753 + //line php7/php7.y:1764 { yyVAL.node = node.NewArgument(yyDollar[2].node, true, false) @@ -4309,7 +4315,7 @@ yydefault: } case 233: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1766 + //line php7/php7.y:1777 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4318,19 +4324,19 @@ yydefault: } case 234: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1773 + //line php7/php7.y:1784 { yyVAL.list = []node.Node{yyDollar[1].node} } case 235: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1778 + //line php7/php7.y:1789 { yyVAL.node = yyDollar[1].node } case 236: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1783 + //line php7/php7.y:1794 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4339,13 +4345,13 @@ yydefault: } case 237: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1790 + //line php7/php7.y:1801 { yyVAL.list = []node.Node{yyDollar[1].node} } case 238: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1795 + //line php7/php7.y:1806 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -4361,7 +4367,7 @@ yydefault: } case 239: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1809 + //line php7/php7.y:1820 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -4378,19 +4384,19 @@ yydefault: } case 240: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1827 + //line php7/php7.y:1838 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 241: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:1829 + //line php7/php7.y:1840 { yyVAL.list = []node.Node{} } case 242: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1834 + //line php7/php7.y:1845 { yyVAL.node = stmt.NewPropertyList(yyDollar[1].list, yyDollar[2].list) @@ -4402,7 +4408,7 @@ yydefault: } case 243: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1844 + //line php7/php7.y:1855 { yyVAL.node = stmt.NewClassConstList(yyDollar[1].list, yyDollar[3].list) @@ -4415,7 +4421,7 @@ yydefault: } case 244: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1855 + //line php7/php7.y:1866 { yyVAL.node = stmt.NewTraitUse(yyDollar[2].list, yyDollar[3].nodesWithEndToken.nodes) @@ -4427,7 +4433,7 @@ yydefault: } case 245: yyDollar = yyS[yypt-10 : yypt+1] - //line php7/php7.y:1865 + //line php7/php7.y:1876 { name := node.NewIdentifier(yyDollar[4].token.Value) yyVAL.node = stmt.NewClassMethod(name, yyDollar[1].list, yyDollar[3].boolWithToken.value, yyDollar[7].list, yyDollar[9].node, yyDollar[10].nodesWithEndToken.nodes, yyDollar[5].str) @@ -4447,13 +4453,13 @@ yydefault: } case 246: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1886 + //line php7/php7.y:1897 { yyVAL.list = []node.Node{yyDollar[1].node} } case 247: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1888 + //line php7/php7.y:1899 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4462,37 +4468,37 @@ yydefault: } case 248: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1898 + //line php7/php7.y:1909 { yyVAL.nodesWithEndToken = &nodesWithEndToken{nil, yyDollar[1].token} } case 249: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1900 + //line php7/php7.y:1911 { yyVAL.nodesWithEndToken = &nodesWithEndToken{nil, yyDollar[2].token} } case 250: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1902 + //line php7/php7.y:1913 { yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[2].list, yyDollar[3].token} } case 251: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1907 + //line php7/php7.y:1918 { yyVAL.list = []node.Node{yyDollar[1].node} } case 252: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1909 + //line php7/php7.y:1920 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 253: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1914 + //line php7/php7.y:1925 { yyVAL.node = yyDollar[1].node @@ -4501,7 +4507,7 @@ yydefault: } case 254: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:1921 + //line php7/php7.y:1932 { yyVAL.node = yyDollar[1].node @@ -4510,7 +4516,7 @@ yydefault: } case 255: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1931 + //line php7/php7.y:1942 { yyVAL.node = stmt.NewTraitUsePrecedence(yyDollar[1].node, yyDollar[3].list) @@ -4522,7 +4528,7 @@ yydefault: } case 256: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1944 + //line php7/php7.y:1955 { alias := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, alias) @@ -4537,7 +4543,7 @@ yydefault: } case 257: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1957 + //line php7/php7.y:1968 { alias := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, alias) @@ -4552,7 +4558,7 @@ yydefault: } case 258: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:1970 + //line php7/php7.y:1981 { alias := node.NewIdentifier(yyDollar[4].token.Value) yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, alias) @@ -4567,7 +4573,7 @@ yydefault: } case 259: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:1983 + //line php7/php7.y:1994 { yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, nil) @@ -4579,7 +4585,7 @@ yydefault: } case 260: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:1996 + //line php7/php7.y:2007 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewTraitMethodRef(nil, name) @@ -4593,13 +4599,13 @@ yydefault: } case 261: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2008 + //line php7/php7.y:2019 { yyVAL.node = yyDollar[1].node } case 262: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2013 + //line php7/php7.y:2024 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = stmt.NewTraitMethodRef(yyDollar[1].node, target) @@ -4614,25 +4620,25 @@ yydefault: } case 263: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2028 + //line php7/php7.y:2039 { yyVAL.nodesWithEndToken = &nodesWithEndToken{nil, yyDollar[1].token} } case 264: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2029 + //line php7/php7.y:2040 { yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[2].list, yyDollar[3].token} } case 265: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2034 + //line php7/php7.y:2045 { yyVAL.list = yyDollar[1].list } case 266: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2036 + //line php7/php7.y:2047 { modifier := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.list = []node.Node{modifier} @@ -4645,31 +4651,31 @@ yydefault: } case 267: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2050 + //line php7/php7.y:2061 { yyVAL.list = nil } case 268: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2052 + //line php7/php7.y:2063 { yyVAL.list = yyDollar[1].list } case 269: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2057 + //line php7/php7.y:2068 { yyVAL.list = []node.Node{yyDollar[1].node} } case 270: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2059 + //line php7/php7.y:2070 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 271: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2064 + //line php7/php7.y:2075 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4681,7 +4687,7 @@ yydefault: } case 272: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2074 + //line php7/php7.y:2085 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4693,7 +4699,7 @@ yydefault: } case 273: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2084 + //line php7/php7.y:2095 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4705,7 +4711,7 @@ yydefault: } case 274: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2094 + //line php7/php7.y:2105 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4717,7 +4723,7 @@ yydefault: } case 275: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2104 + //line php7/php7.y:2115 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4729,7 +4735,7 @@ yydefault: } case 276: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2114 + //line php7/php7.y:2125 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -4741,7 +4747,7 @@ yydefault: } case 277: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2127 + //line php7/php7.y:2138 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4750,13 +4756,13 @@ yydefault: } case 278: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2134 + //line php7/php7.y:2145 { yyVAL.list = []node.Node{yyDollar[1].node} } case 279: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2139 + //line php7/php7.y:2150 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -4772,7 +4778,7 @@ yydefault: } case 280: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2153 + //line php7/php7.y:2164 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -4789,7 +4795,7 @@ yydefault: } case 281: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2171 + //line php7/php7.y:2182 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4798,13 +4804,13 @@ yydefault: } case 282: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2178 + //line php7/php7.y:2189 { yyVAL.list = []node.Node{yyDollar[1].node} } case 283: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2183 + //line php7/php7.y:2194 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewConstant(name, yyDollar[3].node, yyDollar[4].str) @@ -4819,7 +4825,7 @@ yydefault: } case 284: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2199 + //line php7/php7.y:2210 { name := node.NewIdentifier(yyDollar[1].token.Value) yyVAL.node = stmt.NewConstant(name, yyDollar[3].node, yyDollar[4].str) @@ -4834,7 +4840,7 @@ yydefault: } case 285: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2215 + //line php7/php7.y:2226 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4843,31 +4849,31 @@ yydefault: } case 286: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2222 + //line php7/php7.y:2233 { yyVAL.list = []node.Node{yyDollar[1].node} } case 287: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2227 + //line php7/php7.y:2238 { yyVAL.node = yyDollar[1].node } case 288: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:2232 + //line php7/php7.y:2243 { yyVAL.list = nil } case 289: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2234 + //line php7/php7.y:2245 { yyVAL.list = yyDollar[1].list } case 290: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2239 + //line php7/php7.y:2250 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -4876,16 +4882,16 @@ yydefault: } case 291: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2246 + //line php7/php7.y:2257 { yyVAL.list = []node.Node{yyDollar[1].node} } case 292: yyDollar = yyS[yypt-8 : yypt+1] - //line php7/php7.y:2251 + //line php7/php7.y:2262 { - if yyDollar[2].nodesWithEndToken != nil { - yyVAL.node = stmt.NewClass(nil, nil, yyDollar[2].nodesWithEndToken.nodes, yyDollar[3].node, yyDollar[4].list, yyDollar[7].list, yyDollar[5].str) + 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) } else { yyVAL.node = stmt.NewClass(nil, nil, nil, yyDollar[3].node, yyDollar[4].list, yyDollar[7].list, yyDollar[5].str) } @@ -4906,11 +4912,11 @@ yydefault: } case 293: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2276 + //line php7/php7.y:2287 { - if yyDollar[3].nodesWithEndToken != nil { - yyVAL.node = expr.NewNew(yyDollar[2].node, yyDollar[3].nodesWithEndToken.nodes) - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokensPosition(yyDollar[1].token, yyDollar[3].nodesWithEndToken.endToken)) + if yyDollar[3].node != nil { + yyVAL.node = expr.NewNew(yyDollar[2].node, yyDollar[3].node.(*node.ArgumentList)) + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) } else { yyVAL.node = expr.NewNew(yyDollar[2].node, nil) yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) @@ -4921,7 +4927,7 @@ yydefault: } case 294: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2289 + //line php7/php7.y:2300 { yyVAL.node = expr.NewNew(yyDollar[2].node, nil) @@ -4933,7 +4939,7 @@ yydefault: } case 295: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:2302 + //line php7/php7.y:2313 { list := expr.NewList(yyDollar[3].list) yyVAL.node = assign.NewAssign(list, yyDollar[6].node) @@ -4950,7 +4956,7 @@ yydefault: } case 296: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:2317 + //line php7/php7.y:2328 { shortList := expr.NewShortList(yyDollar[2].list) yyVAL.node = assign.NewAssign(shortList, yyDollar[5].node) @@ -4966,7 +4972,7 @@ yydefault: } case 297: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2331 + //line php7/php7.y:2342 { yyVAL.node = assign.NewAssign(yyDollar[1].node, yyDollar[3].node) @@ -4978,7 +4984,7 @@ yydefault: } case 298: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2341 + //line php7/php7.y:2352 { yyVAL.node = assign.NewReference(yyDollar[1].node, yyDollar[4].node) @@ -4991,7 +4997,7 @@ yydefault: } case 299: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2352 + //line php7/php7.y:2363 { yyVAL.node = expr.NewClone(yyDollar[2].node) @@ -5003,7 +5009,7 @@ yydefault: } case 300: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2362 + //line php7/php7.y:2373 { yyVAL.node = assign.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -5015,7 +5021,7 @@ yydefault: } case 301: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2372 + //line php7/php7.y:2383 { yyVAL.node = assign.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -5027,7 +5033,7 @@ yydefault: } case 302: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2382 + //line php7/php7.y:2393 { yyVAL.node = assign.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -5039,7 +5045,7 @@ yydefault: } case 303: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2392 + //line php7/php7.y:2403 { yyVAL.node = assign.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -5051,7 +5057,7 @@ yydefault: } case 304: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2402 + //line php7/php7.y:2413 { yyVAL.node = assign.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -5063,7 +5069,7 @@ yydefault: } case 305: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2412 + //line php7/php7.y:2423 { yyVAL.node = assign.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -5075,7 +5081,7 @@ yydefault: } case 306: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2422 + //line php7/php7.y:2433 { yyVAL.node = assign.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -5087,7 +5093,7 @@ yydefault: } case 307: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2432 + //line php7/php7.y:2443 { yyVAL.node = assign.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -5099,7 +5105,7 @@ yydefault: } case 308: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2442 + //line php7/php7.y:2453 { yyVAL.node = assign.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -5111,7 +5117,7 @@ yydefault: } case 309: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2452 + //line php7/php7.y:2463 { yyVAL.node = assign.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -5123,7 +5129,7 @@ yydefault: } case 310: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2462 + //line php7/php7.y:2473 { yyVAL.node = assign.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -5135,7 +5141,7 @@ yydefault: } case 311: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2472 + //line php7/php7.y:2483 { yyVAL.node = assign.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -5147,7 +5153,7 @@ yydefault: } case 312: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2482 + //line php7/php7.y:2493 { yyVAL.node = expr.NewPostInc(yyDollar[1].node) @@ -5159,7 +5165,7 @@ yydefault: } case 313: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2492 + //line php7/php7.y:2503 { yyVAL.node = expr.NewPreInc(yyDollar[2].node) @@ -5171,7 +5177,7 @@ yydefault: } case 314: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2502 + //line php7/php7.y:2513 { yyVAL.node = expr.NewPostDec(yyDollar[1].node) @@ -5183,7 +5189,7 @@ yydefault: } case 315: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2512 + //line php7/php7.y:2523 { yyVAL.node = expr.NewPreDec(yyDollar[2].node) @@ -5195,7 +5201,7 @@ yydefault: } case 316: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2522 + //line php7/php7.y:2533 { yyVAL.node = binary.NewBooleanOr(yyDollar[1].node, yyDollar[3].node) @@ -5207,7 +5213,7 @@ yydefault: } case 317: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2532 + //line php7/php7.y:2543 { yyVAL.node = binary.NewBooleanAnd(yyDollar[1].node, yyDollar[3].node) @@ -5219,7 +5225,7 @@ yydefault: } case 318: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2542 + //line php7/php7.y:2553 { yyVAL.node = binary.NewLogicalOr(yyDollar[1].node, yyDollar[3].node) @@ -5231,7 +5237,7 @@ yydefault: } case 319: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2552 + //line php7/php7.y:2563 { yyVAL.node = binary.NewLogicalAnd(yyDollar[1].node, yyDollar[3].node) @@ -5243,7 +5249,7 @@ yydefault: } case 320: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2562 + //line php7/php7.y:2573 { yyVAL.node = binary.NewLogicalXor(yyDollar[1].node, yyDollar[3].node) @@ -5255,7 +5261,7 @@ yydefault: } case 321: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2572 + //line php7/php7.y:2583 { yyVAL.node = binary.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) @@ -5267,7 +5273,7 @@ yydefault: } case 322: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2582 + //line php7/php7.y:2593 { yyVAL.node = binary.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) @@ -5279,7 +5285,7 @@ yydefault: } case 323: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2592 + //line php7/php7.y:2603 { yyVAL.node = binary.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) @@ -5291,7 +5297,7 @@ yydefault: } case 324: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2602 + //line php7/php7.y:2613 { yyVAL.node = binary.NewConcat(yyDollar[1].node, yyDollar[3].node) @@ -5303,7 +5309,7 @@ yydefault: } case 325: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2612 + //line php7/php7.y:2623 { yyVAL.node = binary.NewPlus(yyDollar[1].node, yyDollar[3].node) @@ -5315,7 +5321,7 @@ yydefault: } case 326: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2622 + //line php7/php7.y:2633 { yyVAL.node = binary.NewMinus(yyDollar[1].node, yyDollar[3].node) @@ -5327,7 +5333,7 @@ yydefault: } case 327: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2632 + //line php7/php7.y:2643 { yyVAL.node = binary.NewMul(yyDollar[1].node, yyDollar[3].node) @@ -5339,7 +5345,7 @@ yydefault: } case 328: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2642 + //line php7/php7.y:2653 { yyVAL.node = binary.NewPow(yyDollar[1].node, yyDollar[3].node) @@ -5351,7 +5357,7 @@ yydefault: } case 329: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2652 + //line php7/php7.y:2663 { yyVAL.node = binary.NewDiv(yyDollar[1].node, yyDollar[3].node) @@ -5363,7 +5369,7 @@ yydefault: } case 330: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2662 + //line php7/php7.y:2673 { yyVAL.node = binary.NewMod(yyDollar[1].node, yyDollar[3].node) @@ -5375,7 +5381,7 @@ yydefault: } case 331: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2672 + //line php7/php7.y:2683 { yyVAL.node = binary.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) @@ -5387,7 +5393,7 @@ yydefault: } case 332: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2682 + //line php7/php7.y:2693 { yyVAL.node = binary.NewShiftRight(yyDollar[1].node, yyDollar[3].node) @@ -5399,7 +5405,7 @@ yydefault: } case 333: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2692 + //line php7/php7.y:2703 { yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) @@ -5411,7 +5417,7 @@ yydefault: } case 334: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2702 + //line php7/php7.y:2713 { yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) @@ -5423,7 +5429,7 @@ yydefault: } case 335: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2712 + //line php7/php7.y:2723 { yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) @@ -5435,7 +5441,7 @@ yydefault: } case 336: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2722 + //line php7/php7.y:2733 { yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) @@ -5447,7 +5453,7 @@ yydefault: } case 337: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2732 + //line php7/php7.y:2743 { yyVAL.node = binary.NewIdentical(yyDollar[1].node, yyDollar[3].node) @@ -5459,7 +5465,7 @@ yydefault: } case 338: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2742 + //line php7/php7.y:2753 { yyVAL.node = binary.NewNotIdentical(yyDollar[1].node, yyDollar[3].node) @@ -5471,7 +5477,7 @@ yydefault: } case 339: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2752 + //line php7/php7.y:2763 { yyVAL.node = binary.NewEqual(yyDollar[1].node, yyDollar[3].node) @@ -5483,7 +5489,7 @@ yydefault: } case 340: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2762 + //line php7/php7.y:2773 { yyVAL.node = binary.NewNotEqual(yyDollar[1].node, yyDollar[3].node) @@ -5495,7 +5501,7 @@ yydefault: } case 341: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2772 + //line php7/php7.y:2783 { yyVAL.node = binary.NewSmaller(yyDollar[1].node, yyDollar[3].node) @@ -5507,7 +5513,7 @@ yydefault: } case 342: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2782 + //line php7/php7.y:2793 { yyVAL.node = binary.NewSmallerOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -5519,7 +5525,7 @@ yydefault: } case 343: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2792 + //line php7/php7.y:2803 { yyVAL.node = binary.NewGreater(yyDollar[1].node, yyDollar[3].node) @@ -5531,7 +5537,7 @@ yydefault: } case 344: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2802 + //line php7/php7.y:2813 { yyVAL.node = binary.NewGreaterOrEqual(yyDollar[1].node, yyDollar[3].node) @@ -5543,7 +5549,7 @@ yydefault: } case 345: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2812 + //line php7/php7.y:2823 { yyVAL.node = binary.NewSpaceship(yyDollar[1].node, yyDollar[3].node) @@ -5555,7 +5561,7 @@ yydefault: } case 346: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2822 + //line php7/php7.y:2833 { yyVAL.node = expr.NewInstanceOf(yyDollar[1].node, yyDollar[3].node) @@ -5567,7 +5573,7 @@ yydefault: } case 347: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2832 + //line php7/php7.y:2843 { yyVAL.node = yyDollar[2].node @@ -5577,13 +5583,13 @@ yydefault: } case 348: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2840 + //line php7/php7.y:2851 { yyVAL.node = yyDollar[1].node } case 349: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:2842 + //line php7/php7.y:2853 { yyVAL.node = expr.NewTernary(yyDollar[1].node, yyDollar[3].node, yyDollar[5].node) @@ -5596,7 +5602,7 @@ yydefault: } case 350: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:2853 + //line php7/php7.y:2864 { yyVAL.node = expr.NewTernary(yyDollar[1].node, nil, yyDollar[4].node) @@ -5609,7 +5615,7 @@ yydefault: } case 351: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2864 + //line php7/php7.y:2875 { yyVAL.node = binary.NewCoalesce(yyDollar[1].node, yyDollar[3].node) @@ -5621,13 +5627,13 @@ yydefault: } case 352: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2874 + //line php7/php7.y:2885 { yyVAL.node = yyDollar[1].node } case 353: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2876 + //line php7/php7.y:2887 { yyVAL.node = cast.NewInt(yyDollar[2].node) @@ -5639,7 +5645,7 @@ yydefault: } case 354: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2886 + //line php7/php7.y:2897 { yyVAL.node = cast.NewDouble(yyDollar[2].node) @@ -5651,7 +5657,7 @@ yydefault: } case 355: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2896 + //line php7/php7.y:2907 { yyVAL.node = cast.NewString(yyDollar[2].node) @@ -5663,7 +5669,7 @@ yydefault: } case 356: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2906 + //line php7/php7.y:2917 { yyVAL.node = cast.NewArray(yyDollar[2].node) @@ -5675,7 +5681,7 @@ yydefault: } case 357: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2916 + //line php7/php7.y:2927 { yyVAL.node = cast.NewObject(yyDollar[2].node) @@ -5687,7 +5693,7 @@ yydefault: } case 358: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2926 + //line php7/php7.y:2937 { yyVAL.node = cast.NewBool(yyDollar[2].node) @@ -5699,7 +5705,7 @@ yydefault: } case 359: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2936 + //line php7/php7.y:2947 { yyVAL.node = cast.NewUnset(yyDollar[2].node) @@ -5711,7 +5717,7 @@ yydefault: } case 360: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2946 + //line php7/php7.y:2957 { if strings.EqualFold(yyDollar[1].token.Value, "die") { yyVAL.node = expr.NewDie(yyDollar[2].node) @@ -5727,7 +5733,7 @@ yydefault: } case 361: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2960 + //line php7/php7.y:2971 { yyVAL.node = expr.NewErrorSuppress(yyDollar[2].node) @@ -5739,13 +5745,13 @@ yydefault: } case 362: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2970 + //line php7/php7.y:2981 { yyVAL.node = yyDollar[1].node } case 363: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:2972 + //line php7/php7.y:2983 { yyVAL.node = expr.NewShellExec(yyDollar[2].list) @@ -5758,7 +5764,7 @@ yydefault: } case 364: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:2983 + //line php7/php7.y:2994 { yyVAL.node = expr.NewPrint(yyDollar[2].node) @@ -5770,7 +5776,7 @@ yydefault: } case 365: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:2993 + //line php7/php7.y:3004 { yyVAL.node = expr.NewYield(nil, nil) @@ -5782,7 +5788,7 @@ yydefault: } case 366: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3003 + //line php7/php7.y:3014 { yyVAL.node = expr.NewYield(nil, yyDollar[2].node) @@ -5794,7 +5800,7 @@ yydefault: } case 367: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3013 + //line php7/php7.y:3024 { yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node) @@ -5807,7 +5813,7 @@ yydefault: } case 368: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3024 + //line php7/php7.y:3035 { yyVAL.node = expr.NewYieldFrom(yyDollar[2].node) @@ -5819,7 +5825,7 @@ yydefault: } case 369: yyDollar = yyS[yypt-11 : yypt+1] - //line php7/php7.y:3034 + //line php7/php7.y:3045 { yyVAL.node = expr.NewClosure(yyDollar[5].list, yyDollar[7].list, yyDollar[8].node, yyDollar[10].list, false, yyDollar[2].boolWithToken.value, yyDollar[3].str) @@ -5838,7 +5844,7 @@ yydefault: } case 370: yyDollar = yyS[yypt-12 : yypt+1] - //line php7/php7.y:3051 + //line php7/php7.y:3062 { yyVAL.node = expr.NewClosure(yyDollar[6].list, yyDollar[8].list, yyDollar[9].node, yyDollar[11].list, true, yyDollar[3].boolWithToken.value, yyDollar[4].str) @@ -5858,38 +5864,38 @@ yydefault: } case 371: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3072 + //line php7/php7.y:3083 { yyVAL.str = yylex.(*Parser).PhpDocComment yylex.(*Parser).PhpDocComment = "" } case 372: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3080 + //line php7/php7.y:3091 { yyVAL.boolWithToken = boolWithToken{false, nil} } case 373: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3082 + //line php7/php7.y:3093 { yyVAL.boolWithToken = boolWithToken{true, yyDollar[1].token} } case 374: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3087 + //line php7/php7.y:3098 { yyVAL.list = []node.Node{} } case 375: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3089 + //line php7/php7.y:3100 { yyVAL.list = yyDollar[3].list } case 376: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3094 + //line php7/php7.y:3105 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -5898,13 +5904,13 @@ yydefault: } case 377: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3101 + //line php7/php7.y:3112 { yyVAL.list = []node.Node{yyDollar[1].node} } case 378: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3106 + //line php7/php7.y:3117 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -5920,7 +5926,7 @@ yydefault: } case 379: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3120 + //line php7/php7.y:3131 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[2].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -5937,49 +5943,49 @@ yydefault: } case 380: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3138 + //line php7/php7.y:3149 { - yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].nodesWithEndToken.nodes) + yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].node.(*node.ArgumentList)) // save position - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].nodesWithEndToken.endToken)) + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[2].node)) } case 381: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3145 + //line php7/php7.y:3156 { - yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].nodesWithEndToken.nodes) + yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) // save position - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].nodesWithEndToken.endToken)) + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) // save comments yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[2].token, comment.PaamayimNekudotayimToken) } case 382: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3155 + //line php7/php7.y:3166 { - yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].nodesWithEndToken.nodes) + yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) // save position - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].nodesWithEndToken.endToken)) + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) // save comments yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[2].token, comment.PaamayimNekudotayimToken) } case 383: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3165 + //line php7/php7.y:3176 { - yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].nodesWithEndToken.nodes) + yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].node.(*node.ArgumentList)) // save position - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].nodesWithEndToken.endToken)) + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[2].node)) } case 384: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3175 + //line php7/php7.y:3186 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -5991,67 +5997,67 @@ yydefault: } case 385: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3185 + //line php7/php7.y:3196 { yyVAL.node = yyDollar[1].node } case 386: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3190 + //line php7/php7.y:3201 { yyVAL.node = yyDollar[1].node } case 387: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3192 + //line php7/php7.y:3203 { yyVAL.node = yyDollar[1].node } case 388: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3197 + //line php7/php7.y:3208 { yyVAL.node = nil } case 389: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3199 + //line php7/php7.y:3210 { yyVAL.node = yyDollar[2].node } case 390: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3204 + //line php7/php7.y:3215 { yyVAL.list = []node.Node{} } case 391: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3206 + //line php7/php7.y:3217 { yyVAL.list = []node.Node{scalar.NewEncapsedStringPart(yyDollar[1].token.Value)} } case 392: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3208 + //line php7/php7.y:3219 { yyVAL.list = yyDollar[1].list } case 393: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3213 + //line php7/php7.y:3224 { - yyVAL.nodesWithEndToken = nil + yyVAL.node = nil } case 394: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3215 + //line php7/php7.y:3226 { - yyVAL.nodesWithEndToken = yyDollar[1].nodesWithEndToken + yyVAL.node = yyDollar[1].node } case 395: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3220 + //line php7/php7.y:3231 { yyVAL.node = expr.NewArray(yyDollar[3].list) @@ -6065,7 +6071,7 @@ yydefault: } case 396: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3232 + //line php7/php7.y:3243 { yyVAL.node = expr.NewShortArray(yyDollar[2].list) @@ -6078,7 +6084,7 @@ yydefault: } case 397: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3243 + //line php7/php7.y:3254 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) @@ -6090,7 +6096,7 @@ yydefault: } case 398: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3256 + //line php7/php7.y:3267 { yyVAL.node = scalar.NewLnumber(yyDollar[1].token.Value) @@ -6102,7 +6108,7 @@ yydefault: } case 399: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3266 + //line php7/php7.y:3277 { yyVAL.node = scalar.NewDnumber(yyDollar[1].token.Value) @@ -6114,7 +6120,7 @@ yydefault: } case 400: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3276 + //line php7/php7.y:3287 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6126,7 +6132,7 @@ yydefault: } case 401: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3286 + //line php7/php7.y:3297 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6138,7 +6144,7 @@ yydefault: } case 402: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3296 + //line php7/php7.y:3307 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6150,7 +6156,7 @@ yydefault: } case 403: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3306 + //line php7/php7.y:3317 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6162,7 +6168,7 @@ yydefault: } case 404: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3316 + //line php7/php7.y:3327 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6174,7 +6180,7 @@ yydefault: } case 405: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3326 + //line php7/php7.y:3337 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6186,7 +6192,7 @@ yydefault: } case 406: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3336 + //line php7/php7.y:3347 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6198,7 +6204,7 @@ yydefault: } case 407: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3346 + //line php7/php7.y:3357 { yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) @@ -6210,7 +6216,7 @@ yydefault: } case 408: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3356 + //line php7/php7.y:3367 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, []node.Node{encapsed}) @@ -6224,7 +6230,7 @@ yydefault: } case 409: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3368 + //line php7/php7.y:3379 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, nil) @@ -6236,7 +6242,7 @@ yydefault: } case 410: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3378 + //line php7/php7.y:3389 { yyVAL.node = scalar.NewEncapsed(yyDollar[2].list) @@ -6248,7 +6254,7 @@ yydefault: } case 411: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3388 + //line php7/php7.y:3399 { yyVAL.node = scalar.NewHeredoc(yyDollar[1].token.Value, yyDollar[2].list) @@ -6260,19 +6266,19 @@ yydefault: } case 412: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3398 + //line php7/php7.y:3409 { yyVAL.node = yyDollar[1].node } case 413: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3400 + //line php7/php7.y:3411 { yyVAL.node = yyDollar[1].node } case 414: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3405 + //line php7/php7.y:3416 { yyVAL.node = expr.NewConstFetch(yyDollar[1].node) @@ -6281,7 +6287,7 @@ yydefault: } case 415: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3412 + //line php7/php7.y:3423 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -6296,7 +6302,7 @@ yydefault: } case 416: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3425 + //line php7/php7.y:3436 { target := node.NewIdentifier(yyDollar[3].token.Value) yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) @@ -6311,43 +6317,43 @@ yydefault: } case 417: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3441 + //line php7/php7.y:3452 { yyVAL.node = yyDollar[1].node } case 418: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3443 + //line php7/php7.y:3454 { yyVAL.node = yyDollar[1].node } case 419: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3448 + //line php7/php7.y:3459 { yyVAL.node = nil } case 420: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3450 + //line php7/php7.y:3461 { yyVAL.node = yyDollar[1].node } case 421: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3455 + //line php7/php7.y:3466 { yyVAL.node = yyDollar[1].node } case 422: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3460 + //line php7/php7.y:3471 { yyVAL.node = yyDollar[1].node } case 423: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3462 + //line php7/php7.y:3473 { yyVAL.node = yyDollar[2].node @@ -6357,19 +6363,19 @@ yydefault: } case 424: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3470 + //line php7/php7.y:3481 { yyVAL.node = yyDollar[1].node } case 425: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3475 + //line php7/php7.y:3486 { yyVAL.node = yyDollar[1].node } case 426: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3477 + //line php7/php7.y:3488 { yyVAL.node = yyDollar[2].node @@ -6379,30 +6385,17 @@ yydefault: } case 427: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3485 + //line php7/php7.y:3496 { yyVAL.node = yyDollar[1].node } case 428: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3490 + //line php7/php7.y:3501 { yyVAL.node = yyDollar[1].node } case 429: - yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3492 - { - yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) - - // save position - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) - - // save comments - yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[2].token, comment.OpenSquareBracket) - yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[4].token, comment.CloseSquareBracket) - } - case 430: yyDollar = yyS[yypt-4 : yypt+1] //line php7/php7.y:3503 { @@ -6415,7 +6408,7 @@ yydefault: yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[2].token, comment.OpenSquareBracket) yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[4].token, comment.CloseSquareBracket) } - case 431: + case 430: yyDollar = yyS[yypt-4 : yypt+1] //line php7/php7.y:3514 { @@ -6424,43 +6417,56 @@ yydefault: // save position yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) + // save comments + yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[2].token, comment.OpenSquareBracket) + yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[4].token, comment.CloseSquareBracket) + } + case 431: + yyDollar = yyS[yypt-4 : yypt+1] + //line php7/php7.y:3525 + { + yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) + + // save position + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) + // save comments yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[2].token, comment.OpenCurlyBracesToken) yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[4].token, comment.CloseCurlyBracesToken) } case 432: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3525 + //line php7/php7.y:3536 { - yyVAL.node = expr.NewMethodCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].nodesWithEndToken.nodes) + yyVAL.node = expr.NewMethodCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].node.(*node.ArgumentList)) // save position - yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].nodesWithEndToken.endToken)) + yylex.(*Parser).positions.AddPosition(yyVAL.node, yylex.(*Parser).positionBuilder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) // save comments yylex.(*Parser).comments.AddFromToken(yyVAL.node, yyDollar[2].token, comment.ObjectOperatorToken) } case 433: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3535 + //line php7/php7.y:3546 { yyVAL.node = yyDollar[1].node } case 434: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3540 + //line php7/php7.y:3551 { yyVAL.node = yyDollar[1].node } case 435: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3542 + //line php7/php7.y:3553 { yyVAL.node = yyDollar[1].node } case 436: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3544 + //line php7/php7.y:3555 { yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -6472,7 +6478,7 @@ yydefault: } case 437: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3557 + //line php7/php7.y:3568 { name := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yyVAL.node = expr.NewVariable(name) @@ -6486,7 +6492,7 @@ yydefault: } case 438: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3569 + //line php7/php7.y:3580 { yyVAL.node = expr.NewVariable(yyDollar[3].node) @@ -6500,7 +6506,7 @@ yydefault: } case 439: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3581 + //line php7/php7.y:3592 { yyVAL.node = expr.NewVariable(yyDollar[2].node) @@ -6512,7 +6518,7 @@ yydefault: } case 440: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3594 + //line php7/php7.y:3605 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -6524,7 +6530,7 @@ yydefault: } case 441: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3604 + //line php7/php7.y:3615 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -6536,13 +6542,13 @@ yydefault: } case 442: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3617 + //line php7/php7.y:3628 { yyVAL.node = yyDollar[1].node } case 443: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3619 + //line php7/php7.y:3630 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -6555,7 +6561,7 @@ yydefault: } case 444: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3630 + //line php7/php7.y:3641 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) @@ -6568,7 +6574,7 @@ yydefault: } case 445: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3641 + //line php7/php7.y:3652 { yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -6580,7 +6586,7 @@ yydefault: } case 446: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3651 + //line php7/php7.y:3662 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -6592,7 +6598,7 @@ yydefault: } case 447: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3661 + //line php7/php7.y:3672 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) @@ -6604,7 +6610,7 @@ yydefault: } case 448: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3674 + //line php7/php7.y:3685 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -6616,7 +6622,7 @@ yydefault: } case 449: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3684 + //line php7/php7.y:3695 { yyVAL.node = yyDollar[2].node @@ -6626,13 +6632,13 @@ yydefault: } case 450: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3692 + //line php7/php7.y:3703 { yyVAL.node = yyDollar[1].node } case 451: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3697 + //line php7/php7.y:3708 { yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) @@ -6644,7 +6650,7 @@ yydefault: } case 452: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3707 + //line php7/php7.y:3718 { yyVAL.node = yyDollar[2].node @@ -6654,13 +6660,13 @@ yydefault: } case 453: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3715 + //line php7/php7.y:3726 { yyVAL.node = yyDollar[1].node } case 454: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3720 + //line php7/php7.y:3731 { if yyDollar[1].list[len(yyDollar[1].list)-1] == nil { yyVAL.list = yyDollar[1].list[:len(yyDollar[1].list)-1] @@ -6670,19 +6676,19 @@ yydefault: } case 455: yyDollar = yyS[yypt-0 : yypt+1] - //line php7/php7.y:3731 + //line php7/php7.y:3742 { yyVAL.node = nil } case 456: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3733 + //line php7/php7.y:3744 { yyVAL.node = yyDollar[1].node } case 457: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3738 + //line php7/php7.y:3749 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -6691,13 +6697,13 @@ yydefault: } case 458: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3745 + //line php7/php7.y:3756 { yyVAL.list = []node.Node{yyDollar[1].node} } case 459: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3750 + //line php7/php7.y:3761 { yyVAL.node = expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node, false) @@ -6709,7 +6715,7 @@ yydefault: } case 460: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3760 + //line php7/php7.y:3771 { yyVAL.node = expr.NewArrayItem(nil, yyDollar[1].node, false) @@ -6718,7 +6724,7 @@ yydefault: } case 461: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3767 + //line php7/php7.y:3778 { yyVAL.node = expr.NewArrayItem(yyDollar[1].node, yyDollar[4].node, true) @@ -6731,7 +6737,7 @@ yydefault: } case 462: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3778 + //line php7/php7.y:3789 { yyVAL.node = expr.NewArrayItem(nil, yyDollar[2].node, true) @@ -6743,7 +6749,7 @@ yydefault: } case 463: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:3788 + //line php7/php7.y:3799 { // TODO: Cannot use list() as standalone expression list := expr.NewList(yyDollar[5].list) @@ -6761,7 +6767,7 @@ yydefault: } case 464: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3804 + //line php7/php7.y:3815 { // TODO: Cannot use list() as standalone expression list := expr.NewList(yyDollar[3].list) @@ -6778,13 +6784,13 @@ yydefault: } case 465: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3822 + //line php7/php7.y:3833 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 466: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3824 + //line php7/php7.y:3835 { encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) yyVAL.list = append(yyDollar[1].list, encapsed) @@ -6797,13 +6803,13 @@ yydefault: } case 467: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3835 + //line php7/php7.y:3846 { yyVAL.list = []node.Node{yyDollar[1].node} } case 468: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3837 + //line php7/php7.y:3848 { encapsed := scalar.NewEncapsedStringPart(yyDollar[1].token.Value) yyVAL.list = []node.Node{encapsed, yyDollar[2].node} @@ -6816,7 +6822,7 @@ yydefault: } case 469: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3851 + //line php7/php7.y:3862 { name := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yyVAL.node = expr.NewVariable(name) @@ -6830,7 +6836,7 @@ yydefault: } case 470: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:3863 + //line php7/php7.y:3874 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -6848,7 +6854,7 @@ yydefault: } case 471: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3879 + //line php7/php7.y:3890 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) variable := expr.NewVariable(identifier) @@ -6868,7 +6874,7 @@ yydefault: } case 472: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3897 + //line php7/php7.y:3908 { yyVAL.node = expr.NewVariable(yyDollar[2].node) @@ -6881,7 +6887,7 @@ yydefault: } case 473: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3908 + //line php7/php7.y:3919 { name := node.NewIdentifier(yyDollar[2].token.Value) yyVAL.node = expr.NewVariable(name) @@ -6897,7 +6903,7 @@ yydefault: } case 474: yyDollar = yyS[yypt-6 : yypt+1] - //line php7/php7.y:3922 + //line php7/php7.y:3933 { identifier := node.NewIdentifier(yyDollar[2].token.Value) variable := expr.NewVariable(identifier) @@ -6917,13 +6923,13 @@ yydefault: } case 475: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:3940 + //line php7/php7.y:3951 { yyVAL.node = yyDollar[2].node } case 476: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3946 + //line php7/php7.y:3957 { yyVAL.node = scalar.NewString(yyDollar[1].token.Value) @@ -6935,7 +6941,7 @@ yydefault: } case 477: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:3956 + //line php7/php7.y:3967 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(yyDollar[1].token.Value); err == nil { @@ -6952,7 +6958,7 @@ yydefault: } case 478: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:3971 + //line php7/php7.y:3982 { var lnumber *scalar.Lnumber // TODO: add option to handle 64 bit integer @@ -6983,7 +6989,7 @@ yydefault: } case 479: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4000 + //line php7/php7.y:4011 { identifier := node.NewIdentifier(strings.TrimLeft(yyDollar[1].token.Value, "$")) yyVAL.node = expr.NewVariable(identifier) @@ -6997,7 +7003,7 @@ yydefault: } case 480: yyDollar = yyS[yypt-5 : yypt+1] - //line php7/php7.y:4015 + //line php7/php7.y:4026 { yyVAL.node = expr.NewIsset(yyDollar[3].list) @@ -7014,7 +7020,7 @@ yydefault: } case 481: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4030 + //line php7/php7.y:4041 { yyVAL.node = expr.NewEmpty(yyDollar[3].node) @@ -7028,7 +7034,7 @@ yydefault: } case 482: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4042 + //line php7/php7.y:4053 { yyVAL.node = expr.NewInclude(yyDollar[2].node) @@ -7040,7 +7046,7 @@ yydefault: } case 483: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4052 + //line php7/php7.y:4063 { yyVAL.node = expr.NewIncludeOnce(yyDollar[2].node) @@ -7052,7 +7058,7 @@ yydefault: } case 484: yyDollar = yyS[yypt-4 : yypt+1] - //line php7/php7.y:4062 + //line php7/php7.y:4073 { yyVAL.node = expr.NewEval(yyDollar[3].node) @@ -7066,7 +7072,7 @@ yydefault: } case 485: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4074 + //line php7/php7.y:4085 { yyVAL.node = expr.NewRequire(yyDollar[2].node) @@ -7078,7 +7084,7 @@ yydefault: } case 486: yyDollar = yyS[yypt-2 : yypt+1] - //line php7/php7.y:4084 + //line php7/php7.y:4095 { yyVAL.node = expr.NewRequireOnce(yyDollar[2].node) @@ -7090,13 +7096,13 @@ yydefault: } case 487: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4097 + //line php7/php7.y:4108 { yyVAL.list = []node.Node{yyDollar[1].node} } case 488: yyDollar = yyS[yypt-3 : yypt+1] - //line php7/php7.y:4099 + //line php7/php7.y:4110 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) @@ -7105,7 +7111,7 @@ yydefault: } case 489: yyDollar = yyS[yypt-1 : yypt+1] - //line php7/php7.y:4109 + //line php7/php7.y:4120 { yyVAL.node = yyDollar[1].node } diff --git a/php7/php7.y b/php7/php7.y index 60ee744..b310cce 100644 --- a/php7/php7.y +++ b/php7/php7.y @@ -263,12 +263,13 @@ import ( %type array_pair possible_array_pair %type isset_variable type return_type type_expr %type class_modifier +%type argument_list ctor_arguments %type member_modifier %type use_type %type foreach_variable -%type method_body switch_case_list trait_adaptations argument_list ctor_arguments +%type method_body switch_case_list trait_adaptations %type encaps_list backticks_expr namespace_name catch_name_list catch_list class_const_list %type const_list echo_expr_list for_exprs non_empty_for_exprs global_var_list @@ -482,7 +483,7 @@ top_statement: | T_USE use_declarations ';' { $$ = stmt.NewUseList(nil, $2) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) @@ -493,7 +494,7 @@ top_statement: | T_USE use_type use_declarations ';' { $$ = stmt.NewUseList($2, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) @@ -829,7 +830,7 @@ statement: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $5.endToken)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.SwitchToken) yylex.(*Parser).comments.AddFromToken($$, $2, comment.OpenParenthesisToken) @@ -852,7 +853,7 @@ statement: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.ContinueToken) yylex.(*Parser).comments.AddFromToken($$, $3, comment.SemiColonToken) @@ -860,10 +861,10 @@ statement: | T_RETURN optional_expr ';' { $$ = stmt.NewReturn($2) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.ReturnToken) yylex.(*Parser).comments.AddFromToken($$, $3, comment.SemiColonToken) @@ -871,10 +872,10 @@ statement: | T_GLOBAL global_var_list ';' { $$ = stmt.NewGlobal($2) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.GlobalToken) yylex.(*Parser).comments.AddFromToken($$, $3, comment.SemiColonToken) @@ -882,10 +883,10 @@ statement: | T_STATIC static_var_list ';' { $$ = stmt.NewStatic($2) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.StaticToken) yylex.(*Parser).comments.AddFromToken($$, $3, comment.SemiColonToken) @@ -893,10 +894,10 @@ statement: | T_ECHO echo_expr_list ';' { $$ = stmt.NewEcho($2) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.EchoToken) yylex.(*Parser).comments.AddFromToken($$, $3, comment.SemiColonToken) @@ -904,17 +905,17 @@ statement: | T_INLINE_HTML { $$ = stmt.NewInlineHtml($1.Value) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.InlineHTMLToken) } | expr ';' { $$ = stmt.NewExpression($1) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2)) @@ -924,10 +925,10 @@ statement: | T_UNSET '(' unset_variables possible_comma ')' ';' { $$ = stmt.NewUnset($3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $6)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.UnsetToken) yylex.(*Parser).comments.AddFromToken($$, $2, comment.OpenParenthesisToken) @@ -944,10 +945,10 @@ statement: } else { $$ = stmt.NewForeach($3, nil, $5.node, $7.node, $5.byRef) } - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $7.node)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.ForeachToken) yylex.(*Parser).comments.AddFromToken($$, $2, comment.OpenParenthesisToken) @@ -961,10 +962,10 @@ statement: } else { $$ = stmt.NewForeach($3, $5, $7.node, $9.node, $7.byRef) } - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $9.node)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.ForeachToken) yylex.(*Parser).comments.AddFromToken($$, $2, comment.OpenParenthesisToken) @@ -975,10 +976,10 @@ statement: | T_DECLARE '(' const_list ')' declare_statement { $$ = stmt.NewDeclare($3, $5) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $5)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.DeclareToken) yylex.(*Parser).comments.AddFromToken($$, $2, comment.OpenParenthesisToken) @@ -987,7 +988,7 @@ statement: | ';' { $$ = stmt.NewNop() - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) @@ -1093,7 +1094,7 @@ finally_statement: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.FinallyToken) yylex.(*Parser).comments.AddFromToken($$, $2, comment.OpenCurlyBracesToken) @@ -1164,7 +1165,7 @@ class_declaration_statement: // save position yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition($3)) yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewOptionalListTokensPosition($1, $2, $9)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.ClassToken) yylex.(*Parser).comments.AddFromToken(name, $3, comment.StringToken) @@ -1257,7 +1258,7 @@ interface_declaration_statement: // save position yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition($2)) yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $7)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.InterfaceToken) yylex.(*Parser).comments.AddFromToken(name, $2, comment.StringToken) @@ -1388,7 +1389,7 @@ declare_statement: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.ColonToken) yylex.(*Parser).comments.AddFromToken($$, $3, comment.EnddeclareToken) @@ -1425,7 +1426,7 @@ case_list: // save position yylex.(*Parser).positions.AddPosition(_default, yylex.(*Parser).positionBuilder.NewTokenNodeListPosition($2, $4)) - + // save comments yylex.(*Parser).comments.AddFromToken(_default, $2, comment.DefaultToken) yylex.(*Parser).comments.AddFromToken(_default, $3, comment.CaseSeparatorToken) @@ -1470,7 +1471,7 @@ if_stmt_without_else: yylex.(*Parser).comments.AddFromToken($$, $4, comment.CloseParenthesisToken) } | if_stmt_without_else T_ELSEIF '(' expr ')' statement - { + { _elseIf := stmt.NewElseIf($4, $6) $$ = $1.(*stmt.If).AddElseIf(_elseIf) @@ -1504,7 +1505,7 @@ if_stmt: alt_if_stmt_without_else: T_IF '(' expr ')' ':' inner_statement_list - { + { stmts := stmt.NewStmtList($6) $$ = stmt.NewAltIf($3, stmts, nil, nil) @@ -1543,7 +1544,7 @@ alt_if_stmt: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.EndifToken) yylex.(*Parser).comments.AddFromToken($$, $3, comment.SemiColonToken) @@ -1692,7 +1693,7 @@ type: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.ArrayToken) } @@ -1702,7 +1703,7 @@ type: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.CallableToken) } @@ -1724,9 +1725,19 @@ return_type: argument_list: '(' ')' - { $$ = &nodesWithEndToken{[]node.Node{}, $2} } + { + $$ = node.NewArgumentList(nil) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) + } | '(' non_empty_argument_list possible_comma ')' - { $$ = &nodesWithEndToken{$2, $4} } + { + $$ = node.NewArgumentList($2) + + // save position + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) + } ; non_empty_argument_list: @@ -1833,7 +1844,7 @@ class_statement: variable_modifiers property_list ';' { $$ = stmt.NewPropertyList($1, $2) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeListTokenPosition($1, $3)) @@ -1843,7 +1854,7 @@ class_statement: | method_modifiers T_CONST class_const_list ';' { $$ = stmt.NewClassConstList($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewOptionalListTokensPosition($1, $2, $4)) @@ -1854,7 +1865,7 @@ class_statement: | T_USE name_list trait_adaptations { $$ = stmt.NewTraitUse($2, $3.nodes) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3.endToken)) @@ -1865,7 +1876,7 @@ class_statement: { name := node.NewIdentifier($4.Value) $$ = stmt.NewClassMethod(name, $1, $3.value, $7, $9, $10.nodes, $5) - + // save position yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition($4)) yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewOptionalListTokensPosition($1, $2, $10.endToken)) @@ -1882,7 +1893,7 @@ class_statement: ; name_list: - name + name { $$ = []node.Node{$1} } | name_list ',' name { @@ -1948,7 +1959,7 @@ trait_alias: // save position yylex.(*Parser).positions.AddPosition(alias, yylex.(*Parser).positionBuilder.NewTokenPosition($3)) yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.AsToken) yylex.(*Parser).comments.AddFromToken(alias, $3, comment.StringToken) @@ -1961,7 +1972,7 @@ trait_alias: // save position yylex.(*Parser).positions.AddPosition(alias, yylex.(*Parser).positionBuilder.NewTokenPosition($3)) yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.AsToken) yylex.(*Parser).comments.AddFromToken(alias, $3, comment.StringToken) @@ -1974,7 +1985,7 @@ trait_alias: // save position yylex.(*Parser).positions.AddPosition(alias, yylex.(*Parser).positionBuilder.NewTokenPosition($4)) yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.AsToken) yylex.(*Parser).comments.AddFromToken(alias, $4, comment.IdentifierToken) @@ -1985,7 +1996,7 @@ trait_alias: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.AsToken) } @@ -2000,7 +2011,7 @@ trait_method_reference: // save position yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + // save comments yylex.(*Parser).comments.AddFromToken(name, $1, comment.IdentifierToken) } @@ -2017,7 +2028,7 @@ absolute_trait_method_reference: // save position yylex.(*Parser).positions.AddPosition(target, yylex.(*Parser).positionBuilder.NewTokenPosition($3)) yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.PaamayimNekudotayimToken) yylex.(*Parser).comments.AddFromToken(target, $3, comment.IdentifierToken) @@ -2039,7 +2050,7 @@ variable_modifiers: // save position yylex.(*Parser).positions.AddPosition(modifier, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + // save comments yylex.(*Parser).comments.AddFromToken(modifier, $1, comment.VarToken) } @@ -2066,7 +2077,7 @@ member_modifier: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.PublicToken) } @@ -2076,7 +2087,7 @@ member_modifier: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.ProtectedToken) } @@ -2086,7 +2097,7 @@ member_modifier: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.PrivateToken) } @@ -2096,7 +2107,7 @@ member_modifier: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.StaticToken) } @@ -2106,7 +2117,7 @@ member_modifier: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.AbstractToken) } @@ -2116,7 +2127,7 @@ member_modifier: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.FinalToken) } @@ -2250,7 +2261,7 @@ anonymous_class: T_CLASS ctor_arguments extends_from implements_list backup_doc_comment '{' class_statement_list '}' { if $2 != nil { - $$ = stmt.NewClass(nil, nil, $2.nodes, $3, $4, $7, $5) + $$ = stmt.NewClass(nil, nil, $2.(*node.ArgumentList), $3, $4, $7, $5) } else { $$ = stmt.NewClass(nil, nil, nil, $3, $4, $7, $5) } @@ -2275,8 +2286,8 @@ new_expr: T_NEW class_name_reference ctor_arguments { if $3 != nil { - $$ = expr.NewNew($2, $3.nodes) - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3.endToken)) + $$ = expr.NewNew($2, $3.(*node.ArgumentList)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $3)) } else { $$ = expr.NewNew($2, nil) yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) @@ -2330,7 +2341,7 @@ expr_without_variable: | variable '=' expr { $$ = assign.NewAssign($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) @@ -2340,7 +2351,7 @@ expr_without_variable: | variable '=' '&' expr { $$ = assign.NewReference($1, $4) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) @@ -2351,17 +2362,17 @@ expr_without_variable: | T_CLONE expr { $$ = expr.NewClone($2) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.CloneToken) } | variable T_PLUS_EQUAL expr { $$ = assign.NewPlus($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) @@ -2371,7 +2382,7 @@ expr_without_variable: | variable T_MINUS_EQUAL expr { $$ = assign.NewMinus($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) @@ -2381,7 +2392,7 @@ expr_without_variable: | variable T_MUL_EQUAL expr { $$ = assign.NewMul($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) @@ -2391,7 +2402,7 @@ expr_without_variable: | variable T_POW_EQUAL expr { $$ = assign.NewPow($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) @@ -2401,7 +2412,7 @@ expr_without_variable: | variable T_DIV_EQUAL expr { $$ = assign.NewDiv($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) @@ -2411,7 +2422,7 @@ expr_without_variable: | variable T_CONCAT_EQUAL expr { $$ = assign.NewConcat($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) @@ -2421,7 +2432,7 @@ expr_without_variable: | variable T_MOD_EQUAL expr { $$ = assign.NewMod($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) @@ -2431,7 +2442,7 @@ expr_without_variable: | variable T_AND_EQUAL expr { $$ = assign.NewBitwiseAnd($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) @@ -2441,7 +2452,7 @@ expr_without_variable: | variable T_OR_EQUAL expr { $$ = assign.NewBitwiseOr($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) @@ -2451,7 +2462,7 @@ expr_without_variable: | variable T_XOR_EQUAL expr { $$ = assign.NewBitwiseXor($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) @@ -2461,7 +2472,7 @@ expr_without_variable: | variable T_SL_EQUAL expr { $$ = assign.NewShiftLeft($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) @@ -2471,7 +2482,7 @@ expr_without_variable: | variable T_SR_EQUAL expr { $$ = assign.NewShiftRight($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) @@ -2481,217 +2492,217 @@ expr_without_variable: | variable T_INC { $$ = expr.NewPostInc($1) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.IncToken) } | T_INC variable { $$ = expr.NewPreInc($2) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.IncToken) } | variable T_DEC { $$ = expr.NewPostDec($1) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.DecToken) } | T_DEC variable { $$ = expr.NewPreDec($2) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.DecToken) } | expr T_BOOLEAN_OR expr { $$ = binary.NewBooleanOr($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.BooleanOrToken) } | expr T_BOOLEAN_AND expr { $$ = binary.NewBooleanAnd($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.BooleanAndToken) } | expr T_LOGICAL_OR expr { $$ = binary.NewLogicalOr($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.LogicalOrToken) } | expr T_LOGICAL_AND expr { $$ = binary.NewLogicalAnd($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.LogicalAndToken) } | expr T_LOGICAL_XOR expr { $$ = binary.NewLogicalXor($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.LogicalXorToken) } | expr '|' expr { $$ = binary.NewBitwiseOr($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.VerticalBarToken) } | expr '&' expr { $$ = binary.NewBitwiseAnd($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.AmpersandToken) } | expr '^' expr { $$ = binary.NewBitwiseXor($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.CaretToken) } | expr '.' expr { $$ = binary.NewConcat($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.DotToken) } | expr '+' expr { $$ = binary.NewPlus($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.PlusToken) } | expr '-' expr { $$ = binary.NewMinus($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.MinusToken) } | expr '*' expr { $$ = binary.NewMul($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.AsteriskToken) } | expr T_POW expr { $$ = binary.NewPow($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.PowToken) } | expr '/' expr { $$ = binary.NewDiv($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.SlashToken) } | expr '%' expr { $$ = binary.NewMod($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.PercentToken) } | expr T_SL expr { $$ = binary.NewShiftLeft($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.SlToken) } | expr T_SR expr { $$ = binary.NewShiftRight($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.SrToken) } | '+' expr %prec T_INC { $$ = expr.NewUnaryPlus($2) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) @@ -2701,7 +2712,7 @@ expr_without_variable: | '-' expr %prec T_INC { $$ = expr.NewUnaryMinus($2) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) @@ -2711,7 +2722,7 @@ expr_without_variable: | '!' expr { $$ = expr.NewBooleanNot($2) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) @@ -2721,7 +2732,7 @@ expr_without_variable: | '~' expr { $$ = expr.NewBitwiseNot($2) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) @@ -2731,107 +2742,107 @@ expr_without_variable: | expr T_IS_IDENTICAL expr { $$ = binary.NewIdentical($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.IsIdenticalToken) } | expr T_IS_NOT_IDENTICAL expr { $$ = binary.NewNotIdentical($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.IsNotIdenticalToken) } | expr T_IS_EQUAL expr { $$ = binary.NewEqual($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.IsEqualToken) } | expr T_IS_NOT_EQUAL expr { $$ = binary.NewNotEqual($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.IsNotEqualToken) } | expr '<' expr { $$ = binary.NewSmaller($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.LessToken) } | expr T_IS_SMALLER_OR_EQUAL expr { $$ = binary.NewSmallerOrEqual($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.IsSmallerOrEqualToken) } | expr '>' expr { $$ = binary.NewGreater($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.GreaterToken) } | expr T_IS_GREATER_OR_EQUAL expr { $$ = binary.NewGreaterOrEqual($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.IsGreaterOrEqualToken) } | expr T_SPACESHIP expr { $$ = binary.NewSpaceship($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.SpaceshipToken) } | expr T_INSTANCEOF class_name_reference { $$ = expr.NewInstanceOf($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.InstanceofToken) } | '(' expr ')' { $$ = $2; - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.OpenParenthesisToken) yylex.(*Parser).comments.AddFromToken($$, $3, comment.CloseParenthesisToken) @@ -2841,10 +2852,10 @@ expr_without_variable: | expr '?' expr ':' expr { $$ = expr.NewTernary($1, $3, $5) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $5)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.QuestionMarkToken) yylex.(*Parser).comments.AddFromToken($$, $4, comment.ColonToken) @@ -2852,10 +2863,10 @@ expr_without_variable: | expr '?' ':' expr { $$ = expr.NewTernary($1, nil, $4) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.QuestionMarkToken) yylex.(*Parser).comments.AddFromToken($$, $3, comment.ColonToken) @@ -2863,10 +2874,10 @@ expr_without_variable: | expr T_COALESCE expr { $$ = binary.NewCoalesce($1, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.CoalesceToken) } @@ -2875,70 +2886,70 @@ expr_without_variable: | T_INT_CAST expr { $$ = cast.NewInt($2) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.IntCastToken) } | T_DOUBLE_CAST expr { $$ = cast.NewDouble($2) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.DoubleCastToken) } | T_STRING_CAST expr { $$ = cast.NewString($2) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.StringCastToken) } | T_ARRAY_CAST expr { $$ = cast.NewArray($2) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.ArrayCastToken) } | T_OBJECT_CAST expr { $$ = cast.NewObject($2) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.ObjectCastToken) } | T_BOOL_CAST expr { $$ = cast.NewBool($2) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.BoolCastToken) } | T_UNSET_CAST expr { $$ = cast.NewUnset($2) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.UnsetCastToken) } @@ -2949,20 +2960,20 @@ expr_without_variable: } else { $$ = expr.NewExit($2) } - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.ExitToken) } | '@' expr { $$ = expr.NewErrorSuppress($2) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.AtToken) } @@ -2971,10 +2982,10 @@ expr_without_variable: | '`' backticks_expr '`' { $$ = expr.NewShellExec($2) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.BackquoteToken) yylex.(*Parser).comments.AddFromToken($$, $3, comment.BackquoteToken) @@ -2982,40 +2993,40 @@ expr_without_variable: | T_PRINT expr { $$ = expr.NewPrint($2) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.PrintToken) } | T_YIELD { $$ = expr.NewYield(nil, nil) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.YieldToken) } | T_YIELD expr { $$ = expr.NewYield(nil, $2) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.YieldToken) } | T_YIELD expr T_DOUBLE_ARROW expr { $$ = expr.NewYield($2, $4) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $4)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.YieldToken) yylex.(*Parser).comments.AddFromToken($$, $3, comment.DoubleArrowToken) @@ -3023,17 +3034,17 @@ expr_without_variable: | T_YIELD_FROM expr { $$ = expr.NewYieldFrom($2) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.YieldFromToken) } | T_FUNCTION returns_ref backup_doc_comment '(' parameter_list ')' lexical_vars return_type '{' inner_statement_list '}' { $$ = expr.NewClosure($5, $7, $8, $10, false, $2.value, $3) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $11)) @@ -3050,7 +3061,7 @@ expr_without_variable: | T_STATIC T_FUNCTION returns_ref backup_doc_comment '(' parameter_list ')' lexical_vars return_type '{' inner_statement_list '}' { $$ = expr.NewClosure($6, $8, $9, $11, true, $3.value, $4) - + // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $12)) @@ -3136,37 +3147,37 @@ lexical_var: function_call: name argument_list { - $$ = expr.NewFunctionCall($1, $2.nodes) + $$ = expr.NewFunctionCall($1, $2.(*node.ArgumentList)) // save position - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2.endToken)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $2)) } | class_name T_PAAMAYIM_NEKUDOTAYIM member_name argument_list { - $$ = expr.NewStaticCall($1, $3, $4.nodes) + $$ = expr.NewStaticCall($1, $3, $4.(*node.ArgumentList)) // save position - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4.endToken)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.PaamayimNekudotayimToken) } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM member_name argument_list { - $$ = expr.NewStaticCall($1, $3, $4.nodes) + $$ = expr.NewStaticCall($1, $3, $4.(*node.ArgumentList)) // save position - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4.endToken)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.PaamayimNekudotayimToken) } | callable_expr argument_list { - $$ = expr.NewFunctionCall($1, $2.nodes) + $$ = expr.NewFunctionCall($1, $2.(*node.ArgumentList)) // save position - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $2.endToken)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $2)) } ; @@ -3222,7 +3233,7 @@ dereferencable_scalar: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.ArrayToken) yylex.(*Parser).comments.AddFromToken($$, $2, comment.OpenParenthesisToken) @@ -3234,7 +3245,7 @@ dereferencable_scalar: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.OpenSquareBracket) yylex.(*Parser).comments.AddFromToken($$, $3, comment.CloseSquareBracket) @@ -3245,7 +3256,7 @@ dereferencable_scalar: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.ConstantEncapsedStringToken) } @@ -3258,7 +3269,7 @@ scalar: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.LnumberToken) } @@ -3268,7 +3279,7 @@ scalar: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.DnumberToken) } @@ -3278,7 +3289,7 @@ scalar: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.LineToken) } @@ -3288,7 +3299,7 @@ scalar: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.FileToken) } @@ -3298,7 +3309,7 @@ scalar: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.DirToken) } @@ -3308,7 +3319,7 @@ scalar: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.TraitCToken) } @@ -3318,7 +3329,7 @@ scalar: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.MethodCToken) } @@ -3328,7 +3339,7 @@ scalar: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.FuncCToken) } @@ -3338,7 +3349,7 @@ scalar: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.NsCToken) } @@ -3348,7 +3359,7 @@ scalar: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.ClassCToken) } @@ -3370,7 +3381,7 @@ scalar: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $2)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.StartHeredocToken) } @@ -3380,7 +3391,7 @@ scalar: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.DoubleQuoteToken) } @@ -3390,7 +3401,7 @@ scalar: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.StartHeredocToken) } @@ -3461,7 +3472,7 @@ dereferencable: | '(' expr ')' { $$ = $2; - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.OpenParenthesisToken) yylex.(*Parser).comments.AddFromToken($$, $3, comment.CloseParenthesisToken) @@ -3476,7 +3487,7 @@ callable_expr: | '(' expr ')' { $$ = $2; - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.OpenParenthesisToken) yylex.(*Parser).comments.AddFromToken($$, $3, comment.CloseParenthesisToken) @@ -3523,10 +3534,10 @@ callable_variable: } | dereferencable T_OBJECT_OPERATOR property_name argument_list { - $$ = expr.NewMethodCall($1, $3, $4.nodes) + $$ = expr.NewMethodCall($1, $3, $4.(*node.ArgumentList)) // save position - yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodeTokenPosition($1, $4.endToken)) + yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $4)) // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.ObjectOperatorToken) @@ -3546,7 +3557,7 @@ variable: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewNodesPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $2, comment.ObjectOperatorToken) } @@ -3561,7 +3572,7 @@ simple_variable: // save position yylex.(*Parser).positions.AddPosition(name, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.VariableToken) } @@ -3571,7 +3582,7 @@ simple_variable: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $4)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.DollarToken) yylex.(*Parser).comments.AddFromToken($$, $2, comment.OpenCurlyBracesToken) @@ -3583,7 +3594,7 @@ simple_variable: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenNodePosition($1, $2)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.DollarToken) } @@ -3699,7 +3710,7 @@ property_name: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.StringToken) } @@ -3827,11 +3838,11 @@ encaps_list: // save position yylex.(*Parser).positions.AddPosition(encapsed, yylex.(*Parser).positionBuilder.NewTokenPosition($2)) - + // save comments yylex.(*Parser).comments.AddFromToken(encapsed, $2, comment.EncapsedAndWhitespaceToken) } - | encaps_var + | encaps_var { $$ = []node.Node{$1} } | T_ENCAPSED_AND_WHITESPACE encaps_var { @@ -3840,7 +3851,7 @@ encaps_list: // save position yylex.(*Parser).positions.AddPosition(encapsed, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + // save comments yylex.(*Parser).comments.AddFromToken(encapsed, $1, comment.EncapsedAndWhitespaceToken) } @@ -3887,7 +3898,7 @@ encaps_var: yylex.(*Parser).positions.AddPosition(variable, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) yylex.(*Parser).positions.AddPosition(fetch, yylex.(*Parser).positionBuilder.NewTokenPosition($3)) yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken(variable, $1, comment.VariableToken) yylex.(*Parser).comments.AddFromToken($$, $2, comment.ObjectOperatorToken) @@ -3899,7 +3910,7 @@ encaps_var: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokensPosition($1, $3)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.DollarOpenCurlyBracesToken) yylex.(*Parser).comments.AddFromToken($$, $3, comment.CloseCurlyBracesToken) @@ -3948,7 +3959,7 @@ encaps_var_offset: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.StringToken) } @@ -3963,7 +3974,7 @@ encaps_var_offset: // save position yylex.(*Parser).positions.AddPosition($$, yylex.(*Parser).positionBuilder.NewTokenPosition($1)) - + // save comments yylex.(*Parser).comments.AddFromToken($$, $1, comment.NumStringToken) } diff --git a/php7/php7_test.go b/php7/php7_test.go index 3b3c49c..0d0056a 100644 --- a/php7/php7_test.go +++ b/php7/php7_test.go @@ -402,18 +402,22 @@ func TestPhp7(t *testing.T) { &stmt.Expression{ Expr: &expr.FunctionCall{ Function: &name.Name{Parts: []node.Node{&name.NamePart{Value: "foo"}}}, - Arguments: []node.Node{ - &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, - &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, + &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + }, }, }, }, &stmt.Expression{ Expr: &expr.FunctionCall{ Function: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, - Arguments: []node.Node{ - &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, - &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, + &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + }, }, }, }, @@ -421,9 +425,11 @@ func TestPhp7(t *testing.T) { Expr: &expr.MethodCall{ Variable: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, Method: &node.Identifier{Value: "bar"}, - Arguments: []node.Node{ - &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, - &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, + &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + }, }, }, }, @@ -431,9 +437,11 @@ func TestPhp7(t *testing.T) { Expr: &expr.StaticCall{ Class: &name.Name{Parts: []node.Node{&name.NamePart{Value: "foo"}}}, Call: &node.Identifier{Value: "bar"}, - Arguments: []node.Node{ - &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, - &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, + &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + }, }, }, }, @@ -441,18 +449,22 @@ func TestPhp7(t *testing.T) { Expr: &expr.StaticCall{ Class: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, Call: &node.Identifier{Value: "bar"}, - Arguments: []node.Node{ - &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, - &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, + &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + }, }, }, }, &stmt.Expression{ Expr: &expr.New{ Class: &name.Name{Parts: []node.Node{&name.NamePart{Value: "foo"}}}, - Arguments: []node.Node{ - &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, - &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, + &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + }, }, }, }, @@ -460,9 +472,11 @@ func TestPhp7(t *testing.T) { Expr: &expr.New{ Class: &stmt.Class{ PhpDocComment: "/** anonymous class */", - Args: []node.Node{ - &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, - &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, + &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + }, }, Stmts: []node.Node{}, }, @@ -730,9 +744,10 @@ func TestPhp7(t *testing.T) { Parts: []node.Node{ &scalar.EncapsedStringPart{Value: "test "}, &expr.MethodCall{ - Variable: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, - Method: &node.Identifier{Value: "bar"}, - Arguments: []node.Node{}, + Variable: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, + Method: &node.Identifier{Value: "bar"}, + + ArgumentList: &node.ArgumentList{}, }, }, }, @@ -945,7 +960,8 @@ func TestPhp7(t *testing.T) { &stmt.Expression{ Expr: &expr.New{ Class: &stmt.Class{ - Args: []node.Node{}, + + ArgumentList: &node.ArgumentList{}, Extends: &name.Name{ Parts: []node.Node{ &name.NamePart{Value: "foo"}, @@ -2168,7 +2184,8 @@ func TestPhp7(t *testing.T) { &name.NamePart{Value: "foo"}, }, }, - Arguments: []node.Node{}, + + ArgumentList: &node.ArgumentList{}, }, }, &stmt.Expression{ @@ -2178,7 +2195,8 @@ func TestPhp7(t *testing.T) { &name.NamePart{Value: "foo"}, }, }, - Arguments: []node.Node{}, + + ArgumentList: &node.ArgumentList{}, }, }, &stmt.Expression{ @@ -2188,13 +2206,15 @@ func TestPhp7(t *testing.T) { &name.NamePart{Value: "foo"}, }, }, - Arguments: []node.Node{}, + + ArgumentList: &node.ArgumentList{}, }, }, &stmt.Expression{ Expr: &expr.FunctionCall{ - Function: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, - Arguments: []node.Node{}, + Function: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, + + ArgumentList: &node.ArgumentList{}, }, }, &stmt.Expression{ @@ -2325,9 +2345,10 @@ func TestPhp7(t *testing.T) { }, &stmt.Expression{ Expr: &expr.MethodCall{ - Variable: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, - Method: &node.Identifier{Value: "foo"}, - Arguments: []node.Node{}, + Variable: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + Method: &node.Identifier{Value: "foo"}, + + ArgumentList: &node.ArgumentList{}, }, }, &stmt.Expression{ @@ -2337,7 +2358,8 @@ func TestPhp7(t *testing.T) { &name.NamePart{Value: "Foo"}, }, }, - Arguments: []node.Node{}, + + ArgumentList: &node.ArgumentList{}, }, }, &stmt.Expression{ @@ -2347,7 +2369,8 @@ func TestPhp7(t *testing.T) { &name.NamePart{Value: "Foo"}, }, }, - Arguments: []node.Node{}, + + ArgumentList: &node.ArgumentList{}, }, }, &stmt.Expression{ @@ -2357,16 +2380,20 @@ func TestPhp7(t *testing.T) { &name.NamePart{Value: "Foo"}, }, }, - Arguments: []node.Node{}, + + ArgumentList: &node.ArgumentList{}, }, }, &stmt.Expression{ Expr: &expr.New{ Class: &stmt.Class{ PhpDocComment: "", - Args: []node.Node{ - &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, - &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{Variadic: false, Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}}, + &node.Argument{Variadic: true, Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}}, + }, }, Stmts: []node.Node{}, }, @@ -2488,8 +2515,9 @@ func TestPhp7(t *testing.T) { &name.NamePart{Value: "Foo"}, }, }, - Call: &node.Identifier{Value: "bar"}, - Arguments: []node.Node{}, + Call: &node.Identifier{Value: "bar"}, + + ArgumentList: &node.ArgumentList{}, }, }, &stmt.Expression{ @@ -2499,8 +2527,9 @@ func TestPhp7(t *testing.T) { &name.NamePart{Value: "Foo"}, }, }, - Call: &node.Identifier{Value: "bar"}, - Arguments: []node.Node{}, + Call: &node.Identifier{Value: "bar"}, + + ArgumentList: &node.ArgumentList{}, }, }, &stmt.Expression{ @@ -2510,8 +2539,9 @@ func TestPhp7(t *testing.T) { &name.NamePart{Value: "Foo"}, }, }, - Call: &node.Identifier{Value: "bar"}, - Arguments: []node.Node{}, + Call: &node.Identifier{Value: "bar"}, + + ArgumentList: &node.ArgumentList{}, }, }, &stmt.Expression{ @@ -2931,7 +2961,8 @@ func TestPhp7(t *testing.T) { &name.NamePart{Value: "bar"}, }, }, - Arguments: []node.Node{}, + + ArgumentList: &node.ArgumentList{}, }, }, &stmt.Function{ @@ -3048,7 +3079,8 @@ func TestPhp7(t *testing.T) { Function: &expr.New{ Class: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}}, }, - Arguments: []node.Node{}, + + ArgumentList: &node.ArgumentList{}, }, }, &stmt.Expression{ @@ -3064,7 +3096,8 @@ func TestPhp7(t *testing.T) { }, Dim: &scalar.Lnumber{Value: "0"}, }, - Arguments: []node.Node{}, + + ArgumentList: &node.ArgumentList{}, }, }, &stmt.Expression{ @@ -3075,13 +3108,15 @@ func TestPhp7(t *testing.T) { }, Dim: &scalar.Lnumber{Value: "1"}, }, - Arguments: []node.Node{}, + + ArgumentList: &node.ArgumentList{}, }, }, &stmt.Expression{ Expr: &expr.FunctionCall{ - Function: &scalar.String{Value: "\"foo\""}, - Arguments: []node.Node{}, + Function: &scalar.String{Value: "\"foo\""}, + + ArgumentList: &node.ArgumentList{}, }, }, &stmt.Expression{ @@ -3097,22 +3132,25 @@ func TestPhp7(t *testing.T) { }, Dim: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, }, - Arguments: []node.Node{}, + + ArgumentList: &node.ArgumentList{}, }, }, &stmt.Expression{ Expr: &expr.Variable{ VarName: &expr.FunctionCall{ - Function: &name.Name{Parts: []node.Node{&name.NamePart{Value: "foo"}}}, - Arguments: []node.Node{}, + Function: &name.Name{Parts: []node.Node{&name.NamePart{Value: "foo"}}}, + + ArgumentList: &node.ArgumentList{}, }, }, }, &stmt.Expression{ Expr: &expr.StaticCall{ - Class: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}}, - Call: &expr.Variable{VarName: &node.Identifier{Value: "bar"}}, - Arguments: []node.Node{}, + Class: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}}, + Call: &expr.Variable{VarName: &node.Identifier{Value: "bar"}}, + + ArgumentList: &node.ArgumentList{}, }, }, &stmt.Expression{ @@ -3122,7 +3160,8 @@ func TestPhp7(t *testing.T) { Variable: &expr.Variable{VarName: &node.Identifier{Value: "bar"}}, Dim: &scalar.Lnumber{Value: "0"}, }, - Arguments: []node.Node{}, + + ArgumentList: &node.ArgumentList{}, }, }, &stmt.Expression{ diff --git a/printer/printer.go b/printer/printer.go index 231c855..b4ed6a8 100644 --- a/printer/printer.go +++ b/printer/printer.go @@ -1097,7 +1097,7 @@ func (p *Printer) printExprFunctionCall(n node.Node) { p.Print(nn.Function) io.WriteString(p.w, "(") - p.joinPrint(", ", nn.Arguments) + p.joinPrint(", ", nn.ArgumentList.Arguments) io.WriteString(p.w, ")") } @@ -1146,7 +1146,7 @@ func (p *Printer) printExprMethodCall(n node.Node) { io.WriteString(p.w, "->") p.Print(nn.Method) io.WriteString(p.w, "(") - p.joinPrint(", ", nn.Arguments) + p.joinPrint(", ", nn.ArgumentList.Arguments) io.WriteString(p.w, ")") } @@ -1156,9 +1156,9 @@ func (p *Printer) printExprNew(n node.Node) { io.WriteString(p.w, "new ") p.Print(nn.Class) - if nn.Arguments != nil { + if nn.ArgumentList != nil { io.WriteString(p.w, "(") - p.joinPrint(", ", nn.Arguments) + p.joinPrint(", ", nn.ArgumentList.Arguments) io.WriteString(p.w, ")") } } @@ -1254,7 +1254,7 @@ func (p *Printer) printExprStaticCall(n node.Node) { io.WriteString(p.w, "::") p.Print(nn.Call) io.WriteString(p.w, "(") - p.joinPrint(", ", nn.Arguments) + p.joinPrint(", ", nn.ArgumentList.Arguments) io.WriteString(p.w, ")") } @@ -1536,9 +1536,9 @@ func (p *Printer) printStmtClass(n node.Node) { p.Print(nn.ClassName) } - if nn.Args != nil { + if nn.ArgumentList != nil { io.WriteString(p.w, "(") - p.joinPrint(", ", nn.Args) + p.joinPrint(", ", nn.ArgumentList.Arguments) io.WriteString(p.w, ")") } diff --git a/printer/printer_test.go b/printer/printer_test.go index 38d3c54..4e32212 100644 --- a/printer/printer_test.go +++ b/printer/printer_test.go @@ -1522,17 +1522,19 @@ func TestPrintFunctionCall(t *testing.T) { p := printer.NewPrinter(o, " ") p.Print(&expr.FunctionCall{ Function: &expr.Variable{VarName: &node.Identifier{Value: "var"}}, - Arguments: []node.Node{ - &node.Argument{ - IsReference: true, - Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, - }, - &node.Argument{ - Variadic: true, - Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}, - }, - &node.Argument{ - Expr: &expr.Variable{VarName: &node.Identifier{Value: "c"}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{ + IsReference: true, + Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + }, + &node.Argument{ + Variadic: true, + Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}, + }, + &node.Argument{ + Expr: &expr.Variable{VarName: &node.Identifier{Value: "c"}}, + }, }, }, }) @@ -1648,12 +1650,14 @@ func TestPrintMethodCall(t *testing.T) { p.Print(&expr.MethodCall{ Variable: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, Method: &node.Identifier{Value: "bar"}, - Arguments: []node.Node{ - &node.Argument{ - Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, - }, - &node.Argument{ - Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{ + Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + }, + &node.Argument{ + Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}, + }, }, }, }) @@ -1672,12 +1676,14 @@ func TestPrintNew(t *testing.T) { p := printer.NewPrinter(o, " ") p.Print(&expr.New{ Class: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Foo"}}}, - Arguments: []node.Node{ - &node.Argument{ - Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, - }, - &node.Argument{ - Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{ + Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + }, + &node.Argument{ + Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}, + }, }, }, }) @@ -1901,12 +1907,14 @@ func TestPrintStaticCall(t *testing.T) { p.Print(&expr.StaticCall{ Class: &node.Identifier{Value: "Foo"}, Call: &node.Identifier{Value: "bar"}, - Arguments: []node.Node{ - &node.Argument{ - Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, - }, - &node.Argument{ - Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{ + Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + }, + &node.Argument{ + Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}, + }, }, }, }) @@ -2509,12 +2517,14 @@ func TestPrintStmtAnonymousClass(t *testing.T) { Stmts: []node.Node{ &stmt.Class{ Modifiers: []node.Node{&node.Identifier{Value: "abstract"}}, - Args: []node.Node{ - &node.Argument{ - Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, - }, - &node.Argument{ - Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}, + ArgumentList: &node.ArgumentList{ + Arguments: []node.Node{ + &node.Argument{ + Expr: &expr.Variable{VarName: &node.Identifier{Value: "a"}}, + }, + &node.Argument{ + Expr: &expr.Variable{VarName: &node.Identifier{Value: "b"}}, + }, }, }, Extends: &name.Name{Parts: []node.Node{&name.NamePart{Value: "Bar"}}}, diff --git a/visitor/namespace_resolver_test.go b/visitor/namespace_resolver_test.go index 12b1f13..b84a0c4 100644 --- a/visitor/namespace_resolver_test.go +++ b/visitor/namespace_resolver_test.go @@ -43,9 +43,9 @@ func TestResolveStaticCall(t *testing.T) { }, }, &expr.StaticCall{ - Class: nameBC, - Call: &node.Identifier{Value: "foo"}, - Arguments: []node.Node{}, + Class: nameBC, + Call: &node.Identifier{Value: "foo"}, + ArgumentList: &node.ArgumentList{}, }, }, } @@ -134,8 +134,8 @@ func TestResolveNew(t *testing.T) { }, }, &expr.New{ - Class: nameBC, - Arguments: []node.Node{}, + Class: nameBC, + ArgumentList: &node.ArgumentList{}, }, }, } @@ -242,8 +242,8 @@ func TestResolveFunctionCall(t *testing.T) { }, }, &expr.FunctionCall{ - Function: nameB, - Arguments: []node.Node{}, + Function: nameB, + ArgumentList: &node.ArgumentList{}, }, }, } @@ -323,12 +323,12 @@ func TestResolveGroupUse(t *testing.T) { Constant: nameC, }, &expr.FunctionCall{ - Function: nameF, - Arguments: []node.Node{}, + Function: nameF, + ArgumentList: &node.ArgumentList{}, }, &expr.FunctionCall{ - Function: nameE, - Arguments: []node.Node{}, + Function: nameE, + ArgumentList: &node.ArgumentList{}, }, }, } @@ -658,9 +658,9 @@ func TestResolveNamespaces(t *testing.T) { }, }, &expr.StaticCall{ - Class: nameFG, - Call: &node.Identifier{Value: "foo"}, - Arguments: []node.Node{}, + Class: nameFG, + Call: &node.Identifier{Value: "foo"}, + ArgumentList: &node.ArgumentList{}, }, &stmt.Namespace{ Stmts: []node.Node{}, @@ -678,12 +678,12 @@ func TestResolveNamespaces(t *testing.T) { &expr.StaticCall{ Class: relativeNameCE, Call: &node.Identifier{Value: "foo"}, - Arguments: []node.Node{}, + ArgumentList: &node.ArgumentList{}, }, &expr.StaticCall{ Class: nameCF, Call: &node.Identifier{Value: "foo"}, - Arguments: []node.Node{}, + ArgumentList: &node.ArgumentList{}, }, }, }, @@ -708,9 +708,9 @@ func TestResolveStaticCallDinamicClassName(t *testing.T) { ast := &stmt.StmtList{ Stmts: []node.Node{ &expr.StaticCall{ - Class: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, - Call: &node.Identifier{Value: "foo"}, - Arguments: []node.Node{}, + Class: &expr.Variable{VarName: &node.Identifier{Value: "foo"}}, + Call: &node.Identifier{Value: "foo"}, + ArgumentList: &node.ArgumentList{}, }, }, }