From 2078a6cde61d6c0ccb8b0b1824b24800e8a98859 Mon Sep 17 00:00:00 2001 From: z7zmey Date: Tue, 9 Jan 2018 15:51:32 +0200 Subject: [PATCH] extract positions package --- dumper.go | 11 +- main.go | 4 +- node/argument.go | 11 - node/expr/array.go | 13 +- node/expr/array_dim_fetch.go | 11 - node/expr/array_item.go | 17 +- node/expr/assign_op/assign.go | 10 - node/expr/assign_op/assign_op.go | 1 - node/expr/assign_op/assign_ref.go | 10 - node/expr/assign_op/bitwise_and.go | 10 - node/expr/assign_op/bitwise_or.go | 10 - node/expr/assign_op/bitwise_xor.go | 10 - node/expr/assign_op/concat.go | 10 - node/expr/assign_op/div.go | 10 - node/expr/assign_op/minus.go | 10 - node/expr/assign_op/mod.go | 10 - node/expr/assign_op/mul.go | 10 - node/expr/assign_op/plus.go | 10 - node/expr/assign_op/pow.go | 10 - node/expr/assign_op/shift_left.go | 10 - node/expr/assign_op/shift_right.go | 10 - node/expr/binary_op/binary_op.go | 5 +- node/expr/binary_op/bitwise_and.go | 10 - node/expr/binary_op/bitwise_or.go | 10 - node/expr/binary_op/bitwise_xor.go | 10 - node/expr/binary_op/boolean_and.go | 10 - node/expr/binary_op/boolean_or.go | 10 - node/expr/binary_op/coalesce.go | 10 - node/expr/binary_op/concat.go | 10 - node/expr/binary_op/div.go | 10 - node/expr/binary_op/equal.go | 10 - node/expr/binary_op/greater.go | 10 - node/expr/binary_op/greater_or_equal.go | 10 - node/expr/binary_op/identical.go | 10 - node/expr/binary_op/logical_and.go | 10 - node/expr/binary_op/logical_or.go | 10 - node/expr/binary_op/logical_xor.go | 10 - node/expr/binary_op/minus.go | 10 - node/expr/binary_op/mod.go | 10 - node/expr/binary_op/mul.go | 10 - node/expr/binary_op/not_equal.go | 10 - node/expr/binary_op/not_identical.go | 10 - node/expr/binary_op/plus.go | 10 - node/expr/binary_op/pow.go | 10 - node/expr/binary_op/shift_left.go | 10 - node/expr/binary_op/shift_right.go | 10 - node/expr/binary_op/smaller.go | 10 - node/expr/binary_op/smaller_or_equal.go | 10 - node/expr/binary_op/spaceship.go | 10 - node/expr/bitwise_not.go | 13 +- node/expr/boolean_not.go | 13 +- node/expr/cast/cast.go | 3 +- node/expr/cast/cast_array.go | 10 - node/expr/cast/cast_bool.go | 10 - node/expr/cast/cast_double.go | 10 - node/expr/cast/cast_int.go | 10 - node/expr/cast/cast_object.go | 10 - node/expr/cast/cast_string.go | 10 - node/expr/cast/cast_unset.go | 10 - node/expr/class_const_fetch.go | 11 - node/expr/clone.go | 13 +- node/expr/closure.go | 11 - node/expr/closure_use.go | 11 - node/expr/const_fetch.go | 11 - node/expr/empty.go | 13 +- node/expr/error_suppress.go | 13 +- node/expr/eval.go | 13 +- node/expr/exit.go | 15 +- node/expr/function_call.go | 11 - node/expr/include.go | 13 +- node/expr/include_once.go | 13 +- node/expr/instance_of.go | 15 +- node/expr/isset.go | 11 - node/expr/list.go | 13 +- node/expr/method_call.go | 11 - node/expr/new.go | 11 - node/expr/post_dec.go | 11 - node/expr/post_inc.go | 11 - node/expr/pre_dec.go | 11 - node/expr/pre_inc.go | 11 - node/expr/print.go | 13 +- node/expr/property_fetch.go | 11 - node/expr/require.go | 13 +- node/expr/require_once.go | 13 +- node/expr/shell_exec.go | 13 +- node/expr/short_array.go | 13 +- node/expr/short_list.go | 13 +- node/expr/static_call.go | 11 - node/expr/static_property_fetch.go | 11 - node/expr/ternary.go | 11 - node/expr/unary_minus.go | 13 +- node/expr/unary_plus.go | 13 +- node/expr/variable.go | 13 +- node/expr/yield.go | 15 +- node/expr/yield_from.go | 13 +- node/identifier.go | 13 +- node/name/fully_qualified.go | 1 - node/name/name.go | 13 +- node/name/name_part.go | 13 +- node/name/relative.go | 1 - node/node.go | 6 - node/nullable.go | 13 +- node/parameter.go | 11 - node/scalar/dnumber.go | 13 +- node/scalar/encapsed.go | 13 +- node/scalar/encapsed_string_part.go | 13 +- node/scalar/lnumber.go | 13 +- node/scalar/magic_constant.go | 13 +- node/scalar/string.go | 13 +- node/stmt/alt_else.go | 13 +- node/stmt/alt_else_if.go | 15 +- node/stmt/alt_if.go | 19 +- node/stmt/break.go | 13 +- node/stmt/case.go | 15 +- node/stmt/catch.go | 11 - node/stmt/class.go | 11 - node/stmt/class_const_list.go | 11 - node/stmt/class_method.go | 11 - node/stmt/const_list.go | 13 +- node/stmt/constant.go | 11 - node/stmt/continue.go | 13 +- node/stmt/declare.go | 15 +- node/stmt/default.go | 13 +- node/stmt/do.go | 15 +- node/stmt/echo.go | 13 +- node/stmt/else.go | 13 +- node/stmt/else_if.go | 15 +- node/stmt/expression.go | 13 +- node/stmt/finally.go | 13 +- node/stmt/for.go | 19 +- node/stmt/foreach.go | 11 - node/stmt/function.go | 11 - node/stmt/global.go | 13 +- node/stmt/goto.go | 13 +- node/stmt/group_use.go | 17 +- node/stmt/halt_compiler.go | 14 +- node/stmt/if.go | 19 +- node/stmt/inline_html.go | 13 +- node/stmt/interface.go | 11 - node/stmt/label.go | 11 - node/stmt/namespace.go | 11 - node/stmt/nop.go | 14 +- node/stmt/property.go | 11 - node/stmt/property_list.go | 11 - node/stmt/return.go | 13 +- node/stmt/static.go | 13 +- node/stmt/static_var.go | 11 - node/stmt/stmt_list.go | 13 +- node/stmt/switch.go | 17 +- node/stmt/throw.go | 13 +- node/stmt/trait.go | 11 - node/stmt/trait_method_ref.go | 15 +- node/stmt/trait_use.go | 11 - node/stmt/trait_use_alias.go | 11 - node/stmt/trait_use_precedence.go | 11 - node/stmt/try.go | 17 +- node/stmt/unset.go | 13 +- node/stmt/use.go | 17 +- node/stmt/use_list.go | 15 +- node/stmt/while.go | 17 +- parser/parser.go | 1952 +++++++++++++---------- parser/parser.y | 982 ++++++++---- parser/positions.go | 51 +- position/position.go | 24 + test/node/scalar/encapsed_test.go | 129 +- test/node/scalar/string_test.go | 96 +- 166 files changed, 2060 insertions(+), 3030 deletions(-) create mode 100644 position/position.go diff --git a/dumper.go b/dumper.go index 3e252dc..85ff45f 100644 --- a/dumper.go +++ b/dumper.go @@ -4,19 +4,22 @@ import ( "fmt" "reflect" + "github.com/z7zmey/php-parser/position" + "github.com/z7zmey/php-parser/comment" "github.com/z7zmey/php-parser/node" ) type dumper struct { - indent string - comments comment.Comments + indent string + comments comment.Comments + positions position.Positions } func (d dumper) EnterNode(n node.Node) bool { fmt.Printf("%v%v", d.indent, reflect.TypeOf(n)) - if p := n.Position(); p != nil { + if p := d.positions[n]; p != nil { fmt.Printf(" %v", *p) } if a := n.Attributes(); len(a) > 0 { @@ -36,7 +39,7 @@ func (d dumper) EnterNode(n node.Node) bool { func (d dumper) GetChildrenVisitor(key string) node.Visitor { fmt.Printf("%v%q:\n", d.indent+" ", key) - return dumper{d.indent + " ", d.comments} + return dumper{d.indent + " ", d.comments, d.positions} } func (d dumper) LeaveNode(n node.Node) { diff --git a/main.go b/main.go index 0dd9cf5..67a56f9 100644 --- a/main.go +++ b/main.go @@ -19,9 +19,9 @@ func main() { fmt.Printf("==> %s\n", real) src, _ := os.Open(string(real)) - rootnode, comments := parser.Parse(src, real) + rootnode, comments, positions := parser.Parse(src, real) - rootnode.Walk(dumper{" | ", comments}) + rootnode.Walk(dumper{" | ", comments, positions}) } } diff --git a/node/argument.go b/node/argument.go index 8b4f252..2b7cfca 100644 --- a/node/argument.go +++ b/node/argument.go @@ -1,14 +1,12 @@ package node type Argument struct { - position *Position Variadic bool Expr Node } func NewArgument(Expression Node, Variadic bool) *Argument { return &Argument{ - nil, Variadic, Expression, } @@ -20,15 +18,6 @@ func (n *Argument) Attributes() map[string]interface{} { } } -func (n *Argument) Position() *Position { - return n.position -} - -func (n *Argument) SetPosition(p *Position) Node { - n.position = p - return n -} - func (n *Argument) Walk(v Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/array.go b/node/expr/array.go index 64e1bd6..bb33414 100644 --- a/node/expr/array.go +++ b/node/expr/array.go @@ -5,13 +5,11 @@ import ( ) type Array struct { - position *node.Position - Items []node.Node + Items []node.Node } func NewArray(Items []node.Node) *Array { return &Array{ - nil, Items, } } @@ -20,15 +18,6 @@ func (n *Array) Attributes() map[string]interface{} { return nil } -func (n *Array) Position() *node.Position { - return n.position -} - -func (n *Array) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Array) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/array_dim_fetch.go b/node/expr/array_dim_fetch.go index 4d9596f..78d514c 100644 --- a/node/expr/array_dim_fetch.go +++ b/node/expr/array_dim_fetch.go @@ -5,14 +5,12 @@ import ( ) type ArrayDimFetch struct { - position *node.Position Variable node.Node Dim node.Node } func NewArrayDimFetch(Variable node.Node, Dim node.Node) *ArrayDimFetch { return &ArrayDimFetch{ - nil, Variable, Dim, } @@ -22,15 +20,6 @@ func (n *ArrayDimFetch) Attributes() map[string]interface{} { return nil } -func (n *ArrayDimFetch) Position() *node.Position { - return n.position -} - -func (n *ArrayDimFetch) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *ArrayDimFetch) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/array_item.go b/node/expr/array_item.go index 37a2303..4714fc1 100644 --- a/node/expr/array_item.go +++ b/node/expr/array_item.go @@ -5,15 +5,13 @@ import ( ) type ArrayItem struct { - position *node.Position - ByRef bool - Key node.Node - Val node.Node + ByRef bool + Key node.Node + Val node.Node } func NewArrayItem(Key node.Node, Val node.Node, ByRef bool) *ArrayItem { return &ArrayItem{ - nil, ByRef, Key, Val, @@ -26,15 +24,6 @@ func (n *ArrayItem) Attributes() map[string]interface{} { } } -func (n *ArrayItem) Position() *node.Position { - return n.position -} - -func (n *ArrayItem) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *ArrayItem) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/assign_op/assign.go b/node/expr/assign_op/assign.go index 66935c8..8cfb86d 100644 --- a/node/expr/assign_op/assign.go +++ b/node/expr/assign_op/assign.go @@ -11,7 +11,6 @@ type Assign struct { func NewAssign(Variable node.Node, Expression node.Node) *Assign { return &Assign{ AssignOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *Assign) Attributes() map[string]interface{} { return nil } -func (n *Assign) Position() *node.Position { - return n.position -} - -func (n *Assign) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Assign) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/assign_op/assign_op.go b/node/expr/assign_op/assign_op.go index 41d1e0e..65cf395 100644 --- a/node/expr/assign_op/assign_op.go +++ b/node/expr/assign_op/assign_op.go @@ -5,7 +5,6 @@ import ( ) type AssignOp struct { - position *node.Position Variable node.Node Expression node.Node } diff --git a/node/expr/assign_op/assign_ref.go b/node/expr/assign_op/assign_ref.go index 38f1d79..95e5c05 100644 --- a/node/expr/assign_op/assign_ref.go +++ b/node/expr/assign_op/assign_ref.go @@ -11,7 +11,6 @@ type AssignRef struct { func NewAssignRef(Variable node.Node, Expression node.Node) *AssignRef { return &AssignRef{ AssignOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *AssignRef) Attributes() map[string]interface{} { return nil } -func (n *AssignRef) Position() *node.Position { - return n.position -} - -func (n *AssignRef) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *AssignRef) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/assign_op/bitwise_and.go b/node/expr/assign_op/bitwise_and.go index 086b184..95e7ed1 100644 --- a/node/expr/assign_op/bitwise_and.go +++ b/node/expr/assign_op/bitwise_and.go @@ -11,7 +11,6 @@ type BitwiseAnd struct { func NewBitwiseAnd(Variable node.Node, Expression node.Node) *BitwiseAnd { return &BitwiseAnd{ AssignOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *BitwiseAnd) Attributes() map[string]interface{} { return nil } -func (n *BitwiseAnd) Position() *node.Position { - return n.position -} - -func (n *BitwiseAnd) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *BitwiseAnd) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/assign_op/bitwise_or.go b/node/expr/assign_op/bitwise_or.go index 7caa012..a4b940f 100644 --- a/node/expr/assign_op/bitwise_or.go +++ b/node/expr/assign_op/bitwise_or.go @@ -11,7 +11,6 @@ type BitwiseOr struct { func NewBitwiseOr(Variable node.Node, Expression node.Node) *BitwiseOr { return &BitwiseOr{ AssignOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *BitwiseOr) Attributes() map[string]interface{} { return nil } -func (n *BitwiseOr) Position() *node.Position { - return n.position -} - -func (n *BitwiseOr) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *BitwiseOr) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/assign_op/bitwise_xor.go b/node/expr/assign_op/bitwise_xor.go index 43a26e4..60089d8 100644 --- a/node/expr/assign_op/bitwise_xor.go +++ b/node/expr/assign_op/bitwise_xor.go @@ -11,7 +11,6 @@ type BitwiseXor struct { func NewBitwiseXor(Variable node.Node, Expression node.Node) *BitwiseXor { return &BitwiseXor{ AssignOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *BitwiseXor) Attributes() map[string]interface{} { return nil } -func (n *BitwiseXor) Position() *node.Position { - return n.position -} - -func (n *BitwiseXor) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *BitwiseXor) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/assign_op/concat.go b/node/expr/assign_op/concat.go index 04751bc..c17df8c 100644 --- a/node/expr/assign_op/concat.go +++ b/node/expr/assign_op/concat.go @@ -11,7 +11,6 @@ type Concat struct { func NewConcat(Variable node.Node, Expression node.Node) *Concat { return &Concat{ AssignOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *Concat) Attributes() map[string]interface{} { return nil } -func (n *Concat) Position() *node.Position { - return n.position -} - -func (n *Concat) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Concat) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/assign_op/div.go b/node/expr/assign_op/div.go index 27b488b..70475a9 100644 --- a/node/expr/assign_op/div.go +++ b/node/expr/assign_op/div.go @@ -11,7 +11,6 @@ type Div struct { func NewDiv(Variable node.Node, Expression node.Node) *Div { return &Div{ AssignOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *Div) Attributes() map[string]interface{} { return nil } -func (n *Div) Position() *node.Position { - return n.position -} - -func (n *Div) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Div) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/assign_op/minus.go b/node/expr/assign_op/minus.go index f6299a5..0200930 100644 --- a/node/expr/assign_op/minus.go +++ b/node/expr/assign_op/minus.go @@ -11,7 +11,6 @@ type Minus struct { func NewMinus(Variable node.Node, Expression node.Node) *Minus { return &Minus{ AssignOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *Minus) Attributes() map[string]interface{} { return nil } -func (n *Minus) Position() *node.Position { - return n.position -} - -func (n *Minus) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Minus) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/assign_op/mod.go b/node/expr/assign_op/mod.go index e941936..a72c664 100644 --- a/node/expr/assign_op/mod.go +++ b/node/expr/assign_op/mod.go @@ -11,7 +11,6 @@ type Mod struct { func NewMod(Variable node.Node, Expression node.Node) *Mod { return &Mod{ AssignOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *Mod) Attributes() map[string]interface{} { return nil } -func (n *Mod) Position() *node.Position { - return n.position -} - -func (n *Mod) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Mod) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/assign_op/mul.go b/node/expr/assign_op/mul.go index 8eb7ce5..61f0496 100644 --- a/node/expr/assign_op/mul.go +++ b/node/expr/assign_op/mul.go @@ -11,7 +11,6 @@ type Mul struct { func NewMul(Variable node.Node, Expression node.Node) *Mul { return &Mul{ AssignOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *Mul) Attributes() map[string]interface{} { return nil } -func (n *Mul) Position() *node.Position { - return n.position -} - -func (n *Mul) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Mul) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/assign_op/plus.go b/node/expr/assign_op/plus.go index e89ca13..c3112a7 100644 --- a/node/expr/assign_op/plus.go +++ b/node/expr/assign_op/plus.go @@ -11,7 +11,6 @@ type Plus struct { func NewPlus(Variable node.Node, Expression node.Node) *Plus { return &Plus{ AssignOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *Plus) Attributes() map[string]interface{} { return nil } -func (n *Plus) Position() *node.Position { - return n.position -} - -func (n *Plus) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Plus) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/assign_op/pow.go b/node/expr/assign_op/pow.go index ae5ba41..dc6d2a6 100644 --- a/node/expr/assign_op/pow.go +++ b/node/expr/assign_op/pow.go @@ -11,7 +11,6 @@ type Pow struct { func NewPow(Variable node.Node, Expression node.Node) *Pow { return &Pow{ AssignOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *Pow) Attributes() map[string]interface{} { return nil } -func (n *Pow) Position() *node.Position { - return n.position -} - -func (n *Pow) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Pow) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/assign_op/shift_left.go b/node/expr/assign_op/shift_left.go index 6f04f84..e2f529b 100644 --- a/node/expr/assign_op/shift_left.go +++ b/node/expr/assign_op/shift_left.go @@ -11,7 +11,6 @@ type ShiftLeft struct { func NewShiftLeft(Variable node.Node, Expression node.Node) *ShiftLeft { return &ShiftLeft{ AssignOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *ShiftLeft) Attributes() map[string]interface{} { return nil } -func (n *ShiftLeft) Position() *node.Position { - return n.position -} - -func (n *ShiftLeft) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *ShiftLeft) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/assign_op/shift_right.go b/node/expr/assign_op/shift_right.go index ef81336..ca63d0e 100644 --- a/node/expr/assign_op/shift_right.go +++ b/node/expr/assign_op/shift_right.go @@ -11,7 +11,6 @@ type ShiftRight struct { func NewShiftRight(Variable node.Node, Expression node.Node) *ShiftRight { return &ShiftRight{ AssignOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *ShiftRight) Attributes() map[string]interface{} { return nil } -func (n *ShiftRight) Position() *node.Position { - return n.position -} - -func (n *ShiftRight) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *ShiftRight) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/binary_op/binary_op.go b/node/expr/binary_op/binary_op.go index 2c43a28..688b672 100644 --- a/node/expr/binary_op/binary_op.go +++ b/node/expr/binary_op/binary_op.go @@ -5,7 +5,6 @@ import ( ) type BinaryOp struct { - position *node.Position - Left node.Node - Right node.Node + Left node.Node + Right node.Node } diff --git a/node/expr/binary_op/bitwise_and.go b/node/expr/binary_op/bitwise_and.go index 156b685..261d977 100644 --- a/node/expr/binary_op/bitwise_and.go +++ b/node/expr/binary_op/bitwise_and.go @@ -11,7 +11,6 @@ type BitwiseAnd struct { func NewBitwiseAnd(Variable node.Node, Expression node.Node) *BitwiseAnd { return &BitwiseAnd{ BinaryOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *BitwiseAnd) Attributes() map[string]interface{} { return nil } -func (n *BitwiseAnd) Position() *node.Position { - return n.position -} - -func (n *BitwiseAnd) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *BitwiseAnd) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/binary_op/bitwise_or.go b/node/expr/binary_op/bitwise_or.go index 2a4d21b..9ed7645 100644 --- a/node/expr/binary_op/bitwise_or.go +++ b/node/expr/binary_op/bitwise_or.go @@ -11,7 +11,6 @@ type BitwiseOr struct { func NewBitwiseOr(Variable node.Node, Expression node.Node) *BitwiseOr { return &BitwiseOr{ BinaryOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *BitwiseOr) Attributes() map[string]interface{} { return nil } -func (n *BitwiseOr) Position() *node.Position { - return n.position -} - -func (n *BitwiseOr) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *BitwiseOr) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/binary_op/bitwise_xor.go b/node/expr/binary_op/bitwise_xor.go index 6b4fac0..d1a5caf 100644 --- a/node/expr/binary_op/bitwise_xor.go +++ b/node/expr/binary_op/bitwise_xor.go @@ -11,7 +11,6 @@ type BitwiseXor struct { func NewBitwiseXor(Variable node.Node, Expression node.Node) *BitwiseXor { return &BitwiseXor{ BinaryOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *BitwiseXor) Attributes() map[string]interface{} { return nil } -func (n *BitwiseXor) Position() *node.Position { - return n.position -} - -func (n *BitwiseXor) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *BitwiseXor) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/binary_op/boolean_and.go b/node/expr/binary_op/boolean_and.go index a479edf..529e4ed 100644 --- a/node/expr/binary_op/boolean_and.go +++ b/node/expr/binary_op/boolean_and.go @@ -11,7 +11,6 @@ type BooleanAnd struct { func NewBooleanAnd(Variable node.Node, Expression node.Node) *BooleanAnd { return &BooleanAnd{ BinaryOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *BooleanAnd) Attributes() map[string]interface{} { return nil } -func (n *BooleanAnd) Position() *node.Position { - return n.position -} - -func (n *BooleanAnd) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *BooleanAnd) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/binary_op/boolean_or.go b/node/expr/binary_op/boolean_or.go index 2b8d967..600b51a 100644 --- a/node/expr/binary_op/boolean_or.go +++ b/node/expr/binary_op/boolean_or.go @@ -11,7 +11,6 @@ type BooleanOr struct { func NewBooleanOr(Variable node.Node, Expression node.Node) *BooleanOr { return &BooleanOr{ BinaryOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *BooleanOr) Attributes() map[string]interface{} { return nil } -func (n *BooleanOr) Position() *node.Position { - return n.position -} - -func (n *BooleanOr) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *BooleanOr) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/binary_op/coalesce.go b/node/expr/binary_op/coalesce.go index 63b4e91..b6d6b9f 100644 --- a/node/expr/binary_op/coalesce.go +++ b/node/expr/binary_op/coalesce.go @@ -11,7 +11,6 @@ type Coalesce struct { func NewCoalesce(Variable node.Node, Expression node.Node) *Coalesce { return &Coalesce{ BinaryOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *Coalesce) Attributes() map[string]interface{} { return nil } -func (n *Coalesce) Position() *node.Position { - return n.position -} - -func (n *Coalesce) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Coalesce) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/binary_op/concat.go b/node/expr/binary_op/concat.go index aa77def..8d6500a 100644 --- a/node/expr/binary_op/concat.go +++ b/node/expr/binary_op/concat.go @@ -11,7 +11,6 @@ type Concat struct { func NewConcat(Variable node.Node, Expression node.Node) *Concat { return &Concat{ BinaryOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *Concat) Attributes() map[string]interface{} { return nil } -func (n *Concat) Position() *node.Position { - return n.position -} - -func (n *Concat) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Concat) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/binary_op/div.go b/node/expr/binary_op/div.go index 5cd5ec8..449e3c5 100644 --- a/node/expr/binary_op/div.go +++ b/node/expr/binary_op/div.go @@ -11,7 +11,6 @@ type Div struct { func NewDiv(Variable node.Node, Expression node.Node) *Div { return &Div{ BinaryOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *Div) Attributes() map[string]interface{} { return nil } -func (n *Div) Position() *node.Position { - return n.position -} - -func (n *Div) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Div) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/binary_op/equal.go b/node/expr/binary_op/equal.go index ba604f3..56af714 100644 --- a/node/expr/binary_op/equal.go +++ b/node/expr/binary_op/equal.go @@ -11,7 +11,6 @@ type Equal struct { func NewEqual(Variable node.Node, Expression node.Node) *Equal { return &Equal{ BinaryOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *Equal) Attributes() map[string]interface{} { return nil } -func (n *Equal) Position() *node.Position { - return n.position -} - -func (n *Equal) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Equal) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/binary_op/greater.go b/node/expr/binary_op/greater.go index c02855c..1c02639 100644 --- a/node/expr/binary_op/greater.go +++ b/node/expr/binary_op/greater.go @@ -11,7 +11,6 @@ type Greater struct { func NewGreater(Variable node.Node, Expression node.Node) *Greater { return &Greater{ BinaryOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *Greater) Attributes() map[string]interface{} { return nil } -func (n *Greater) Position() *node.Position { - return n.position -} - -func (n *Greater) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Greater) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/binary_op/greater_or_equal.go b/node/expr/binary_op/greater_or_equal.go index 089b262..8d3c3e6 100644 --- a/node/expr/binary_op/greater_or_equal.go +++ b/node/expr/binary_op/greater_or_equal.go @@ -11,7 +11,6 @@ type GreaterOrEqual struct { func NewGreaterOrEqual(Variable node.Node, Expression node.Node) *GreaterOrEqual { return &GreaterOrEqual{ BinaryOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *GreaterOrEqual) Attributes() map[string]interface{} { return nil } -func (n *GreaterOrEqual) Position() *node.Position { - return n.position -} - -func (n *GreaterOrEqual) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *GreaterOrEqual) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/binary_op/identical.go b/node/expr/binary_op/identical.go index 6bf47b8..4f84584 100644 --- a/node/expr/binary_op/identical.go +++ b/node/expr/binary_op/identical.go @@ -11,7 +11,6 @@ type Identical struct { func NewIdentical(Variable node.Node, Expression node.Node) *Identical { return &Identical{ BinaryOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *Identical) Attributes() map[string]interface{} { return nil } -func (n *Identical) Position() *node.Position { - return n.position -} - -func (n *Identical) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Identical) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/binary_op/logical_and.go b/node/expr/binary_op/logical_and.go index b220603..c823a13 100644 --- a/node/expr/binary_op/logical_and.go +++ b/node/expr/binary_op/logical_and.go @@ -11,7 +11,6 @@ type LogicalAnd struct { func NewLogicalAnd(Variable node.Node, Expression node.Node) *LogicalAnd { return &LogicalAnd{ BinaryOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *LogicalAnd) Attributes() map[string]interface{} { return nil } -func (n *LogicalAnd) Position() *node.Position { - return n.position -} - -func (n *LogicalAnd) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *LogicalAnd) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/binary_op/logical_or.go b/node/expr/binary_op/logical_or.go index 3f42bf2..42e19cb 100644 --- a/node/expr/binary_op/logical_or.go +++ b/node/expr/binary_op/logical_or.go @@ -11,7 +11,6 @@ type LogicalOr struct { func NewLogicalOr(Variable node.Node, Expression node.Node) *LogicalOr { return &LogicalOr{ BinaryOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *LogicalOr) Attributes() map[string]interface{} { return nil } -func (n *LogicalOr) Position() *node.Position { - return n.position -} - -func (n *LogicalOr) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *LogicalOr) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/binary_op/logical_xor.go b/node/expr/binary_op/logical_xor.go index b9f0629..383af6b 100644 --- a/node/expr/binary_op/logical_xor.go +++ b/node/expr/binary_op/logical_xor.go @@ -11,7 +11,6 @@ type LogicalXor struct { func NewLogicalXor(Variable node.Node, Expression node.Node) *LogicalXor { return &LogicalXor{ BinaryOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *LogicalXor) Attributes() map[string]interface{} { return nil } -func (n *LogicalXor) Position() *node.Position { - return n.position -} - -func (n *LogicalXor) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *LogicalXor) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/binary_op/minus.go b/node/expr/binary_op/minus.go index e1960d0..59b3dea 100644 --- a/node/expr/binary_op/minus.go +++ b/node/expr/binary_op/minus.go @@ -11,7 +11,6 @@ type Minus struct { func NewMinus(Variable node.Node, Expression node.Node) *Minus { return &Minus{ BinaryOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *Minus) Attributes() map[string]interface{} { return nil } -func (n *Minus) Position() *node.Position { - return n.position -} - -func (n *Minus) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Minus) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/binary_op/mod.go b/node/expr/binary_op/mod.go index acf1cd4..154022a 100644 --- a/node/expr/binary_op/mod.go +++ b/node/expr/binary_op/mod.go @@ -11,7 +11,6 @@ type Mod struct { func NewMod(Variable node.Node, Expression node.Node) *Mod { return &Mod{ BinaryOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *Mod) Attributes() map[string]interface{} { return nil } -func (n *Mod) Position() *node.Position { - return n.position -} - -func (n *Mod) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Mod) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/binary_op/mul.go b/node/expr/binary_op/mul.go index d11d543..76d88c3 100644 --- a/node/expr/binary_op/mul.go +++ b/node/expr/binary_op/mul.go @@ -11,7 +11,6 @@ type Mul struct { func NewMul(Variable node.Node, Expression node.Node) *Mul { return &Mul{ BinaryOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *Mul) Attributes() map[string]interface{} { return nil } -func (n *Mul) Position() *node.Position { - return n.position -} - -func (n *Mul) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Mul) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/binary_op/not_equal.go b/node/expr/binary_op/not_equal.go index cc10a08..49cba8b 100644 --- a/node/expr/binary_op/not_equal.go +++ b/node/expr/binary_op/not_equal.go @@ -11,7 +11,6 @@ type NotEqual struct { func NewNotEqual(Variable node.Node, Expression node.Node) *NotEqual { return &NotEqual{ BinaryOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *NotEqual) Attributes() map[string]interface{} { return nil } -func (n *NotEqual) Position() *node.Position { - return n.position -} - -func (n *NotEqual) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *NotEqual) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/binary_op/not_identical.go b/node/expr/binary_op/not_identical.go index 298bdc7..d41dbb2 100644 --- a/node/expr/binary_op/not_identical.go +++ b/node/expr/binary_op/not_identical.go @@ -11,7 +11,6 @@ type NotIdentical struct { func NewNotIdentical(Variable node.Node, Expression node.Node) *NotIdentical { return &NotIdentical{ BinaryOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *NotIdentical) Attributes() map[string]interface{} { return nil } -func (n *NotIdentical) Position() *node.Position { - return n.position -} - -func (n *NotIdentical) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *NotIdentical) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/binary_op/plus.go b/node/expr/binary_op/plus.go index 95ae14b..8bfb88c 100644 --- a/node/expr/binary_op/plus.go +++ b/node/expr/binary_op/plus.go @@ -11,7 +11,6 @@ type Plus struct { func NewPlus(Variable node.Node, Expression node.Node) *Plus { return &Plus{ BinaryOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *Plus) Attributes() map[string]interface{} { return nil } -func (n *Plus) Position() *node.Position { - return n.position -} - -func (n *Plus) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Plus) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/binary_op/pow.go b/node/expr/binary_op/pow.go index ff64562..611cf6e 100644 --- a/node/expr/binary_op/pow.go +++ b/node/expr/binary_op/pow.go @@ -11,7 +11,6 @@ type Pow struct { func NewPow(Variable node.Node, Expression node.Node) *Pow { return &Pow{ BinaryOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *Pow) Attributes() map[string]interface{} { return nil } -func (n *Pow) Position() *node.Position { - return n.position -} - -func (n *Pow) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Pow) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/binary_op/shift_left.go b/node/expr/binary_op/shift_left.go index 9197c10..0f89791 100644 --- a/node/expr/binary_op/shift_left.go +++ b/node/expr/binary_op/shift_left.go @@ -11,7 +11,6 @@ type ShiftLeft struct { func NewShiftLeft(Variable node.Node, Expression node.Node) *ShiftLeft { return &ShiftLeft{ BinaryOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *ShiftLeft) Attributes() map[string]interface{} { return nil } -func (n *ShiftLeft) Position() *node.Position { - return n.position -} - -func (n *ShiftLeft) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *ShiftLeft) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/binary_op/shift_right.go b/node/expr/binary_op/shift_right.go index 0521f5b..404f39f 100644 --- a/node/expr/binary_op/shift_right.go +++ b/node/expr/binary_op/shift_right.go @@ -11,7 +11,6 @@ type ShiftRight struct { func NewShiftRight(Variable node.Node, Expression node.Node) *ShiftRight { return &ShiftRight{ BinaryOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *ShiftRight) Attributes() map[string]interface{} { return nil } -func (n *ShiftRight) Position() *node.Position { - return n.position -} - -func (n *ShiftRight) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *ShiftRight) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/binary_op/smaller.go b/node/expr/binary_op/smaller.go index 5fbe51d..efe65df 100644 --- a/node/expr/binary_op/smaller.go +++ b/node/expr/binary_op/smaller.go @@ -11,7 +11,6 @@ type Smaller struct { func NewSmaller(Variable node.Node, Expression node.Node) *Smaller { return &Smaller{ BinaryOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *Smaller) Attributes() map[string]interface{} { return nil } -func (n *Smaller) Position() *node.Position { - return n.position -} - -func (n *Smaller) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Smaller) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/binary_op/smaller_or_equal.go b/node/expr/binary_op/smaller_or_equal.go index a4da4b8..a2ef125 100644 --- a/node/expr/binary_op/smaller_or_equal.go +++ b/node/expr/binary_op/smaller_or_equal.go @@ -11,7 +11,6 @@ type SmallerOrEqual struct { func NewSmallerOrEqual(Variable node.Node, Expression node.Node) *SmallerOrEqual { return &SmallerOrEqual{ BinaryOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *SmallerOrEqual) Attributes() map[string]interface{} { return nil } -func (n *SmallerOrEqual) Position() *node.Position { - return n.position -} - -func (n *SmallerOrEqual) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *SmallerOrEqual) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/binary_op/spaceship.go b/node/expr/binary_op/spaceship.go index 86fa150..df39615 100644 --- a/node/expr/binary_op/spaceship.go +++ b/node/expr/binary_op/spaceship.go @@ -11,7 +11,6 @@ type Spaceship struct { func NewSpaceship(Variable node.Node, Expression node.Node) *Spaceship { return &Spaceship{ BinaryOp{ - nil, Variable, Expression, }, @@ -22,15 +21,6 @@ func (n *Spaceship) Attributes() map[string]interface{} { return nil } -func (n *Spaceship) Position() *node.Position { - return n.position -} - -func (n *Spaceship) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Spaceship) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/bitwise_not.go b/node/expr/bitwise_not.go index 24c20e1..e680a65 100644 --- a/node/expr/bitwise_not.go +++ b/node/expr/bitwise_not.go @@ -5,13 +5,11 @@ import ( ) type BitwiseNot struct { - position *node.Position - Expr node.Node + Expr node.Node } func NewBitwiseNot(Expression node.Node) *BitwiseNot { return &BitwiseNot{ - nil, Expression, } } @@ -20,15 +18,6 @@ func (n *BitwiseNot) Attributes() map[string]interface{} { return nil } -func (n *BitwiseNot) Position() *node.Position { - return n.position -} - -func (n *BitwiseNot) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *BitwiseNot) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/boolean_not.go b/node/expr/boolean_not.go index 753a4c3..171b90e 100644 --- a/node/expr/boolean_not.go +++ b/node/expr/boolean_not.go @@ -5,13 +5,11 @@ import ( ) type BooleanNot struct { - position *node.Position - Expr node.Node + Expr node.Node } func NewBooleanNot(Expression node.Node) *BooleanNot { return &BooleanNot{ - nil, Expression, } } @@ -20,15 +18,6 @@ func (n *BooleanNot) Attributes() map[string]interface{} { return nil } -func (n *BooleanNot) Position() *node.Position { - return n.position -} - -func (n *BooleanNot) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *BooleanNot) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/cast/cast.go b/node/expr/cast/cast.go index f632f15..62e20f3 100644 --- a/node/expr/cast/cast.go +++ b/node/expr/cast/cast.go @@ -5,6 +5,5 @@ import ( ) type Cast struct { - position *node.Position - Expr node.Node + Expr node.Node } diff --git a/node/expr/cast/cast_array.go b/node/expr/cast/cast_array.go index 448d74f..3df1a43 100644 --- a/node/expr/cast/cast_array.go +++ b/node/expr/cast/cast_array.go @@ -11,7 +11,6 @@ type CastArray struct { func NewCastArray(Expr node.Node) *CastArray { return &CastArray{ Cast{ - nil, Expr, }, } @@ -21,15 +20,6 @@ func (n *CastArray) Attributes() map[string]interface{} { return nil } -func (n *CastArray) Position() *node.Position { - return n.position -} - -func (n *CastArray) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *CastArray) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/cast/cast_bool.go b/node/expr/cast/cast_bool.go index 3b93a5a..e036a03 100644 --- a/node/expr/cast/cast_bool.go +++ b/node/expr/cast/cast_bool.go @@ -11,7 +11,6 @@ type CastBool struct { func NewCastBool(Expr node.Node) *CastBool { return &CastBool{ Cast{ - nil, Expr, }, } @@ -21,15 +20,6 @@ func (n *CastBool) Attributes() map[string]interface{} { return nil } -func (n *CastBool) Position() *node.Position { - return n.position -} - -func (n *CastBool) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *CastBool) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/cast/cast_double.go b/node/expr/cast/cast_double.go index 911c0f9..596bea6 100644 --- a/node/expr/cast/cast_double.go +++ b/node/expr/cast/cast_double.go @@ -11,7 +11,6 @@ type CastDouble struct { func NewCastDouble(Expr node.Node) *CastDouble { return &CastDouble{ Cast{ - nil, Expr, }, } @@ -21,15 +20,6 @@ func (n *CastDouble) Attributes() map[string]interface{} { return nil } -func (n *CastDouble) Position() *node.Position { - return n.position -} - -func (n *CastDouble) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *CastDouble) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/cast/cast_int.go b/node/expr/cast/cast_int.go index 3c72211..7777d2b 100644 --- a/node/expr/cast/cast_int.go +++ b/node/expr/cast/cast_int.go @@ -11,7 +11,6 @@ type CastInt struct { func NewCastInt(Expr node.Node) *CastInt { return &CastInt{ Cast{ - nil, Expr, }, } @@ -21,15 +20,6 @@ func (n *CastInt) Attributes() map[string]interface{} { return nil } -func (n *CastInt) Position() *node.Position { - return n.position -} - -func (n *CastInt) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *CastInt) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/cast/cast_object.go b/node/expr/cast/cast_object.go index 262067e..a066478 100644 --- a/node/expr/cast/cast_object.go +++ b/node/expr/cast/cast_object.go @@ -11,7 +11,6 @@ type CastObject struct { func NewCastObject(Expr node.Node) *CastObject { return &CastObject{ Cast{ - nil, Expr, }, } @@ -21,15 +20,6 @@ func (n *CastObject) Attributes() map[string]interface{} { return nil } -func (n *CastObject) Position() *node.Position { - return n.position -} - -func (n *CastObject) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *CastObject) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/cast/cast_string.go b/node/expr/cast/cast_string.go index f5528eb..ed0ef44 100644 --- a/node/expr/cast/cast_string.go +++ b/node/expr/cast/cast_string.go @@ -11,7 +11,6 @@ type CastString struct { func NewCastString(Expr node.Node) *CastString { return &CastString{ Cast{ - nil, Expr, }, } @@ -21,15 +20,6 @@ func (n *CastString) Attributes() map[string]interface{} { return nil } -func (n *CastString) Position() *node.Position { - return n.position -} - -func (n *CastString) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *CastString) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/cast/cast_unset.go b/node/expr/cast/cast_unset.go index a8d31cf..09588fd 100644 --- a/node/expr/cast/cast_unset.go +++ b/node/expr/cast/cast_unset.go @@ -11,7 +11,6 @@ type CastUnset struct { func NewCastUnset(Expr node.Node) *CastUnset { return &CastUnset{ Cast{ - nil, Expr, }, } @@ -21,15 +20,6 @@ func (n *CastUnset) Attributes() map[string]interface{} { return nil } -func (n *CastUnset) Position() *node.Position { - return n.position -} - -func (n *CastUnset) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *CastUnset) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/class_const_fetch.go b/node/expr/class_const_fetch.go index cd9333a..4fe2ea8 100644 --- a/node/expr/class_const_fetch.go +++ b/node/expr/class_const_fetch.go @@ -5,14 +5,12 @@ import ( ) type ClassConstFetch struct { - position *node.Position Class node.Node ConstantName node.Node } func NewClassConstFetch(Class node.Node, ConstantName node.Node) *ClassConstFetch { return &ClassConstFetch{ - nil, Class, ConstantName, } @@ -22,15 +20,6 @@ func (n *ClassConstFetch) Attributes() map[string]interface{} { return nil } -func (n *ClassConstFetch) Position() *node.Position { - return n.position -} - -func (n *ClassConstFetch) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *ClassConstFetch) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/clone.go b/node/expr/clone.go index cc0d765..6d054d6 100644 --- a/node/expr/clone.go +++ b/node/expr/clone.go @@ -5,13 +5,11 @@ import ( ) type Clone struct { - position *node.Position - Expr node.Node + Expr node.Node } func NewClone(Expression node.Node) *Clone { return &Clone{ - nil, Expression, } } @@ -20,15 +18,6 @@ func (n *Clone) Attributes() map[string]interface{} { return nil } -func (n *Clone) Position() *node.Position { - return n.position -} - -func (n *Clone) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Clone) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/closure.go b/node/expr/closure.go index c23248f..771f979 100644 --- a/node/expr/closure.go +++ b/node/expr/closure.go @@ -5,7 +5,6 @@ import ( ) type Closure struct { - position *node.Position ReturnsRef bool Static bool PhpDocComment string @@ -17,7 +16,6 @@ type Closure struct { func NewClosure(Params []node.Node, Uses []node.Node, ReturnType node.Node, Stmts []node.Node, Static bool, ReturnsRef bool, PhpDocComment string) *Closure { return &Closure{ - nil, ReturnsRef, Static, PhpDocComment, @@ -36,15 +34,6 @@ func (n *Closure) Attributes() map[string]interface{} { } } -func (n *Closure) Position() *node.Position { - return n.position -} - -func (n *Closure) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Closure) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/closure_use.go b/node/expr/closure_use.go index efc5ae6..de46fe7 100644 --- a/node/expr/closure_use.go +++ b/node/expr/closure_use.go @@ -5,14 +5,12 @@ import ( ) type ClusureUse struct { - position *node.Position ByRef bool Variable node.Node } func NewClusureUse(Variable node.Node, ByRef bool) *ClusureUse { return &ClusureUse{ - nil, ByRef, Variable, } @@ -24,15 +22,6 @@ func (n *ClusureUse) Attributes() map[string]interface{} { } } -func (n *ClusureUse) Position() *node.Position { - return n.position -} - -func (n *ClusureUse) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *ClusureUse) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/const_fetch.go b/node/expr/const_fetch.go index 3a228a4..9759442 100644 --- a/node/expr/const_fetch.go +++ b/node/expr/const_fetch.go @@ -5,13 +5,11 @@ import ( ) type ConstFetch struct { - position *node.Position Constant node.Node } func NewConstFetch(Constant node.Node) *ConstFetch { return &ConstFetch{ - nil, Constant, } } @@ -20,15 +18,6 @@ func (n *ConstFetch) Attributes() map[string]interface{} { return nil } -func (n *ConstFetch) Position() *node.Position { - return n.position -} - -func (n *ConstFetch) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *ConstFetch) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/empty.go b/node/expr/empty.go index ca3d67d..9e826fa 100644 --- a/node/expr/empty.go +++ b/node/expr/empty.go @@ -5,13 +5,11 @@ import ( ) type Empty struct { - position *node.Position - Expr node.Node + Expr node.Node } func NewEmpty(Expression node.Node) *Empty { return &Empty{ - nil, Expression, } } @@ -20,15 +18,6 @@ func (n *Empty) Attributes() map[string]interface{} { return nil } -func (n *Empty) Position() *node.Position { - return n.position -} - -func (n *Empty) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Empty) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/error_suppress.go b/node/expr/error_suppress.go index bb8c2e7..e502de3 100644 --- a/node/expr/error_suppress.go +++ b/node/expr/error_suppress.go @@ -5,13 +5,11 @@ import ( ) type ErrorSuppress struct { - position *node.Position - Expr node.Node + Expr node.Node } func NewErrorSuppress(Expression node.Node) *ErrorSuppress { return &ErrorSuppress{ - nil, Expression, } } @@ -20,15 +18,6 @@ func (n *ErrorSuppress) Attributes() map[string]interface{} { return nil } -func (n *ErrorSuppress) Position() *node.Position { - return n.position -} - -func (n *ErrorSuppress) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *ErrorSuppress) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/eval.go b/node/expr/eval.go index 2df8944..56f2feb 100644 --- a/node/expr/eval.go +++ b/node/expr/eval.go @@ -5,13 +5,11 @@ import ( ) type Eval struct { - position *node.Position - Expr node.Node + Expr node.Node } func NewEval(Expression node.Node) *Eval { return &Eval{ - nil, Expression, } } @@ -20,15 +18,6 @@ func (n *Eval) Attributes() map[string]interface{} { return nil } -func (n *Eval) Position() *node.Position { - return n.position -} - -func (n *Eval) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Eval) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/exit.go b/node/expr/exit.go index 7474457..5ecf4fb 100644 --- a/node/expr/exit.go +++ b/node/expr/exit.go @@ -5,14 +5,12 @@ import ( ) type Exit struct { - position *node.Position - Expr node.Node - IsDie bool + Expr node.Node + IsDie bool } func NewExit(Expr node.Node, IsDie bool) *Exit { return &Exit{ - nil, Expr, IsDie, } @@ -24,15 +22,6 @@ func (n *Exit) Attributes() map[string]interface{} { } } -func (n *Exit) Position() *node.Position { - return n.position -} - -func (n *Exit) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Exit) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/function_call.go b/node/expr/function_call.go index 04cc581..e7a85d0 100644 --- a/node/expr/function_call.go +++ b/node/expr/function_call.go @@ -5,14 +5,12 @@ import ( ) type FunctionCall struct { - position *node.Position Function node.Node Arguments []node.Node } func NewFunctionCall(Function node.Node, Arguments []node.Node) *FunctionCall { return &FunctionCall{ - nil, Function, Arguments, } @@ -22,15 +20,6 @@ func (n *FunctionCall) Attributes() map[string]interface{} { return nil } -func (n *FunctionCall) Position() *node.Position { - return n.position -} - -func (n *FunctionCall) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *FunctionCall) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/include.go b/node/expr/include.go index 69f0ead..fe7c382 100644 --- a/node/expr/include.go +++ b/node/expr/include.go @@ -5,13 +5,11 @@ import ( ) type Include struct { - position *node.Position - Expr node.Node + Expr node.Node } func NewInclude(Expression node.Node) *Include { return &Include{ - nil, Expression, } } @@ -20,15 +18,6 @@ func (n *Include) Attributes() map[string]interface{} { return nil } -func (n *Include) Position() *node.Position { - return n.position -} - -func (n *Include) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Include) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/include_once.go b/node/expr/include_once.go index e5de640..5d20d6d 100644 --- a/node/expr/include_once.go +++ b/node/expr/include_once.go @@ -5,13 +5,11 @@ import ( ) type IncludeOnce struct { - position *node.Position - Expr node.Node + Expr node.Node } func NewIncludeOnce(Expression node.Node) *IncludeOnce { return &IncludeOnce{ - nil, Expression, } } @@ -20,15 +18,6 @@ func (n *IncludeOnce) Attributes() map[string]interface{} { return nil } -func (n *IncludeOnce) Position() *node.Position { - return n.position -} - -func (n *IncludeOnce) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *IncludeOnce) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/instance_of.go b/node/expr/instance_of.go index 3754d99..6154c27 100644 --- a/node/expr/instance_of.go +++ b/node/expr/instance_of.go @@ -5,14 +5,12 @@ import ( ) type InstanceOf struct { - position *node.Position - Expr node.Node - Class node.Node + Expr node.Node + Class node.Node } func NewInstanceOf(Expr node.Node, Class node.Node) *InstanceOf { return &InstanceOf{ - nil, Expr, Class, } @@ -22,15 +20,6 @@ func (n *InstanceOf) Attributes() map[string]interface{} { return nil } -func (n *InstanceOf) Position() *node.Position { - return n.position -} - -func (n *InstanceOf) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *InstanceOf) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/isset.go b/node/expr/isset.go index dd5d0c7..11ed6ab 100644 --- a/node/expr/isset.go +++ b/node/expr/isset.go @@ -5,13 +5,11 @@ import ( ) type Isset struct { - position *node.Position Variables []node.Node } func NewIsset(Variables []node.Node) *Isset { return &Isset{ - nil, Variables, } } @@ -20,15 +18,6 @@ func (n *Isset) Attributes() map[string]interface{} { return nil } -func (n *Isset) Position() *node.Position { - return n.position -} - -func (n *Isset) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Isset) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/list.go b/node/expr/list.go index 7900875..9c78c26 100644 --- a/node/expr/list.go +++ b/node/expr/list.go @@ -5,13 +5,11 @@ import ( ) type List struct { - position *node.Position - Items []node.Node + Items []node.Node } func NewList(Items []node.Node) *List { return &List{ - nil, Items, } } @@ -20,15 +18,6 @@ func (n *List) Attributes() map[string]interface{} { return nil } -func (n *List) Position() *node.Position { - return n.position -} - -func (n *List) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *List) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/method_call.go b/node/expr/method_call.go index 599d69c..d57d92f 100644 --- a/node/expr/method_call.go +++ b/node/expr/method_call.go @@ -5,7 +5,6 @@ import ( ) type MethodCall struct { - position *node.Position Variable node.Node Method node.Node Arguments []node.Node @@ -13,7 +12,6 @@ type MethodCall struct { func NewMethodCall(Variable node.Node, Method node.Node, Arguments []node.Node) *MethodCall { return &MethodCall{ - nil, Variable, Method, Arguments, @@ -24,15 +22,6 @@ func (n *MethodCall) Attributes() map[string]interface{} { return nil } -func (n *MethodCall) Position() *node.Position { - return n.position -} - -func (n *MethodCall) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *MethodCall) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/new.go b/node/expr/new.go index 2d3d0d4..5002308 100644 --- a/node/expr/new.go +++ b/node/expr/new.go @@ -5,14 +5,12 @@ import ( ) type New struct { - position *node.Position Class node.Node Arguments []node.Node } func NewNew(Class node.Node, Arguments []node.Node) *New { return &New{ - nil, Class, Arguments, } @@ -22,15 +20,6 @@ func (n *New) Attributes() map[string]interface{} { return nil } -func (n *New) Position() *node.Position { - return n.position -} - -func (n *New) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *New) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/post_dec.go b/node/expr/post_dec.go index b412a20..3620a80 100644 --- a/node/expr/post_dec.go +++ b/node/expr/post_dec.go @@ -5,13 +5,11 @@ import ( ) type PostDec struct { - position *node.Position Variable node.Node } func NewPostDec(Variable node.Node) *PostDec { return &PostDec{ - nil, Variable, } } @@ -20,15 +18,6 @@ func (n *PostDec) Attributes() map[string]interface{} { return nil } -func (n *PostDec) Position() *node.Position { - return n.position -} - -func (n *PostDec) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *PostDec) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/post_inc.go b/node/expr/post_inc.go index 5f65ad6..5bf39f7 100644 --- a/node/expr/post_inc.go +++ b/node/expr/post_inc.go @@ -5,13 +5,11 @@ import ( ) type PostInc struct { - position *node.Position Variable node.Node } func NewPostInc(Variable node.Node) *PostInc { return &PostInc{ - nil, Variable, } } @@ -20,15 +18,6 @@ func (n *PostInc) Attributes() map[string]interface{} { return nil } -func (n *PostInc) Position() *node.Position { - return n.position -} - -func (n *PostInc) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *PostInc) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/pre_dec.go b/node/expr/pre_dec.go index de6f859..aa8a513 100644 --- a/node/expr/pre_dec.go +++ b/node/expr/pre_dec.go @@ -5,13 +5,11 @@ import ( ) type PreDec struct { - position *node.Position Variable node.Node } func NewPreDec(Variable node.Node) *PreDec { return &PreDec{ - nil, Variable, } } @@ -20,15 +18,6 @@ func (n *PreDec) Attributes() map[string]interface{} { return nil } -func (n *PreDec) Position() *node.Position { - return n.position -} - -func (n *PreDec) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *PreDec) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/pre_inc.go b/node/expr/pre_inc.go index d919f7a..cdacf2e 100644 --- a/node/expr/pre_inc.go +++ b/node/expr/pre_inc.go @@ -5,13 +5,11 @@ import ( ) type PreInc struct { - position *node.Position Variable node.Node } func NewPreInc(Variable node.Node) *PreInc { return &PreInc{ - nil, Variable, } } @@ -20,15 +18,6 @@ func (n *PreInc) Attributes() map[string]interface{} { return nil } -func (n *PreInc) Position() *node.Position { - return n.position -} - -func (n *PreInc) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *PreInc) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/print.go b/node/expr/print.go index 4a46095..b363e31 100644 --- a/node/expr/print.go +++ b/node/expr/print.go @@ -5,13 +5,11 @@ import ( ) type Print struct { - position *node.Position - Expr node.Node + Expr node.Node } func NewPrint(Expression node.Node) *Print { return &Print{ - nil, Expression, } } @@ -20,15 +18,6 @@ func (n *Print) Attributes() map[string]interface{} { return nil } -func (n *Print) Position() *node.Position { - return n.position -} - -func (n *Print) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Print) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/property_fetch.go b/node/expr/property_fetch.go index 9aafe3d..0861f8e 100644 --- a/node/expr/property_fetch.go +++ b/node/expr/property_fetch.go @@ -5,14 +5,12 @@ import ( ) type PropertyFetch struct { - position *node.Position Variable node.Node Property node.Node } func NewPropertyFetch(Variable node.Node, Property node.Node) *PropertyFetch { return &PropertyFetch{ - nil, Variable, Property, } @@ -22,15 +20,6 @@ func (n *PropertyFetch) Attributes() map[string]interface{} { return nil } -func (n *PropertyFetch) Position() *node.Position { - return n.position -} - -func (n *PropertyFetch) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *PropertyFetch) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/require.go b/node/expr/require.go index 43c7199..6ee1792 100644 --- a/node/expr/require.go +++ b/node/expr/require.go @@ -5,13 +5,11 @@ import ( ) type Require struct { - position *node.Position - Expr node.Node + Expr node.Node } func NewRequire(Expression node.Node) *Require { return &Require{ - nil, Expression, } } @@ -20,15 +18,6 @@ func (n *Require) Attributes() map[string]interface{} { return nil } -func (n *Require) Position() *node.Position { - return n.position -} - -func (n *Require) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Require) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/require_once.go b/node/expr/require_once.go index c60965d..86e9ffe 100644 --- a/node/expr/require_once.go +++ b/node/expr/require_once.go @@ -5,13 +5,11 @@ import ( ) type RequireOnce struct { - position *node.Position - Expr node.Node + Expr node.Node } func NewRequireOnce(Expression node.Node) *RequireOnce { return &RequireOnce{ - nil, Expression, } } @@ -20,15 +18,6 @@ func (n *RequireOnce) Attributes() map[string]interface{} { return nil } -func (n *RequireOnce) Position() *node.Position { - return n.position -} - -func (n *RequireOnce) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *RequireOnce) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/shell_exec.go b/node/expr/shell_exec.go index 36f54f1..bc3f538 100644 --- a/node/expr/shell_exec.go +++ b/node/expr/shell_exec.go @@ -5,13 +5,11 @@ import ( ) type ShellExec struct { - position *node.Position - Parts []node.Node + Parts []node.Node } func NewShellExec(Parts []node.Node) *ShellExec { return &ShellExec{ - nil, Parts, } } @@ -20,15 +18,6 @@ func (n *ShellExec) Attributes() map[string]interface{} { return nil } -func (n *ShellExec) Position() *node.Position { - return n.position -} - -func (n *ShellExec) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *ShellExec) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/short_array.go b/node/expr/short_array.go index 81714e9..adfff02 100644 --- a/node/expr/short_array.go +++ b/node/expr/short_array.go @@ -5,13 +5,11 @@ import ( ) type ShortArray struct { - position *node.Position - Items []node.Node + Items []node.Node } func NewShortArray(Items []node.Node) *ShortArray { return &ShortArray{ - nil, Items, } } @@ -20,15 +18,6 @@ func (n *ShortArray) Attributes() map[string]interface{} { return nil } -func (n *ShortArray) Position() *node.Position { - return n.position -} - -func (n *ShortArray) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *ShortArray) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/short_list.go b/node/expr/short_list.go index 5948a76..d484480 100644 --- a/node/expr/short_list.go +++ b/node/expr/short_list.go @@ -5,13 +5,11 @@ import ( ) type ShortList struct { - position *node.Position - Items []node.Node + Items []node.Node } func NewShortList(Items []node.Node) *ShortList { return &ShortList{ - nil, Items, } } @@ -20,15 +18,6 @@ func (n *ShortList) Attributes() map[string]interface{} { return nil } -func (n *ShortList) Position() *node.Position { - return n.position -} - -func (n *ShortList) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *ShortList) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/static_call.go b/node/expr/static_call.go index e2e909a..967c4fb 100644 --- a/node/expr/static_call.go +++ b/node/expr/static_call.go @@ -5,7 +5,6 @@ import ( ) type StaticCall struct { - position *node.Position Class node.Node Call node.Node Arguments []node.Node @@ -13,7 +12,6 @@ type StaticCall struct { func NewStaticCall(Class node.Node, Call node.Node, Arguments []node.Node) *StaticCall { return &StaticCall{ - nil, Class, Call, Arguments, @@ -24,15 +22,6 @@ func (n *StaticCall) Attributes() map[string]interface{} { return nil } -func (n *StaticCall) Position() *node.Position { - return n.position -} - -func (n *StaticCall) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *StaticCall) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/static_property_fetch.go b/node/expr/static_property_fetch.go index 4c665f5..c55990c 100644 --- a/node/expr/static_property_fetch.go +++ b/node/expr/static_property_fetch.go @@ -5,14 +5,12 @@ import ( ) type StaticPropertyFetch struct { - position *node.Position Class node.Node Property node.Node } func NewStaticPropertyFetch(Class node.Node, Property node.Node) *StaticPropertyFetch { return &StaticPropertyFetch{ - nil, Class, Property, } @@ -22,15 +20,6 @@ func (n *StaticPropertyFetch) Attributes() map[string]interface{} { return nil } -func (n *StaticPropertyFetch) Position() *node.Position { - return n.position -} - -func (n *StaticPropertyFetch) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *StaticPropertyFetch) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/ternary.go b/node/expr/ternary.go index f059810..7e1aa87 100644 --- a/node/expr/ternary.go +++ b/node/expr/ternary.go @@ -5,7 +5,6 @@ import ( ) type Ternary struct { - position *node.Position Condition node.Node IfTrue node.Node IfFalse node.Node @@ -13,7 +12,6 @@ type Ternary struct { func NewTernary(Condition node.Node, IfTrue node.Node, IfFalse node.Node) *Ternary { return &Ternary{ - nil, Condition, IfTrue, IfFalse, @@ -24,15 +22,6 @@ func (n *Ternary) Attributes() map[string]interface{} { return nil } -func (n *Ternary) Position() *node.Position { - return n.position -} - -func (n *Ternary) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Ternary) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/unary_minus.go b/node/expr/unary_minus.go index 84bafdb..3f4e66f 100644 --- a/node/expr/unary_minus.go +++ b/node/expr/unary_minus.go @@ -5,13 +5,11 @@ import ( ) type UnaryMinus struct { - position *node.Position - Expr node.Node + Expr node.Node } func NewUnaryMinus(Expression node.Node) *UnaryMinus { return &UnaryMinus{ - nil, Expression, } } @@ -20,15 +18,6 @@ func (n *UnaryMinus) Attributes() map[string]interface{} { return nil } -func (n *UnaryMinus) Position() *node.Position { - return n.position -} - -func (n *UnaryMinus) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *UnaryMinus) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/unary_plus.go b/node/expr/unary_plus.go index bceef81..72b06f5 100644 --- a/node/expr/unary_plus.go +++ b/node/expr/unary_plus.go @@ -5,13 +5,11 @@ import ( ) type UnaryPlus struct { - position *node.Position - Expr node.Node + Expr node.Node } func NewUnaryPlus(Expression node.Node) *UnaryPlus { return &UnaryPlus{ - nil, Expression, } } @@ -20,15 +18,6 @@ func (n *UnaryPlus) Attributes() map[string]interface{} { return nil } -func (n *UnaryPlus) Position() *node.Position { - return n.position -} - -func (n *UnaryPlus) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *UnaryPlus) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/variable.go b/node/expr/variable.go index fdcb941..fbcb014 100644 --- a/node/expr/variable.go +++ b/node/expr/variable.go @@ -5,13 +5,11 @@ import ( ) type Variable struct { - position *node.Position - VarName node.Node + VarName node.Node } func NewVariable(VarName node.Node) *Variable { return &Variable{ - nil, VarName, } } @@ -20,15 +18,6 @@ func (n *Variable) Attributes() map[string]interface{} { return nil } -func (n *Variable) Position() *node.Position { - return n.position -} - -func (n *Variable) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Variable) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/yield.go b/node/expr/yield.go index f84dbfd..40aea01 100644 --- a/node/expr/yield.go +++ b/node/expr/yield.go @@ -5,14 +5,12 @@ import ( ) type Yield struct { - position *node.Position - Key node.Node - Value node.Node + Key node.Node + Value node.Node } func NewYield(Key node.Node, Value node.Node) *Yield { return &Yield{ - nil, Key, Value, } @@ -22,15 +20,6 @@ func (n *Yield) Attributes() map[string]interface{} { return nil } -func (n *Yield) Position() *node.Position { - return n.position -} - -func (n *Yield) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Yield) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/yield_from.go b/node/expr/yield_from.go index 9c946bf..473855d 100644 --- a/node/expr/yield_from.go +++ b/node/expr/yield_from.go @@ -5,13 +5,11 @@ import ( ) type YieldFrom struct { - position *node.Position - Expr node.Node + Expr node.Node } func NewYieldFrom(Expression node.Node) *YieldFrom { return &YieldFrom{ - nil, Expression, } } @@ -20,15 +18,6 @@ func (n *YieldFrom) Attributes() map[string]interface{} { return nil } -func (n *YieldFrom) Position() *node.Position { - return n.position -} - -func (n *YieldFrom) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *YieldFrom) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/identifier.go b/node/identifier.go index c223dcb..d6e518f 100644 --- a/node/identifier.go +++ b/node/identifier.go @@ -1,13 +1,11 @@ package node type Identifier struct { - position *Position - Value string + Value string } func NewIdentifier(Value string) *Identifier { return &Identifier{ - nil, Value, } } @@ -18,15 +16,6 @@ func (n *Identifier) Attributes() map[string]interface{} { } } -func (n *Identifier) Position() *Position { - return n.position -} - -func (n *Identifier) SetPosition(p *Position) Node { - n.position = p - return n -} - func (n *Identifier) Walk(v Visitor) { if v.EnterNode(n) == false { return diff --git a/node/name/fully_qualified.go b/node/name/fully_qualified.go index 8fb28aa..9d7757d 100644 --- a/node/name/fully_qualified.go +++ b/node/name/fully_qualified.go @@ -11,7 +11,6 @@ type FullyQualified struct { func NewFullyQualified(Parts []node.Node) *FullyQualified { return &FullyQualified{ Name{ - nil, Parts, }, } diff --git a/node/name/name.go b/node/name/name.go index 881ac57..30c0ac2 100644 --- a/node/name/name.go +++ b/node/name/name.go @@ -5,13 +5,11 @@ import ( ) type Name struct { - position *node.Position - Parts []node.Node + Parts []node.Node } func NewName(Parts []node.Node) *Name { return &Name{ - nil, Parts, } } @@ -20,15 +18,6 @@ func (n *Name) Attributes() map[string]interface{} { return nil } -func (n *Name) Position() *node.Position { - return n.position -} - -func (n *Name) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Name) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/name/name_part.go b/node/name/name_part.go index 172d99d..9564de2 100644 --- a/node/name/name_part.go +++ b/node/name/name_part.go @@ -5,13 +5,11 @@ import ( ) type NamePart struct { - position *node.Position - Value string + Value string } func NewNamePart(Value string) *NamePart { return &NamePart{ - nil, Value, } } @@ -22,15 +20,6 @@ func (n *NamePart) Attributes() map[string]interface{} { } } -func (n *NamePart) Position() *node.Position { - return n.position -} - -func (n *NamePart) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *NamePart) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/name/relative.go b/node/name/relative.go index ae1846a..c16f023 100644 --- a/node/name/relative.go +++ b/node/name/relative.go @@ -11,7 +11,6 @@ type Relative struct { func NewRelative(Parts []node.Node) *Relative { return &Relative{ Name{ - nil, Parts, }, } diff --git a/node/node.go b/node/node.go index 3698cf2..8724ed1 100644 --- a/node/node.go +++ b/node/node.go @@ -3,16 +3,10 @@ package node import "fmt" type Node interface { - Positioner Attributes() map[string]interface{} Walk(v Visitor) } -type Positioner interface { - Position() *Position - SetPosition(p *Position) Node -} - type Position struct { StartLine int EndLine int diff --git a/node/nullable.go b/node/nullable.go index 7cec52a..6f96aad 100644 --- a/node/nullable.go +++ b/node/nullable.go @@ -1,13 +1,11 @@ package node type Nullable struct { - position *Position - Expr Node + Expr Node } func NewNullable(Expression Node) *Nullable { return &Nullable{ - nil, Expression, } } @@ -16,15 +14,6 @@ func (n *Nullable) Attributes() map[string]interface{} { return nil } -func (n *Nullable) Position() *Position { - return n.position -} - -func (n *Nullable) SetPosition(p *Position) Node { - n.position = p - return n -} - func (n *Nullable) Walk(v Visitor) { if v.EnterNode(n) == false { return diff --git a/node/parameter.go b/node/parameter.go index 4005753..7267d48 100644 --- a/node/parameter.go +++ b/node/parameter.go @@ -1,7 +1,6 @@ package node type Parameter struct { - position *Position ByRef bool Variadic bool VariableType Node @@ -11,7 +10,6 @@ type Parameter struct { func NewParameter(VariableType Node, Variable Node, DefaultValue Node, ByRef bool, Variadic bool) *Parameter { return &Parameter{ - nil, ByRef, Variadic, VariableType, @@ -27,15 +25,6 @@ func (n *Parameter) Attributes() map[string]interface{} { } } -func (n *Parameter) Position() *Position { - return n.position -} - -func (n *Parameter) SetPosition(p *Position) Node { - n.position = p - return n -} - func (n *Parameter) Walk(v Visitor) { if v.EnterNode(n) == false { return diff --git a/node/scalar/dnumber.go b/node/scalar/dnumber.go index 4fffe32..20e3b43 100644 --- a/node/scalar/dnumber.go +++ b/node/scalar/dnumber.go @@ -5,13 +5,11 @@ import ( ) type Dnumber struct { - position *node.Position - Value string + Value string } func NewDnumber(Value string) *Dnumber { return &Dnumber{ - nil, Value, } } @@ -22,15 +20,6 @@ func (n *Dnumber) Attributes() map[string]interface{} { } } -func (n *Dnumber) Position() *node.Position { - return n.position -} - -func (n *Dnumber) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Dnumber) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/scalar/encapsed.go b/node/scalar/encapsed.go index e63c941..b35b894 100644 --- a/node/scalar/encapsed.go +++ b/node/scalar/encapsed.go @@ -5,13 +5,11 @@ import ( ) type Encapsed struct { - position *node.Position - Parts []node.Node + Parts []node.Node } func NewEncapsed(Parts []node.Node) *Encapsed { return &Encapsed{ - nil, Parts, } } @@ -20,15 +18,6 @@ func (n *Encapsed) Attributes() map[string]interface{} { return nil } -func (n *Encapsed) Position() *node.Position { - return n.position -} - -func (n *Encapsed) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Encapsed) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/scalar/encapsed_string_part.go b/node/scalar/encapsed_string_part.go index 7112c12..dd39648 100644 --- a/node/scalar/encapsed_string_part.go +++ b/node/scalar/encapsed_string_part.go @@ -5,13 +5,11 @@ import ( ) type EncapsedStringPart struct { - position *node.Position - Value string + Value string } func NewEncapsedStringPart(Value string) *EncapsedStringPart { return &EncapsedStringPart{ - nil, Value, } } @@ -22,15 +20,6 @@ func (n *EncapsedStringPart) Attributes() map[string]interface{} { } } -func (n *EncapsedStringPart) Position() *node.Position { - return n.position -} - -func (n *EncapsedStringPart) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *EncapsedStringPart) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/scalar/lnumber.go b/node/scalar/lnumber.go index 70a79f8..2e9f225 100644 --- a/node/scalar/lnumber.go +++ b/node/scalar/lnumber.go @@ -5,13 +5,11 @@ import ( ) type Lnumber struct { - position *node.Position - Value string + Value string } func NewLnumber(Value string) *Lnumber { return &Lnumber{ - nil, Value, } } @@ -22,15 +20,6 @@ func (n *Lnumber) Attributes() map[string]interface{} { } } -func (n *Lnumber) Position() *node.Position { - return n.position -} - -func (n *Lnumber) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Lnumber) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/scalar/magic_constant.go b/node/scalar/magic_constant.go index 8eafe9c..58dd002 100644 --- a/node/scalar/magic_constant.go +++ b/node/scalar/magic_constant.go @@ -5,13 +5,11 @@ import ( ) type MagicConstant struct { - position *node.Position - Value string + Value string } func NewMagicConstant(Value string) *MagicConstant { return &MagicConstant{ - nil, Value, } } @@ -22,15 +20,6 @@ func (n *MagicConstant) Attributes() map[string]interface{} { } } -func (n *MagicConstant) Position() *node.Position { - return n.position -} - -func (n *MagicConstant) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *MagicConstant) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/scalar/string.go b/node/scalar/string.go index 5134231..eeb8777 100644 --- a/node/scalar/string.go +++ b/node/scalar/string.go @@ -5,13 +5,11 @@ import ( ) type String struct { - position *node.Position - Value string + Value string } func NewString(Value string) *String { return &String{ - nil, Value, } } @@ -22,15 +20,6 @@ func (n *String) Attributes() map[string]interface{} { } } -func (n *String) Position() *node.Position { - return n.position -} - -func (n *String) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *String) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/alt_else.go b/node/stmt/alt_else.go index 168d13f..d57a4a7 100644 --- a/node/stmt/alt_else.go +++ b/node/stmt/alt_else.go @@ -5,13 +5,11 @@ import ( ) type AltElse struct { - position *node.Position - Stmt node.Node + Stmt node.Node } func NewAltElse(Stmt node.Node) *AltElse { return &AltElse{ - nil, Stmt, } } @@ -20,15 +18,6 @@ func (n *AltElse) Attributes() map[string]interface{} { return nil } -func (n *AltElse) Position() *node.Position { - return n.position -} - -func (n *AltElse) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *AltElse) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/alt_else_if.go b/node/stmt/alt_else_if.go index 51bb401..74ead78 100644 --- a/node/stmt/alt_else_if.go +++ b/node/stmt/alt_else_if.go @@ -5,14 +5,12 @@ import ( ) type AltElseIf struct { - position *node.Position - Cond node.Node - Stmt node.Node + Cond node.Node + Stmt node.Node } func NewAltElseIf(Cond node.Node, Stmt node.Node) *AltElseIf { return &AltElseIf{ - nil, Cond, Stmt, } @@ -22,15 +20,6 @@ func (n *AltElseIf) Attributes() map[string]interface{} { return nil } -func (n *AltElseIf) Position() *node.Position { - return n.position -} - -func (n *AltElseIf) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *AltElseIf) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/alt_if.go b/node/stmt/alt_if.go index 0222990..2768dd9 100644 --- a/node/stmt/alt_if.go +++ b/node/stmt/alt_if.go @@ -5,16 +5,14 @@ import ( ) type AltIf struct { - position *node.Position - Cond node.Node - Stmt node.Node - ElseIf []node.Node - _else node.Node + Cond node.Node + Stmt node.Node + ElseIf []node.Node + _else node.Node } func NewAltIf(Cond node.Node, Stmt node.Node) *AltIf { return &AltIf{ - nil, Cond, Stmt, nil, @@ -26,15 +24,6 @@ func (n *AltIf) Attributes() map[string]interface{} { return nil } -func (n *AltIf) Position() *node.Position { - return n.position -} - -func (n *AltIf) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *AltIf) AddElseIf(ElseIf node.Node) node.Node { if n.ElseIf == nil { n.ElseIf = make([]node.Node, 0) diff --git a/node/stmt/break.go b/node/stmt/break.go index 09e2322..18fa7f5 100644 --- a/node/stmt/break.go +++ b/node/stmt/break.go @@ -5,13 +5,11 @@ import ( ) type Break struct { - position *node.Position - Expr node.Node + Expr node.Node } func NewBreak(Expr node.Node) *Break { return &Break{ - nil, Expr, } } @@ -20,15 +18,6 @@ func (n *Break) Attributes() map[string]interface{} { return nil } -func (n *Break) Position() *node.Position { - return n.position -} - -func (n *Break) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Break) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/case.go b/node/stmt/case.go index c2d6df3..81ba2f1 100644 --- a/node/stmt/case.go +++ b/node/stmt/case.go @@ -5,14 +5,12 @@ import ( ) type Case struct { - position *node.Position - Cond node.Node - Stmts []node.Node + Cond node.Node + Stmts []node.Node } func NewCase(Cond node.Node, Stmts []node.Node) *Case { return &Case{ - nil, Cond, Stmts, } @@ -22,15 +20,6 @@ func (n *Case) Attributes() map[string]interface{} { return nil } -func (n *Case) Position() *node.Position { - return n.position -} - -func (n *Case) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Case) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/catch.go b/node/stmt/catch.go index 6f9caac..6da17c3 100644 --- a/node/stmt/catch.go +++ b/node/stmt/catch.go @@ -5,7 +5,6 @@ import ( ) type Catch struct { - position *node.Position Types []node.Node Variable node.Node Stmts []node.Node @@ -13,7 +12,6 @@ type Catch struct { func NewCatch(Types []node.Node, Variable node.Node, Stmts []node.Node) *Catch { return &Catch{ - nil, Types, Variable, Stmts, @@ -24,15 +22,6 @@ func (n *Catch) Attributes() map[string]interface{} { return nil } -func (n *Catch) Position() *node.Position { - return n.position -} - -func (n *Catch) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Catch) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/class.go b/node/stmt/class.go index 5571000..9a0c193 100644 --- a/node/stmt/class.go +++ b/node/stmt/class.go @@ -5,7 +5,6 @@ import ( ) type Class struct { - position *node.Position PhpDocComment string ClassName node.Node Modifiers []node.Node @@ -17,7 +16,6 @@ type Class struct { func NewClass(ClassName node.Node, Modifiers []node.Node, args []node.Node, Extends node.Node, Implements []node.Node, Stmts []node.Node, PhpDocComment string) *Class { return &Class{ - nil, PhpDocComment, ClassName, Modifiers, @@ -34,15 +32,6 @@ func (n *Class) Attributes() map[string]interface{} { } } -func (n *Class) Position() *node.Position { - return n.position -} - -func (n *Class) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Class) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/class_const_list.go b/node/stmt/class_const_list.go index b813efb..c2d2fac 100644 --- a/node/stmt/class_const_list.go +++ b/node/stmt/class_const_list.go @@ -5,14 +5,12 @@ import ( ) type ClassConstList struct { - position *node.Position Modifiers []node.Node Consts []node.Node } func NewClassConstList(Modifiers []node.Node, Consts []node.Node) *ClassConstList { return &ClassConstList{ - nil, Modifiers, Consts, } @@ -22,15 +20,6 @@ func (n *ClassConstList) Attributes() map[string]interface{} { return nil } -func (n *ClassConstList) Position() *node.Position { - return n.position -} - -func (n *ClassConstList) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *ClassConstList) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/class_method.go b/node/stmt/class_method.go index d718218..f1dc206 100644 --- a/node/stmt/class_method.go +++ b/node/stmt/class_method.go @@ -5,7 +5,6 @@ import ( ) type ClassMethod struct { - position *node.Position ReturnsRef bool PhpDocComment string MethodName node.Node @@ -17,7 +16,6 @@ type ClassMethod struct { func NewClassMethod(MethodName node.Node, Modifiers []node.Node, ReturnsRef bool, Params []node.Node, ReturnType node.Node, Stmts []node.Node, PhpDocComment string) *ClassMethod { return &ClassMethod{ - nil, ReturnsRef, PhpDocComment, MethodName, @@ -35,15 +33,6 @@ func (n *ClassMethod) Attributes() map[string]interface{} { } } -func (n *ClassMethod) Position() *node.Position { - return n.position -} - -func (n *ClassMethod) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *ClassMethod) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/const_list.go b/node/stmt/const_list.go index 0c9d99c..c7f3b1a 100644 --- a/node/stmt/const_list.go +++ b/node/stmt/const_list.go @@ -5,13 +5,11 @@ import ( ) type ConstList struct { - position *node.Position - Consts []node.Node + Consts []node.Node } func NewConstList(Consts []node.Node) *ConstList { return &ConstList{ - nil, Consts, } } @@ -20,15 +18,6 @@ func (n *ConstList) Attributes() map[string]interface{} { return nil } -func (n *ConstList) Position() *node.Position { - return n.position -} - -func (n *ConstList) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *ConstList) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/constant.go b/node/stmt/constant.go index 1615688..33db687 100644 --- a/node/stmt/constant.go +++ b/node/stmt/constant.go @@ -5,7 +5,6 @@ import ( ) type Constant struct { - position *node.Position PhpDocComment string ConstantName node.Node Expr node.Node @@ -13,7 +12,6 @@ type Constant struct { func NewConstant(ConstantName node.Node, Expr node.Node, PhpDocComment string) *Constant { return &Constant{ - nil, PhpDocComment, ConstantName, Expr, @@ -26,15 +24,6 @@ func (n *Constant) Attributes() map[string]interface{} { } } -func (n *Constant) Position() *node.Position { - return n.position -} - -func (n *Constant) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Constant) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/continue.go b/node/stmt/continue.go index 6a1e202..3c66239 100644 --- a/node/stmt/continue.go +++ b/node/stmt/continue.go @@ -5,13 +5,11 @@ import ( ) type Continue struct { - position *node.Position - Expr node.Node + Expr node.Node } func NewContinue(Expr node.Node) *Continue { return &Continue{ - nil, Expr, } } @@ -20,15 +18,6 @@ func (n *Continue) Attributes() map[string]interface{} { return nil } -func (n *Continue) Position() *node.Position { - return n.position -} - -func (n *Continue) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Continue) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/declare.go b/node/stmt/declare.go index fa1a624..3e467c4 100644 --- a/node/stmt/declare.go +++ b/node/stmt/declare.go @@ -5,14 +5,12 @@ import ( ) type Declare struct { - position *node.Position - Consts []node.Node - Stmt node.Node + Consts []node.Node + Stmt node.Node } func NewDeclare(Consts []node.Node, Stmt node.Node) *Declare { return &Declare{ - nil, Consts, Stmt, } @@ -22,15 +20,6 @@ func (n *Declare) Attributes() map[string]interface{} { return nil } -func (n *Declare) Position() *node.Position { - return n.position -} - -func (n *Declare) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Declare) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/default.go b/node/stmt/default.go index a4b60ed..b0b9f6a 100644 --- a/node/stmt/default.go +++ b/node/stmt/default.go @@ -5,13 +5,11 @@ import ( ) type Default struct { - position *node.Position - Stmts []node.Node + Stmts []node.Node } func NewDefault(Stmts []node.Node) *Default { return &Default{ - nil, Stmts, } } @@ -20,15 +18,6 @@ func (n *Default) Attributes() map[string]interface{} { return nil } -func (n *Default) Position() *node.Position { - return n.position -} - -func (n *Default) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Default) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/do.go b/node/stmt/do.go index fb3650a..6a6ec0a 100644 --- a/node/stmt/do.go +++ b/node/stmt/do.go @@ -5,14 +5,12 @@ import ( ) type Do struct { - position *node.Position - Stmt node.Node - Cond node.Node + Stmt node.Node + Cond node.Node } func NewDo(Stmt node.Node, Cond node.Node) *Do { return &Do{ - nil, Stmt, Cond, } @@ -22,15 +20,6 @@ func (n *Do) Attributes() map[string]interface{} { return nil } -func (n *Do) Position() *node.Position { - return n.position -} - -func (n *Do) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Do) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/echo.go b/node/stmt/echo.go index 9885297..5825ef8 100644 --- a/node/stmt/echo.go +++ b/node/stmt/echo.go @@ -5,13 +5,11 @@ import ( ) type Echo struct { - position *node.Position - Exprs []node.Node + Exprs []node.Node } func NewEcho(Exprs []node.Node) *Echo { return &Echo{ - nil, Exprs, } } @@ -20,15 +18,6 @@ func (n *Echo) Attributes() map[string]interface{} { return nil } -func (n *Echo) Position() *node.Position { - return n.position -} - -func (n *Echo) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Echo) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/else.go b/node/stmt/else.go index ac17354..28f9e5b 100644 --- a/node/stmt/else.go +++ b/node/stmt/else.go @@ -5,13 +5,11 @@ import ( ) type Else struct { - position *node.Position - Stmt node.Node + Stmt node.Node } func NewElse(Stmt node.Node) *Else { return &Else{ - nil, Stmt, } } @@ -20,15 +18,6 @@ func (n *Else) Attributes() map[string]interface{} { return nil } -func (n *Else) Position() *node.Position { - return n.position -} - -func (n *Else) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Else) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/else_if.go b/node/stmt/else_if.go index 0284fdf..b7a9489 100644 --- a/node/stmt/else_if.go +++ b/node/stmt/else_if.go @@ -5,14 +5,12 @@ import ( ) type ElseIf struct { - position *node.Position - Cond node.Node - Stmt node.Node + Cond node.Node + Stmt node.Node } func NewElseIf(Cond node.Node, Stmt node.Node) *ElseIf { return &ElseIf{ - nil, Cond, Stmt, } @@ -22,15 +20,6 @@ func (n *ElseIf) Attributes() map[string]interface{} { return nil } -func (n *ElseIf) Position() *node.Position { - return n.position -} - -func (n *ElseIf) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *ElseIf) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/expression.go b/node/stmt/expression.go index 0306180..17f0800 100644 --- a/node/stmt/expression.go +++ b/node/stmt/expression.go @@ -5,13 +5,11 @@ import ( ) type Expression struct { - position *node.Position - Expr node.Node + Expr node.Node } func NewExpression(Expr node.Node) *Expression { return &Expression{ - nil, Expr, } } @@ -20,15 +18,6 @@ func (n *Expression) Attributes() map[string]interface{} { return nil } -func (n *Expression) Position() *node.Position { - return n.position -} - -func (n *Expression) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Expression) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/finally.go b/node/stmt/finally.go index 6c8dc12..cc5ee29 100644 --- a/node/stmt/finally.go +++ b/node/stmt/finally.go @@ -5,13 +5,11 @@ import ( ) type Finally struct { - position *node.Position - Stmts []node.Node + Stmts []node.Node } func NewFinally(Stmts []node.Node) *Finally { return &Finally{ - nil, Stmts, } } @@ -20,15 +18,6 @@ func (n *Finally) Attributes() map[string]interface{} { return nil } -func (n *Finally) Position() *node.Position { - return n.position -} - -func (n *Finally) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Finally) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/for.go b/node/stmt/for.go index 101f985..0135e3e 100644 --- a/node/stmt/for.go +++ b/node/stmt/for.go @@ -5,16 +5,14 @@ import ( ) type For struct { - position *node.Position - Init []node.Node - Cond []node.Node - Loop []node.Node - Stmt node.Node + Init []node.Node + Cond []node.Node + Loop []node.Node + Stmt node.Node } func NewFor(Init []node.Node, Cond []node.Node, Loop []node.Node, Stmt node.Node) *For { return &For{ - nil, Init, Cond, Loop, @@ -26,15 +24,6 @@ func (n *For) Attributes() map[string]interface{} { return nil } -func (n *For) Position() *node.Position { - return n.position -} - -func (n *For) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *For) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/foreach.go b/node/stmt/foreach.go index 1fe0133..8cade46 100644 --- a/node/stmt/foreach.go +++ b/node/stmt/foreach.go @@ -5,7 +5,6 @@ import ( ) type Foreach struct { - position *node.Position ByRef bool Expr node.Node Key node.Node @@ -15,7 +14,6 @@ type Foreach struct { func NewForeach(Expr node.Node, Key node.Node, Variable node.Node, Stmt node.Node, ByRef bool) *Foreach { return &Foreach{ - nil, ByRef, Expr, Key, @@ -30,15 +28,6 @@ func (n *Foreach) Attributes() map[string]interface{} { } } -func (n *Foreach) Position() *node.Position { - return n.position -} - -func (n *Foreach) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Foreach) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/function.go b/node/stmt/function.go index 3969da8..4eee30f 100644 --- a/node/stmt/function.go +++ b/node/stmt/function.go @@ -5,7 +5,6 @@ import ( ) type Function struct { - position *node.Position ReturnsRef bool PhpDocComment string FunctionName node.Node @@ -16,7 +15,6 @@ type Function struct { func NewFunction(FunctionName node.Node, ReturnsRef bool, Params []node.Node, ReturnType node.Node, Stmts []node.Node, PhpDocComment string) *Function { return &Function{ - nil, ReturnsRef, PhpDocComment, FunctionName, @@ -34,15 +32,6 @@ func (n *Function) Attributes() map[string]interface{} { } } -func (n *Function) Position() *node.Position { - return n.position -} - -func (n *Function) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Function) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/global.go b/node/stmt/global.go index 035ff6e..e7061ef 100644 --- a/node/stmt/global.go +++ b/node/stmt/global.go @@ -5,13 +5,11 @@ import ( ) type Global struct { - position *node.Position - Vars []node.Node + Vars []node.Node } func NewGlobal(Vars []node.Node) *Global { return &Global{ - nil, Vars, } } @@ -20,15 +18,6 @@ func (n *Global) Attributes() map[string]interface{} { return nil } -func (n *Global) Position() *node.Position { - return n.position -} - -func (n *Global) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Global) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/goto.go b/node/stmt/goto.go index a6cb495..f25f694 100644 --- a/node/stmt/goto.go +++ b/node/stmt/goto.go @@ -5,13 +5,11 @@ import ( ) type Goto struct { - position *node.Position - Label node.Node + Label node.Node } func NewGoto(Label node.Node) *Goto { return &Goto{ - nil, Label, } } @@ -20,15 +18,6 @@ func (n *Goto) Attributes() map[string]interface{} { return nil } -func (n *Goto) Position() *node.Position { - return n.position -} - -func (n *Goto) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Goto) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/group_use.go b/node/stmt/group_use.go index d0891fd..7bf6e98 100644 --- a/node/stmt/group_use.go +++ b/node/stmt/group_use.go @@ -5,15 +5,13 @@ import ( ) type GroupUse struct { - position *node.Position - UseType node.Node - pRefix node.Node - UseList []node.Node + UseType node.Node + pRefix node.Node + UseList []node.Node } func NewGroupUse(UseType node.Node, pRefix node.Node, UseList []node.Node) *GroupUse { return &GroupUse{ - nil, UseType, pRefix, UseList, @@ -24,15 +22,6 @@ func (n *GroupUse) Attributes() map[string]interface{} { return nil } -func (n *GroupUse) Position() *node.Position { - return n.position -} - -func (n *GroupUse) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *GroupUse) SetUseType(UseType node.Node) node.Node { n.UseType = UseType return n diff --git a/node/stmt/halt_compiler.go b/node/stmt/halt_compiler.go index c94c168..96d1f36 100644 --- a/node/stmt/halt_compiler.go +++ b/node/stmt/halt_compiler.go @@ -5,28 +5,16 @@ import ( ) type HaltCompiler struct { - position *node.Position } func NewHaltCompiler() *HaltCompiler { - return &HaltCompiler{ - nil, - } + return &HaltCompiler{} } func (n *HaltCompiler) Attributes() map[string]interface{} { return nil } -func (n *HaltCompiler) Position() *node.Position { - return n.position -} - -func (n *HaltCompiler) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *HaltCompiler) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/if.go b/node/stmt/if.go index c9c78c4..7d110a3 100644 --- a/node/stmt/if.go +++ b/node/stmt/if.go @@ -5,16 +5,14 @@ import ( ) type If struct { - position *node.Position - Cond node.Node - Stmt node.Node - ElseIf []node.Node - _else node.Node + Cond node.Node + Stmt node.Node + ElseIf []node.Node + _else node.Node } func NewIf(Cond node.Node, Stmt node.Node) *If { return &If{ - nil, Cond, Stmt, nil, @@ -26,15 +24,6 @@ func (n *If) Attributes() map[string]interface{} { return nil } -func (n *If) Position() *node.Position { - return n.position -} - -func (n *If) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *If) AddElseIf(ElseIf node.Node) node.Node { if n.ElseIf == nil { n.ElseIf = make([]node.Node, 0) diff --git a/node/stmt/inline_html.go b/node/stmt/inline_html.go index 5d0bcf1..ce052c2 100644 --- a/node/stmt/inline_html.go +++ b/node/stmt/inline_html.go @@ -5,13 +5,11 @@ import ( ) type InlineHtml struct { - position *node.Position - Value string + Value string } func NewInlineHtml(Value string) *InlineHtml { return &InlineHtml{ - nil, Value, } } @@ -22,15 +20,6 @@ func (n *InlineHtml) Attributes() map[string]interface{} { } } -func (n *InlineHtml) Position() *node.Position { - return n.position -} - -func (n *InlineHtml) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *InlineHtml) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/interface.go b/node/stmt/interface.go index 7621fd5..b601418 100644 --- a/node/stmt/interface.go +++ b/node/stmt/interface.go @@ -5,7 +5,6 @@ import ( ) type Interface struct { - position *node.Position PhpDocComment string InterfaceName node.Node Extends []node.Node @@ -14,7 +13,6 @@ type Interface struct { func NewInterface(InterfaceName node.Node, Extends []node.Node, Stmts []node.Node, PhpDocComment string) *Interface { return &Interface{ - nil, PhpDocComment, InterfaceName, Extends, @@ -28,15 +26,6 @@ func (n *Interface) Attributes() map[string]interface{} { } } -func (n *Interface) Position() *node.Position { - return n.position -} - -func (n *Interface) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Interface) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/label.go b/node/stmt/label.go index 77e64ad..01a1581 100644 --- a/node/stmt/label.go +++ b/node/stmt/label.go @@ -5,13 +5,11 @@ import ( ) type Label struct { - position *node.Position LabelName node.Node } func NewLabel(LabelName node.Node) *Label { return &Label{ - nil, LabelName, } } @@ -20,15 +18,6 @@ func (n *Label) Attributes() map[string]interface{} { return nil } -func (n *Label) Position() *node.Position { - return n.position -} - -func (n *Label) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Label) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/namespace.go b/node/stmt/namespace.go index 306e7ba..a2eb210 100644 --- a/node/stmt/namespace.go +++ b/node/stmt/namespace.go @@ -5,14 +5,12 @@ import ( ) type Namespace struct { - position *node.Position NamespaceName node.Node Stmts []node.Node } func NewNamespace(NamespaceName node.Node, Stmts []node.Node) *Namespace { return &Namespace{ - nil, NamespaceName, Stmts, } @@ -22,15 +20,6 @@ func (n *Namespace) Attributes() map[string]interface{} { return nil } -func (n *Namespace) Position() *node.Position { - return n.position -} - -func (n *Namespace) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Namespace) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/nop.go b/node/stmt/nop.go index ef8f37a..e5e6b1f 100644 --- a/node/stmt/nop.go +++ b/node/stmt/nop.go @@ -5,28 +5,16 @@ import ( ) type Nop struct { - position *node.Position } func NewNop() *Nop { - return &Nop{ - nil, - } + return &Nop{} } func (n *Nop) Attributes() map[string]interface{} { return nil } -func (n *Nop) Position() *node.Position { - return n.position -} - -func (n *Nop) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Nop) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/property.go b/node/stmt/property.go index 67f6fd2..9206ac9 100644 --- a/node/stmt/property.go +++ b/node/stmt/property.go @@ -5,7 +5,6 @@ import ( ) type Property struct { - position *node.Position PhpDocComment string Variable node.Node Expr node.Node @@ -13,7 +12,6 @@ type Property struct { func NewProperty(Variable node.Node, Expr node.Node, PhpDocComment string) *Property { return &Property{ - nil, PhpDocComment, Variable, Expr, @@ -25,15 +23,6 @@ func (n *Property) Attributes() map[string]interface{} { } } -func (n *Property) Position() *node.Position { - return n.position -} - -func (n *Property) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Property) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/property_list.go b/node/stmt/property_list.go index 4938cbc..02abc96 100644 --- a/node/stmt/property_list.go +++ b/node/stmt/property_list.go @@ -5,14 +5,12 @@ import ( ) type PropertyList struct { - position *node.Position Modifiers []node.Node Properties []node.Node } func NewPropertyList(Modifiers []node.Node, Properties []node.Node) *PropertyList { return &PropertyList{ - nil, Modifiers, Properties, } @@ -22,15 +20,6 @@ func (n *PropertyList) Attributes() map[string]interface{} { return nil } -func (n *PropertyList) Position() *node.Position { - return n.position -} - -func (n *PropertyList) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *PropertyList) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/return.go b/node/stmt/return.go index 17ec67c..d53421e 100644 --- a/node/stmt/return.go +++ b/node/stmt/return.go @@ -5,13 +5,11 @@ import ( ) type Return struct { - position *node.Position - Expr node.Node + Expr node.Node } func NewReturn(Expr node.Node) *Return { return &Return{ - nil, Expr, } } @@ -20,15 +18,6 @@ func (n *Return) Attributes() map[string]interface{} { return nil } -func (n *Return) Position() *node.Position { - return n.position -} - -func (n *Return) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Return) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/static.go b/node/stmt/static.go index d206248..62b7bf0 100644 --- a/node/stmt/static.go +++ b/node/stmt/static.go @@ -5,13 +5,11 @@ import ( ) type Static struct { - position *node.Position - Vars []node.Node + Vars []node.Node } func NewStatic(Vars []node.Node) *Static { return &Static{ - nil, Vars, } } @@ -20,15 +18,6 @@ func (n *Static) Attributes() map[string]interface{} { return nil } -func (n *Static) Position() *node.Position { - return n.position -} - -func (n *Static) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Static) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/static_var.go b/node/stmt/static_var.go index 6a14474..1bc3ba3 100644 --- a/node/stmt/static_var.go +++ b/node/stmt/static_var.go @@ -5,14 +5,12 @@ import ( ) type StaticVar struct { - position *node.Position Variable node.Node Expr node.Node } func NewStaticVar(Variable node.Node, Expr node.Node) *StaticVar { return &StaticVar{ - nil, Variable, Expr, } @@ -22,15 +20,6 @@ func (n *StaticVar) Attributes() map[string]interface{} { return nil } -func (n *StaticVar) Position() *node.Position { - return n.position -} - -func (n *StaticVar) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *StaticVar) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/stmt_list.go b/node/stmt/stmt_list.go index 4f06048..f73da9b 100644 --- a/node/stmt/stmt_list.go +++ b/node/stmt/stmt_list.go @@ -5,13 +5,11 @@ import ( ) type StmtList struct { - position *node.Position - Stmts []node.Node + Stmts []node.Node } func NewStmtList(Stmts []node.Node) *StmtList { return &StmtList{ - nil, Stmts, } } @@ -20,15 +18,6 @@ func (n *StmtList) Attributes() map[string]interface{} { return nil } -func (n *StmtList) Position() *node.Position { - return n.position -} - -func (n *StmtList) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *StmtList) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/switch.go b/node/stmt/switch.go index cf580e0..08f8b87 100644 --- a/node/stmt/switch.go +++ b/node/stmt/switch.go @@ -6,15 +6,13 @@ import ( ) type Switch struct { - position *node.Position - token token.Token - Cond node.Node - cases []node.Node + token token.Token + Cond node.Node + cases []node.Node } func NewSwitch(token token.Token, Cond node.Node, cases []node.Node) *Switch { return &Switch{ - nil, token, Cond, cases, @@ -25,15 +23,6 @@ func (n *Switch) Attributes() map[string]interface{} { return nil } -func (n *Switch) Position() *node.Position { - return n.position -} - -func (n *Switch) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Switch) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/throw.go b/node/stmt/throw.go index 8e60952..ed822c0 100644 --- a/node/stmt/throw.go +++ b/node/stmt/throw.go @@ -5,13 +5,11 @@ import ( ) type Throw struct { - position *node.Position - Expr node.Node + Expr node.Node } func NewThrow(Expr node.Node) *Throw { return &Throw{ - nil, Expr, } } @@ -20,15 +18,6 @@ func (n *Throw) Attributes() map[string]interface{} { return nil } -func (n *Throw) Position() *node.Position { - return n.position -} - -func (n *Throw) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Throw) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/trait.go b/node/stmt/trait.go index a415052..a665bf8 100644 --- a/node/stmt/trait.go +++ b/node/stmt/trait.go @@ -5,7 +5,6 @@ import ( ) type Trait struct { - position *node.Position PhpDocComment string TraitName node.Node Stmts []node.Node @@ -13,7 +12,6 @@ type Trait struct { func NewTrait(TraitName node.Node, Stmts []node.Node, PhpDocComment string) *Trait { return &Trait{ - nil, PhpDocComment, TraitName, Stmts, @@ -26,15 +24,6 @@ func (n *Trait) Attributes() map[string]interface{} { } } -func (n *Trait) Position() *node.Position { - return n.position -} - -func (n *Trait) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Trait) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/trait_method_ref.go b/node/stmt/trait_method_ref.go index c6dda1d..eda0c63 100644 --- a/node/stmt/trait_method_ref.go +++ b/node/stmt/trait_method_ref.go @@ -5,14 +5,12 @@ import ( ) type TraitMethodRef struct { - position *node.Position - Trait node.Node - Method node.Node + Trait node.Node + Method node.Node } func NewTraitMethodRef(Trait node.Node, Method node.Node) *TraitMethodRef { return &TraitMethodRef{ - nil, Trait, Method, } @@ -22,15 +20,6 @@ func (n *TraitMethodRef) Attributes() map[string]interface{} { return nil } -func (n *TraitMethodRef) Position() *node.Position { - return n.position -} - -func (n *TraitMethodRef) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *TraitMethodRef) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/trait_use.go b/node/stmt/trait_use.go index f930aa9..79bc0a7 100644 --- a/node/stmt/trait_use.go +++ b/node/stmt/trait_use.go @@ -5,14 +5,12 @@ import ( ) type TraitUse struct { - position *node.Position Traits []node.Node Adaptations []node.Node } func NewTraitUse(Traits []node.Node, Adaptations []node.Node) *TraitUse { return &TraitUse{ - nil, Traits, Adaptations, } @@ -22,15 +20,6 @@ func (n *TraitUse) Attributes() map[string]interface{} { return nil } -func (n *TraitUse) Position() *node.Position { - return n.position -} - -func (n *TraitUse) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *TraitUse) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/trait_use_alias.go b/node/stmt/trait_use_alias.go index 5244845..334fad0 100644 --- a/node/stmt/trait_use_alias.go +++ b/node/stmt/trait_use_alias.go @@ -5,7 +5,6 @@ import ( ) type TraitUseAlias struct { - position *node.Position Ref node.Node Modifier node.Node Alias node.Node @@ -13,7 +12,6 @@ type TraitUseAlias struct { func NewTraitUseAlias(Ref node.Node, Modifier node.Node, Alias node.Node) *TraitUseAlias { return &TraitUseAlias{ - nil, Ref, Modifier, Alias, @@ -24,15 +22,6 @@ func (n *TraitUseAlias) Attributes() map[string]interface{} { return nil } -func (n *TraitUseAlias) Position() *node.Position { - return n.position -} - -func (n *TraitUseAlias) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *TraitUseAlias) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/trait_use_precedence.go b/node/stmt/trait_use_precedence.go index f022207..963b5fc 100644 --- a/node/stmt/trait_use_precedence.go +++ b/node/stmt/trait_use_precedence.go @@ -5,14 +5,12 @@ import ( ) type TraitUsePrecedence struct { - position *node.Position Ref node.Node Insteadof node.Node } func NewTraitUsePrecedence(Ref node.Node, Insteadof node.Node) *TraitUsePrecedence { return &TraitUsePrecedence{ - nil, Ref, Insteadof, } @@ -22,15 +20,6 @@ func (n *TraitUsePrecedence) Attributes() map[string]interface{} { return nil } -func (n *TraitUsePrecedence) Position() *node.Position { - return n.position -} - -func (n *TraitUsePrecedence) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *TraitUsePrecedence) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/try.go b/node/stmt/try.go index 6e80db5..bfb9a37 100644 --- a/node/stmt/try.go +++ b/node/stmt/try.go @@ -5,15 +5,13 @@ import ( ) type Try struct { - position *node.Position - Stmts []node.Node - Catches []node.Node - Finally node.Node + Stmts []node.Node + Catches []node.Node + Finally node.Node } func NewTry(Stmts []node.Node, Catches []node.Node, Finally node.Node) *Try { return &Try{ - nil, Stmts, Catches, Finally, @@ -24,15 +22,6 @@ func (n *Try) Attributes() map[string]interface{} { return nil } -func (n *Try) Position() *node.Position { - return n.position -} - -func (n *Try) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Try) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/unset.go b/node/stmt/unset.go index 946f1d4..e36ffd9 100644 --- a/node/stmt/unset.go +++ b/node/stmt/unset.go @@ -5,13 +5,11 @@ import ( ) type Unset struct { - position *node.Position - Vars []node.Node + Vars []node.Node } func NewUnset(Vars []node.Node) *Unset { return &Unset{ - nil, Vars, } } @@ -20,15 +18,6 @@ func (n *Unset) Attributes() map[string]interface{} { return nil } -func (n *Unset) Position() *node.Position { - return n.position -} - -func (n *Unset) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Unset) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/use.go b/node/stmt/use.go index 301f6ba..f1377d7 100644 --- a/node/stmt/use.go +++ b/node/stmt/use.go @@ -5,15 +5,13 @@ import ( ) type Use struct { - position *node.Position - UseType node.Node - Use node.Node - Alias node.Node + UseType node.Node + Use node.Node + Alias node.Node } func NewUse(UseType node.Node, use node.Node, Alias node.Node) *Use { return &Use{ - nil, UseType, use, Alias, @@ -24,15 +22,6 @@ func (n *Use) Attributes() map[string]interface{} { return nil } -func (n *Use) Position() *node.Position { - return n.position -} - -func (n *Use) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *Use) SetUseType(UseType node.Node) node.Node { n.UseType = UseType return n diff --git a/node/stmt/use_list.go b/node/stmt/use_list.go index 44933da..bef0f40 100644 --- a/node/stmt/use_list.go +++ b/node/stmt/use_list.go @@ -5,14 +5,12 @@ import ( ) type UseList struct { - position *node.Position - UseType node.Node - Uses []node.Node + UseType node.Node + Uses []node.Node } func NewUseList(UseType node.Node, Uses []node.Node) *UseList { return &UseList{ - nil, UseType, Uses, } @@ -22,15 +20,6 @@ func (n *UseList) Attributes() map[string]interface{} { return nil } -func (n *UseList) Position() *node.Position { - return n.position -} - -func (n *UseList) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *UseList) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/stmt/while.go b/node/stmt/while.go index 04bc4b2..93e2a0a 100644 --- a/node/stmt/while.go +++ b/node/stmt/while.go @@ -6,15 +6,13 @@ import ( ) type While struct { - position *node.Position - Token token.Token - Cond node.Node - Stmt node.Node + Token token.Token + Cond node.Node + Stmt node.Node } func NewWhile(Token token.Token, Cond node.Node, Stmt node.Node) *While { return &While{ - nil, Token, Cond, Stmt, @@ -25,15 +23,6 @@ func (n *While) Attributes() map[string]interface{} { return nil } -func (n *While) Position() *node.Position { - return n.position -} - -func (n *While) SetPosition(p *node.Position) node.Node { - n.position = p - return n -} - func (n *While) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/parser/parser.go b/parser/parser.go index 2711264..1d51643 100644 --- a/parser/parser.go +++ b/parser/parser.go @@ -14,6 +14,7 @@ import ( "github.com/z7zmey/php-parser/node/name" "github.com/z7zmey/php-parser/node/scalar" "github.com/z7zmey/php-parser/node/stmt" + "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/token" "io" "strconv" @@ -22,14 +23,16 @@ import ( var rootnode node.Node var comments comment.Comments +var positions position.Positions -func Parse(src io.Reader, fName string) (node.Node, comment.Comments) { +func Parse(src io.Reader, fName string) (node.Node, comment.Comments, position.Positions) { yyDebug = 0 yyErrorVerbose = true rootnode = stmt.NewStmtList([]node.Node{}) //reset comments = comment.Comments{} + positions = position.Positions{} yyParse(newLexer(src, fName)) - return rootnode, comments + return rootnode, comments, positions } func ListGetFirstNodeComments(list []node.Node) []comment.Comment { @@ -57,7 +60,7 @@ type boolWithToken struct { token *token.Token } -//line parser/parser.y:59 +//line parser/parser.y:62 type yySymType struct { yys int node node.Node @@ -381,7 +384,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line parser/parser.y:2327 +//line parser/parser.y:2625 //line yacctab:1 var yyExca = [...]int{ @@ -2090,736 +2093,757 @@ yydefault: case 1: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:289 + //line parser/parser.y:292 { rootnode = stmt.NewStmtList(yyDollar[1].list) - rootnode.SetPosition(NewNodeListPosition(yyDollar[1].list)) + positions.AddPosition(rootnode, NewNodeListPosition(yyDollar[1].list)) } case 2: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:296 + //line parser/parser.y:299 { yyVAL.token = yyDollar[1].token } case 3: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:296 + //line parser/parser.y:299 { yyVAL.token = yyDollar[1].token } case 4: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:296 + //line parser/parser.y:299 { yyVAL.token = yyDollar[1].token } case 5: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:296 + //line parser/parser.y:299 { yyVAL.token = yyDollar[1].token } case 6: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:296 + //line parser/parser.y:299 { yyVAL.token = yyDollar[1].token } case 7: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:296 + //line parser/parser.y:299 { yyVAL.token = yyDollar[1].token } case 8: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:296 + //line parser/parser.y:299 { yyVAL.token = yyDollar[1].token } case 9: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:296 + //line parser/parser.y:299 { yyVAL.token = yyDollar[1].token } case 10: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:297 + //line parser/parser.y:300 { yyVAL.token = yyDollar[1].token } case 11: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:297 + //line parser/parser.y:300 { yyVAL.token = yyDollar[1].token } case 12: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:297 + //line parser/parser.y:300 { yyVAL.token = yyDollar[1].token } case 13: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:297 + //line parser/parser.y:300 { yyVAL.token = yyDollar[1].token } case 14: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:297 + //line parser/parser.y:300 { yyVAL.token = yyDollar[1].token } case 15: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:297 + //line parser/parser.y:300 { yyVAL.token = yyDollar[1].token } case 16: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:297 + //line parser/parser.y:300 { yyVAL.token = yyDollar[1].token } case 17: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:297 + //line parser/parser.y:300 { yyVAL.token = yyDollar[1].token } case 18: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:297 + //line parser/parser.y:300 { yyVAL.token = yyDollar[1].token } case 19: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:297 + //line parser/parser.y:300 { yyVAL.token = yyDollar[1].token } case 20: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:297 + //line parser/parser.y:300 { yyVAL.token = yyDollar[1].token } case 21: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:297 + //line parser/parser.y:300 { yyVAL.token = yyDollar[1].token } case 22: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:298 + //line parser/parser.y:301 { yyVAL.token = yyDollar[1].token } case 23: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:298 + //line parser/parser.y:301 { yyVAL.token = yyDollar[1].token } case 24: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:298 + //line parser/parser.y:301 { yyVAL.token = yyDollar[1].token } case 25: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:298 + //line parser/parser.y:301 { yyVAL.token = yyDollar[1].token } case 26: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:298 + //line parser/parser.y:301 { yyVAL.token = yyDollar[1].token } case 27: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:298 + //line parser/parser.y:301 { yyVAL.token = yyDollar[1].token } case 28: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:298 + //line parser/parser.y:301 { yyVAL.token = yyDollar[1].token } case 29: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:298 + //line parser/parser.y:301 { yyVAL.token = yyDollar[1].token } case 30: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:298 + //line parser/parser.y:301 { yyVAL.token = yyDollar[1].token } case 31: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:298 + //line parser/parser.y:301 { yyVAL.token = yyDollar[1].token } case 32: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:299 + //line parser/parser.y:302 { yyVAL.token = yyDollar[1].token } case 33: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:299 + //line parser/parser.y:302 { yyVAL.token = yyDollar[1].token } case 34: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:299 + //line parser/parser.y:302 { yyVAL.token = yyDollar[1].token } case 35: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:299 + //line parser/parser.y:302 { yyVAL.token = yyDollar[1].token } case 36: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:299 + //line parser/parser.y:302 { yyVAL.token = yyDollar[1].token } case 37: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:299 + //line parser/parser.y:302 { yyVAL.token = yyDollar[1].token } case 38: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:299 + //line parser/parser.y:302 { yyVAL.token = yyDollar[1].token } case 39: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:299 + //line parser/parser.y:302 { yyVAL.token = yyDollar[1].token } case 40: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:299 + //line parser/parser.y:302 { yyVAL.token = yyDollar[1].token } case 41: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:299 + //line parser/parser.y:302 { yyVAL.token = yyDollar[1].token } case 42: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:300 + //line parser/parser.y:303 { yyVAL.token = yyDollar[1].token } case 43: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:300 + //line parser/parser.y:303 { yyVAL.token = yyDollar[1].token } case 44: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:300 + //line parser/parser.y:303 { yyVAL.token = yyDollar[1].token } case 45: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:300 + //line parser/parser.y:303 { yyVAL.token = yyDollar[1].token } case 46: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:300 + //line parser/parser.y:303 { yyVAL.token = yyDollar[1].token } case 47: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:300 + //line parser/parser.y:303 { yyVAL.token = yyDollar[1].token } case 48: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:300 + //line parser/parser.y:303 { yyVAL.token = yyDollar[1].token } case 49: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:300 + //line parser/parser.y:303 { yyVAL.token = yyDollar[1].token } case 50: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:300 + //line parser/parser.y:303 { yyVAL.token = yyDollar[1].token } case 51: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:300 + //line parser/parser.y:303 { yyVAL.token = yyDollar[1].token } case 52: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:300 + //line parser/parser.y:303 { yyVAL.token = yyDollar[1].token } case 53: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:301 + //line parser/parser.y:304 { yyVAL.token = yyDollar[1].token } case 54: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:301 + //line parser/parser.y:304 { yyVAL.token = yyDollar[1].token } case 55: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:301 + //line parser/parser.y:304 { yyVAL.token = yyDollar[1].token } case 56: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:301 + //line parser/parser.y:304 { yyVAL.token = yyDollar[1].token } case 57: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:301 + //line parser/parser.y:304 { yyVAL.token = yyDollar[1].token } case 58: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:301 + //line parser/parser.y:304 { yyVAL.token = yyDollar[1].token } case 59: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:301 + //line parser/parser.y:304 { yyVAL.token = yyDollar[1].token } case 60: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:301 + //line parser/parser.y:304 { yyVAL.token = yyDollar[1].token } case 61: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:302 + //line parser/parser.y:305 { yyVAL.token = yyDollar[1].token } case 62: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:302 + //line parser/parser.y:305 { yyVAL.token = yyDollar[1].token } case 63: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:302 + //line parser/parser.y:305 { yyVAL.token = yyDollar[1].token } case 64: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:302 + //line parser/parser.y:305 { yyVAL.token = yyDollar[1].token } case 65: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:302 + //line parser/parser.y:305 { yyVAL.token = yyDollar[1].token } case 66: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:302 + //line parser/parser.y:305 { yyVAL.token = yyDollar[1].token } case 67: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:302 + //line parser/parser.y:305 { yyVAL.token = yyDollar[1].token } case 68: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:302 + //line parser/parser.y:305 { yyVAL.token = yyDollar[1].token } case 69: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:306 + //line parser/parser.y:309 { yyVAL.token = yyDollar[1].token } case 70: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:307 + //line parser/parser.y:310 { yyVAL.token = yyDollar[1].token } case 71: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:307 + //line parser/parser.y:310 { yyVAL.token = yyDollar[1].token } case 72: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:307 + //line parser/parser.y:310 { yyVAL.token = yyDollar[1].token } case 73: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:307 + //line parser/parser.y:310 { yyVAL.token = yyDollar[1].token } case 74: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:307 + //line parser/parser.y:310 { yyVAL.token = yyDollar[1].token } case 75: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:307 + //line parser/parser.y:310 { yyVAL.token = yyDollar[1].token } case 76: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:311 + //line parser/parser.y:314 { yyVAL.token = yyDollar[1].token } case 77: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:312 + //line parser/parser.y:315 { yyVAL.token = yyDollar[1].token } case 78: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:316 + //line parser/parser.y:319 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 79: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:317 + //line parser/parser.y:320 { yyVAL.list = []node.Node{} } case 80: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:322 + //line parser/parser.y:325 { - namePart := name.NewNamePart(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) + namePart := name.NewNamePart(yyDollar[1].token.Value) + positions.AddPosition(namePart, NewTokenPosition(yyDollar[1].token)) yyVAL.list = []node.Node{namePart} comments.AddComments(namePart, yyDollar[1].token.Comments()) } case 81: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:328 + //line parser/parser.y:332 { - namePart := name.NewNamePart(yyDollar[3].token.Value).SetPosition(NewTokenPosition(yyDollar[3].token)) + namePart := name.NewNamePart(yyDollar[3].token.Value) + positions.AddPosition(namePart, NewTokenPosition(yyDollar[3].token)) yyVAL.list = append(yyDollar[1].list, namePart) comments.AddComments(namePart, yyDollar[3].token.Comments()) } case 82: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:337 + //line parser/parser.y:342 { - yyVAL.node = name.NewName(yyDollar[1].list).SetPosition(NewNodeListPosition(yyDollar[1].list)) + yyVAL.node = name.NewName(yyDollar[1].list) + positions.AddPosition(yyVAL.node, NewNodeListPosition(yyDollar[1].list)) comments.AddComments(yyVAL.node, ListGetFirstNodeComments(yyDollar[1].list)) } case 83: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:342 + //line parser/parser.y:348 { - yyVAL.node = name.NewRelative(yyDollar[3].list).SetPosition(NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) + yyVAL.node = name.NewRelative(yyDollar[3].list) + positions.AddPosition(yyVAL.node, NewTokenNodeListPosition(yyDollar[1].token, yyDollar[3].list)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 84: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:347 + //line parser/parser.y:354 { - yyVAL.node = name.NewFullyQualified(yyDollar[2].list).SetPosition(NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) + yyVAL.node = name.NewFullyQualified(yyDollar[2].list) + positions.AddPosition(yyVAL.node, NewTokenNodeListPosition(yyDollar[1].token, yyDollar[2].list)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 85: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:354 + //line parser/parser.y:362 { yyVAL.node = yyDollar[1].node } case 86: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:355 + //line parser/parser.y:363 { yyVAL.node = yyDollar[1].node } case 87: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:356 + //line parser/parser.y:364 { yyVAL.node = yyDollar[1].node } case 88: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:357 + //line parser/parser.y:365 { yyVAL.node = yyDollar[1].node } case 89: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:358 + //line parser/parser.y:366 { yyVAL.node = yyDollar[1].node } case 90: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:359 + //line parser/parser.y:367 { yyVAL.node = stmt.NewHaltCompiler() } case 91: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:361 + //line parser/parser.y:369 { - name := name.NewName(yyDollar[2].list).SetPosition(NewNodeListPosition(yyDollar[2].list)) - yyVAL.node = stmt.NewNamespace(name, nil). - SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + name := name.NewName(yyDollar[2].list) + positions.AddPosition(name, NewNodeListPosition(yyDollar[2].list)) + yyVAL.node = stmt.NewNamespace(name, nil) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) comments.AddComments(name, ListGetFirstNodeComments(yyDollar[2].list)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 92: yyDollar = yyS[yypt-5 : yypt+1] - //line parser/parser.y:370 + //line parser/parser.y:379 { - name := name.NewName(yyDollar[2].list).SetPosition(NewNodeListPosition(yyDollar[2].list)) - yyVAL.node = stmt.NewNamespace(name, yyDollar[4].list). - SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[5].token)) + name := name.NewName(yyDollar[2].list) + positions.AddPosition(name, NewNodeListPosition(yyDollar[2].list)) + yyVAL.node = stmt.NewNamespace(name, yyDollar[4].list) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[5].token)) comments.AddComments(name, ListGetFirstNodeComments(yyDollar[2].list)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 93: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:379 + //line parser/parser.y:389 { - yyVAL.node = stmt.NewNamespace(nil, yyDollar[3].list).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + yyVAL.node = stmt.NewNamespace(nil, yyDollar[3].list) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 94: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:383 + //line parser/parser.y:394 { yyVAL.node = yyDollar[2].node } case 95: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:384 + //line parser/parser.y:395 { yyVAL.node = yyDollar[3].node.(*stmt.GroupUse).SetUseType(yyDollar[2].node) } case 96: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:386 + //line parser/parser.y:397 { - yyVAL.node = stmt.NewUseList(nil, yyDollar[2].list).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + yyVAL.node = stmt.NewUseList(nil, yyDollar[2].list) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 97: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:390 + //line parser/parser.y:402 { yyVAL.node = stmt.NewUseList(yyDollar[2].node, yyDollar[3].list) } case 98: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:392 + //line parser/parser.y:404 { - yyVAL.node = stmt.NewConstList(yyDollar[2].list).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + yyVAL.node = stmt.NewConstList(yyDollar[2].list) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 99: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:400 + //line parser/parser.y:413 { - yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 100: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:405 + //line parser/parser.y:419 { - yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 101: yyDollar = yyS[yypt-6 : yypt+1] - //line parser/parser.y:413 + //line parser/parser.y:428 { - name := name.NewName(yyDollar[1].list).SetPosition(NewNodeListPosition(yyDollar[1].list)) - yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[4].list). - SetPosition(NewNodeListTokenPosition(yyDollar[1].list, yyDollar[6].token)) + name := name.NewName(yyDollar[1].list) + positions.AddPosition(name, NewNodeListPosition(yyDollar[1].list)) + yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[4].list) + positions.AddPosition(yyVAL.node, NewNodeListTokenPosition(yyDollar[1].list, yyDollar[6].token)) comments.AddComments(name, ListGetFirstNodeComments(yyDollar[1].list)) comments.AddComments(yyVAL.node, ListGetFirstNodeComments(yyDollar[1].list)) } case 102: yyDollar = yyS[yypt-7 : yypt+1] - //line parser/parser.y:422 + //line parser/parser.y:438 { - name := name.NewName(yyDollar[2].list).SetPosition(NewNodeListPosition(yyDollar[2].list)) - yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[5].list). - SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[7].token)) + name := name.NewName(yyDollar[2].list) + positions.AddPosition(name, NewNodeListPosition(yyDollar[2].list)) + yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[5].list) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[7].token)) comments.AddComments(name, ListGetFirstNodeComments(yyDollar[2].list)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 103: yyDollar = yyS[yypt-6 : yypt+1] - //line parser/parser.y:434 + //line parser/parser.y:451 { - name := name.NewName(yyDollar[1].list).SetPosition(NewNodeListPosition(yyDollar[1].list)) - yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[4].list). - SetPosition(NewNodeListTokenPosition(yyDollar[1].list, yyDollar[6].token)) + name := name.NewName(yyDollar[1].list) + positions.AddPosition(name, NewNodeListPosition(yyDollar[1].list)) + yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[4].list) + positions.AddPosition(yyVAL.node, NewNodeListTokenPosition(yyDollar[1].list, yyDollar[6].token)) comments.AddComments(name, ListGetFirstNodeComments(yyDollar[1].list)) comments.AddComments(yyVAL.node, ListGetFirstNodeComments(yyDollar[1].list)) } case 104: yyDollar = yyS[yypt-7 : yypt+1] - //line parser/parser.y:443 + //line parser/parser.y:461 { - name := name.NewName(yyDollar[2].list).SetPosition(NewNodeListPosition(yyDollar[2].list)) - yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[5].list). - SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[7].token)) + name := name.NewName(yyDollar[2].list) + positions.AddPosition(name, NewNodeListPosition(yyDollar[2].list)) + yyVAL.node = stmt.NewGroupUse(nil, name, yyDollar[5].list) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[7].token)) comments.AddComments(name, ListGetFirstNodeComments(yyDollar[2].list)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 107: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:460 + //line parser/parser.y:479 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 108: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:461 + //line parser/parser.y:480 { yyVAL.list = []node.Node{yyDollar[1].node} } case 109: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:466 + //line parser/parser.y:485 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 110: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:467 + //line parser/parser.y:486 { yyVAL.list = []node.Node{yyDollar[1].node} } case 111: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:471 + //line parser/parser.y:490 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 112: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:472 + //line parser/parser.y:491 { yyVAL.list = []node.Node{yyDollar[1].node} } case 113: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:476 + //line parser/parser.y:495 { yyVAL.node = yyDollar[1].node } case 114: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:477 + //line parser/parser.y:496 { yyVAL.node = yyDollar[2].node.(*stmt.Use).SetUseType(yyDollar[1].node) } case 115: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:482 + //line parser/parser.y:501 { - name := name.NewName(yyDollar[1].list).SetPosition(NewNodeListPosition(yyDollar[1].list)) - yyVAL.node = stmt.NewUse(nil, name, nil).SetPosition(NewNodeListPosition(yyDollar[1].list)) + name := name.NewName(yyDollar[1].list) + positions.AddPosition(name, NewNodeListPosition(yyDollar[1].list)) + yyVAL.node = stmt.NewUse(nil, name, nil) + positions.AddPosition(yyVAL.node, NewNodeListPosition(yyDollar[1].list)) comments.AddComments(name, ListGetFirstNodeComments(yyDollar[1].list)) comments.AddComments(yyVAL.node, ListGetFirstNodeComments(yyDollar[1].list)) } case 116: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:490 + //line parser/parser.y:511 { - name := name.NewName(yyDollar[1].list).SetPosition(NewNodeListPosition(yyDollar[1].list)) - alias := node.NewIdentifier(yyDollar[3].token.Value).SetPosition(NewTokenPosition(yyDollar[3].token)) - yyVAL.node = stmt.NewUse(nil, name, alias).SetPosition(NewNodeListTokenPosition(yyDollar[1].list, yyDollar[3].token)) + name := name.NewName(yyDollar[1].list) + positions.AddPosition(name, NewNodeListPosition(yyDollar[1].list)) + alias := node.NewIdentifier(yyDollar[3].token.Value) + positions.AddPosition(alias, NewTokenPosition(yyDollar[3].token)) + yyVAL.node = stmt.NewUse(nil, name, alias) + positions.AddPosition(yyVAL.node, NewNodeListTokenPosition(yyDollar[1].list, yyDollar[3].token)) comments.AddComments(name, ListGetFirstNodeComments(yyDollar[1].list)) comments.AddComments(alias, yyDollar[3].token.Comments()) @@ -2827,267 +2851,296 @@ yydefault: } case 117: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:502 + //line parser/parser.y:526 { yyVAL.node = yyDollar[1].node } case 118: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:503 + //line parser/parser.y:527 { yyVAL.node = yyDollar[2].node } case 119: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:507 + //line parser/parser.y:531 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 120: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:508 + //line parser/parser.y:532 { yyVAL.list = []node.Node{yyDollar[1].node} } case 121: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:512 + //line parser/parser.y:536 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 122: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:513 + //line parser/parser.y:537 { yyVAL.list = []node.Node{} } case 123: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:517 + //line parser/parser.y:541 { yyVAL.node = yyDollar[1].node } case 124: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:518 + //line parser/parser.y:542 { yyVAL.node = yyDollar[1].node } case 125: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:519 + //line parser/parser.y:543 { yyVAL.node = yyDollar[1].node } case 126: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:520 + //line parser/parser.y:544 { yyVAL.node = yyDollar[1].node } case 127: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:521 + //line parser/parser.y:545 { yyVAL.node = yyDollar[1].node } case 128: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:523 + //line parser/parser.y:547 { - yyVAL.node = stmt.NewHaltCompiler().SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + yyVAL.node = stmt.NewHaltCompiler() + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 129: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:530 + //line parser/parser.y:555 { - yyVAL.node = stmt.NewStmtList(yyDollar[2].list).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + yyVAL.node = stmt.NewStmtList(yyDollar[2].list) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 130: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:534 + //line parser/parser.y:560 { yyVAL.node = yyDollar[1].node } case 131: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:535 + //line parser/parser.y:561 { yyVAL.node = yyDollar[1].node } case 132: yyDollar = yyS[yypt-5 : yypt+1] - //line parser/parser.y:537 + //line parser/parser.y:563 { - yyVAL.node = stmt.NewWhile(yyDollar[1].token, yyDollar[3].node, yyDollar[5].node).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[5].node)) + yyVAL.node = stmt.NewWhile(yyDollar[1].token, yyDollar[3].node, yyDollar[5].node) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[5].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 133: yyDollar = yyS[yypt-7 : yypt+1] - //line parser/parser.y:542 + //line parser/parser.y:569 { - yyVAL.node = stmt.NewDo(yyDollar[2].node, yyDollar[5].node).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[7].token)) + yyVAL.node = stmt.NewDo(yyDollar[2].node, yyDollar[5].node) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[7].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 134: yyDollar = yyS[yypt-9 : yypt+1] - //line parser/parser.y:547 + //line parser/parser.y:575 { - yyVAL.node = stmt.NewFor(yyDollar[3].list, yyDollar[5].list, yyDollar[7].list, yyDollar[9].node).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[9].node)) + yyVAL.node = stmt.NewFor(yyDollar[3].list, yyDollar[5].list, yyDollar[7].list, yyDollar[9].node) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[9].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 135: yyDollar = yyS[yypt-5 : yypt+1] - //line parser/parser.y:552 + //line parser/parser.y:581 { - yyVAL.node = stmt.NewSwitch(yyDollar[1].token, yyDollar[3].node, yyDollar[5].nodesWithEndToken.nodes).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[5].nodesWithEndToken.endToken)) + yyVAL.node = stmt.NewSwitch(yyDollar[1].token, yyDollar[3].node, yyDollar[5].nodesWithEndToken.nodes) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[5].nodesWithEndToken.endToken)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 136: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:557 + //line parser/parser.y:587 { - yyVAL.node = stmt.NewBreak(yyDollar[2].node).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + yyVAL.node = stmt.NewBreak(yyDollar[2].node) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 137: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:562 + //line parser/parser.y:593 { - yyVAL.node = stmt.NewContinue(yyDollar[2].node).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + yyVAL.node = stmt.NewContinue(yyDollar[2].node) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 138: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:567 + //line parser/parser.y:599 { - yyVAL.node = stmt.NewReturn(yyDollar[2].node).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + yyVAL.node = stmt.NewReturn(yyDollar[2].node) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 139: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:572 + //line parser/parser.y:605 { - yyVAL.node = stmt.NewGlobal(yyDollar[2].list).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + yyVAL.node = stmt.NewGlobal(yyDollar[2].list) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 140: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:577 + //line parser/parser.y:611 { - yyVAL.node = stmt.NewStatic(yyDollar[2].list).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + yyVAL.node = stmt.NewStatic(yyDollar[2].list) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 141: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:582 + //line parser/parser.y:617 { - yyVAL.node = stmt.NewEcho(yyDollar[2].list).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + yyVAL.node = stmt.NewEcho(yyDollar[2].list) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 142: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:587 + //line parser/parser.y:623 { - yyVAL.node = stmt.NewInlineHtml(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) + yyVAL.node = stmt.NewInlineHtml(yyDollar[1].token.Value) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 143: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:592 + //line parser/parser.y:629 { - yyVAL.node = stmt.NewExpression(yyDollar[1].node).SetPosition(NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) + yyVAL.node = stmt.NewExpression(yyDollar[1].node) + positions.AddPosition(yyVAL.node, NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 144: yyDollar = yyS[yypt-6 : yypt+1] - //line parser/parser.y:597 + //line parser/parser.y:635 { - yyVAL.node = stmt.NewUnset(yyDollar[3].list).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[6].token)) + yyVAL.node = stmt.NewUnset(yyDollar[3].list) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[6].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 145: yyDollar = yyS[yypt-7 : yypt+1] - //line parser/parser.y:602 + //line parser/parser.y:641 { - yyVAL.node = stmt.NewForeach(yyDollar[3].node, nil, yyDollar[5].foreachVariable.node, yyDollar[7].node, yyDollar[5].foreachVariable.byRef).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[7].node)) + yyVAL.node = stmt.NewForeach(yyDollar[3].node, nil, yyDollar[5].foreachVariable.node, yyDollar[7].node, yyDollar[5].foreachVariable.byRef) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[7].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 146: yyDollar = yyS[yypt-9 : yypt+1] - //line parser/parser.y:607 + //line parser/parser.y:647 { - yyVAL.node = stmt.NewForeach(yyDollar[3].node, yyDollar[5].node, yyDollar[7].foreachVariable.node, yyDollar[9].node, yyDollar[7].foreachVariable.byRef).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[9].node)) + yyVAL.node = stmt.NewForeach(yyDollar[3].node, yyDollar[5].node, yyDollar[7].foreachVariable.node, yyDollar[9].node, yyDollar[7].foreachVariable.byRef) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[9].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 147: yyDollar = yyS[yypt-5 : yypt+1] - //line parser/parser.y:612 + //line parser/parser.y:653 { - yyVAL.node = stmt.NewDeclare(yyDollar[3].list, yyDollar[5].node).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[5].node)) + yyVAL.node = stmt.NewDeclare(yyDollar[3].list, yyDollar[5].node) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[5].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 148: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:617 + //line parser/parser.y:659 { - yyVAL.node = stmt.NewNop().SetPosition(NewTokenPosition(yyDollar[1].token)) + yyVAL.node = stmt.NewNop() + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 149: yyDollar = yyS[yypt-6 : yypt+1] - //line parser/parser.y:622 + //line parser/parser.y:665 { if yyDollar[6].node == nil { - yyVAL.node = stmt.NewTry(yyDollar[3].list, yyDollar[5].list, yyDollar[6].node).SetPosition(NewTokenNodeListPosition(yyDollar[1].token, yyDollar[5].list)) + yyVAL.node = stmt.NewTry(yyDollar[3].list, yyDollar[5].list, yyDollar[6].node) + positions.AddPosition(yyVAL.node, NewTokenNodeListPosition(yyDollar[1].token, yyDollar[5].list)) } else { - yyVAL.node = stmt.NewTry(yyDollar[3].list, yyDollar[5].list, yyDollar[6].node).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[6].node)) + yyVAL.node = stmt.NewTry(yyDollar[3].list, yyDollar[5].list, yyDollar[6].node) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[6].node)) } comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 150: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:632 + //line parser/parser.y:677 { - yyVAL.node = stmt.NewThrow(yyDollar[2].node).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + yyVAL.node = stmt.NewThrow(yyDollar[2].node) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 151: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:637 + //line parser/parser.y:683 { - label := node.NewIdentifier(yyDollar[2].token.Value).SetPosition(NewTokenPosition(yyDollar[2].token)) - yyVAL.node = stmt.NewGoto(label).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + label := node.NewIdentifier(yyDollar[2].token.Value) + positions.AddPosition(label, NewTokenPosition(yyDollar[2].token)) + yyVAL.node = stmt.NewGoto(label) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) comments.AddComments(label, yyDollar[2].token.Comments()) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 152: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:645 + //line parser/parser.y:693 { - label := node.NewIdentifier(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) - yyVAL.node = stmt.NewLabel(label).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) + label := node.NewIdentifier(yyDollar[1].token.Value) + positions.AddPosition(label, NewTokenPosition(yyDollar[1].token)) + yyVAL.node = stmt.NewLabel(label) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) comments.AddComments(label, yyDollar[1].token.Comments()) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 153: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:654 + //line parser/parser.y:704 { yyVAL.list = []node.Node{} } case 154: yyDollar = yyS[yypt-9 : yypt+1] - //line parser/parser.y:656 + //line parser/parser.y:706 { - identifier := node.NewIdentifier(yyDollar[5].token.Value).SetPosition(NewTokenPosition(yyDollar[5].token)) - variable := expr.NewVariable(identifier).SetPosition(NewTokenPosition(yyDollar[5].token)) - catch := stmt.NewCatch(yyDollar[4].list, variable, yyDollar[8].list).SetPosition(NewTokensPosition(yyDollar[2].token, yyDollar[9].token)) + identifier := node.NewIdentifier(yyDollar[5].token.Value) + positions.AddPosition(identifier, NewTokenPosition(yyDollar[5].token)) + variable := expr.NewVariable(identifier) + positions.AddPosition(variable, NewTokenPosition(yyDollar[5].token)) + catch := stmt.NewCatch(yyDollar[4].list, variable, yyDollar[8].list) + positions.AddPosition(catch, NewTokensPosition(yyDollar[2].token, yyDollar[9].token)) yyVAL.list = append(yyDollar[1].list, catch) comments.AddComments(identifier, yyDollar[5].token.Comments()) @@ -3096,361 +3149,386 @@ yydefault: } case 155: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:668 + //line parser/parser.y:721 { yyVAL.list = []node.Node{yyDollar[1].node} } case 156: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:669 + //line parser/parser.y:722 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 157: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:673 + //line parser/parser.y:726 { yyVAL.node = nil } case 158: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:675 + //line parser/parser.y:728 { - yyVAL.node = stmt.NewFinally(yyDollar[3].list).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + yyVAL.node = stmt.NewFinally(yyDollar[3].list) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 159: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:682 + //line parser/parser.y:736 { yyVAL.list = []node.Node{yyDollar[1].node} } case 160: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:683 + //line parser/parser.y:737 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 161: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:687 + //line parser/parser.y:741 { yyVAL.node = yyDollar[1].node } case 162: yyDollar = yyS[yypt-11 : yypt+1] - //line parser/parser.y:692 + //line parser/parser.y:746 { - name := node.NewIdentifier(yyDollar[3].token.Value).SetPosition(NewTokenPosition(yyDollar[3].token)) - yyVAL.node = stmt.NewFunction(name, yyDollar[2].boolWithToken.value, yyDollar[6].list, yyDollar[8].node, yyDollar[10].list, yyDollar[4].str). - SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[11].token)) + name := node.NewIdentifier(yyDollar[3].token.Value) + positions.AddPosition(name, NewTokenPosition(yyDollar[3].token)) + yyVAL.node = stmt.NewFunction(name, yyDollar[2].boolWithToken.value, yyDollar[6].list, yyDollar[8].node, yyDollar[10].list, yyDollar[4].str) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[11].token)) comments.AddComments(name, yyDollar[3].token.Comments()) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 163: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:703 + //line parser/parser.y:758 { yyVAL.boolWithToken = boolWithToken{false, nil} } case 164: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:704 + //line parser/parser.y:759 { yyVAL.boolWithToken = boolWithToken{true, &yyDollar[1].token} } case 165: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:708 + //line parser/parser.y:763 { yyVAL.boolWithToken = boolWithToken{false, nil} } case 166: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:709 + //line parser/parser.y:764 { yyVAL.boolWithToken = boolWithToken{true, &yyDollar[1].token} } case 167: yyDollar = yyS[yypt-9 : yypt+1] - //line parser/parser.y:714 + //line parser/parser.y:769 { - name := node.NewIdentifier(yyDollar[3].token.Value).SetPosition(NewTokenPosition(yyDollar[3].token)) - yyVAL.node = stmt.NewClass(name, yyDollar[1].list, nil, yyDollar[4].node, yyDollar[5].list, yyDollar[8].list, yyDollar[6].str). - SetPosition(NewOptionalListTokensPosition(yyDollar[1].list, yyDollar[2].token, yyDollar[9].token)) + name := node.NewIdentifier(yyDollar[3].token.Value) + positions.AddPosition(name, NewTokenPosition(yyDollar[3].token)) + yyVAL.node = stmt.NewClass(name, yyDollar[1].list, nil, yyDollar[4].node, yyDollar[5].list, yyDollar[8].list, yyDollar[6].str) + positions.AddPosition(yyVAL.node, NewOptionalListTokensPosition(yyDollar[1].list, yyDollar[2].token, yyDollar[9].token)) comments.AddComments(name, yyDollar[3].token.Comments()) comments.AddComments(yyVAL.node, ListGetFirstNodeComments(yyDollar[1].list)) } case 168: yyDollar = yyS[yypt-8 : yypt+1] - //line parser/parser.y:723 + //line parser/parser.y:779 { - name := node.NewIdentifier(yyDollar[2].token.Value).SetPosition(NewTokenPosition(yyDollar[2].token)) - yyVAL.node = stmt.NewClass(name, nil, nil, yyDollar[3].node, yyDollar[4].list, yyDollar[7].list, yyDollar[5].str). - SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[8].token)) + name := node.NewIdentifier(yyDollar[2].token.Value) + positions.AddPosition(name, NewTokenPosition(yyDollar[2].token)) + yyVAL.node = stmt.NewClass(name, nil, nil, yyDollar[3].node, yyDollar[4].list, yyDollar[7].list, yyDollar[5].str) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[8].token)) comments.AddComments(name, yyDollar[2].token.Comments()) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 169: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:734 + //line parser/parser.y:791 { yyVAL.list = []node.Node{yyDollar[1].node} } case 170: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:735 + //line parser/parser.y:792 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 171: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:740 + //line parser/parser.y:797 { - yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 172: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:745 + //line parser/parser.y:803 { - yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 173: yyDollar = yyS[yypt-6 : yypt+1] - //line parser/parser.y:753 + //line parser/parser.y:812 { - name := node.NewIdentifier(yyDollar[2].token.Value).SetPosition(NewTokenPosition(yyDollar[2].token)) - yyVAL.node = stmt.NewTrait(name, yyDollar[5].list, yyDollar[3].str). - SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[6].token)) + name := node.NewIdentifier(yyDollar[2].token.Value) + positions.AddPosition(name, NewTokenPosition(yyDollar[2].token)) + yyVAL.node = stmt.NewTrait(name, yyDollar[5].list, yyDollar[3].str) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[6].token)) comments.AddComments(name, yyDollar[2].token.Comments()) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 174: yyDollar = yyS[yypt-7 : yypt+1] - //line parser/parser.y:765 + //line parser/parser.y:825 { - name := node.NewIdentifier(yyDollar[2].token.Value).SetPosition(NewTokenPosition(yyDollar[2].token)) - yyVAL.node = stmt.NewInterface(name, yyDollar[3].list, yyDollar[6].list, yyDollar[4].str). - SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[7].token)) + name := node.NewIdentifier(yyDollar[2].token.Value) + positions.AddPosition(name, NewTokenPosition(yyDollar[2].token)) + yyVAL.node = stmt.NewInterface(name, yyDollar[3].list, yyDollar[6].list, yyDollar[4].str) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[7].token)) comments.AddComments(name, yyDollar[2].token.Comments()) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 175: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:776 + //line parser/parser.y:837 { yyVAL.node = nil } case 176: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:777 + //line parser/parser.y:838 { yyVAL.node = yyDollar[2].node } case 177: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:781 + //line parser/parser.y:842 { yyVAL.list = nil } case 178: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:782 + //line parser/parser.y:843 { yyVAL.list = yyDollar[2].list } case 179: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:786 + //line parser/parser.y:847 { yyVAL.list = nil } case 180: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:787 + //line parser/parser.y:848 { yyVAL.list = yyDollar[2].list } case 181: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:791 + //line parser/parser.y:852 { yyVAL.foreachVariable = foreachVariable{yyDollar[1].node, false} } case 182: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:792 + //line parser/parser.y:853 { yyVAL.foreachVariable = foreachVariable{yyDollar[2].node, true} } case 183: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:794 + //line parser/parser.y:855 { - list := expr.NewList(yyDollar[3].list).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + list := expr.NewList(yyDollar[3].list) + positions.AddPosition(list, NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) yyVAL.foreachVariable = foreachVariable{list, false} comments.AddComments(list, yyDollar[1].token.Comments()) } case 184: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:800 + //line parser/parser.y:862 { - list := expr.NewShortList(yyDollar[2].list).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + list := expr.NewShortList(yyDollar[2].list) + positions.AddPosition(list, NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) yyVAL.foreachVariable = foreachVariable{list, false} comments.AddComments(list, yyDollar[1].token.Comments()) } case 185: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:808 + //line parser/parser.y:871 { yyVAL.node = yyDollar[1].node } case 186: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:810 + //line parser/parser.y:873 { - yyVAL.node = stmt.NewStmtList(yyDollar[2].list).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + yyVAL.node = stmt.NewStmtList(yyDollar[2].list) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 187: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:817 + //line parser/parser.y:881 { yyVAL.node = yyDollar[1].node } case 188: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:819 + //line parser/parser.y:883 { - yyVAL.node = stmt.NewStmtList(yyDollar[2].list).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + yyVAL.node = stmt.NewStmtList(yyDollar[2].list) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 189: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:826 + //line parser/parser.y:891 { yyVAL.node = yyDollar[1].node } case 190: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:828 + //line parser/parser.y:893 { - yyVAL.node = stmt.NewStmtList(yyDollar[2].list).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + yyVAL.node = stmt.NewStmtList(yyDollar[2].list) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 191: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:835 + //line parser/parser.y:901 { yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[2].list, yyDollar[3].token} } case 192: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:836 + //line parser/parser.y:902 { yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[3].list, yyDollar[4].token} } case 193: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:837 + //line parser/parser.y:903 { yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[2].list, yyDollar[4].token} } case 194: yyDollar = yyS[yypt-5 : yypt+1] - //line parser/parser.y:838 + //line parser/parser.y:904 { yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[3].list, yyDollar[5].token} } case 195: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:842 + //line parser/parser.y:908 { yyVAL.list = []node.Node{} } case 196: yyDollar = yyS[yypt-5 : yypt+1] - //line parser/parser.y:844 + //line parser/parser.y:910 { - _case := stmt.NewCase(yyDollar[3].node, yyDollar[5].list).SetPosition(NewTokenNodeListPosition(yyDollar[2].token, yyDollar[5].list)) + _case := stmt.NewCase(yyDollar[3].node, yyDollar[5].list) + positions.AddPosition(_case, NewTokenNodeListPosition(yyDollar[2].token, yyDollar[5].list)) yyVAL.list = append(yyDollar[1].list, _case) comments.AddComments(_case, yyDollar[2].token.Comments()) } case 197: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:850 + //line parser/parser.y:917 { - _default := stmt.NewDefault(yyDollar[4].list).SetPosition(NewTokenNodeListPosition(yyDollar[2].token, yyDollar[4].list)) + _default := stmt.NewDefault(yyDollar[4].list) + positions.AddPosition(_default, NewTokenNodeListPosition(yyDollar[2].token, yyDollar[4].list)) yyVAL.list = append(yyDollar[1].list, _default) comments.AddComments(_default, yyDollar[2].token.Comments()) } case 200: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:863 + //line parser/parser.y:931 { yyVAL.node = yyDollar[1].node } case 201: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:865 + //line parser/parser.y:933 { - yyVAL.node = stmt.NewStmtList(yyDollar[2].list).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + yyVAL.node = stmt.NewStmtList(yyDollar[2].list) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 202: yyDollar = yyS[yypt-5 : yypt+1] - //line parser/parser.y:873 + //line parser/parser.y:942 { - yyVAL.node = stmt.NewIf(yyDollar[3].node, yyDollar[5].node).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[5].node)) + yyVAL.node = stmt.NewIf(yyDollar[3].node, yyDollar[5].node) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[5].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 203: yyDollar = yyS[yypt-6 : yypt+1] - //line parser/parser.y:878 + //line parser/parser.y:948 { - _elseIf := stmt.NewElseIf(yyDollar[4].node, yyDollar[6].node).SetPosition(NewTokenNodePosition(yyDollar[2].token, yyDollar[6].node)) - yyVAL.node = yyDollar[1].node.(*stmt.If).AddElseIf(_elseIf).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[6].node)) + _elseIf := stmt.NewElseIf(yyDollar[4].node, yyDollar[6].node) + positions.AddPosition(_elseIf, NewTokenNodePosition(yyDollar[2].token, yyDollar[6].node)) + yyVAL.node = yyDollar[1].node.(*stmt.If).AddElseIf(_elseIf) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[6].node)) comments.AddComments(_elseIf, yyDollar[2].token.Comments()) } case 204: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:887 + //line parser/parser.y:959 { yyVAL.node = yyDollar[1].node } case 205: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:889 + //line parser/parser.y:961 { - _else := stmt.NewElse(yyDollar[3].node).SetPosition(NewTokenNodePosition(yyDollar[2].token, yyDollar[3].node)) - yyVAL.node = yyDollar[1].node.(*stmt.If).SetElse(_else).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + _else := stmt.NewElse(yyDollar[3].node) + positions.AddPosition(_else, NewTokenNodePosition(yyDollar[2].token, yyDollar[3].node)) + yyVAL.node = yyDollar[1].node.(*stmt.If).SetElse(_else) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, yyDollar[2].token.Comments()) } case 206: yyDollar = yyS[yypt-6 : yypt+1] - //line parser/parser.y:899 + //line parser/parser.y:973 { - stmts := stmt.NewStmtList(yyDollar[6].list).SetPosition(NewNodeListPosition(yyDollar[6].list)) - yyVAL.node = stmt.NewAltIf(yyDollar[3].node, stmts).SetPosition(NewTokenNodeListPosition(yyDollar[1].token, yyDollar[6].list)) + stmts := stmt.NewStmtList(yyDollar[6].list) + positions.AddPosition(stmts, NewNodeListPosition(yyDollar[6].list)) + yyVAL.node = stmt.NewAltIf(yyDollar[3].node, stmts) + positions.AddPosition(yyVAL.node, NewTokenNodeListPosition(yyDollar[1].token, yyDollar[6].list)) comments.AddComments(stmts, yyDollar[5].token.Comments()) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 207: yyDollar = yyS[yypt-7 : yypt+1] - //line parser/parser.y:907 + //line parser/parser.y:983 { - stmts := stmt.NewStmtList(yyDollar[7].list).SetPosition(NewNodeListPosition(yyDollar[7].list)) - _elseIf := stmt.NewAltElseIf(yyDollar[4].node, stmts).SetPosition(NewTokenNodeListPosition(yyDollar[2].token, yyDollar[7].list)) + stmts := stmt.NewStmtList(yyDollar[7].list) + positions.AddPosition(stmts, NewNodeListPosition(yyDollar[7].list)) + _elseIf := stmt.NewAltElseIf(yyDollar[4].node, stmts) + positions.AddPosition(_elseIf, NewTokenNodeListPosition(yyDollar[2].token, yyDollar[7].list)) yyVAL.node = yyDollar[1].node.(*stmt.AltIf).AddElseIf(_elseIf) comments.AddComments(stmts, yyDollar[6].token.Comments()) @@ -3458,225 +3536,249 @@ yydefault: } case 208: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:919 + //line parser/parser.y:997 { - yyVAL.node = yyDollar[1].node.SetPosition(NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) + yyVAL.node = yyDollar[1].node + positions.AddPosition(yyVAL.node, NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) } case 209: yyDollar = yyS[yypt-6 : yypt+1] - //line parser/parser.y:923 + //line parser/parser.y:1002 { - stmts := stmt.NewStmtList(yyDollar[4].list).SetPosition(NewNodeListPosition(yyDollar[4].list)) - _else := stmt.NewAltElse(stmts).SetPosition(NewTokenNodeListPosition(yyDollar[2].token, yyDollar[4].list)) - yyVAL.node = yyDollar[1].node.(*stmt.AltIf).SetElse(_else).SetPosition(NewNodeTokenPosition(yyDollar[1].node, yyDollar[6].token)) + stmts := stmt.NewStmtList(yyDollar[4].list) + positions.AddPosition(stmts, NewNodeListPosition(yyDollar[4].list)) + _else := stmt.NewAltElse(stmts) + positions.AddPosition(_else, NewTokenNodeListPosition(yyDollar[2].token, yyDollar[4].list)) + yyVAL.node = yyDollar[1].node.(*stmt.AltIf).SetElse(_else) + positions.AddPosition(yyVAL.node, NewNodeTokenPosition(yyDollar[1].node, yyDollar[6].token)) comments.AddComments(stmts, yyDollar[3].token.Comments()) comments.AddComments(_else, yyDollar[2].token.Comments()) } case 210: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:934 + //line parser/parser.y:1016 { yyVAL.list = yyDollar[1].list } case 211: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:935 + //line parser/parser.y:1017 { yyVAL.list = nil } case 212: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:939 + //line parser/parser.y:1021 { yyVAL.list = []node.Node{yyDollar[1].node} } case 213: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:940 + //line parser/parser.y:1022 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 214: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:945 + //line parser/parser.y:1027 { - identifier := node.NewIdentifier(yyDollar[4].token.Value).SetPosition(NewTokenPosition(yyDollar[4].token)) - variable := expr.NewVariable(identifier).SetPosition(NewTokenPosition(yyDollar[4].token)) + identifier := node.NewIdentifier(yyDollar[4].token.Value) + positions.AddPosition(identifier, NewTokenPosition(yyDollar[4].token)) + variable := expr.NewVariable(identifier) + positions.AddPosition(variable, NewTokenPosition(yyDollar[4].token)) comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) if yyDollar[1].node != nil { - yyVAL.node = node.NewParameter(yyDollar[1].node, variable, nil, yyDollar[2].boolWithToken.value, yyDollar[3].boolWithToken.value).SetPosition(NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) + yyVAL.node = node.NewParameter(yyDollar[1].node, variable, nil, yyDollar[2].boolWithToken.value, yyDollar[3].boolWithToken.value) + positions.AddPosition(yyVAL.node, NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } else if yyDollar[2].boolWithToken.value == true { - yyVAL.node = node.NewParameter(yyDollar[1].node, variable, nil, yyDollar[2].boolWithToken.value, yyDollar[3].boolWithToken.value).SetPosition(NewTokensPosition(*yyDollar[2].boolWithToken.token, yyDollar[4].token)) + yyVAL.node = node.NewParameter(yyDollar[1].node, variable, nil, yyDollar[2].boolWithToken.value, yyDollar[3].boolWithToken.value) + positions.AddPosition(yyVAL.node, NewTokensPosition(*yyDollar[2].boolWithToken.token, yyDollar[4].token)) comments.AddComments(yyVAL.node, yyDollar[2].boolWithToken.token.Comments()) } else if yyDollar[3].boolWithToken.value == true { - yyVAL.node = node.NewParameter(yyDollar[1].node, variable, nil, yyDollar[2].boolWithToken.value, yyDollar[3].boolWithToken.value).SetPosition(NewTokensPosition(*yyDollar[3].boolWithToken.token, yyDollar[4].token)) + yyVAL.node = node.NewParameter(yyDollar[1].node, variable, nil, yyDollar[2].boolWithToken.value, yyDollar[3].boolWithToken.value) + positions.AddPosition(yyVAL.node, NewTokensPosition(*yyDollar[3].boolWithToken.token, yyDollar[4].token)) comments.AddComments(yyVAL.node, yyDollar[3].boolWithToken.token.Comments()) } else { - yyVAL.node = node.NewParameter(yyDollar[1].node, variable, nil, yyDollar[2].boolWithToken.value, yyDollar[3].boolWithToken.value).SetPosition(NewTokenPosition(yyDollar[4].token)) + yyVAL.node = node.NewParameter(yyDollar[1].node, variable, nil, yyDollar[2].boolWithToken.value, yyDollar[3].boolWithToken.value) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[4].token)) comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) } } case 215: yyDollar = yyS[yypt-6 : yypt+1] - //line parser/parser.y:967 + //line parser/parser.y:1055 { - identifier := node.NewIdentifier(yyDollar[4].token.Value).SetPosition(NewTokenPosition(yyDollar[4].token)) - variable := expr.NewVariable(identifier).SetPosition(NewTokenPosition(yyDollar[4].token)) + identifier := node.NewIdentifier(yyDollar[4].token.Value) + positions.AddPosition(identifier, NewTokenPosition(yyDollar[4].token)) + variable := expr.NewVariable(identifier) + positions.AddPosition(variable, NewTokenPosition(yyDollar[4].token)) comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) if yyDollar[1].node != nil { - yyVAL.node = node.NewParameter(yyDollar[1].node, variable, yyDollar[6].node, yyDollar[2].boolWithToken.value, yyDollar[3].boolWithToken.value).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[6].node)) + yyVAL.node = node.NewParameter(yyDollar[1].node, variable, yyDollar[6].node, yyDollar[2].boolWithToken.value, yyDollar[3].boolWithToken.value) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[6].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } else if yyDollar[2].boolWithToken.value == true { - yyVAL.node = node.NewParameter(yyDollar[1].node, variable, yyDollar[6].node, yyDollar[2].boolWithToken.value, yyDollar[3].boolWithToken.value).SetPosition(NewTokenNodePosition(*yyDollar[2].boolWithToken.token, yyDollar[6].node)) + yyVAL.node = node.NewParameter(yyDollar[1].node, variable, yyDollar[6].node, yyDollar[2].boolWithToken.value, yyDollar[3].boolWithToken.value) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(*yyDollar[2].boolWithToken.token, yyDollar[6].node)) comments.AddComments(yyVAL.node, yyDollar[2].boolWithToken.token.Comments()) } else if yyDollar[3].boolWithToken.value == true { - yyVAL.node = node.NewParameter(yyDollar[1].node, variable, yyDollar[6].node, yyDollar[2].boolWithToken.value, yyDollar[3].boolWithToken.value).SetPosition(NewTokenNodePosition(*yyDollar[3].boolWithToken.token, yyDollar[6].node)) + yyVAL.node = node.NewParameter(yyDollar[1].node, variable, yyDollar[6].node, yyDollar[2].boolWithToken.value, yyDollar[3].boolWithToken.value) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(*yyDollar[3].boolWithToken.token, yyDollar[6].node)) comments.AddComments(yyVAL.node, yyDollar[3].boolWithToken.token.Comments()) } else { - yyVAL.node = node.NewParameter(yyDollar[1].node, variable, yyDollar[6].node, yyDollar[2].boolWithToken.value, yyDollar[3].boolWithToken.value).SetPosition(NewTokenNodePosition(yyDollar[4].token, yyDollar[6].node)) + yyVAL.node = node.NewParameter(yyDollar[1].node, variable, yyDollar[6].node, yyDollar[2].boolWithToken.value, yyDollar[3].boolWithToken.value) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[4].token, yyDollar[6].node)) comments.AddComments(yyVAL.node, yyDollar[4].token.Comments()) } } case 216: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:991 + //line parser/parser.y:1085 { yyVAL.node = nil } case 217: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:992 + //line parser/parser.y:1086 { yyVAL.node = yyDollar[1].node } case 218: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:996 + //line parser/parser.y:1090 { yyVAL.node = yyDollar[1].node } case 219: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:998 + //line parser/parser.y:1092 { - yyVAL.node = node.NewNullable(yyDollar[2].node).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + yyVAL.node = node.NewNullable(yyDollar[2].node) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 220: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1006 + //line parser/parser.y:1101 { - yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 221: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1011 + //line parser/parser.y:1107 { - yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 222: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1015 + //line parser/parser.y:1112 { yyVAL.node = yyDollar[1].node } case 223: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:1019 + //line parser/parser.y:1116 { yyVAL.node = nil } case 224: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1020 + //line parser/parser.y:1117 { yyVAL.node = yyDollar[2].node } case 225: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1024 + //line parser/parser.y:1121 { yyVAL.nodesWithEndToken = &nodesWithEndToken{[]node.Node{}, yyDollar[2].token} } case 226: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:1025 + //line parser/parser.y:1122 { yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[2].list, yyDollar[4].token} } case 227: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1029 + //line parser/parser.y:1126 { yyVAL.list = []node.Node{yyDollar[1].node} } case 228: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1030 + //line parser/parser.y:1127 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 229: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1035 + //line parser/parser.y:1132 { - yyVAL.node = node.NewArgument(yyDollar[1].node, false).SetPosition(NewNodePosition(yyDollar[1].node)) + yyVAL.node = node.NewArgument(yyDollar[1].node, false) + positions.AddPosition(yyVAL.node, NewNodePosition(yyDollar[1].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 230: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1040 + //line parser/parser.y:1138 { - yyVAL.node = node.NewArgument(yyDollar[2].node, true).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + yyVAL.node = node.NewArgument(yyDollar[2].node, true) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 231: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1047 + //line parser/parser.y:1146 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 232: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1048 + //line parser/parser.y:1147 { yyVAL.list = []node.Node{yyDollar[1].node} } case 233: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1052 + //line parser/parser.y:1151 { yyVAL.node = yyDollar[1].node } case 234: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1056 + //line parser/parser.y:1155 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 235: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1057 + //line parser/parser.y:1156 { yyVAL.list = []node.Node{yyDollar[1].node} } case 236: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1062 + //line parser/parser.y:1161 { - identifier := node.NewIdentifier(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) - variable := expr.NewVariable(identifier).SetPosition(NewTokenPosition(yyDollar[1].token)) - yyVAL.node = stmt.NewStaticVar(variable, nil).SetPosition(NewTokenPosition(yyDollar[1].token)) + identifier := node.NewIdentifier(yyDollar[1].token.Value) + positions.AddPosition(identifier, NewTokenPosition(yyDollar[1].token)) + variable := expr.NewVariable(identifier) + positions.AddPosition(variable, NewTokenPosition(yyDollar[1].token)) + yyVAL.node = stmt.NewStaticVar(variable, nil) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(identifier, yyDollar[1].token.Comments()) comments.AddComments(variable, yyDollar[1].token.Comments()) @@ -3684,11 +3786,14 @@ yydefault: } case 237: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1072 + //line parser/parser.y:1174 { - identifier := node.NewIdentifier(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) - variable := expr.NewVariable(identifier).SetPosition(NewTokenPosition(yyDollar[1].token)) - yyVAL.node = stmt.NewStaticVar(variable, yyDollar[3].node).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) + identifier := node.NewIdentifier(yyDollar[1].token.Value) + positions.AddPosition(identifier, NewTokenPosition(yyDollar[1].token)) + variable := expr.NewVariable(identifier) + positions.AddPosition(variable, NewTokenPosition(yyDollar[1].token)) + yyVAL.node = stmt.NewStaticVar(variable, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) comments.AddComments(identifier, yyDollar[1].token.Comments()) comments.AddComments(variable, yyDollar[1].token.Comments()) @@ -3696,290 +3801,313 @@ yydefault: } case 238: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1084 + //line parser/parser.y:1189 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 239: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:1085 + //line parser/parser.y:1190 { yyVAL.list = []node.Node{} } case 240: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1090 + //line parser/parser.y:1195 { - yyVAL.node = stmt.NewPropertyList(yyDollar[1].list, yyDollar[2].list).SetPosition(NewNodeListTokenPosition(yyDollar[1].list, yyDollar[3].token)) + yyVAL.node = stmt.NewPropertyList(yyDollar[1].list, yyDollar[2].list) + positions.AddPosition(yyVAL.node, NewNodeListTokenPosition(yyDollar[1].list, yyDollar[3].token)) comments.AddComments(yyVAL.node, ListGetFirstNodeComments(yyDollar[1].list)) } case 241: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:1095 + //line parser/parser.y:1201 { - yyVAL.node = stmt.NewClassConstList(yyDollar[1].list, yyDollar[3].list).SetPosition(NewOptionalListTokensPosition(yyDollar[1].list, yyDollar[2].token, yyDollar[4].token)) + yyVAL.node = stmt.NewClassConstList(yyDollar[1].list, yyDollar[3].list) + positions.AddPosition(yyVAL.node, NewOptionalListTokensPosition(yyDollar[1].list, yyDollar[2].token, yyDollar[4].token)) comments.AddComments(yyVAL.node, ListGetFirstNodeComments(yyDollar[1].list)) } case 242: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1100 + //line parser/parser.y:1207 { - yyVAL.node = stmt.NewTraitUse(yyDollar[2].list, yyDollar[3].nodesWithEndToken.nodes).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[3].nodesWithEndToken.endToken)) + yyVAL.node = stmt.NewTraitUse(yyDollar[2].list, yyDollar[3].nodesWithEndToken.nodes) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[3].nodesWithEndToken.endToken)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 243: yyDollar = yyS[yypt-10 : yypt+1] - //line parser/parser.y:1105 + //line parser/parser.y:1213 { - name := node.NewIdentifier(yyDollar[4].token.Value).SetPosition(NewTokenPosition(yyDollar[4].token)) - 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). - SetPosition(NewOptionalListTokensPosition(yyDollar[1].list, yyDollar[2].token, yyDollar[10].nodesWithEndToken.endToken)) + name := node.NewIdentifier(yyDollar[4].token.Value) + positions.AddPosition(name, NewTokenPosition(yyDollar[4].token)) + 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) + positions.AddPosition(yyVAL.node, NewOptionalListTokensPosition(yyDollar[1].list, yyDollar[2].token, yyDollar[10].nodesWithEndToken.endToken)) comments.AddComments(name, yyDollar[4].token.Comments()) comments.AddComments(yyVAL.node, ListGetFirstNodeComments(yyDollar[1].list)) } case 244: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1116 + //line parser/parser.y:1225 { yyVAL.list = []node.Node{yyDollar[1].node} } case 245: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1117 + //line parser/parser.y:1226 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 246: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1121 + //line parser/parser.y:1230 { yyVAL.nodesWithEndToken = &nodesWithEndToken{nil, yyDollar[1].token} } case 247: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1122 + //line parser/parser.y:1231 { yyVAL.nodesWithEndToken = &nodesWithEndToken{nil, yyDollar[2].token} } case 248: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1123 + //line parser/parser.y:1232 { yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[2].list, yyDollar[3].token} } case 249: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1127 + //line parser/parser.y:1236 { yyVAL.list = []node.Node{yyDollar[1].node} } case 250: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1128 + //line parser/parser.y:1237 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 251: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1132 + //line parser/parser.y:1241 { yyVAL.node = yyDollar[1].node } case 252: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1133 + //line parser/parser.y:1242 { yyVAL.node = yyDollar[1].node } case 253: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1138 + //line parser/parser.y:1247 { - name := name.NewName(yyDollar[3].list).SetPosition(NewNodeListPosition(yyDollar[3].list)) - yyVAL.node = stmt.NewTraitUsePrecedence(yyDollar[1].node, name). - SetPosition(NewNodeNodeListPosition(yyDollar[1].node, yyDollar[3].list)) + name := name.NewName(yyDollar[3].list) + positions.AddPosition(name, NewNodeListPosition(yyDollar[3].list)) + yyVAL.node = stmt.NewTraitUsePrecedence(yyDollar[1].node, name) + positions.AddPosition(yyVAL.node, NewNodeNodeListPosition(yyDollar[1].node, yyDollar[3].list)) comments.AddComments(name, ListGetFirstNodeComments(yyDollar[3].list)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 254: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1150 + //line parser/parser.y:1260 { - alias := node.NewIdentifier(yyDollar[3].token.Value).SetPosition(NewTokenPosition(yyDollar[3].token)) - yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, alias). - SetPosition(NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) + alias := node.NewIdentifier(yyDollar[3].token.Value) + positions.AddPosition(alias, NewTokenPosition(yyDollar[3].token)) + yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, alias) + positions.AddPosition(yyVAL.node, NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) comments.AddComments(alias, yyDollar[3].token.Comments()) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 255: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1159 + //line parser/parser.y:1270 { - alias := node.NewIdentifier(yyDollar[3].token.Value).SetPosition(NewTokenPosition(yyDollar[3].token)) - yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, alias). - SetPosition(NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) + alias := node.NewIdentifier(yyDollar[3].token.Value) + positions.AddPosition(alias, NewTokenPosition(yyDollar[3].token)) + yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, alias) + positions.AddPosition(yyVAL.node, NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) comments.AddComments(alias, yyDollar[3].token.Comments()) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 256: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:1168 + //line parser/parser.y:1280 { - alias := node.NewIdentifier(yyDollar[4].token.Value).SetPosition(NewTokenPosition(yyDollar[4].token)) - yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, alias). - SetPosition(NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) + alias := node.NewIdentifier(yyDollar[4].token.Value) + positions.AddPosition(alias, NewTokenPosition(yyDollar[4].token)) + yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, alias) + positions.AddPosition(yyVAL.node, NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) comments.AddComments(alias, yyDollar[4].token.Comments()) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 257: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1177 + //line parser/parser.y:1290 { - yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, nil).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, nil) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 258: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1185 + //line parser/parser.y:1299 { - name := node.NewIdentifier(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) - yyVAL.node = stmt.NewTraitMethodRef(nil, name).SetPosition(NewTokenPosition(yyDollar[1].token)) + name := node.NewIdentifier(yyDollar[1].token.Value) + positions.AddPosition(name, NewTokenPosition(yyDollar[1].token)) + yyVAL.node = stmt.NewTraitMethodRef(nil, name) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(name, yyDollar[1].token.Comments()) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 259: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1192 + //line parser/parser.y:1308 { yyVAL.node = yyDollar[1].node } case 260: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1197 + //line parser/parser.y:1313 { - target := node.NewIdentifier(yyDollar[3].token.Value).SetPosition(NewTokenPosition(yyDollar[3].token)) - yyVAL.node = stmt.NewTraitMethodRef(yyDollar[1].node, target).SetPosition(NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) + target := node.NewIdentifier(yyDollar[3].token.Value) + positions.AddPosition(target, NewTokenPosition(yyDollar[3].token)) + yyVAL.node = stmt.NewTraitMethodRef(yyDollar[1].node, target) + positions.AddPosition(yyVAL.node, NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) comments.AddComments(target, yyDollar[3].token.Comments()) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 261: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1207 + //line parser/parser.y:1325 { yyVAL.nodesWithEndToken = &nodesWithEndToken{nil, yyDollar[1].token} } case 262: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1208 + //line parser/parser.y:1326 { yyVAL.nodesWithEndToken = &nodesWithEndToken{yyDollar[2].list, yyDollar[3].token} } case 263: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1212 + //line parser/parser.y:1330 { yyVAL.list = yyDollar[1].list } case 264: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1214 + //line parser/parser.y:1332 { - modifier := node.NewIdentifier(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) + modifier := node.NewIdentifier(yyDollar[1].token.Value) + positions.AddPosition(modifier, NewTokenPosition(yyDollar[1].token)) yyVAL.list = []node.Node{modifier} comments.AddComments(modifier, yyDollar[1].token.Comments()) } case 265: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:1222 + //line parser/parser.y:1341 { yyVAL.list = nil } case 266: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1223 + //line parser/parser.y:1342 { yyVAL.list = yyDollar[1].list } case 267: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1227 + //line parser/parser.y:1346 { yyVAL.list = []node.Node{yyDollar[1].node} } case 268: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1228 + //line parser/parser.y:1347 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 269: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1233 + //line parser/parser.y:1352 { - yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 270: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1238 + //line parser/parser.y:1358 { - yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 271: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1243 + //line parser/parser.y:1364 { - yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 272: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1248 + //line parser/parser.y:1370 { - yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 273: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1253 + //line parser/parser.y:1376 { - yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 274: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1258 + //line parser/parser.y:1382 { - yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 275: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1265 + //line parser/parser.y:1390 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 276: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1266 + //line parser/parser.y:1391 { yyVAL.list = []node.Node{yyDollar[1].node} } case 277: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1271 + //line parser/parser.y:1396 { - identifier := node.NewIdentifier(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) - variable := expr.NewVariable(identifier).SetPosition(NewTokenPosition(yyDollar[1].token)) - yyVAL.node = stmt.NewProperty(variable, nil, yyDollar[2].str).SetPosition(NewTokenPosition(yyDollar[1].token)) + identifier := node.NewIdentifier(yyDollar[1].token.Value) + positions.AddPosition(identifier, NewTokenPosition(yyDollar[1].token)) + variable := expr.NewVariable(identifier) + positions.AddPosition(variable, NewTokenPosition(yyDollar[1].token)) + yyVAL.node = stmt.NewProperty(variable, nil, yyDollar[2].str) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(identifier, yyDollar[1].token.Comments()) comments.AddComments(variable, yyDollar[1].token.Comments()) @@ -3987,11 +4115,14 @@ yydefault: } case 278: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:1281 + //line parser/parser.y:1409 { - identifier := node.NewIdentifier(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) - variable := expr.NewVariable(identifier).SetPosition(NewTokenPosition(yyDollar[1].token)) - yyVAL.node = stmt.NewProperty(variable, yyDollar[3].node, yyDollar[4].str).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) + identifier := node.NewIdentifier(yyDollar[1].token.Value) + positions.AddPosition(identifier, NewTokenPosition(yyDollar[1].token)) + variable := expr.NewVariable(identifier) + positions.AddPosition(variable, NewTokenPosition(yyDollar[1].token)) + yyVAL.node = stmt.NewProperty(variable, yyDollar[3].node, yyDollar[4].str) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) comments.AddComments(identifier, yyDollar[1].token.Comments()) comments.AddComments(variable, yyDollar[1].token.Comments()) @@ -3999,696 +4130,779 @@ yydefault: } case 279: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1293 + //line parser/parser.y:1424 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 280: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1294 + //line parser/parser.y:1425 { yyVAL.list = []node.Node{yyDollar[1].node} } case 281: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:1299 + //line parser/parser.y:1430 { - name := node.NewIdentifier(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) - yyVAL.node = stmt.NewConstant(name, yyDollar[3].node, yyDollar[4].str).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) + name := node.NewIdentifier(yyDollar[1].token.Value) + positions.AddPosition(name, NewTokenPosition(yyDollar[1].token)) + yyVAL.node = stmt.NewConstant(name, yyDollar[3].node, yyDollar[4].str) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) comments.AddComments(name, yyDollar[1].token.Comments()) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 282: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:1310 + //line parser/parser.y:1443 { - name := node.NewIdentifier(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) - yyVAL.node = stmt.NewConstant(name, yyDollar[3].node, yyDollar[4].str).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) + name := node.NewIdentifier(yyDollar[1].token.Value) + positions.AddPosition(name, NewTokenPosition(yyDollar[1].token)) + yyVAL.node = stmt.NewConstant(name, yyDollar[3].node, yyDollar[4].str) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[3].node)) comments.AddComments(name, yyDollar[1].token.Comments()) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 283: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1320 + //line parser/parser.y:1455 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 284: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1321 + //line parser/parser.y:1456 { yyVAL.list = []node.Node{yyDollar[1].node} } case 285: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1325 + //line parser/parser.y:1460 { yyVAL.node = yyDollar[1].node } case 286: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:1329 + //line parser/parser.y:1464 { yyVAL.list = nil } case 287: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1330 + //line parser/parser.y:1465 { yyVAL.list = yyDollar[1].list } case 288: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1333 + //line parser/parser.y:1468 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 289: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1334 + //line parser/parser.y:1469 { yyVAL.list = []node.Node{yyDollar[1].node} } case 290: yyDollar = yyS[yypt-8 : yypt+1] - //line parser/parser.y:1339 + //line parser/parser.y:1474 { 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).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[8].token)) + yyVAL.node = stmt.NewClass(nil, nil, yyDollar[2].nodesWithEndToken.nodes, yyDollar[3].node, yyDollar[4].list, yyDollar[7].list, yyDollar[5].str) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[8].token)) } else { - yyVAL.node = stmt.NewClass(nil, nil, nil, yyDollar[3].node, yyDollar[4].list, yyDollar[7].list, yyDollar[5].str).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[8].token)) + yyVAL.node = stmt.NewClass(nil, nil, nil, yyDollar[3].node, yyDollar[4].list, yyDollar[7].list, yyDollar[5].str) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[8].token)) } comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 291: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1352 + //line parser/parser.y:1489 { if yyDollar[3].nodesWithEndToken != nil { - yyVAL.node = expr.NewNew(yyDollar[2].node, yyDollar[3].nodesWithEndToken.nodes).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[3].nodesWithEndToken.endToken)) + yyVAL.node = expr.NewNew(yyDollar[2].node, yyDollar[3].nodesWithEndToken.nodes) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[3].nodesWithEndToken.endToken)) } else { - yyVAL.node = expr.NewNew(yyDollar[2].node, nil).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + yyVAL.node = expr.NewNew(yyDollar[2].node, nil) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) } comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 292: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1361 + //line parser/parser.y:1500 { yyVAL.node = expr.NewNew(yyDollar[2].node, nil) } case 293: yyDollar = yyS[yypt-6 : yypt+1] - //line parser/parser.y:1366 + //line parser/parser.y:1505 { - list := expr.NewList(yyDollar[3].list).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) - yyVAL.node = assign_op.NewAssign(list, yyDollar[6].node).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[6].node)) + list := expr.NewList(yyDollar[3].list) + positions.AddPosition(list, NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + yyVAL.node = assign_op.NewAssign(list, yyDollar[6].node) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[6].node)) comments.AddComments(list, yyDollar[1].token.Comments()) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 294: yyDollar = yyS[yypt-5 : yypt+1] - //line parser/parser.y:1374 + //line parser/parser.y:1515 { - shortList := expr.NewShortList(yyDollar[2].list).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) - yyVAL.node = assign_op.NewAssign(shortList, yyDollar[5].node).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[5].node)) + shortList := expr.NewShortList(yyDollar[2].list) + positions.AddPosition(shortList, NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + yyVAL.node = assign_op.NewAssign(shortList, yyDollar[5].node) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[5].node)) comments.AddComments(shortList, yyDollar[1].token.Comments()) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 295: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1382 + //line parser/parser.y:1525 { - yyVAL.node = assign_op.NewAssign(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = assign_op.NewAssign(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 296: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:1387 + //line parser/parser.y:1531 { - yyVAL.node = assign_op.NewAssignRef(yyDollar[1].node, yyDollar[4].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) + yyVAL.node = assign_op.NewAssignRef(yyDollar[1].node, yyDollar[4].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 297: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1392 + //line parser/parser.y:1537 { - yyVAL.node = expr.NewClone(yyDollar[2].node).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + yyVAL.node = expr.NewClone(yyDollar[2].node) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 298: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1397 + //line parser/parser.y:1543 { - yyVAL.node = assign_op.NewPlus(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = assign_op.NewPlus(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 299: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1402 + //line parser/parser.y:1549 { - yyVAL.node = assign_op.NewMinus(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = assign_op.NewMinus(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 300: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1407 + //line parser/parser.y:1555 { - yyVAL.node = assign_op.NewMul(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = assign_op.NewMul(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 301: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1412 + //line parser/parser.y:1561 { - yyVAL.node = assign_op.NewPow(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = assign_op.NewPow(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 302: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1417 + //line parser/parser.y:1567 { - yyVAL.node = assign_op.NewDiv(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = assign_op.NewDiv(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 303: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1422 + //line parser/parser.y:1573 { - yyVAL.node = assign_op.NewConcat(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = assign_op.NewConcat(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 304: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1427 + //line parser/parser.y:1579 { - yyVAL.node = assign_op.NewMod(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = assign_op.NewMod(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 305: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1432 + //line parser/parser.y:1585 { - yyVAL.node = assign_op.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = assign_op.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 306: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1437 + //line parser/parser.y:1591 { - yyVAL.node = assign_op.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = assign_op.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 307: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1442 + //line parser/parser.y:1597 { - yyVAL.node = assign_op.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = assign_op.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 308: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1447 + //line parser/parser.y:1603 { - yyVAL.node = assign_op.NewShiftLeft(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = assign_op.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 309: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1452 + //line parser/parser.y:1609 { - yyVAL.node = assign_op.NewShiftRight(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = assign_op.NewShiftRight(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 310: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1457 + //line parser/parser.y:1615 { - yyVAL.node = expr.NewPostInc(yyDollar[1].node).SetPosition(NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) + yyVAL.node = expr.NewPostInc(yyDollar[1].node) + positions.AddPosition(yyVAL.node, NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 311: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1462 + //line parser/parser.y:1621 { - yyVAL.node = expr.NewPreInc(yyDollar[2].node).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + yyVAL.node = expr.NewPreInc(yyDollar[2].node) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 312: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1467 + //line parser/parser.y:1627 { - yyVAL.node = expr.NewPostDec(yyDollar[1].node).SetPosition(NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) + yyVAL.node = expr.NewPostDec(yyDollar[1].node) + positions.AddPosition(yyVAL.node, NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].token)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 313: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1472 + //line parser/parser.y:1633 { - yyVAL.node = expr.NewPreDec(yyDollar[2].node).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + yyVAL.node = expr.NewPreDec(yyDollar[2].node) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 314: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1477 + //line parser/parser.y:1639 { - yyVAL.node = binary_op.NewBooleanOr(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = binary_op.NewBooleanOr(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 315: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1482 + //line parser/parser.y:1645 { - yyVAL.node = binary_op.NewBooleanAnd(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = binary_op.NewBooleanAnd(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 316: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1487 + //line parser/parser.y:1651 { - yyVAL.node = binary_op.NewLogicalOr(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = binary_op.NewLogicalOr(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 317: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1492 + //line parser/parser.y:1657 { - yyVAL.node = binary_op.NewLogicalAnd(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = binary_op.NewLogicalAnd(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 318: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1497 + //line parser/parser.y:1663 { - yyVAL.node = binary_op.NewLogicalXor(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = binary_op.NewLogicalXor(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 319: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1502 + //line parser/parser.y:1669 { - yyVAL.node = binary_op.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = binary_op.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 320: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1507 + //line parser/parser.y:1675 { - yyVAL.node = binary_op.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = binary_op.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 321: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1512 + //line parser/parser.y:1681 { - yyVAL.node = binary_op.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = binary_op.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 322: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1517 + //line parser/parser.y:1687 { - yyVAL.node = binary_op.NewConcat(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = binary_op.NewConcat(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 323: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1522 + //line parser/parser.y:1693 { - yyVAL.node = binary_op.NewPlus(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = binary_op.NewPlus(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 324: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1527 + //line parser/parser.y:1699 { - yyVAL.node = binary_op.NewMinus(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = binary_op.NewMinus(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 325: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1532 + //line parser/parser.y:1705 { - yyVAL.node = binary_op.NewMul(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = binary_op.NewMul(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 326: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1537 + //line parser/parser.y:1711 { - yyVAL.node = binary_op.NewPow(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = binary_op.NewPow(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 327: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1542 + //line parser/parser.y:1717 { - yyVAL.node = binary_op.NewDiv(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = binary_op.NewDiv(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 328: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1547 + //line parser/parser.y:1723 { - yyVAL.node = binary_op.NewMod(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = binary_op.NewMod(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 329: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1552 + //line parser/parser.y:1729 { - yyVAL.node = binary_op.NewShiftLeft(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = binary_op.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 330: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1557 + //line parser/parser.y:1735 { - yyVAL.node = binary_op.NewShiftRight(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = binary_op.NewShiftRight(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 331: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1562 + //line parser/parser.y:1741 { - yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 332: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1567 + //line parser/parser.y:1747 { - yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 333: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1572 + //line parser/parser.y:1753 { - yyVAL.node = expr.NewBooleanNot(yyDollar[2].node).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 334: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1577 + //line parser/parser.y:1759 { - yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 335: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1582 + //line parser/parser.y:1765 { - yyVAL.node = binary_op.NewIdentical(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = binary_op.NewIdentical(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 336: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1587 + //line parser/parser.y:1771 { - yyVAL.node = binary_op.NewNotIdentical(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = binary_op.NewNotIdentical(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 337: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1592 + //line parser/parser.y:1777 { - yyVAL.node = binary_op.NewEqual(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = binary_op.NewEqual(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 338: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1597 + //line parser/parser.y:1783 { - yyVAL.node = binary_op.NewNotEqual(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = binary_op.NewNotEqual(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 339: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1602 + //line parser/parser.y:1789 { - yyVAL.node = binary_op.NewSmaller(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = binary_op.NewSmaller(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 340: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1607 + //line parser/parser.y:1795 { - yyVAL.node = binary_op.NewSmallerOrEqual(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = binary_op.NewSmallerOrEqual(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 341: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1612 + //line parser/parser.y:1801 { - yyVAL.node = binary_op.NewGreater(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = binary_op.NewGreater(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 342: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1617 + //line parser/parser.y:1807 { - yyVAL.node = binary_op.NewGreaterOrEqual(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = binary_op.NewGreaterOrEqual(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 343: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1622 + //line parser/parser.y:1813 { - yyVAL.node = binary_op.NewSpaceship(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = binary_op.NewSpaceship(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 344: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1627 + //line parser/parser.y:1819 { - yyVAL.node = expr.NewInstanceOf(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = expr.NewInstanceOf(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 345: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1631 + //line parser/parser.y:1824 { yyVAL.node = yyDollar[2].node } case 346: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1632 + //line parser/parser.y:1825 { yyVAL.node = yyDollar[1].node } case 347: yyDollar = yyS[yypt-5 : yypt+1] - //line parser/parser.y:1634 + //line parser/parser.y:1827 { - yyVAL.node = expr.NewTernary(yyDollar[1].node, yyDollar[3].node, yyDollar[5].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[5].node)) + yyVAL.node = expr.NewTernary(yyDollar[1].node, yyDollar[3].node, yyDollar[5].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[5].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 348: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:1639 + //line parser/parser.y:1833 { - yyVAL.node = expr.NewTernary(yyDollar[1].node, nil, yyDollar[4].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) + yyVAL.node = expr.NewTernary(yyDollar[1].node, nil, yyDollar[4].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 349: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1644 + //line parser/parser.y:1839 { - yyVAL.node = binary_op.NewCoalesce(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = binary_op.NewCoalesce(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 350: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1648 + //line parser/parser.y:1844 { yyVAL.node = yyDollar[1].node } case 351: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1650 + //line parser/parser.y:1846 { - yyVAL.node = cast.NewCastInt(yyDollar[2].node).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + yyVAL.node = cast.NewCastInt(yyDollar[2].node) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 352: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1655 + //line parser/parser.y:1852 { - yyVAL.node = cast.NewCastDouble(yyDollar[2].node).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + yyVAL.node = cast.NewCastDouble(yyDollar[2].node) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 353: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1660 + //line parser/parser.y:1858 { - yyVAL.node = cast.NewCastString(yyDollar[2].node).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + yyVAL.node = cast.NewCastString(yyDollar[2].node) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 354: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1665 + //line parser/parser.y:1864 { - yyVAL.node = cast.NewCastArray(yyDollar[2].node).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + yyVAL.node = cast.NewCastArray(yyDollar[2].node) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 355: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1670 + //line parser/parser.y:1870 { - yyVAL.node = cast.NewCastObject(yyDollar[2].node).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + yyVAL.node = cast.NewCastObject(yyDollar[2].node) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 356: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1675 + //line parser/parser.y:1876 { - yyVAL.node = cast.NewCastBool(yyDollar[2].node.SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node))) + yyVAL.node = cast.NewCastBool(yyDollar[2].node) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 357: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1680 + //line parser/parser.y:1882 { - yyVAL.node = cast.NewCastUnset(yyDollar[2].node).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + yyVAL.node = cast.NewCastUnset(yyDollar[2].node) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 358: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1685 + //line parser/parser.y:1888 { - yyVAL.node = expr.NewExit(yyDollar[2].node, strings.EqualFold(yyDollar[1].token.Value, "die")).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + yyVAL.node = expr.NewExit(yyDollar[2].node, strings.EqualFold(yyDollar[1].token.Value, "die")) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 359: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1690 + //line parser/parser.y:1894 { - yyVAL.node = expr.NewErrorSuppress(yyDollar[2].node).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + yyVAL.node = expr.NewErrorSuppress(yyDollar[2].node) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 360: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1694 + //line parser/parser.y:1899 { yyVAL.node = yyDollar[1].node } case 361: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1696 + //line parser/parser.y:1901 { - yyVAL.node = expr.NewShellExec(yyDollar[2].list).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + yyVAL.node = expr.NewShellExec(yyDollar[2].list) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 362: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1701 + //line parser/parser.y:1907 { - yyVAL.node = expr.NewPrint(yyDollar[2].node).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + yyVAL.node = expr.NewPrint(yyDollar[2].node) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 363: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1706 + //line parser/parser.y:1913 { - yyVAL.node = expr.NewYield(nil, nil).SetPosition(NewTokenPosition(yyDollar[1].token)) + yyVAL.node = expr.NewYield(nil, nil) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 364: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1711 + //line parser/parser.y:1919 { - yyVAL.node = expr.NewYield(nil, yyDollar[2].node).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + yyVAL.node = expr.NewYield(nil, yyDollar[2].node) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 365: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:1716 + //line parser/parser.y:1925 { - yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[4].node)) + yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[4].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 366: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1721 + //line parser/parser.y:1931 { - yyVAL.node = expr.NewYieldFrom(yyDollar[2].node).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + yyVAL.node = expr.NewYieldFrom(yyDollar[2].node) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 367: yyDollar = yyS[yypt-11 : yypt+1] - //line parser/parser.y:1726 + //line parser/parser.y:1937 { - yyVAL.node = expr.NewClosure(yyDollar[5].list, yyDollar[7].list, yyDollar[8].node, yyDollar[10].list, false, yyDollar[2].boolWithToken.value, yyDollar[3].str). - SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[11].token)) + yyVAL.node = expr.NewClosure(yyDollar[5].list, yyDollar[7].list, yyDollar[8].node, yyDollar[10].list, false, yyDollar[2].boolWithToken.value, yyDollar[3].str) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[11].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 368: yyDollar = yyS[yypt-12 : yypt+1] - //line parser/parser.y:1733 + //line parser/parser.y:1944 { - yyVAL.node = expr.NewClosure(yyDollar[6].list, yyDollar[8].list, yyDollar[9].node, yyDollar[11].list, true, yyDollar[3].boolWithToken.value, yyDollar[4].str). - SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[12].token)) + yyVAL.node = expr.NewClosure(yyDollar[6].list, yyDollar[8].list, yyDollar[9].node, yyDollar[11].list, true, yyDollar[3].boolWithToken.value, yyDollar[4].str) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[12].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 369: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:1742 + //line parser/parser.y:1953 { yyVAL.str = yylex.(*lexer).phpDocComment yylex.(*lexer).phpDocComment = "" } case 370: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:1746 + //line parser/parser.y:1957 { yyVAL.boolWithToken = boolWithToken{false, nil} } case 371: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1747 + //line parser/parser.y:1958 { yyVAL.boolWithToken = boolWithToken{true, &yyDollar[1].token} } case 372: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:1751 + //line parser/parser.y:1962 { yyVAL.list = []node.Node{} } case 373: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:1752 + //line parser/parser.y:1963 { yyVAL.list = yyDollar[3].list } case 374: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1756 + //line parser/parser.y:1967 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 375: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1757 + //line parser/parser.y:1968 { yyVAL.list = []node.Node{yyDollar[1].node} } case 376: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1762 + //line parser/parser.y:1973 { - identifier := node.NewIdentifier(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) - variable := expr.NewVariable(identifier).SetPosition(NewTokenPosition(yyDollar[1].token)) - yyVAL.node = expr.NewClusureUse(variable, false).SetPosition(NewTokenPosition(yyDollar[1].token)) + identifier := node.NewIdentifier(yyDollar[1].token.Value) + positions.AddPosition(identifier, NewTokenPosition(yyDollar[1].token)) + variable := expr.NewVariable(identifier) + positions.AddPosition(variable, NewTokenPosition(yyDollar[1].token)) + yyVAL.node = expr.NewClusureUse(variable, false) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(identifier, yyDollar[1].token.Comments()) comments.AddComments(variable, yyDollar[1].token.Comments()) @@ -4696,11 +4910,14 @@ yydefault: } case 377: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1772 + //line parser/parser.y:1986 { - identifier := node.NewIdentifier(yyDollar[2].token.Value).SetPosition(NewTokenPosition(yyDollar[2].token)) - variable := expr.NewVariable(identifier).SetPosition(NewTokenPosition(yyDollar[2].token)) - yyVAL.node = expr.NewClusureUse(variable, true).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) + identifier := node.NewIdentifier(yyDollar[2].token.Value) + positions.AddPosition(identifier, NewTokenPosition(yyDollar[2].token)) + variable := expr.NewVariable(identifier) + positions.AddPosition(variable, NewTokenPosition(yyDollar[2].token)) + yyVAL.node = expr.NewClusureUse(variable, true) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) comments.AddComments(identifier, yyDollar[2].token.Comments()) comments.AddComments(variable, yyDollar[1].token.Comments()) @@ -4708,502 +4925,547 @@ yydefault: } case 378: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1785 + //line parser/parser.y:2002 { - yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].nodesWithEndToken.nodes).SetPosition(NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].nodesWithEndToken.endToken)) + yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].nodesWithEndToken.nodes) + positions.AddPosition(yyVAL.node, NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].nodesWithEndToken.endToken)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 379: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:1790 + //line parser/parser.y:2008 { - yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].nodesWithEndToken.nodes).SetPosition(NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].nodesWithEndToken.endToken)) + yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].nodesWithEndToken.nodes) + positions.AddPosition(yyVAL.node, NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].nodesWithEndToken.endToken)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 380: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:1795 + //line parser/parser.y:2014 { - yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].nodesWithEndToken.nodes).SetPosition(NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].nodesWithEndToken.endToken)) + yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].nodesWithEndToken.nodes) + positions.AddPosition(yyVAL.node, NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].nodesWithEndToken.endToken)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 381: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1800 + //line parser/parser.y:2020 { - yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].nodesWithEndToken.nodes).SetPosition(NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].nodesWithEndToken.endToken)) + yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].nodesWithEndToken.nodes) + positions.AddPosition(yyVAL.node, NewNodeTokenPosition(yyDollar[1].node, yyDollar[2].nodesWithEndToken.endToken)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 382: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1808 + //line parser/parser.y:2029 { - yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 383: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1812 + //line parser/parser.y:2034 { yyVAL.node = yyDollar[1].node } case 384: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1816 + //line parser/parser.y:2038 { yyVAL.node = yyDollar[1].node } case 385: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1817 + //line parser/parser.y:2039 { yyVAL.node = yyDollar[1].node } case 386: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:1821 + //line parser/parser.y:2043 { yyVAL.node = nil } case 387: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1822 + //line parser/parser.y:2044 { yyVAL.node = yyDollar[2].node } case 388: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:1826 + //line parser/parser.y:2048 { yyVAL.list = []node.Node{} } case 389: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1827 + //line parser/parser.y:2049 { yyVAL.list = []node.Node{scalar.NewEncapsedStringPart(yyDollar[1].token.Value)} } case 390: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1828 + //line parser/parser.y:2050 { yyVAL.list = yyDollar[1].list } case 391: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:1832 + //line parser/parser.y:2054 { yyVAL.nodesWithEndToken = nil } case 392: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1833 + //line parser/parser.y:2055 { yyVAL.nodesWithEndToken = yyDollar[1].nodesWithEndToken } case 393: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:1838 + //line parser/parser.y:2060 { - yyVAL.node = expr.NewArray(yyDollar[3].list).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + yyVAL.node = expr.NewArray(yyDollar[3].list) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 394: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1843 + //line parser/parser.y:2066 { - yyVAL.node = expr.NewShortArray(yyDollar[2].list).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + yyVAL.node = expr.NewShortArray(yyDollar[2].list) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 395: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1848 + //line parser/parser.y:2072 { - yyVAL.node = scalar.NewString(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) + yyVAL.node = scalar.NewString(yyDollar[1].token.Value) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 396: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1856 + //line parser/parser.y:2081 { - yyVAL.node = scalar.NewLnumber(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) + yyVAL.node = scalar.NewLnumber(yyDollar[1].token.Value) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 397: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1861 + //line parser/parser.y:2087 { - yyVAL.node = scalar.NewDnumber(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) + yyVAL.node = scalar.NewDnumber(yyDollar[1].token.Value) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 398: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1866 + //line parser/parser.y:2093 { - yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) + yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 399: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1871 + //line parser/parser.y:2099 { - yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) + yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 400: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1876 + //line parser/parser.y:2105 { - yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) + yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 401: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1881 + //line parser/parser.y:2111 { - yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) + yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 402: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1886 + //line parser/parser.y:2117 { - yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) + yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 403: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1891 + //line parser/parser.y:2123 { - yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) + yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 404: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1896 + //line parser/parser.y:2129 { - yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) + yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 405: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1901 + //line parser/parser.y:2135 { - yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) + yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 406: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1906 + //line parser/parser.y:2141 { - yyVAL.node = scalar.NewString(yyDollar[2].token.Value).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) /* TODO: mark as Heredoc*/ + yyVAL.node = scalar.NewString(yyDollar[2].token.Value) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) /* TODO: mark as Heredoc*/ comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 407: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1910 + //line parser/parser.y:2146 { - yyVAL.node = scalar.NewEncapsed(nil).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) + yyVAL.node = scalar.NewEncapsed(nil) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 408: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1915 + //line parser/parser.y:2152 { - yyVAL.node = scalar.NewEncapsed(yyDollar[2].list).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + yyVAL.node = scalar.NewEncapsed(yyDollar[2].list) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 409: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1920 + //line parser/parser.y:2158 { - yyVAL.node = scalar.NewEncapsed(yyDollar[2].list).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + yyVAL.node = scalar.NewEncapsed(yyDollar[2].list) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 410: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1924 + //line parser/parser.y:2163 { yyVAL.node = yyDollar[1].node } case 411: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1925 + //line parser/parser.y:2164 { yyVAL.node = yyDollar[1].node } case 412: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1930 + //line parser/parser.y:2169 { - yyVAL.node = expr.NewConstFetch(yyDollar[1].node).SetPosition(NewNodePosition(yyDollar[1].node)) + yyVAL.node = expr.NewConstFetch(yyDollar[1].node) + positions.AddPosition(yyVAL.node, NewNodePosition(yyDollar[1].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 413: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1935 + //line parser/parser.y:2175 { - target := node.NewIdentifier(yyDollar[3].token.Value).SetPosition(NewTokenPosition(yyDollar[3].token)) - yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target).SetPosition(NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) + target := node.NewIdentifier(yyDollar[3].token.Value) + positions.AddPosition(target, NewTokenPosition(yyDollar[3].token)) + yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) + positions.AddPosition(yyVAL.node, NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) comments.AddComments(target, yyDollar[3].token.Comments()) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 414: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1943 + //line parser/parser.y:2185 { - target := node.NewIdentifier(yyDollar[3].token.Value).SetPosition(NewTokenPosition(yyDollar[3].token)) - yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target).SetPosition(NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) + target := node.NewIdentifier(yyDollar[3].token.Value) + positions.AddPosition(target, NewTokenPosition(yyDollar[3].token)) + yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, target) + positions.AddPosition(yyVAL.node, NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token)) comments.AddComments(target, yyDollar[3].token.Comments()) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 415: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1953 + //line parser/parser.y:2197 { yyVAL.node = yyDollar[1].node } case 416: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1954 + //line parser/parser.y:2198 { yyVAL.node = yyDollar[1].node } case 417: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:1958 + //line parser/parser.y:2202 { yyVAL.node = nil } case 418: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1959 + //line parser/parser.y:2203 { yyVAL.node = yyDollar[1].node } case 419: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1963 + //line parser/parser.y:2207 { yyVAL.node = yyDollar[1].node } case 420: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1967 + //line parser/parser.y:2211 { yyVAL.node = yyDollar[1].node } case 421: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1968 + //line parser/parser.y:2212 { yyVAL.node = yyDollar[2].node } case 422: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1969 + //line parser/parser.y:2213 { yyVAL.node = yyDollar[1].node } case 423: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1973 + //line parser/parser.y:2217 { yyVAL.node = yyDollar[1].node } case 424: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1974 + //line parser/parser.y:2218 { yyVAL.node = yyDollar[2].node } case 425: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1975 + //line parser/parser.y:2219 { yyVAL.node = yyDollar[1].node } case 426: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1979 + //line parser/parser.y:2223 { yyVAL.node = yyDollar[1].node } case 427: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:1981 + //line parser/parser.y:2225 { - yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) + yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 428: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:1986 + //line parser/parser.y:2231 { - yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) + yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 429: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:1991 + //line parser/parser.y:2237 { - yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) + yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 430: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:1996 + //line parser/parser.y:2243 { - yyVAL.node = expr.NewMethodCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].nodesWithEndToken.nodes).SetPosition(NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].nodesWithEndToken.endToken)) + yyVAL.node = expr.NewMethodCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].nodesWithEndToken.nodes) + positions.AddPosition(yyVAL.node, NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].nodesWithEndToken.endToken)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 431: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:2000 + //line parser/parser.y:2248 { yyVAL.node = yyDollar[1].node } case 432: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:2004 + //line parser/parser.y:2252 { yyVAL.node = yyDollar[1].node } case 433: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:2005 + //line parser/parser.y:2253 { yyVAL.node = yyDollar[1].node } case 434: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:2007 + //line parser/parser.y:2255 { - yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 435: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:2015 + //line parser/parser.y:2264 { - name := node.NewIdentifier(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) - yyVAL.node = expr.NewVariable(name).SetPosition(NewTokenPosition(yyDollar[1].token)) + name := node.NewIdentifier(yyDollar[1].token.Value) + positions.AddPosition(name, NewTokenPosition(yyDollar[1].token)) + yyVAL.node = expr.NewVariable(name) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(name, yyDollar[1].token.Comments()) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 436: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:2023 + //line parser/parser.y:2274 { - yyVAL.node = expr.NewVariable(yyDollar[3].node).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + yyVAL.node = expr.NewVariable(yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 437: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:2028 + //line parser/parser.y:2280 { - yyVAL.node = expr.NewVariable(yyDollar[2].node).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + yyVAL.node = expr.NewVariable(yyDollar[2].node) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 438: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:2036 + //line parser/parser.y:2289 { - yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 439: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:2041 + //line parser/parser.y:2295 { - yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 440: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:2048 + //line parser/parser.y:2303 { yyVAL.node = yyDollar[1].node } case 441: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:2050 + //line parser/parser.y:2305 { - yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) + yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 442: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:2055 + //line parser/parser.y:2311 { - yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) + yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 443: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:2060 + //line parser/parser.y:2317 { - yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 444: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:2065 + //line parser/parser.y:2323 { - yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 445: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:2070 + //line parser/parser.y:2329 { - yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 446: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:2078 + //line parser/parser.y:2338 { - yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 447: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:2082 + //line parser/parser.y:2343 { yyVAL.node = yyDollar[2].node } case 448: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:2083 + //line parser/parser.y:2344 { yyVAL.node = yyDollar[1].node } case 449: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:2088 + //line parser/parser.y:2349 { - yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) + yyVAL.node = node.NewIdentifier(yyDollar[1].token.Value) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 450: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:2092 + //line parser/parser.y:2354 { yyVAL.node = yyDollar[2].node } case 451: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:2093 + //line parser/parser.y:2355 { yyVAL.node = yyDollar[1].node } case 452: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:2098 + //line parser/parser.y:2360 { if yyDollar[1].list[len(yyDollar[1].list)-1] == nil { yyVAL.list = yyDollar[1].list[:len(yyDollar[1].list)-1] @@ -5213,125 +5475,138 @@ yydefault: } case 453: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:2108 + //line parser/parser.y:2370 { yyVAL.node = nil } case 454: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:2109 + //line parser/parser.y:2371 { yyVAL.node = yyDollar[1].node } case 455: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:2114 + //line parser/parser.y:2376 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 456: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:2115 + //line parser/parser.y:2377 { yyVAL.list = []node.Node{yyDollar[1].node} } case 457: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:2120 + //line parser/parser.y:2382 { - yyVAL.node = expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node, false).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) + yyVAL.node = expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node, false) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[3].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 458: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:2125 + //line parser/parser.y:2388 { - yyVAL.node = expr.NewArrayItem(nil, yyDollar[1].node, false).SetPosition(NewNodePosition(yyDollar[1].node)) + yyVAL.node = expr.NewArrayItem(nil, yyDollar[1].node, false) + positions.AddPosition(yyVAL.node, NewNodePosition(yyDollar[1].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 459: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:2130 + //line parser/parser.y:2394 { - yyVAL.node = expr.NewArrayItem(yyDollar[1].node, yyDollar[4].node, true).SetPosition(NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) + yyVAL.node = expr.NewArrayItem(yyDollar[1].node, yyDollar[4].node, true) + positions.AddPosition(yyVAL.node, NewNodesPosition(yyDollar[1].node, yyDollar[4].node)) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 460: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:2135 + //line parser/parser.y:2400 { - yyVAL.node = expr.NewArrayItem(nil, yyDollar[2].node, true).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + yyVAL.node = expr.NewArrayItem(nil, yyDollar[2].node, true) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 461: yyDollar = yyS[yypt-6 : yypt+1] - //line parser/parser.y:2140 + //line parser/parser.y:2406 { // TODO: Cannot use list() as standalone expression - list := expr.NewList(yyDollar[5].list).SetPosition(NewTokensPosition(yyDollar[3].token, yyDollar[6].token)) - yyVAL.node = expr.NewArrayItem(yyDollar[1].node, list, false). - SetPosition(NewNodeTokenPosition(yyDollar[1].node, yyDollar[6].token)) + list := expr.NewList(yyDollar[5].list) + positions.AddPosition(list, NewTokensPosition(yyDollar[3].token, yyDollar[6].token)) + yyVAL.node = expr.NewArrayItem(yyDollar[1].node, list, false) + positions.AddPosition(yyVAL.node, NewNodeTokenPosition(yyDollar[1].node, yyDollar[6].token)) comments.AddComments(list, yyDollar[3].token.Comments()) comments.AddComments(yyVAL.node, comments[yyDollar[1].node]) } case 462: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:2150 + //line parser/parser.y:2417 { // TODO: Cannot use list() as standalone expression - list := expr.NewList(yyDollar[3].list).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) - yyVAL.node = expr.NewArrayItem(nil, list, false). - SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + list := expr.NewList(yyDollar[3].list) + positions.AddPosition(list, NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + yyVAL.node = expr.NewArrayItem(nil, list, false) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) comments.AddComments(list, yyDollar[1].token.Comments()) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 463: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:2162 + //line parser/parser.y:2430 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 464: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:2164 + //line parser/parser.y:2432 { - encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value).SetPosition(NewTokenPosition(yyDollar[2].token)) + encapsed := scalar.NewEncapsedStringPart(yyDollar[2].token.Value) + positions.AddPosition(encapsed, NewTokenPosition(yyDollar[2].token)) yyVAL.list = append(yyDollar[1].list, encapsed) comments.AddComments(encapsed, yyDollar[2].token.Comments()) } case 465: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:2169 + //line parser/parser.y:2438 { yyVAL.list = []node.Node{yyDollar[1].node} } case 466: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:2171 + //line parser/parser.y:2440 { - encapsed := scalar.NewEncapsedStringPart(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) + encapsed := scalar.NewEncapsedStringPart(yyDollar[1].token.Value) + positions.AddPosition(encapsed, NewTokenPosition(yyDollar[1].token)) yyVAL.list = []node.Node{encapsed, yyDollar[2].node} comments.AddComments(encapsed, yyDollar[1].token.Comments()) } case 467: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:2180 + //line parser/parser.y:2450 { - name := node.NewIdentifier(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) - yyVAL.node = expr.NewVariable(name).SetPosition(NewTokenPosition(yyDollar[1].token)) + name := node.NewIdentifier(yyDollar[1].token.Value) + positions.AddPosition(name, NewTokenPosition(yyDollar[1].token)) + yyVAL.node = expr.NewVariable(name) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(name, yyDollar[1].token.Comments()) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 468: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:2188 + //line parser/parser.y:2460 { - identifier := node.NewIdentifier(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) - variable := expr.NewVariable(identifier).SetPosition(NewTokenPosition(yyDollar[1].token)) - yyVAL.node = expr.NewArrayDimFetch(variable, yyDollar[3].node).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + identifier := node.NewIdentifier(yyDollar[1].token.Value) + positions.AddPosition(identifier, NewTokenPosition(yyDollar[1].token)) + variable := expr.NewVariable(identifier) + positions.AddPosition(variable, NewTokenPosition(yyDollar[1].token)) + yyVAL.node = expr.NewArrayDimFetch(variable, yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) comments.AddComments(identifier, yyDollar[1].token.Comments()) comments.AddComments(variable, yyDollar[1].token.Comments()) @@ -5339,13 +5614,16 @@ yydefault: } case 469: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:2198 + //line parser/parser.y:2473 { - identifier := node.NewIdentifier(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) - variable := expr.NewVariable(identifier).SetPosition(NewTokenPosition(yyDollar[1].token)) - fetch := node.NewIdentifier(yyDollar[3].token.Value).SetPosition(NewTokenPosition(yyDollar[3].token)) - yyVAL.node = expr.NewPropertyFetch(variable, fetch). - SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + identifier := node.NewIdentifier(yyDollar[1].token.Value) + positions.AddPosition(identifier, NewTokenPosition(yyDollar[1].token)) + variable := expr.NewVariable(identifier) + positions.AddPosition(variable, NewTokenPosition(yyDollar[1].token)) + fetch := node.NewIdentifier(yyDollar[3].token.Value) + positions.AddPosition(fetch, NewTokenPosition(yyDollar[3].token)) + yyVAL.node = expr.NewPropertyFetch(variable, fetch) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) comments.AddComments(identifier, yyDollar[1].token.Comments()) comments.AddComments(variable, yyDollar[1].token.Comments()) @@ -5354,28 +5632,34 @@ yydefault: } case 470: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:2211 + //line parser/parser.y:2489 { - yyVAL.node = expr.NewVariable(yyDollar[2].node).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + yyVAL.node = expr.NewVariable(yyDollar[2].node) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 471: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:2216 + //line parser/parser.y:2495 { - name := node.NewIdentifier(yyDollar[2].token.Value).SetPosition(NewTokenPosition(yyDollar[2].token)) - yyVAL.node = expr.NewVariable(name).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) + name := node.NewIdentifier(yyDollar[2].token.Value) + positions.AddPosition(name, NewTokenPosition(yyDollar[2].token)) + yyVAL.node = expr.NewVariable(name) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[3].token)) comments.AddComments(name, yyDollar[2].token.Comments()) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 472: yyDollar = yyS[yypt-6 : yypt+1] - //line parser/parser.y:2224 + //line parser/parser.y:2505 { - identifier := node.NewIdentifier(yyDollar[2].token.Value).SetPosition(NewTokenPosition(yyDollar[2].token)) - variable := expr.NewVariable(identifier).SetPosition(NewTokenPosition(yyDollar[2].token)) - yyVAL.node = expr.NewArrayDimFetch(variable, yyDollar[4].node).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[6].token)) + identifier := node.NewIdentifier(yyDollar[2].token.Value) + positions.AddPosition(identifier, NewTokenPosition(yyDollar[2].token)) + variable := expr.NewVariable(identifier) + positions.AddPosition(variable, NewTokenPosition(yyDollar[2].token)) + yyVAL.node = expr.NewArrayDimFetch(variable, yyDollar[4].node) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[6].token)) comments.AddComments(identifier, yyDollar[2].token.Comments()) comments.AddComments(variable, yyDollar[1].token.Comments()) @@ -5383,121 +5667,135 @@ yydefault: } case 473: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:2234 + //line parser/parser.y:2518 { yyVAL.node = yyDollar[2].node } case 474: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:2238 + //line parser/parser.y:2522 { - yyVAL.node = scalar.NewString(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) + yyVAL.node = scalar.NewString(yyDollar[1].token.Value) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 475: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:2243 + //line parser/parser.y:2528 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(yyDollar[1].token.Value); err == nil { - yyVAL.node = scalar.NewLnumber(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) + yyVAL.node = scalar.NewLnumber(yyDollar[1].token.Value) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) } else { - yyVAL.node = scalar.NewString(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) + yyVAL.node = scalar.NewString(yyDollar[1].token.Value) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) } comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 476: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:2253 + //line parser/parser.y:2540 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(yyDollar[2].token.Value); err == nil { - lnumber := scalar.NewLnumber(yyDollar[2].token.Value).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) - yyVAL.node = expr.NewUnaryMinus(lnumber). - SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) + lnumber := scalar.NewLnumber(yyDollar[2].token.Value) + positions.AddPosition(lnumber, NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) + yyVAL.node = expr.NewUnaryMinus(lnumber) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) comments.AddComments(lnumber, yyDollar[1].token.Comments()) } else { yyDollar[2].token.Value = "-" + yyDollar[2].token.Value - yyVAL.node = scalar.NewString(yyDollar[2].token.Value).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) + yyVAL.node = scalar.NewString(yyDollar[2].token.Value) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[2].token)) } comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 477: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:2269 + //line parser/parser.y:2558 { - identifier := node.NewIdentifier(yyDollar[1].token.Value).SetPosition(NewTokenPosition(yyDollar[1].token)) - yyVAL.node = expr.NewVariable(identifier).SetPosition(NewTokenPosition(yyDollar[1].token)) + identifier := node.NewIdentifier(yyDollar[1].token.Value) + positions.AddPosition(identifier, NewTokenPosition(yyDollar[1].token)) + yyVAL.node = expr.NewVariable(identifier) + positions.AddPosition(yyVAL.node, NewTokenPosition(yyDollar[1].token)) comments.AddComments(identifier, yyDollar[1].token.Comments()) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 478: yyDollar = yyS[yypt-5 : yypt+1] - //line parser/parser.y:2280 + //line parser/parser.y:2571 { - yyVAL.node = expr.NewIsset(yyDollar[3].list).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[5].token)) + yyVAL.node = expr.NewIsset(yyDollar[3].list) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[5].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 479: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:2285 + //line parser/parser.y:2577 { - yyVAL.node = expr.NewEmpty(yyDollar[3].node).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + yyVAL.node = expr.NewEmpty(yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 480: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:2290 + //line parser/parser.y:2583 { - yyVAL.node = expr.NewInclude(yyDollar[2].node).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + yyVAL.node = expr.NewInclude(yyDollar[2].node) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 481: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:2295 + //line parser/parser.y:2589 { - yyVAL.node = expr.NewIncludeOnce(yyDollar[2].node).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + yyVAL.node = expr.NewIncludeOnce(yyDollar[2].node) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 482: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:2300 + //line parser/parser.y:2595 { - yyVAL.node = expr.NewEval(yyDollar[3].node).SetPosition(NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) + yyVAL.node = expr.NewEval(yyDollar[3].node) + positions.AddPosition(yyVAL.node, NewTokensPosition(yyDollar[1].token, yyDollar[4].token)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 483: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:2305 + //line parser/parser.y:2601 { - yyVAL.node = expr.NewRequire(yyDollar[2].node).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + yyVAL.node = expr.NewRequire(yyDollar[2].node) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 484: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:2310 + //line parser/parser.y:2607 { - yyVAL.node = expr.NewRequireOnce(yyDollar[2].node).SetPosition(NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) + yyVAL.node = expr.NewRequireOnce(yyDollar[2].node) + positions.AddPosition(yyVAL.node, NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node)) comments.AddComments(yyVAL.node, yyDollar[1].token.Comments()) } case 485: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:2317 + //line parser/parser.y:2615 { yyVAL.list = []node.Node{yyDollar[1].node} } case 486: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:2318 + //line parser/parser.y:2616 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 487: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:2322 + //line parser/parser.y:2620 { yyVAL.node = yyDollar[1].node } diff --git a/parser/parser.y b/parser/parser.y index d7eb5fe..fb481f5 100644 --- a/parser/parser.y +++ b/parser/parser.y @@ -15,18 +15,21 @@ import ( "github.com/z7zmey/php-parser/node/expr/binary_op" "github.com/z7zmey/php-parser/node/expr/cast" "github.com/z7zmey/php-parser/comment" + "github.com/z7zmey/php-parser/position" ) var rootnode node.Node var comments comment.Comments +var positions position.Positions -func Parse(src io.Reader, fName string) (node.Node, comment.Comments) { +func Parse(src io.Reader, fName string) (node.Node, comment.Comments, position.Positions) { yyDebug = 0 yyErrorVerbose = true rootnode = stmt.NewStmtList([]node.Node{}) //reset comments = comment.Comments{} + positions = position.Positions{} yyParse(newLexer(src, fName)) - return rootnode, comments + return rootnode, comments, positions } func ListGetFirstNodeComments(list []node.Node) []comment.Comment { @@ -288,7 +291,7 @@ start: top_statement_list { rootnode = stmt.NewStmtList($1) - rootnode.SetPosition(NewNodeListPosition($1)) + positions.AddPosition(rootnode, NewNodeListPosition($1)) } ; @@ -320,13 +323,15 @@ top_statement_list: namespace_name: T_STRING { - namePart := name.NewNamePart($1.Value).SetPosition(NewTokenPosition($1)) + namePart := name.NewNamePart($1.Value) + positions.AddPosition(namePart, NewTokenPosition($1)) $$ = []node.Node{namePart} comments.AddComments(namePart, $1.Comments()) } | namespace_name T_NS_SEPARATOR T_STRING { - namePart := name.NewNamePart($3.Value).SetPosition(NewTokenPosition($3)) + namePart := name.NewNamePart($3.Value) + positions.AddPosition(namePart, NewTokenPosition($3)) $$ = append($1, namePart) comments.AddComments(namePart, $3.Comments()) } @@ -335,17 +340,20 @@ namespace_name: name: namespace_name { - $$ = name.NewName($1).SetPosition(NewNodeListPosition($1)) + $$ = name.NewName($1) + positions.AddPosition($$, NewNodeListPosition($1)) comments.AddComments($$, ListGetFirstNodeComments($1)) } | T_NAMESPACE T_NS_SEPARATOR namespace_name { - $$ = name.NewRelative($3).SetPosition(NewTokenNodeListPosition($1, $3)) + $$ = name.NewRelative($3) + positions.AddPosition($$, NewTokenNodeListPosition($1, $3)) comments.AddComments($$, $1.Comments()) } | T_NS_SEPARATOR namespace_name { - $$ = name.NewFullyQualified($2).SetPosition(NewTokenNodeListPosition($1, $2)) + $$ = name.NewFullyQualified($2) + positions.AddPosition($$, NewTokenNodeListPosition($1, $2)) comments.AddComments($$, $1.Comments()) } ; @@ -359,38 +367,43 @@ top_statement: | T_HALT_COMPILER '(' ')' ';' { $$ = stmt.NewHaltCompiler() } | T_NAMESPACE namespace_name ';' { - name := name.NewName($2).SetPosition(NewNodeListPosition($2)) - $$ = stmt.NewNamespace(name, nil). - SetPosition(NewTokensPosition($1, $3)) + name := name.NewName($2) + positions.AddPosition(name, NewNodeListPosition($2)) + $$ = stmt.NewNamespace(name, nil) + positions.AddPosition($$, NewTokensPosition($1, $3)) comments.AddComments(name, ListGetFirstNodeComments($2)) comments.AddComments($$, $1.Comments()) } | T_NAMESPACE namespace_name '{' top_statement_list '}' { - name := name.NewName($2).SetPosition(NewNodeListPosition($2)) - $$ = stmt.NewNamespace(name, $4). - SetPosition(NewTokensPosition($1, $5)) + name := name.NewName($2) + positions.AddPosition(name, NewNodeListPosition($2)) + $$ = stmt.NewNamespace(name, $4) + positions.AddPosition($$, NewTokensPosition($1, $5)) comments.AddComments(name, ListGetFirstNodeComments($2)) comments.AddComments($$, $1.Comments()) } | T_NAMESPACE '{' top_statement_list '}' { - $$ = stmt.NewNamespace(nil, $3).SetPosition(NewTokensPosition($1, $4)) + $$ = stmt.NewNamespace(nil, $3) + positions.AddPosition($$, NewTokensPosition($1, $4)) comments.AddComments($$, $1.Comments()) } | T_USE mixed_group_use_declaration ';' { $$ = $2 } | T_USE use_type group_use_declaration ';' { $$ = $3.(*stmt.GroupUse).SetUseType($2) } | T_USE use_declarations ';' { - $$ = stmt.NewUseList(nil, $2).SetPosition(NewTokensPosition($1, $3)) + $$ = stmt.NewUseList(nil, $2) + positions.AddPosition($$, NewTokensPosition($1, $3)) comments.AddComments($$, $1.Comments()) } | T_USE use_type use_declarations ';' { $$ = stmt.NewUseList($2, $3) } | T_CONST const_list ';' { - $$ = stmt.NewConstList($2).SetPosition(NewTokensPosition($1, $3)) + $$ = stmt.NewConstList($2) + positions.AddPosition($$, NewTokensPosition($1, $3)) comments.AddComments($$, $1.Comments()) } ; @@ -398,12 +411,14 @@ top_statement: use_type: T_FUNCTION { - $$ = node.NewIdentifier($1.Value).SetPosition(NewTokenPosition($1)) + $$ = node.NewIdentifier($1.Value) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments($$, $1.Comments()) } | T_CONST { - $$ = node.NewIdentifier($1.Value).SetPosition(NewTokenPosition($1)) + $$ = node.NewIdentifier($1.Value) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments($$, $1.Comments()) } ; @@ -411,18 +426,20 @@ use_type: group_use_declaration: namespace_name T_NS_SEPARATOR '{' unprefixed_use_declarations possible_comma '}' { - name := name.NewName($1).SetPosition(NewNodeListPosition($1)) - $$ = stmt.NewGroupUse(nil, name, $4). - SetPosition(NewNodeListTokenPosition($1, $6)) + name := name.NewName($1) + positions.AddPosition(name, NewNodeListPosition($1)) + $$ = stmt.NewGroupUse(nil, name, $4) + positions.AddPosition($$, NewNodeListTokenPosition($1, $6)) comments.AddComments(name, ListGetFirstNodeComments($1)) comments.AddComments($$, ListGetFirstNodeComments($1)) } | T_NS_SEPARATOR namespace_name T_NS_SEPARATOR '{' unprefixed_use_declarations possible_comma '}' { - name := name.NewName($2).SetPosition(NewNodeListPosition($2)) - $$ = stmt.NewGroupUse(nil, name, $5). - SetPosition(NewTokensPosition($1, $7)) + name := name.NewName($2) + positions.AddPosition(name, NewNodeListPosition($2)) + $$ = stmt.NewGroupUse(nil, name, $5) + positions.AddPosition($$, NewTokensPosition($1, $7)) comments.AddComments(name, ListGetFirstNodeComments($2)) comments.AddComments($$, $1.Comments()) @@ -432,18 +449,20 @@ group_use_declaration: mixed_group_use_declaration: namespace_name T_NS_SEPARATOR '{' inline_use_declarations possible_comma '}' { - name := name.NewName($1).SetPosition(NewNodeListPosition($1)) - $$ = stmt.NewGroupUse(nil, name, $4). - SetPosition(NewNodeListTokenPosition($1, $6)) + name := name.NewName($1) + positions.AddPosition(name, NewNodeListPosition($1)) + $$ = stmt.NewGroupUse(nil, name, $4) + positions.AddPosition($$, NewNodeListTokenPosition($1, $6)) comments.AddComments(name, ListGetFirstNodeComments($1)) comments.AddComments($$, ListGetFirstNodeComments($1)) } | T_NS_SEPARATOR namespace_name T_NS_SEPARATOR '{' inline_use_declarations possible_comma '}' { - name := name.NewName($2).SetPosition(NewNodeListPosition($2)) - $$ = stmt.NewGroupUse(nil, name, $5). - SetPosition(NewTokensPosition($1, $7)) + name := name.NewName($2) + positions.AddPosition(name, NewNodeListPosition($2)) + $$ = stmt.NewGroupUse(nil, name, $5) + positions.AddPosition($$, NewTokensPosition($1, $7)) comments.AddComments(name, ListGetFirstNodeComments($2)) comments.AddComments($$, $1.Comments()) @@ -480,17 +499,22 @@ inline_use_declaration: unprefixed_use_declaration: namespace_name { - name := name.NewName($1).SetPosition(NewNodeListPosition($1)) - $$ = stmt.NewUse(nil, name, nil).SetPosition(NewNodeListPosition($1)) + name := name.NewName($1) + positions.AddPosition(name, NewNodeListPosition($1)) + $$ = stmt.NewUse(nil, name, nil) + positions.AddPosition($$, NewNodeListPosition($1)) comments.AddComments(name, ListGetFirstNodeComments($1)) comments.AddComments($$, ListGetFirstNodeComments($1)) } | namespace_name T_AS T_STRING { - name := name.NewName($1).SetPosition(NewNodeListPosition($1)) - alias := node.NewIdentifier($3.Value).SetPosition(NewTokenPosition($3)) - $$ = stmt.NewUse(nil, name, alias).SetPosition(NewNodeListTokenPosition($1, $3)) + name := name.NewName($1) + positions.AddPosition(name, NewNodeListPosition($1)) + alias := node.NewIdentifier($3.Value) + positions.AddPosition(alias, NewTokenPosition($3)) + $$ = stmt.NewUse(nil, name, alias) + positions.AddPosition($$, NewNodeListTokenPosition($1, $3)) comments.AddComments(name, ListGetFirstNodeComments($1)) comments.AddComments(alias, $3.Comments()) @@ -521,130 +545,156 @@ inner_statement: | interface_declaration_statement { $$ = $1; } | T_HALT_COMPILER '(' ')' ';' { - $$ = stmt.NewHaltCompiler().SetPosition(NewTokensPosition($1, $4)) + $$ = stmt.NewHaltCompiler() + positions.AddPosition($$, NewTokensPosition($1, $4)) comments.AddComments($$, $1.Comments()) } statement: '{' inner_statement_list '}' { - $$ = stmt.NewStmtList($2).SetPosition(NewTokensPosition($1, $3)) + $$ = stmt.NewStmtList($2) + positions.AddPosition($$, NewTokensPosition($1, $3)) comments.AddComments($$, $1.Comments()) } | if_stmt { $$ = $1; } | alt_if_stmt { $$ = $1; } | T_WHILE '(' expr ')' while_statement { - $$ = stmt.NewWhile($1, $3, $5).SetPosition(NewTokenNodePosition($1, $5)) + $$ = stmt.NewWhile($1, $3, $5) + positions.AddPosition($$, NewTokenNodePosition($1, $5)) comments.AddComments($$, $1.Comments()) } | T_DO statement T_WHILE '(' expr ')' ';' { - $$ = stmt.NewDo($2, $5).SetPosition(NewTokensPosition($1, $7)) + $$ = stmt.NewDo($2, $5) + positions.AddPosition($$, NewTokensPosition($1, $7)) comments.AddComments($$, $1.Comments()) } | T_FOR '(' for_exprs ';' for_exprs ';' for_exprs ')' for_statement { - $$ = stmt.NewFor($3, $5, $7, $9).SetPosition(NewTokenNodePosition($1, $9)) + $$ = stmt.NewFor($3, $5, $7, $9) + positions.AddPosition($$, NewTokenNodePosition($1, $9)) comments.AddComments($$, $1.Comments()) } | T_SWITCH '(' expr ')' switch_case_list { - $$ = stmt.NewSwitch($1, $3, $5.nodes).SetPosition(NewTokensPosition($1, $5.endToken)) + $$ = stmt.NewSwitch($1, $3, $5.nodes) + positions.AddPosition($$, NewTokensPosition($1, $5.endToken)) comments.AddComments($$, $1.Comments()) } | T_BREAK optional_expr ';' { - $$ = stmt.NewBreak($2).SetPosition(NewTokensPosition($1, $3)) + $$ = stmt.NewBreak($2) + positions.AddPosition($$, NewTokensPosition($1, $3)) comments.AddComments($$, $1.Comments()) } | T_CONTINUE optional_expr ';' { - $$ = stmt.NewContinue($2).SetPosition(NewTokensPosition($1, $3)) + $$ = stmt.NewContinue($2) + positions.AddPosition($$, NewTokensPosition($1, $3)) comments.AddComments($$, $1.Comments()) } | T_RETURN optional_expr ';' { - $$ = stmt.NewReturn($2).SetPosition(NewTokensPosition($1, $3)) + $$ = stmt.NewReturn($2) + positions.AddPosition($$, NewTokensPosition($1, $3)) comments.AddComments($$, $1.Comments()) } | T_GLOBAL global_var_list ';' { - $$ = stmt.NewGlobal($2).SetPosition(NewTokensPosition($1, $3)) + $$ = stmt.NewGlobal($2) + positions.AddPosition($$, NewTokensPosition($1, $3)) comments.AddComments($$, $1.Comments()) } | T_STATIC static_var_list ';' { - $$ = stmt.NewStatic($2).SetPosition(NewTokensPosition($1, $3)) + $$ = stmt.NewStatic($2) + positions.AddPosition($$, NewTokensPosition($1, $3)) comments.AddComments($$, $1.Comments()) } | T_ECHO echo_expr_list ';' { - $$ = stmt.NewEcho($2).SetPosition(NewTokensPosition($1, $3)) + $$ = stmt.NewEcho($2) + positions.AddPosition($$, NewTokensPosition($1, $3)) comments.AddComments($$, $1.Comments()) } | T_INLINE_HTML { - $$ = stmt.NewInlineHtml($1.Value).SetPosition(NewTokenPosition($1)) + $$ = stmt.NewInlineHtml($1.Value) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments($$, $1.Comments()) } | expr ';' { - $$ = stmt.NewExpression($1).SetPosition(NewNodeTokenPosition($1, $2)) + $$ = stmt.NewExpression($1) + positions.AddPosition($$, NewNodeTokenPosition($1, $2)) comments.AddComments($$, comments[$1]) } | T_UNSET '(' unset_variables possible_comma ')' ';' { - $$ = stmt.NewUnset($3).SetPosition(NewTokensPosition($1, $6)) + $$ = stmt.NewUnset($3) + positions.AddPosition($$, NewTokensPosition($1, $6)) comments.AddComments($$, $1.Comments()) } | T_FOREACH '(' expr T_AS foreach_variable ')' foreach_statement { - $$ = stmt.NewForeach($3, nil, $5.node, $7, $5.byRef).SetPosition(NewTokenNodePosition($1, $7)) + $$ = stmt.NewForeach($3, nil, $5.node, $7, $5.byRef) + positions.AddPosition($$, NewTokenNodePosition($1, $7)) comments.AddComments($$, $1.Comments()) } | T_FOREACH '(' expr T_AS variable T_DOUBLE_ARROW foreach_variable ')' foreach_statement { - $$ = stmt.NewForeach($3, $5, $7.node, $9, $7.byRef).SetPosition(NewTokenNodePosition($1, $9)) + $$ = stmt.NewForeach($3, $5, $7.node, $9, $7.byRef) + positions.AddPosition($$, NewTokenNodePosition($1, $9)) comments.AddComments($$, $1.Comments()) } | T_DECLARE '(' const_list ')' declare_statement { - $$ = stmt.NewDeclare($3, $5).SetPosition(NewTokenNodePosition($1, $5)) + $$ = stmt.NewDeclare($3, $5) + positions.AddPosition($$, NewTokenNodePosition($1, $5)) comments.AddComments($$, $1.Comments()) } | ';' { - $$ = stmt.NewNop().SetPosition(NewTokenPosition($1)) + $$ = stmt.NewNop() + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments($$, $1.Comments()) } | T_TRY '{' inner_statement_list '}' catch_list finally_statement { if $6 == nil { - $$ = stmt.NewTry($3, $5, $6).SetPosition(NewTokenNodeListPosition($1, $5)) + $$ = stmt.NewTry($3, $5, $6) + positions.AddPosition($$, NewTokenNodeListPosition($1, $5)) } else { - $$ = stmt.NewTry($3, $5, $6).SetPosition(NewTokenNodePosition($1, $6)) + $$ = stmt.NewTry($3, $5, $6) + positions.AddPosition($$, NewTokenNodePosition($1, $6)) } comments.AddComments($$, $1.Comments()) } | T_THROW expr ';' { - $$ = stmt.NewThrow($2).SetPosition(NewTokensPosition($1, $3)) + $$ = stmt.NewThrow($2) + positions.AddPosition($$, NewTokensPosition($1, $3)) comments.AddComments($$, $1.Comments()) } | T_GOTO T_STRING ';' { - label := node.NewIdentifier($2.Value).SetPosition(NewTokenPosition($2)) - $$ = stmt.NewGoto(label).SetPosition(NewTokensPosition($1, $3)) + label := node.NewIdentifier($2.Value) + positions.AddPosition(label, NewTokenPosition($2)) + $$ = stmt.NewGoto(label) + positions.AddPosition($$, NewTokensPosition($1, $3)) comments.AddComments(label, $2.Comments()) comments.AddComments($$, $1.Comments()) } | T_STRING ':' { - label := node.NewIdentifier($1.Value).SetPosition(NewTokenPosition($1)) - $$ = stmt.NewLabel(label).SetPosition(NewTokensPosition($1, $2)) + label := node.NewIdentifier($1.Value) + positions.AddPosition(label, NewTokenPosition($1)) + $$ = stmt.NewLabel(label) + positions.AddPosition($$, NewTokensPosition($1, $2)) comments.AddComments(label, $1.Comments()) comments.AddComments($$, $1.Comments()) @@ -654,9 +704,12 @@ catch_list: /* empty */ { $$ = []node.Node{} } | catch_list T_CATCH '(' catch_name_list T_VARIABLE ')' '{' inner_statement_list '}' { - identifier := node.NewIdentifier($5.Value).SetPosition(NewTokenPosition($5)) - variable := expr.NewVariable(identifier).SetPosition(NewTokenPosition($5)) - catch := stmt.NewCatch($4, variable, $8).SetPosition(NewTokensPosition($2, $9)) + identifier := node.NewIdentifier($5.Value) + positions.AddPosition(identifier, NewTokenPosition($5)) + variable := expr.NewVariable(identifier) + positions.AddPosition(variable, NewTokenPosition($5)) + catch := stmt.NewCatch($4, variable, $8) + positions.AddPosition(catch, NewTokensPosition($2, $9)) $$ = append($1, catch) comments.AddComments(identifier, $5.Comments()) @@ -673,7 +726,8 @@ finally_statement: /* empty */ { $$ = nil } | T_FINALLY '{' inner_statement_list '}' { - $$ = stmt.NewFinally($3).SetPosition(NewTokensPosition($1, $4)) + $$ = stmt.NewFinally($3) + positions.AddPosition($$, NewTokensPosition($1, $4)) comments.AddComments($$, $1.Comments()) } ; @@ -690,9 +744,10 @@ unset_variable: function_declaration_statement: T_FUNCTION returns_ref T_STRING backup_doc_comment '(' parameter_list ')' return_type '{' inner_statement_list '}' { - name := node.NewIdentifier($3.Value).SetPosition(NewTokenPosition($3)) - $$ = stmt.NewFunction(name, $2.value, $6, $8, $10, $4). - SetPosition(NewTokensPosition($1, $11)) + name := node.NewIdentifier($3.Value) + positions.AddPosition(name, NewTokenPosition($3)) + $$ = stmt.NewFunction(name, $2.value, $6, $8, $10, $4) + positions.AddPosition($$, NewTokensPosition($1, $11)) comments.AddComments(name, $3.Comments()) comments.AddComments($$, $1.Comments()) @@ -712,18 +767,20 @@ is_variadic: class_declaration_statement: class_modifiers T_CLASS T_STRING extends_from implements_list backup_doc_comment '{' class_statement_list '}' { - name := node.NewIdentifier($3.Value).SetPosition(NewTokenPosition($3)) - $$ = stmt.NewClass(name, $1, nil, $4, $5, $8, $6). - SetPosition(NewOptionalListTokensPosition($1, $2, $9)) + name := node.NewIdentifier($3.Value) + positions.AddPosition(name, NewTokenPosition($3)) + $$ = stmt.NewClass(name, $1, nil, $4, $5, $8, $6) + positions.AddPosition($$, NewOptionalListTokensPosition($1, $2, $9)) comments.AddComments(name, $3.Comments()) comments.AddComments($$, ListGetFirstNodeComments($1)) } | T_CLASS T_STRING extends_from implements_list backup_doc_comment '{' class_statement_list '}' { - name := node.NewIdentifier($2.Value).SetPosition(NewTokenPosition($2)) - $$ = stmt.NewClass(name, nil, nil, $3, $4, $7, $5). - SetPosition(NewTokensPosition($1, $8)) + name := node.NewIdentifier($2.Value) + positions.AddPosition(name, NewTokenPosition($2)) + $$ = stmt.NewClass(name, nil, nil, $3, $4, $7, $5) + positions.AddPosition($$, NewTokensPosition($1, $8)) comments.AddComments(name, $2.Comments()) comments.AddComments($$, $1.Comments()) @@ -738,12 +795,14 @@ class_modifiers: class_modifier: T_ABSTRACT { - $$ = node.NewIdentifier($1.Value).SetPosition(NewTokenPosition($1)) + $$ = node.NewIdentifier($1.Value) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments($$, $1.Comments()) } | T_FINAL { - $$ = node.NewIdentifier($1.Value).SetPosition(NewTokenPosition($1)) + $$ = node.NewIdentifier($1.Value) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments($$, $1.Comments()) } ; @@ -751,9 +810,10 @@ class_modifier: trait_declaration_statement: T_TRAIT T_STRING backup_doc_comment '{' class_statement_list '}' { - name := node.NewIdentifier($2.Value).SetPosition(NewTokenPosition($2)) - $$ = stmt.NewTrait(name, $5, $3). - SetPosition(NewTokensPosition($1, $6)) + name := node.NewIdentifier($2.Value) + positions.AddPosition(name, NewTokenPosition($2)) + $$ = stmt.NewTrait(name, $5, $3) + positions.AddPosition($$, NewTokensPosition($1, $6)) comments.AddComments(name, $2.Comments()) comments.AddComments($$, $1.Comments()) @@ -763,9 +823,10 @@ trait_declaration_statement: interface_declaration_statement: T_INTERFACE T_STRING interface_extends_list backup_doc_comment '{' class_statement_list '}' { - name := node.NewIdentifier($2.Value).SetPosition(NewTokenPosition($2)) - $$ = stmt.NewInterface(name, $3, $6, $4). - SetPosition(NewTokensPosition($1, $7)) + name := node.NewIdentifier($2.Value) + positions.AddPosition(name, NewTokenPosition($2)) + $$ = stmt.NewInterface(name, $3, $6, $4) + positions.AddPosition($$, NewTokensPosition($1, $7)) comments.AddComments(name, $2.Comments()) comments.AddComments($$, $1.Comments()) @@ -792,13 +853,15 @@ foreach_variable: | '&' variable { $$ = foreachVariable{$2, true} } | T_LIST '(' array_pair_list ')' { - list := expr.NewList($3).SetPosition(NewTokensPosition($1, $4)) + list := expr.NewList($3) + positions.AddPosition(list, NewTokensPosition($1, $4)) $$ = foreachVariable{list, false} comments.AddComments(list, $1.Comments()) } | '[' array_pair_list ']' { - list := expr.NewShortList($2).SetPosition(NewTokensPosition($1, $3)) + list := expr.NewShortList($2) + positions.AddPosition(list, NewTokensPosition($1, $3)) $$ = foreachVariable{list, false} comments.AddComments(list, $1.Comments()) } @@ -808,7 +871,8 @@ for_statement: statement { $$ = $1; } | ':' inner_statement_list T_ENDFOR ';' { - $$ = stmt.NewStmtList($2).SetPosition(NewTokensPosition($1, $4)) + $$ = stmt.NewStmtList($2) + positions.AddPosition($$, NewTokensPosition($1, $4)) comments.AddComments($$, $1.Comments()) } ; @@ -817,7 +881,8 @@ foreach_statement: statement { $$ = $1; } | ':' inner_statement_list T_ENDFOREACH ';' { - $$ = stmt.NewStmtList($2).SetPosition(NewTokensPosition($1, $4)) + $$ = stmt.NewStmtList($2) + positions.AddPosition($$, NewTokensPosition($1, $4)) comments.AddComments($$, $1.Comments()) } ; @@ -826,7 +891,8 @@ declare_statement: statement { $$ = $1; } | ':' inner_statement_list T_ENDDECLARE ';' { - $$ = stmt.NewStmtList($2).SetPosition(NewTokensPosition($1, $4)) + $$ = stmt.NewStmtList($2) + positions.AddPosition($$, NewTokensPosition($1, $4)) comments.AddComments($$, $1.Comments()) } ; @@ -842,13 +908,15 @@ case_list: /* empty */ { $$ = []node.Node{} } | case_list T_CASE expr case_separator inner_statement_list { - _case := stmt.NewCase($3, $5).SetPosition(NewTokenNodeListPosition($2, $5)) + _case := stmt.NewCase($3, $5) + positions.AddPosition(_case, NewTokenNodeListPosition($2, $5)) $$ = append($1, _case) comments.AddComments(_case, $2.Comments()) } | case_list T_DEFAULT case_separator inner_statement_list { - _default := stmt.NewDefault($4).SetPosition(NewTokenNodeListPosition($2, $4)) + _default := stmt.NewDefault($4) + positions.AddPosition(_default, NewTokenNodeListPosition($2, $4)) $$ = append($1, _default) comments.AddComments(_default, $2.Comments()) } @@ -863,7 +931,8 @@ while_statement: statement { $$ = $1; } | ':' inner_statement_list T_ENDWHILE ';' { - $$ = stmt.NewStmtList($2).SetPosition(NewTokensPosition($1, $4)) + $$ = stmt.NewStmtList($2) + positions.AddPosition($$, NewTokensPosition($1, $4)) comments.AddComments($$, $1.Comments()) } ; @@ -871,13 +940,16 @@ while_statement: if_stmt_without_else: T_IF '(' expr ')' statement { - $$ = stmt.NewIf($3, $5).SetPosition(NewTokenNodePosition($1, $5)) + $$ = stmt.NewIf($3, $5) + positions.AddPosition($$, NewTokenNodePosition($1, $5)) comments.AddComments($$, $1.Comments()) } | if_stmt_without_else T_ELSEIF '(' expr ')' statement { - _elseIf := stmt.NewElseIf($4, $6).SetPosition(NewTokenNodePosition($2, $6)) - $$ = $1.(*stmt.If).AddElseIf(_elseIf).SetPosition(NewNodesPosition($1, $6)) + _elseIf := stmt.NewElseIf($4, $6) + positions.AddPosition(_elseIf, NewTokenNodePosition($2, $6)) + $$ = $1.(*stmt.If).AddElseIf(_elseIf) + positions.AddPosition($$, NewNodesPosition($1, $6)) comments.AddComments(_elseIf, $2.Comments()) } @@ -887,8 +959,10 @@ if_stmt: if_stmt_without_else %prec T_NOELSE { $$ = $1; } | if_stmt_without_else T_ELSE statement { - _else := stmt.NewElse($3).SetPosition(NewTokenNodePosition($2, $3)) - $$ = $1.(*stmt.If).SetElse(_else).SetPosition(NewNodesPosition($1, $3)) + _else := stmt.NewElse($3) + positions.AddPosition(_else, NewTokenNodePosition($2, $3)) + $$ = $1.(*stmt.If).SetElse(_else) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, $2.Comments()) } @@ -897,16 +971,20 @@ if_stmt: alt_if_stmt_without_else: T_IF '(' expr ')' ':' inner_statement_list { - stmts := stmt.NewStmtList($6).SetPosition(NewNodeListPosition($6)) - $$ = stmt.NewAltIf($3, stmts).SetPosition(NewTokenNodeListPosition($1, $6)) + stmts := stmt.NewStmtList($6) + positions.AddPosition(stmts, NewNodeListPosition($6)) + $$ = stmt.NewAltIf($3, stmts) + positions.AddPosition($$, NewTokenNodeListPosition($1, $6)) comments.AddComments(stmts, $5.Comments()) comments.AddComments($$, $1.Comments()) } | alt_if_stmt_without_else T_ELSEIF '(' expr ')' ':' inner_statement_list { - stmts := stmt.NewStmtList($7).SetPosition(NewNodeListPosition($7)) - _elseIf := stmt.NewAltElseIf($4, stmts).SetPosition(NewTokenNodeListPosition($2, $7)) + stmts := stmt.NewStmtList($7) + positions.AddPosition(stmts, NewNodeListPosition($7)) + _elseIf := stmt.NewAltElseIf($4, stmts) + positions.AddPosition(_elseIf, NewTokenNodeListPosition($2, $7)) $$ = $1.(*stmt.AltIf).AddElseIf(_elseIf) comments.AddComments(stmts, $6.Comments()) @@ -917,13 +995,17 @@ alt_if_stmt_without_else: alt_if_stmt: alt_if_stmt_without_else T_ENDIF ';' { - $$ = $1.SetPosition(NewNodeTokenPosition($1, $3)) + $$ = $1 + positions.AddPosition($$, NewNodeTokenPosition($1, $3)) } | alt_if_stmt_without_else T_ELSE ':' inner_statement_list T_ENDIF ';' { - stmts := stmt.NewStmtList($4).SetPosition(NewNodeListPosition($4)) - _else := stmt.NewAltElse(stmts).SetPosition(NewTokenNodeListPosition($2, $4)) - $$ = $1.(*stmt.AltIf).SetElse(_else).SetPosition(NewNodeTokenPosition($1, $6)) + stmts := stmt.NewStmtList($4) + positions.AddPosition(stmts, NewNodeListPosition($4)) + _else := stmt.NewAltElse(stmts) + positions.AddPosition(_else, NewTokenNodeListPosition($2, $4)) + $$ = $1.(*stmt.AltIf).SetElse(_else) + positions.AddPosition($$, NewNodeTokenPosition($1, $6)) comments.AddComments(stmts, $3.Comments()) comments.AddComments(_else, $2.Comments()) @@ -943,45 +1025,57 @@ non_empty_parameter_list: parameter: optional_type is_reference is_variadic T_VARIABLE { - identifier := node.NewIdentifier($4.Value).SetPosition(NewTokenPosition($4)) - variable := expr.NewVariable(identifier).SetPosition(NewTokenPosition($4)) + identifier := node.NewIdentifier($4.Value) + positions.AddPosition(identifier, NewTokenPosition($4)) + variable := expr.NewVariable(identifier) + positions.AddPosition(variable, NewTokenPosition($4)) comments.AddComments($$, $4.Comments()) comments.AddComments($$, $4.Comments()) if $1 != nil { - $$ = node.NewParameter($1, variable, nil, $2.value, $3.value).SetPosition(NewNodeTokenPosition($1, $4)) + $$ = node.NewParameter($1, variable, nil, $2.value, $3.value) + positions.AddPosition($$, NewNodeTokenPosition($1, $4)) comments.AddComments($$, comments[$1]) } else if $2.value == true { - $$ = node.NewParameter($1, variable, nil, $2.value, $3.value).SetPosition(NewTokensPosition(*$2.token, $4)) + $$ = node.NewParameter($1, variable, nil, $2.value, $3.value) + positions.AddPosition($$, NewTokensPosition(*$2.token, $4)) comments.AddComments($$, $2.token.Comments()) } else if $3.value == true { - $$ = node.NewParameter($1, variable, nil, $2.value, $3.value).SetPosition(NewTokensPosition(*$3.token, $4)) + $$ = node.NewParameter($1, variable, nil, $2.value, $3.value) + positions.AddPosition($$, NewTokensPosition(*$3.token, $4)) comments.AddComments($$, $3.token.Comments()) } else { - $$ = node.NewParameter($1, variable, nil, $2.value, $3.value).SetPosition(NewTokenPosition($4)) + $$ = node.NewParameter($1, variable, nil, $2.value, $3.value) + positions.AddPosition($$, NewTokenPosition($4)) comments.AddComments($$, $4.Comments()) } } | optional_type is_reference is_variadic T_VARIABLE '=' expr { - identifier := node.NewIdentifier($4.Value).SetPosition(NewTokenPosition($4)) - variable := expr.NewVariable(identifier).SetPosition(NewTokenPosition($4)) + identifier := node.NewIdentifier($4.Value) + positions.AddPosition(identifier, NewTokenPosition($4)) + variable := expr.NewVariable(identifier) + positions.AddPosition(variable, NewTokenPosition($4)) comments.AddComments($$, $4.Comments()) comments.AddComments($$, $4.Comments()) if $1 != nil { - $$ = node.NewParameter($1, variable, $6, $2.value, $3.value).SetPosition(NewNodesPosition($1, $6)) + $$ = node.NewParameter($1, variable, $6, $2.value, $3.value) + positions.AddPosition($$, NewNodesPosition($1, $6)) comments.AddComments($$, comments[$1]) } else if $2.value == true { - $$ = node.NewParameter($1, variable, $6, $2.value, $3.value).SetPosition(NewTokenNodePosition(*$2.token, $6)) + $$ = node.NewParameter($1, variable, $6, $2.value, $3.value) + positions.AddPosition($$, NewTokenNodePosition(*$2.token, $6)) comments.AddComments($$, $2.token.Comments()) } else if $3.value == true { - $$ = node.NewParameter($1, variable, $6, $2.value, $3.value).SetPosition(NewTokenNodePosition(*$3.token, $6)) + $$ = node.NewParameter($1, variable, $6, $2.value, $3.value) + positions.AddPosition($$, NewTokenNodePosition(*$3.token, $6)) comments.AddComments($$, $3.token.Comments()) } else { - $$ = node.NewParameter($1, variable, $6, $2.value, $3.value).SetPosition(NewTokenNodePosition($4, $6)) + $$ = node.NewParameter($1, variable, $6, $2.value, $3.value) + positions.AddPosition($$, NewTokenNodePosition($4, $6)) comments.AddComments($$, $4.Comments()) } } @@ -996,7 +1090,8 @@ type_expr: type { $$ = $1; } | '?' type { - $$ = node.NewNullable($2).SetPosition(NewTokenNodePosition($1, $2)) + $$ = node.NewNullable($2) + positions.AddPosition($$, NewTokenNodePosition($1, $2)) comments.AddComments($$, $1.Comments()) } ; @@ -1004,12 +1099,14 @@ type_expr: type: T_ARRAY { - $$ = node.NewIdentifier($1.Value).SetPosition(NewTokenPosition($1)) + $$ = node.NewIdentifier($1.Value) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments($$, $1.Comments()) } | T_CALLABLE { - $$ = node.NewIdentifier($1.Value).SetPosition(NewTokenPosition($1)) + $$ = node.NewIdentifier($1.Value) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments($$, $1.Comments()) } | name { $$ = $1; } @@ -1033,12 +1130,14 @@ non_empty_argument_list: argument: expr { - $$ = node.NewArgument($1, false).SetPosition(NewNodePosition($1)) + $$ = node.NewArgument($1, false) + positions.AddPosition($$, NewNodePosition($1)) comments.AddComments($$, comments[$1]) } | T_ELLIPSIS expr { - $$ = node.NewArgument($2, true).SetPosition(NewTokenNodePosition($1, $2)) + $$ = node.NewArgument($2, true) + positions.AddPosition($$, NewTokenNodePosition($1, $2)) comments.AddComments($$, $1.Comments()) } ; @@ -1060,9 +1159,12 @@ static_var_list: static_var: T_VARIABLE { - identifier := node.NewIdentifier($1.Value).SetPosition(NewTokenPosition($1)) - variable := expr.NewVariable(identifier).SetPosition(NewTokenPosition($1)) - $$ = stmt.NewStaticVar(variable, nil).SetPosition(NewTokenPosition($1)) + identifier := node.NewIdentifier($1.Value) + positions.AddPosition(identifier, NewTokenPosition($1)) + variable := expr.NewVariable(identifier) + positions.AddPosition(variable, NewTokenPosition($1)) + $$ = stmt.NewStaticVar(variable, nil) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments(identifier, $1.Comments()) comments.AddComments(variable, $1.Comments()) @@ -1070,9 +1172,12 @@ static_var: } | T_VARIABLE '=' expr { - identifier := node.NewIdentifier($1.Value).SetPosition(NewTokenPosition($1)) - variable := expr.NewVariable(identifier).SetPosition(NewTokenPosition($1)) - $$ = stmt.NewStaticVar(variable, $3).SetPosition(NewTokenNodePosition($1, $3)) + identifier := node.NewIdentifier($1.Value) + positions.AddPosition(identifier, NewTokenPosition($1)) + variable := expr.NewVariable(identifier) + positions.AddPosition(variable, NewTokenPosition($1)) + $$ = stmt.NewStaticVar(variable, $3) + positions.AddPosition($$, NewTokenNodePosition($1, $3)) comments.AddComments(identifier, $1.Comments()) comments.AddComments(variable, $1.Comments()) @@ -1088,24 +1193,28 @@ class_statement_list: class_statement: variable_modifiers property_list ';' { - $$ = stmt.NewPropertyList($1, $2).SetPosition(NewNodeListTokenPosition($1, $3)) + $$ = stmt.NewPropertyList($1, $2) + positions.AddPosition($$, NewNodeListTokenPosition($1, $3)) comments.AddComments($$, ListGetFirstNodeComments($1)) } | method_modifiers T_CONST class_const_list ';' { - $$ = stmt.NewClassConstList($1, $3).SetPosition(NewOptionalListTokensPosition($1, $2, $4)) + $$ = stmt.NewClassConstList($1, $3) + positions.AddPosition($$, NewOptionalListTokensPosition($1, $2, $4)) comments.AddComments($$, ListGetFirstNodeComments($1)) } | T_USE name_list trait_adaptations { - $$ = stmt.NewTraitUse($2, $3.nodes).SetPosition(NewTokensPosition($1, $3.endToken)) + $$ = stmt.NewTraitUse($2, $3.nodes) + positions.AddPosition($$, NewTokensPosition($1, $3.endToken)) comments.AddComments($$, $1.Comments()) } | method_modifiers T_FUNCTION returns_ref identifier backup_doc_comment '(' parameter_list ')' return_type method_body { - name := node.NewIdentifier($4.Value).SetPosition(NewTokenPosition($4)) - $$ = stmt.NewClassMethod(name, $1, $3.value, $7, $9, $10.nodes, $5). - SetPosition(NewOptionalListTokensPosition($1, $2, $10.endToken)) + name := node.NewIdentifier($4.Value) + positions.AddPosition(name, NewTokenPosition($4)) + $$ = stmt.NewClassMethod(name, $1, $3.value, $7, $9, $10.nodes, $5) + positions.AddPosition($$, NewOptionalListTokensPosition($1, $2, $10.endToken)) comments.AddComments(name, $4.Comments()) comments.AddComments($$, ListGetFirstNodeComments($1)) @@ -1136,9 +1245,10 @@ trait_adaptation: trait_precedence: absolute_trait_method_reference T_INSTEADOF name_list { - name := name.NewName($3).SetPosition(NewNodeListPosition($3)) - $$ = stmt.NewTraitUsePrecedence($1, name). - SetPosition(NewNodeNodeListPosition($1, $3)) + name := name.NewName($3) + positions.AddPosition(name, NewNodeListPosition($3)) + $$ = stmt.NewTraitUsePrecedence($1, name) + positions.AddPosition($$, NewNodeNodeListPosition($1, $3)) comments.AddComments(name, ListGetFirstNodeComments($3)) comments.AddComments($$, comments[$1]) @@ -1148,34 +1258,38 @@ trait_precedence: trait_alias: trait_method_reference T_AS T_STRING { - alias := node.NewIdentifier($3.Value).SetPosition(NewTokenPosition($3)) - $$ = stmt.NewTraitUseAlias($1, nil, alias). - SetPosition(NewNodeTokenPosition($1, $3)) + alias := node.NewIdentifier($3.Value) + positions.AddPosition(alias, NewTokenPosition($3)) + $$ = stmt.NewTraitUseAlias($1, nil, alias) + positions.AddPosition($$, NewNodeTokenPosition($1, $3)) comments.AddComments(alias, $3.Comments()) comments.AddComments($$, comments[$1]) } | trait_method_reference T_AS reserved_non_modifiers { - alias := node.NewIdentifier($3.Value).SetPosition(NewTokenPosition($3)) - $$ = stmt.NewTraitUseAlias($1, nil, alias). - SetPosition(NewNodeTokenPosition($1, $3)) + alias := node.NewIdentifier($3.Value) + positions.AddPosition(alias, NewTokenPosition($3)) + $$ = stmt.NewTraitUseAlias($1, nil, alias) + positions.AddPosition($$, NewNodeTokenPosition($1, $3)) comments.AddComments(alias, $3.Comments()) comments.AddComments($$, comments[$1]) } | trait_method_reference T_AS member_modifier identifier { - alias := node.NewIdentifier($4.Value).SetPosition(NewTokenPosition($4)) - $$ = stmt.NewTraitUseAlias($1, $3, alias). - SetPosition(NewNodeTokenPosition($1, $4)) + alias := node.NewIdentifier($4.Value) + positions.AddPosition(alias, NewTokenPosition($4)) + $$ = stmt.NewTraitUseAlias($1, $3, alias) + positions.AddPosition($$, NewNodeTokenPosition($1, $4)) comments.AddComments(alias, $4.Comments()) comments.AddComments($$, comments[$1]) } | trait_method_reference T_AS member_modifier { - $$ = stmt.NewTraitUseAlias($1, $3, nil).SetPosition(NewNodesPosition($1, $3)) + $$ = stmt.NewTraitUseAlias($1, $3, nil) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } ; @@ -1183,8 +1297,10 @@ trait_alias: trait_method_reference: identifier { - name := node.NewIdentifier($1.Value).SetPosition(NewTokenPosition($1)) - $$ = stmt.NewTraitMethodRef(nil, name).SetPosition(NewTokenPosition($1)) + name := node.NewIdentifier($1.Value) + positions.AddPosition(name, NewTokenPosition($1)) + $$ = stmt.NewTraitMethodRef(nil, name) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments(name, $1.Comments()) comments.AddComments($$, $1.Comments()) @@ -1195,8 +1311,10 @@ trait_method_reference: absolute_trait_method_reference: name T_PAAMAYIM_NEKUDOTAYIM identifier { - target := node.NewIdentifier($3.Value).SetPosition(NewTokenPosition($3)) - $$ = stmt.NewTraitMethodRef($1, target).SetPosition(NewNodeTokenPosition($1, $3)) + target := node.NewIdentifier($3.Value) + positions.AddPosition(target, NewTokenPosition($3)) + $$ = stmt.NewTraitMethodRef($1, target) + positions.AddPosition($$, NewNodeTokenPosition($1, $3)) comments.AddComments(target, $3.Comments()) comments.AddComments($$, comments[$1]) @@ -1212,7 +1330,8 @@ variable_modifiers: non_empty_member_modifiers { $$ = $1; } | T_VAR { - modifier := node.NewIdentifier($1.Value).SetPosition(NewTokenPosition($1)) + modifier := node.NewIdentifier($1.Value) + positions.AddPosition(modifier, NewTokenPosition($1)) $$ = []node.Node{modifier} comments.AddComments(modifier, $1.Comments()) } @@ -1231,32 +1350,38 @@ non_empty_member_modifiers: member_modifier: T_PUBLIC { - $$ = node.NewIdentifier($1.Value).SetPosition(NewTokenPosition($1)) + $$ = node.NewIdentifier($1.Value) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments($$, $1.Comments()) } | T_PROTECTED { - $$ = node.NewIdentifier($1.Value).SetPosition(NewTokenPosition($1)) + $$ = node.NewIdentifier($1.Value) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments($$, $1.Comments()) } | T_PRIVATE { - $$ = node.NewIdentifier($1.Value).SetPosition(NewTokenPosition($1)) + $$ = node.NewIdentifier($1.Value) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments($$, $1.Comments()) } | T_STATIC { - $$ = node.NewIdentifier($1.Value).SetPosition(NewTokenPosition($1)) + $$ = node.NewIdentifier($1.Value) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments($$, $1.Comments()) } | T_ABSTRACT { - $$ = node.NewIdentifier($1.Value).SetPosition(NewTokenPosition($1)) + $$ = node.NewIdentifier($1.Value) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments($$, $1.Comments()) } | T_FINAL { - $$ = node.NewIdentifier($1.Value).SetPosition(NewTokenPosition($1)) + $$ = node.NewIdentifier($1.Value) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments($$, $1.Comments()) } ; @@ -1269,9 +1394,12 @@ property_list: property: T_VARIABLE backup_doc_comment { - identifier := node.NewIdentifier($1.Value).SetPosition(NewTokenPosition($1)) - variable := expr.NewVariable(identifier).SetPosition(NewTokenPosition($1)) - $$ = stmt.NewProperty(variable, nil, $2).SetPosition(NewTokenPosition($1)) + identifier := node.NewIdentifier($1.Value) + positions.AddPosition(identifier, NewTokenPosition($1)) + variable := expr.NewVariable(identifier) + positions.AddPosition(variable, NewTokenPosition($1)) + $$ = stmt.NewProperty(variable, nil, $2) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments(identifier, $1.Comments()) comments.AddComments(variable, $1.Comments()) @@ -1279,9 +1407,12 @@ property: } | T_VARIABLE '=' expr backup_doc_comment { - identifier := node.NewIdentifier($1.Value).SetPosition(NewTokenPosition($1)) - variable := expr.NewVariable(identifier).SetPosition(NewTokenPosition($1)) - $$ = stmt.NewProperty(variable, $3, $4).SetPosition(NewTokenNodePosition($1, $3)) + identifier := node.NewIdentifier($1.Value) + positions.AddPosition(identifier, NewTokenPosition($1)) + variable := expr.NewVariable(identifier) + positions.AddPosition(variable, NewTokenPosition($1)) + $$ = stmt.NewProperty(variable, $3, $4) + positions.AddPosition($$, NewTokenNodePosition($1, $3)) comments.AddComments(identifier, $1.Comments()) comments.AddComments(variable, $1.Comments()) @@ -1297,8 +1428,10 @@ class_const_list: class_const_decl: identifier '=' expr backup_doc_comment { - name := node.NewIdentifier($1.Value).SetPosition(NewTokenPosition($1)) - $$ = stmt.NewConstant(name, $3, $4).SetPosition(NewTokenNodePosition($1, $3)) + name := node.NewIdentifier($1.Value) + positions.AddPosition(name, NewTokenPosition($1)) + $$ = stmt.NewConstant(name, $3, $4) + positions.AddPosition($$, NewTokenNodePosition($1, $3)) comments.AddComments(name, $1.Comments()) comments.AddComments($$, $1.Comments()) @@ -1308,8 +1441,10 @@ class_const_decl: const_decl: T_STRING '=' expr backup_doc_comment { - name := node.NewIdentifier($1.Value).SetPosition(NewTokenPosition($1)) - $$ = stmt.NewConstant(name, $3, $4).SetPosition(NewTokenNodePosition($1, $3)) + name := node.NewIdentifier($1.Value) + positions.AddPosition(name, NewTokenPosition($1)) + $$ = stmt.NewConstant(name, $3, $4) + positions.AddPosition($$, NewTokenNodePosition($1, $3)) comments.AddComments(name, $1.Comments()) comments.AddComments($$, $1.Comments()) @@ -1338,9 +1473,11 @@ 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).SetPosition(NewTokensPosition($1, $8)) + $$ = stmt.NewClass(nil, nil, $2.nodes, $3, $4, $7, $5) + positions.AddPosition($$, NewTokensPosition($1, $8)) } else { - $$ = stmt.NewClass(nil, nil, nil, $3, $4, $7, $5).SetPosition(NewTokensPosition($1, $8)) + $$ = stmt.NewClass(nil, nil, nil, $3, $4, $7, $5) + positions.AddPosition($$, NewTokensPosition($1, $8)) } comments.AddComments($$, $1.Comments()) @@ -1351,9 +1488,11 @@ new_expr: T_NEW class_name_reference ctor_arguments { if $3 != nil { - $$ = expr.NewNew($2, $3.nodes).SetPosition(NewTokensPosition($1, $3.endToken)) + $$ = expr.NewNew($2, $3.nodes) + positions.AddPosition($$, NewTokensPosition($1, $3.endToken)) } else { - $$ = expr.NewNew($2, nil).SetPosition(NewTokenNodePosition($1, $2)) + $$ = expr.NewNew($2, nil) + positions.AddPosition($$, NewTokenNodePosition($1, $2)) } comments.AddComments($$, $1.Comments()) @@ -1364,375 +1503,447 @@ new_expr: expr_without_variable: T_LIST '(' array_pair_list ')' '=' expr { - list := expr.NewList($3).SetPosition(NewTokensPosition($1, $4)) - $$ = assign_op.NewAssign(list, $6).SetPosition(NewTokenNodePosition($1, $6)) + list := expr.NewList($3) + positions.AddPosition(list, NewTokensPosition($1, $4)) + $$ = assign_op.NewAssign(list, $6) + positions.AddPosition($$, NewTokenNodePosition($1, $6)) comments.AddComments(list, $1.Comments()) comments.AddComments($$, $1.Comments()) } | '[' array_pair_list ']' '=' expr { - shortList := expr.NewShortList($2).SetPosition(NewTokensPosition($1, $3)) - $$ = assign_op.NewAssign(shortList, $5).SetPosition(NewTokenNodePosition($1, $5)) + shortList := expr.NewShortList($2) + positions.AddPosition(shortList, NewTokensPosition($1, $3)) + $$ = assign_op.NewAssign(shortList, $5) + positions.AddPosition($$, NewTokenNodePosition($1, $5)) comments.AddComments(shortList, $1.Comments()) comments.AddComments($$, $1.Comments()) } | variable '=' expr { - $$ = assign_op.NewAssign($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = assign_op.NewAssign($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | variable '=' '&' expr { - $$ = assign_op.NewAssignRef($1, $4).SetPosition(NewNodesPosition($1, $4)) + $$ = assign_op.NewAssignRef($1, $4) + positions.AddPosition($$, NewNodesPosition($1, $4)) comments.AddComments($$, comments[$1]) } | T_CLONE expr { - $$ = expr.NewClone($2).SetPosition(NewTokenNodePosition($1, $2)) + $$ = expr.NewClone($2) + positions.AddPosition($$, NewTokenNodePosition($1, $2)) comments.AddComments($$, $1.Comments()) } | variable T_PLUS_EQUAL expr { - $$ = assign_op.NewPlus($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = assign_op.NewPlus($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | variable T_MINUS_EQUAL expr { - $$ = assign_op.NewMinus($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = assign_op.NewMinus($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | variable T_MUL_EQUAL expr { - $$ = assign_op.NewMul($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = assign_op.NewMul($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | variable T_POW_EQUAL expr { - $$ = assign_op.NewPow($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = assign_op.NewPow($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | variable T_DIV_EQUAL expr { - $$ = assign_op.NewDiv($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = assign_op.NewDiv($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | variable T_CONCAT_EQUAL expr { - $$ = assign_op.NewConcat($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = assign_op.NewConcat($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | variable T_MOD_EQUAL expr { - $$ = assign_op.NewMod($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = assign_op.NewMod($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | variable T_AND_EQUAL expr { - $$ = assign_op.NewBitwiseAnd($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = assign_op.NewBitwiseAnd($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | variable T_OR_EQUAL expr { - $$ = assign_op.NewBitwiseOr($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = assign_op.NewBitwiseOr($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | variable T_XOR_EQUAL expr { - $$ = assign_op.NewBitwiseXor($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = assign_op.NewBitwiseXor($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | variable T_SL_EQUAL expr { - $$ = assign_op.NewShiftLeft($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = assign_op.NewShiftLeft($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | variable T_SR_EQUAL expr { - $$ = assign_op.NewShiftRight($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = assign_op.NewShiftRight($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | variable T_INC { - $$ = expr.NewPostInc($1).SetPosition(NewNodeTokenPosition($1, $2)) + $$ = expr.NewPostInc($1) + positions.AddPosition($$, NewNodeTokenPosition($1, $2)) comments.AddComments($$, comments[$1]) } | T_INC variable { - $$ = expr.NewPreInc($2).SetPosition(NewTokenNodePosition($1, $2)) + $$ = expr.NewPreInc($2) + positions.AddPosition($$, NewTokenNodePosition($1, $2)) comments.AddComments($$, $1.Comments()) } | variable T_DEC { - $$ = expr.NewPostDec($1).SetPosition(NewNodeTokenPosition($1, $2)) + $$ = expr.NewPostDec($1) + positions.AddPosition($$, NewNodeTokenPosition($1, $2)) comments.AddComments($$, comments[$1]) } | T_DEC variable { - $$ = expr.NewPreDec($2).SetPosition(NewTokenNodePosition($1, $2)) + $$ = expr.NewPreDec($2) + positions.AddPosition($$, NewTokenNodePosition($1, $2)) comments.AddComments($$, $1.Comments()) } | expr T_BOOLEAN_OR expr { - $$ = binary_op.NewBooleanOr($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = binary_op.NewBooleanOr($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | expr T_BOOLEAN_AND expr { - $$ = binary_op.NewBooleanAnd($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = binary_op.NewBooleanAnd($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | expr T_LOGICAL_OR expr { - $$ = binary_op.NewLogicalOr($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = binary_op.NewLogicalOr($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | expr T_LOGICAL_AND expr { - $$ = binary_op.NewLogicalAnd($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = binary_op.NewLogicalAnd($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | expr T_LOGICAL_XOR expr { - $$ = binary_op.NewLogicalXor($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = binary_op.NewLogicalXor($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | expr '|' expr { - $$ = binary_op.NewBitwiseOr($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = binary_op.NewBitwiseOr($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | expr '&' expr { - $$ = binary_op.NewBitwiseAnd($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = binary_op.NewBitwiseAnd($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | expr '^' expr { - $$ = binary_op.NewBitwiseXor($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = binary_op.NewBitwiseXor($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | expr '.' expr { - $$ = binary_op.NewConcat($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = binary_op.NewConcat($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | expr '+' expr { - $$ = binary_op.NewPlus($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = binary_op.NewPlus($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | expr '-' expr { - $$ = binary_op.NewMinus($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = binary_op.NewMinus($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | expr '*' expr { - $$ = binary_op.NewMul($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = binary_op.NewMul($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | expr T_POW expr { - $$ = binary_op.NewPow($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = binary_op.NewPow($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | expr '/' expr { - $$ = binary_op.NewDiv($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = binary_op.NewDiv($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | expr '%' expr { - $$ = binary_op.NewMod($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = binary_op.NewMod($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | expr T_SL expr { - $$ = binary_op.NewShiftLeft($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = binary_op.NewShiftLeft($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | expr T_SR expr { - $$ = binary_op.NewShiftRight($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = binary_op.NewShiftRight($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | '+' expr %prec T_INC { - $$ = expr.NewUnaryPlus($2).SetPosition(NewTokenNodePosition($1, $2)) + $$ = expr.NewUnaryPlus($2) + positions.AddPosition($$, NewTokenNodePosition($1, $2)) comments.AddComments($$, $1.Comments()) } | '-' expr %prec T_INC { - $$ = expr.NewUnaryMinus($2).SetPosition(NewTokenNodePosition($1, $2)) + $$ = expr.NewUnaryMinus($2) + positions.AddPosition($$, NewTokenNodePosition($1, $2)) comments.AddComments($$, $1.Comments()) } | '!' expr { - $$ = expr.NewBooleanNot($2).SetPosition(NewTokenNodePosition($1, $2)) + $$ = expr.NewBooleanNot($2) + positions.AddPosition($$, NewTokenNodePosition($1, $2)) comments.AddComments($$, $1.Comments()) } | '~' expr { - $$ = expr.NewBitwiseNot($2).SetPosition(NewTokenNodePosition($1, $2)) + $$ = expr.NewBitwiseNot($2) + positions.AddPosition($$, NewTokenNodePosition($1, $2)) comments.AddComments($$, $1.Comments()) } | expr T_IS_IDENTICAL expr { - $$ = binary_op.NewIdentical($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = binary_op.NewIdentical($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | expr T_IS_NOT_IDENTICAL expr { - $$ = binary_op.NewNotIdentical($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = binary_op.NewNotIdentical($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | expr T_IS_EQUAL expr { - $$ = binary_op.NewEqual($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = binary_op.NewEqual($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | expr T_IS_NOT_EQUAL expr { - $$ = binary_op.NewNotEqual($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = binary_op.NewNotEqual($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | expr '<' expr { - $$ = binary_op.NewSmaller($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = binary_op.NewSmaller($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | expr T_IS_SMALLER_OR_EQUAL expr { - $$ = binary_op.NewSmallerOrEqual($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = binary_op.NewSmallerOrEqual($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | expr '>' expr { - $$ = binary_op.NewGreater($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = binary_op.NewGreater($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | expr T_IS_GREATER_OR_EQUAL expr { - $$ = binary_op.NewGreaterOrEqual($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = binary_op.NewGreaterOrEqual($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | expr T_SPACESHIP expr { - $$ = binary_op.NewSpaceship($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = binary_op.NewSpaceship($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | expr T_INSTANCEOF class_name_reference { - $$ = expr.NewInstanceOf($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = expr.NewInstanceOf($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | '(' expr ')' { $$ = $2; } | new_expr { $$ = $1; } | expr '?' expr ':' expr { - $$ = expr.NewTernary($1, $3, $5).SetPosition(NewNodesPosition($1, $5)) + $$ = expr.NewTernary($1, $3, $5) + positions.AddPosition($$, NewNodesPosition($1, $5)) comments.AddComments($$, comments[$1]) } | expr '?' ':' expr { - $$ = expr.NewTernary($1, nil, $4).SetPosition(NewNodesPosition($1, $4)) + $$ = expr.NewTernary($1, nil, $4) + positions.AddPosition($$, NewNodesPosition($1, $4)) comments.AddComments($$, comments[$1]) } | expr T_COALESCE expr { - $$ = binary_op.NewCoalesce($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = binary_op.NewCoalesce($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | internal_functions_in_yacc { $$ = $1} | T_INT_CAST expr { - $$ = cast.NewCastInt($2).SetPosition(NewTokenNodePosition($1, $2)) + $$ = cast.NewCastInt($2) + positions.AddPosition($$, NewTokenNodePosition($1, $2)) comments.AddComments($$, $1.Comments()) } | T_DOUBLE_CAST expr { - $$ = cast.NewCastDouble($2).SetPosition(NewTokenNodePosition($1, $2)) + $$ = cast.NewCastDouble($2) + positions.AddPosition($$, NewTokenNodePosition($1, $2)) comments.AddComments($$, $1.Comments()) } | T_STRING_CAST expr { - $$ = cast.NewCastString($2).SetPosition(NewTokenNodePosition($1, $2)) + $$ = cast.NewCastString($2) + positions.AddPosition($$, NewTokenNodePosition($1, $2)) comments.AddComments($$, $1.Comments()) } | T_ARRAY_CAST expr { - $$ = cast.NewCastArray($2).SetPosition(NewTokenNodePosition($1, $2)) + $$ = cast.NewCastArray($2) + positions.AddPosition($$, NewTokenNodePosition($1, $2)) comments.AddComments($$, $1.Comments()) } | T_OBJECT_CAST expr { - $$ = cast.NewCastObject($2).SetPosition(NewTokenNodePosition($1, $2)) + $$ = cast.NewCastObject($2) + positions.AddPosition($$, NewTokenNodePosition($1, $2)) comments.AddComments($$, $1.Comments()) } | T_BOOL_CAST expr { - $$ = cast.NewCastBool($2.SetPosition(NewTokenNodePosition($1, $2))) + $$ = cast.NewCastBool($2) + positions.AddPosition($$, NewTokenNodePosition($1, $2)) comments.AddComments($$, $1.Comments()) } | T_UNSET_CAST expr { - $$ = cast.NewCastUnset($2).SetPosition(NewTokenNodePosition($1, $2)) + $$ = cast.NewCastUnset($2) + positions.AddPosition($$, NewTokenNodePosition($1, $2)) comments.AddComments($$, $1.Comments()) } | T_EXIT exit_expr { - $$ = expr.NewExit($2, strings.EqualFold($1.Value, "die")).SetPosition(NewTokenNodePosition($1, $2)) + $$ = expr.NewExit($2, strings.EqualFold($1.Value, "die")) + positions.AddPosition($$, NewTokenNodePosition($1, $2)) comments.AddComments($$, $1.Comments()) } | '@' expr { - $$ = expr.NewErrorSuppress($2).SetPosition(NewTokenNodePosition($1, $2)) + $$ = expr.NewErrorSuppress($2) + positions.AddPosition($$, NewTokenNodePosition($1, $2)) comments.AddComments($$, $1.Comments()) } | scalar { $$ = $1; } | '`' backticks_expr '`' { - $$ = expr.NewShellExec($2).SetPosition(NewTokensPosition($1, $3)) + $$ = expr.NewShellExec($2) + positions.AddPosition($$, NewTokensPosition($1, $3)) comments.AddComments($$, $1.Comments()) } | T_PRINT expr { - $$ = expr.NewPrint($2).SetPosition(NewTokenNodePosition($1, $2)) + $$ = expr.NewPrint($2) + positions.AddPosition($$, NewTokenNodePosition($1, $2)) comments.AddComments($$, $1.Comments()) } | T_YIELD { - $$ = expr.NewYield(nil, nil).SetPosition(NewTokenPosition($1)) + $$ = expr.NewYield(nil, nil) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments($$, $1.Comments()) } | T_YIELD expr { - $$ = expr.NewYield(nil, $2).SetPosition(NewTokenNodePosition($1, $2)) + $$ = expr.NewYield(nil, $2) + positions.AddPosition($$, NewTokenNodePosition($1, $2)) comments.AddComments($$, $1.Comments()) } | T_YIELD expr T_DOUBLE_ARROW expr { - $$ = expr.NewYield($2, $4).SetPosition(NewTokenNodePosition($1, $4)) + $$ = expr.NewYield($2, $4) + positions.AddPosition($$, NewTokenNodePosition($1, $4)) comments.AddComments($$, $1.Comments()) } | T_YIELD_FROM expr { - $$ = expr.NewYieldFrom($2).SetPosition(NewTokenNodePosition($1, $2)) + $$ = expr.NewYieldFrom($2) + positions.AddPosition($$, NewTokenNodePosition($1, $2)) comments.AddComments($$, $1.Comments()) } | 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). - SetPosition(NewTokensPosition($1, $11)) + $$ = expr.NewClosure($5, $7, $8, $10, false, $2.value, $3) + positions.AddPosition($$, NewTokensPosition($1, $11)) comments.AddComments($$, $1.Comments()) } | 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). - SetPosition(NewTokensPosition($1, $12)) + $$ = expr.NewClosure($6, $8, $9, $11, true, $3.value, $4) + positions.AddPosition($$, NewTokensPosition($1, $12)) comments.AddComments($$, $1.Comments()) } @@ -1760,9 +1971,12 @@ lexical_var_list: lexical_var: T_VARIABLE { - identifier := node.NewIdentifier($1.Value).SetPosition(NewTokenPosition($1)) - variable := expr.NewVariable(identifier).SetPosition(NewTokenPosition($1)) - $$ = expr.NewClusureUse(variable, false).SetPosition(NewTokenPosition($1)) + identifier := node.NewIdentifier($1.Value) + positions.AddPosition(identifier, NewTokenPosition($1)) + variable := expr.NewVariable(identifier) + positions.AddPosition(variable, NewTokenPosition($1)) + $$ = expr.NewClusureUse(variable, false) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments(identifier, $1.Comments()) comments.AddComments(variable, $1.Comments()) @@ -1770,9 +1984,12 @@ lexical_var: } | '&' T_VARIABLE { - identifier := node.NewIdentifier($2.Value).SetPosition(NewTokenPosition($2)) - variable := expr.NewVariable(identifier).SetPosition(NewTokenPosition($2)) - $$ = expr.NewClusureUse(variable, true).SetPosition(NewTokensPosition($1, $2)) + identifier := node.NewIdentifier($2.Value) + positions.AddPosition(identifier, NewTokenPosition($2)) + variable := expr.NewVariable(identifier) + positions.AddPosition(variable, NewTokenPosition($2)) + $$ = expr.NewClusureUse(variable, true) + positions.AddPosition($$, NewTokensPosition($1, $2)) comments.AddComments(identifier, $2.Comments()) comments.AddComments(variable, $1.Comments()) @@ -1783,22 +2000,26 @@ lexical_var: function_call: name argument_list { - $$ = expr.NewFunctionCall($1, $2.nodes).SetPosition(NewNodeTokenPosition($1, $2.endToken)) + $$ = expr.NewFunctionCall($1, $2.nodes) + positions.AddPosition($$, NewNodeTokenPosition($1, $2.endToken)) comments.AddComments($$, comments[$1]) } | class_name T_PAAMAYIM_NEKUDOTAYIM member_name argument_list { - $$ = expr.NewStaticCall($1, $3, $4.nodes).SetPosition(NewNodeTokenPosition($1, $4.endToken)) + $$ = expr.NewStaticCall($1, $3, $4.nodes) + positions.AddPosition($$, NewNodeTokenPosition($1, $4.endToken)) comments.AddComments($$, comments[$1]) } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM member_name argument_list { - $$ = expr.NewStaticCall($1, $3, $4.nodes).SetPosition(NewNodeTokenPosition($1, $4.endToken)) + $$ = expr.NewStaticCall($1, $3, $4.nodes) + positions.AddPosition($$, NewNodeTokenPosition($1, $4.endToken)) comments.AddComments($$, comments[$1]) } | callable_expr argument_list { - $$ = expr.NewFunctionCall($1, $2.nodes).SetPosition(NewNodeTokenPosition($1, $2.endToken)) + $$ = expr.NewFunctionCall($1, $2.nodes) + positions.AddPosition($$, NewNodeTokenPosition($1, $2.endToken)) comments.AddComments($$, comments[$1]) } ; @@ -1806,7 +2027,8 @@ function_call: class_name: T_STATIC { - $$ = node.NewIdentifier($1.Value).SetPosition(NewTokenPosition($1)) + $$ = node.NewIdentifier($1.Value) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments($$, $1.Comments()) } | name { $$ = $1; } @@ -1836,17 +2058,20 @@ ctor_arguments: dereferencable_scalar: T_ARRAY '(' array_pair_list ')' { - $$ = expr.NewArray($3).SetPosition(NewTokensPosition($1, $4)) + $$ = expr.NewArray($3) + positions.AddPosition($$, NewTokensPosition($1, $4)) comments.AddComments($$, $1.Comments()) } | '[' array_pair_list ']' { - $$ = expr.NewShortArray($2).SetPosition(NewTokensPosition($1, $3)) + $$ = expr.NewShortArray($2) + positions.AddPosition($$, NewTokensPosition($1, $3)) comments.AddComments($$, $1.Comments()) } | T_CONSTANT_ENCAPSED_STRING { - $$ = scalar.NewString($1.Value).SetPosition(NewTokenPosition($1)) + $$ = scalar.NewString($1.Value) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments($$, $1.Comments()) } ; @@ -1854,72 +2079,86 @@ dereferencable_scalar: scalar: T_LNUMBER { - $$ = scalar.NewLnumber($1.Value).SetPosition(NewTokenPosition($1)) + $$ = scalar.NewLnumber($1.Value) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments($$, $1.Comments()) } | T_DNUMBER { - $$ = scalar.NewDnumber($1.Value).SetPosition(NewTokenPosition($1)) + $$ = scalar.NewDnumber($1.Value) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments($$, $1.Comments()) } | T_LINE { - $$ = scalar.NewMagicConstant($1.Value).SetPosition(NewTokenPosition($1)) + $$ = scalar.NewMagicConstant($1.Value) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments($$, $1.Comments()) } | T_FILE { - $$ = scalar.NewMagicConstant($1.Value).SetPosition(NewTokenPosition($1)) + $$ = scalar.NewMagicConstant($1.Value) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments($$, $1.Comments()) } | T_DIR { - $$ = scalar.NewMagicConstant($1.Value).SetPosition(NewTokenPosition($1)) + $$ = scalar.NewMagicConstant($1.Value) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments($$, $1.Comments()) } | T_TRAIT_C { - $$ = scalar.NewMagicConstant($1.Value).SetPosition(NewTokenPosition($1)) + $$ = scalar.NewMagicConstant($1.Value) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments($$, $1.Comments()) } | T_METHOD_C { - $$ = scalar.NewMagicConstant($1.Value).SetPosition(NewTokenPosition($1)) + $$ = scalar.NewMagicConstant($1.Value) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments($$, $1.Comments()) } | T_FUNC_C { - $$ = scalar.NewMagicConstant($1.Value).SetPosition(NewTokenPosition($1)) + $$ = scalar.NewMagicConstant($1.Value) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments($$, $1.Comments()) } | T_NS_C { - $$ = scalar.NewMagicConstant($1.Value).SetPosition(NewTokenPosition($1)) + $$ = scalar.NewMagicConstant($1.Value) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments($$, $1.Comments()) } | T_CLASS_C { - $$ = scalar.NewMagicConstant($1.Value).SetPosition(NewTokenPosition($1)) + $$ = scalar.NewMagicConstant($1.Value) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments($$, $1.Comments()) } | T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC { - $$ = scalar.NewString($2.Value).SetPosition(NewTokensPosition($1, $3)) /* TODO: mark as Heredoc*/ + $$ = scalar.NewString($2.Value) + positions.AddPosition($$, NewTokensPosition($1, $3))/* TODO: mark as Heredoc*/ comments.AddComments($$, $1.Comments()) } | T_START_HEREDOC T_END_HEREDOC { - $$ = scalar.NewEncapsed(nil).SetPosition(NewTokensPosition($1, $2)) + $$ = scalar.NewEncapsed(nil) + positions.AddPosition($$, NewTokensPosition($1, $2)) comments.AddComments($$, $1.Comments()) } | '"' encaps_list '"' { - $$ = scalar.NewEncapsed($2).SetPosition(NewTokensPosition($1, $3)) + $$ = scalar.NewEncapsed($2) + positions.AddPosition($$, NewTokensPosition($1, $3)) comments.AddComments($$, $1.Comments()) } | T_START_HEREDOC encaps_list T_END_HEREDOC { - $$ = scalar.NewEncapsed($2).SetPosition(NewTokensPosition($1, $3)) + $$ = scalar.NewEncapsed($2) + positions.AddPosition($$, NewTokensPosition($1, $3)) comments.AddComments($$, $1.Comments()) } | dereferencable_scalar { $$ = $1; } @@ -1929,21 +2168,26 @@ scalar: constant: name { - $$ = expr.NewConstFetch($1).SetPosition(NewNodePosition($1)) + $$ = expr.NewConstFetch($1) + positions.AddPosition($$, NewNodePosition($1)) comments.AddComments($$, comments[$1]) } | class_name T_PAAMAYIM_NEKUDOTAYIM identifier { - target := node.NewIdentifier($3.Value).SetPosition(NewTokenPosition($3)) - $$ = expr.NewClassConstFetch($1, target).SetPosition(NewNodeTokenPosition($1, $3)) + target := node.NewIdentifier($3.Value) + positions.AddPosition(target, NewTokenPosition($3)) + $$ = expr.NewClassConstFetch($1, target) + positions.AddPosition($$, NewNodeTokenPosition($1, $3)) comments.AddComments(target, $3.Comments()) comments.AddComments($$, comments[$1]) } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM identifier { - target := node.NewIdentifier($3.Value).SetPosition(NewTokenPosition($3)) - $$ = expr.NewClassConstFetch($1, target).SetPosition(NewNodeTokenPosition($1, $3)) + target := node.NewIdentifier($3.Value) + positions.AddPosition(target, NewTokenPosition($3)) + $$ = expr.NewClassConstFetch($1, target) + positions.AddPosition($$, NewNodeTokenPosition($1, $3)) comments.AddComments(target, $3.Comments()) comments.AddComments($$, comments[$1]) @@ -1980,22 +2224,26 @@ callable_variable: simple_variable { $$ = $1; } | dereferencable '[' optional_expr ']' { - $$ = expr.NewArrayDimFetch($1, $3).SetPosition(NewNodeTokenPosition($1, $4)) + $$ = expr.NewArrayDimFetch($1, $3) + positions.AddPosition($$, NewNodeTokenPosition($1, $4)) comments.AddComments($$, comments[$1]) } | constant '[' optional_expr ']' { - $$ = expr.NewArrayDimFetch($1, $3).SetPosition(NewNodeTokenPosition($1, $4)) + $$ = expr.NewArrayDimFetch($1, $3) + positions.AddPosition($$, NewNodeTokenPosition($1, $4)) comments.AddComments($$, comments[$1]) } | dereferencable '{' expr '}' { - $$ = expr.NewArrayDimFetch($1, $3).SetPosition(NewNodeTokenPosition($1, $4)) + $$ = expr.NewArrayDimFetch($1, $3) + positions.AddPosition($$, NewNodeTokenPosition($1, $4)) comments.AddComments($$, comments[$1]) } | dereferencable T_OBJECT_OPERATOR property_name argument_list { - $$ = expr.NewMethodCall($1, $3, $4.nodes).SetPosition(NewNodeTokenPosition($1, $4.endToken)) + $$ = expr.NewMethodCall($1, $3, $4.nodes) + positions.AddPosition($$, NewNodeTokenPosition($1, $4.endToken)) comments.AddComments($$, comments[$1]) } | function_call { $$ = $1; } @@ -2006,7 +2254,8 @@ variable: | static_member { $$ = $1; } | dereferencable T_OBJECT_OPERATOR property_name { - $$ = expr.NewPropertyFetch($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = expr.NewPropertyFetch($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } ; @@ -2014,20 +2263,24 @@ variable: simple_variable: T_VARIABLE { - name := node.NewIdentifier($1.Value).SetPosition(NewTokenPosition($1)) - $$ = expr.NewVariable(name).SetPosition(NewTokenPosition($1)) + name := node.NewIdentifier($1.Value) + positions.AddPosition(name, NewTokenPosition($1)) + $$ = expr.NewVariable(name) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments(name, $1.Comments()) comments.AddComments($$, $1.Comments()) } | '$' '{' expr '}' { - $$ = expr.NewVariable($3).SetPosition(NewTokensPosition($1, $4)) + $$ = expr.NewVariable($3) + positions.AddPosition($$, NewTokensPosition($1, $4)) comments.AddComments($$, $1.Comments()) } | '$' simple_variable { - $$ = expr.NewVariable($2).SetPosition(NewTokenNodePosition($1, $2)) + $$ = expr.NewVariable($2) + positions.AddPosition($$, NewTokenNodePosition($1, $2)) comments.AddComments($$, $1.Comments()) } ; @@ -2035,12 +2288,14 @@ simple_variable: static_member: class_name T_PAAMAYIM_NEKUDOTAYIM simple_variable { - $$ = expr.NewStaticPropertyFetch($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = expr.NewStaticPropertyFetch($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM simple_variable { - $$ = expr.NewStaticPropertyFetch($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = expr.NewStaticPropertyFetch($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } ; @@ -2049,27 +2304,32 @@ new_variable: simple_variable { $$ = $1 } | new_variable '[' optional_expr ']' { - $$ = expr.NewArrayDimFetch($1, $3).SetPosition(NewNodeTokenPosition($1, $4)) + $$ = expr.NewArrayDimFetch($1, $3) + positions.AddPosition($$, NewNodeTokenPosition($1, $4)) comments.AddComments($$, comments[$1]) } | new_variable '{' expr '}' { - $$ = expr.NewArrayDimFetch($1, $3).SetPosition(NewNodeTokenPosition($1, $4)) + $$ = expr.NewArrayDimFetch($1, $3) + positions.AddPosition($$, NewNodeTokenPosition($1, $4)) comments.AddComments($$, comments[$1]) } | new_variable T_OBJECT_OPERATOR property_name { - $$ = expr.NewPropertyFetch($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = expr.NewPropertyFetch($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | class_name T_PAAMAYIM_NEKUDOTAYIM simple_variable { - $$ = expr.NewStaticPropertyFetch($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = expr.NewStaticPropertyFetch($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | new_variable T_PAAMAYIM_NEKUDOTAYIM simple_variable { - $$ = expr.NewStaticPropertyFetch($1, $3).SetPosition(NewNodesPosition($1, $3)) + $$ = expr.NewStaticPropertyFetch($1, $3) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } ; @@ -2077,7 +2337,8 @@ new_variable: member_name: identifier { - $$ = node.NewIdentifier($1.Value).SetPosition(NewTokenPosition($1)) + $$ = node.NewIdentifier($1.Value) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments($$, $1.Comments()) } | '{' expr '}' { $$ = $2; } @@ -2087,7 +2348,8 @@ member_name: property_name: T_STRING { - $$ = node.NewIdentifier($1.Value).SetPosition(NewTokenPosition($1)) + $$ = node.NewIdentifier($1.Value) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments($$, $1.Comments()) } | '{' expr '}' { $$ = $2; } @@ -2119,30 +2381,35 @@ non_empty_array_pair_list: array_pair: expr T_DOUBLE_ARROW expr { - $$ = expr.NewArrayItem($1, $3, false).SetPosition(NewNodesPosition($1, $3)) + $$ = expr.NewArrayItem($1, $3, false) + positions.AddPosition($$, NewNodesPosition($1, $3)) comments.AddComments($$, comments[$1]) } | expr { - $$ = expr.NewArrayItem(nil, $1, false).SetPosition(NewNodePosition($1)) + $$ = expr.NewArrayItem(nil, $1, false) + positions.AddPosition($$, NewNodePosition($1)) comments.AddComments($$, comments[$1]) } | expr T_DOUBLE_ARROW '&' variable { - $$ = expr.NewArrayItem($1, $4, true).SetPosition(NewNodesPosition($1, $4)) + $$ = expr.NewArrayItem($1, $4, true) + positions.AddPosition($$, NewNodesPosition($1, $4)) comments.AddComments($$, comments[$1]) } | '&' variable { - $$ = expr.NewArrayItem(nil, $2, true).SetPosition(NewTokenNodePosition($1, $2)) + $$ = expr.NewArrayItem(nil, $2, true) + positions.AddPosition($$, NewTokenNodePosition($1, $2)) comments.AddComments($$, $1.Comments()) } | expr T_DOUBLE_ARROW T_LIST '(' array_pair_list ')' { // TODO: Cannot use list() as standalone expression - list := expr.NewList($5).SetPosition(NewTokensPosition($3, $6)) - $$ = expr.NewArrayItem($1, list, false). - SetPosition(NewNodeTokenPosition($1, $6)) + list := expr.NewList($5) + positions.AddPosition(list, NewTokensPosition($3, $6)) + $$ = expr.NewArrayItem($1, list, false) + positions.AddPosition($$, NewNodeTokenPosition($1, $6)) comments.AddComments(list, $3.Comments()) comments.AddComments($$, comments[$1]) @@ -2150,9 +2417,10 @@ array_pair: | T_LIST '(' array_pair_list ')' { // TODO: Cannot use list() as standalone expression - list := expr.NewList($3).SetPosition(NewTokensPosition($1, $4)) - $$ = expr.NewArrayItem(nil, list, false). - SetPosition(NewTokensPosition($1, $4)) + list := expr.NewList($3) + positions.AddPosition(list, NewTokensPosition($1, $4)) + $$ = expr.NewArrayItem(nil, list, false) + positions.AddPosition($$, NewTokensPosition($1, $4)) comments.AddComments(list, $1.Comments()) comments.AddComments($$, $1.Comments()) @@ -2163,14 +2431,16 @@ encaps_list: encaps_list encaps_var { $$ = append($1, $2) } | encaps_list T_ENCAPSED_AND_WHITESPACE { - encapsed := scalar.NewEncapsedStringPart($2.Value).SetPosition(NewTokenPosition($2)) + encapsed := scalar.NewEncapsedStringPart($2.Value) + positions.AddPosition(encapsed, NewTokenPosition($2)) $$ = append($1, encapsed) comments.AddComments(encapsed, $2.Comments()) } | encaps_var { $$ = []node.Node{$1} } | T_ENCAPSED_AND_WHITESPACE encaps_var { - encapsed := scalar.NewEncapsedStringPart($1.Value).SetPosition(NewTokenPosition($1)) + encapsed := scalar.NewEncapsedStringPart($1.Value) + positions.AddPosition(encapsed, NewTokenPosition($1)) $$ = []node.Node{encapsed, $2} comments.AddComments(encapsed, $1.Comments()) } @@ -2179,17 +2449,22 @@ encaps_list: encaps_var: T_VARIABLE { - name := node.NewIdentifier($1.Value).SetPosition(NewTokenPosition($1)) - $$ = expr.NewVariable(name).SetPosition(NewTokenPosition($1)) + name := node.NewIdentifier($1.Value) + positions.AddPosition(name, NewTokenPosition($1)) + $$ = expr.NewVariable(name) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments(name, $1.Comments()) comments.AddComments($$, $1.Comments()) } | T_VARIABLE '[' encaps_var_offset ']' { - identifier := node.NewIdentifier($1.Value).SetPosition(NewTokenPosition($1)) - variable := expr.NewVariable(identifier).SetPosition(NewTokenPosition($1)) - $$ = expr.NewArrayDimFetch(variable, $3).SetPosition(NewTokensPosition($1, $4)) + identifier := node.NewIdentifier($1.Value) + positions.AddPosition(identifier, NewTokenPosition($1)) + variable := expr.NewVariable(identifier) + positions.AddPosition(variable, NewTokenPosition($1)) + $$ = expr.NewArrayDimFetch(variable, $3) + positions.AddPosition($$, NewTokensPosition($1, $4)) comments.AddComments(identifier, $1.Comments()) comments.AddComments(variable, $1.Comments()) @@ -2197,11 +2472,14 @@ encaps_var: } | T_VARIABLE T_OBJECT_OPERATOR T_STRING { - identifier := node.NewIdentifier($1.Value).SetPosition(NewTokenPosition($1)) - variable := expr.NewVariable(identifier).SetPosition(NewTokenPosition($1)) - fetch := node.NewIdentifier($3.Value).SetPosition(NewTokenPosition($3)) - $$ = expr.NewPropertyFetch(variable, fetch). - SetPosition(NewTokensPosition($1, $3)) + identifier := node.NewIdentifier($1.Value) + positions.AddPosition(identifier, NewTokenPosition($1)) + variable := expr.NewVariable(identifier) + positions.AddPosition(variable, NewTokenPosition($1)) + fetch := node.NewIdentifier($3.Value) + positions.AddPosition(fetch, NewTokenPosition($3)) + $$ = expr.NewPropertyFetch(variable, fetch) + positions.AddPosition($$, NewTokensPosition($1, $3)) comments.AddComments(identifier, $1.Comments()) comments.AddComments(variable, $1.Comments()) @@ -2210,22 +2488,28 @@ encaps_var: } | T_DOLLAR_OPEN_CURLY_BRACES expr '}' { - $$ = expr.NewVariable($2).SetPosition(NewTokensPosition($1, $3)) + $$ = expr.NewVariable($2) + positions.AddPosition($$, NewTokensPosition($1, $3)) comments.AddComments($$, $1.Comments()) } | T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '}' { - name := node.NewIdentifier($2.Value).SetPosition(NewTokenPosition($2)) - $$ = expr.NewVariable(name).SetPosition(NewTokensPosition($1, $3)) + name := node.NewIdentifier($2.Value) + positions.AddPosition(name, NewTokenPosition($2)) + $$ = expr.NewVariable(name) + positions.AddPosition($$, NewTokensPosition($1, $3)) comments.AddComments(name, $2.Comments()) comments.AddComments($$, $1.Comments()) } | T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '[' expr ']' '}' { - identifier := node.NewIdentifier($2.Value).SetPosition(NewTokenPosition($2)) - variable := expr.NewVariable(identifier).SetPosition(NewTokenPosition($2)) - $$ = expr.NewArrayDimFetch(variable, $4).SetPosition(NewTokensPosition($1, $6)) + identifier := node.NewIdentifier($2.Value) + positions.AddPosition(identifier, NewTokenPosition($2)) + variable := expr.NewVariable(identifier) + positions.AddPosition(variable, NewTokenPosition($2)) + $$ = expr.NewArrayDimFetch(variable, $4) + positions.AddPosition($$, NewTokensPosition($1, $6)) comments.AddComments(identifier, $2.Comments()) @@ -2237,16 +2521,19 @@ encaps_var: encaps_var_offset: T_STRING { - $$ = scalar.NewString($1.Value).SetPosition(NewTokenPosition($1)) + $$ = scalar.NewString($1.Value) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments($$, $1.Comments()) } | T_NUM_STRING { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi($1.Value); err == nil { - $$ = scalar.NewLnumber($1.Value).SetPosition(NewTokenPosition($1)) + $$ = scalar.NewLnumber($1.Value) + positions.AddPosition($$, NewTokenPosition($1)) } else { - $$ = scalar.NewString($1.Value).SetPosition(NewTokenPosition($1)) + $$ = scalar.NewString($1.Value) + positions.AddPosition($$, NewTokenPosition($1)) } comments.AddComments($$, $1.Comments()) } @@ -2254,22 +2541,26 @@ encaps_var_offset: { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi($2.Value); err == nil { - lnumber := scalar.NewLnumber($2.Value).SetPosition(NewTokensPosition($1, $2)) - $$ = expr.NewUnaryMinus(lnumber). - SetPosition(NewTokensPosition($1, $2)) + lnumber := scalar.NewLnumber($2.Value) + positions.AddPosition(lnumber, NewTokensPosition($1, $2)) + $$ = expr.NewUnaryMinus(lnumber) + positions.AddPosition($$, NewTokensPosition($1, $2)) comments.AddComments(lnumber, $1.Comments()) } else { $2.Value = "-"+$2.Value - $$ = scalar.NewString($2.Value).SetPosition(NewTokensPosition($1, $2)) + $$ = scalar.NewString($2.Value) + positions.AddPosition($$, NewTokensPosition($1, $2)) } comments.AddComments($$, $1.Comments()) } | T_VARIABLE { - identifier := node.NewIdentifier($1.Value).SetPosition(NewTokenPosition($1)) - $$ = expr.NewVariable(identifier).SetPosition(NewTokenPosition($1)) + identifier := node.NewIdentifier($1.Value) + positions.AddPosition(identifier, NewTokenPosition($1)) + $$ = expr.NewVariable(identifier) + positions.AddPosition($$, NewTokenPosition($1)) comments.AddComments(identifier, $1.Comments()) comments.AddComments($$, $1.Comments()) @@ -2279,37 +2570,44 @@ encaps_var_offset: internal_functions_in_yacc: T_ISSET '(' isset_variables possible_comma ')' { - $$ = expr.NewIsset($3).SetPosition(NewTokensPosition($1, $5)) + $$ = expr.NewIsset($3) + positions.AddPosition($$, NewTokensPosition($1, $5)) comments.AddComments($$, $1.Comments()) } | T_EMPTY '(' expr ')' { - $$ = expr.NewEmpty($3).SetPosition(NewTokensPosition($1, $4)) + $$ = expr.NewEmpty($3) + positions.AddPosition($$, NewTokensPosition($1, $4)) comments.AddComments($$, $1.Comments()) } | T_INCLUDE expr { - $$ = expr.NewInclude($2).SetPosition(NewTokenNodePosition($1, $2)) + $$ = expr.NewInclude($2) + positions.AddPosition($$, NewTokenNodePosition($1, $2)) comments.AddComments($$, $1.Comments()) } | T_INCLUDE_ONCE expr { - $$ = expr.NewIncludeOnce($2).SetPosition(NewTokenNodePosition($1, $2)) + $$ = expr.NewIncludeOnce($2) + positions.AddPosition($$, NewTokenNodePosition($1, $2)) comments.AddComments($$, $1.Comments()) } | T_EVAL '(' expr ')' { - $$ = expr.NewEval($3).SetPosition(NewTokensPosition($1, $4)) + $$ = expr.NewEval($3) + positions.AddPosition($$, NewTokensPosition($1, $4)) comments.AddComments($$, $1.Comments()) } | T_REQUIRE expr { - $$ = expr.NewRequire($2).SetPosition(NewTokenNodePosition($1, $2)) + $$ = expr.NewRequire($2) + positions.AddPosition($$, NewTokenNodePosition($1, $2)) comments.AddComments($$, $1.Comments()) } | T_REQUIRE_ONCE expr { - $$ = expr.NewRequireOnce($2).SetPosition(NewTokenNodePosition($1, $2)) + $$ = expr.NewRequireOnce($2) + positions.AddPosition($$, NewTokenNodePosition($1, $2)) comments.AddComments($$, $1.Comments()) } ; diff --git a/parser/positions.go b/parser/positions.go index 8d3fd39..4bf9cf5 100644 --- a/parser/positions.go +++ b/parser/positions.go @@ -2,6 +2,7 @@ package parser import ( "github.com/z7zmey/php-parser/node" + "github.com/z7zmey/php-parser/position" "github.com/z7zmey/php-parser/token" ) @@ -35,7 +36,7 @@ func getNodeStartPos(n node.Node) startPos { return startPos{-1, -1} } - p := n.Position() + p := positions[n] if p != nil { sl = p.StartLine sp = p.StartPos @@ -64,7 +65,7 @@ func getNodeEndPos(n node.Node) endPos { return endPos{-1, -1} } - p := n.Position() + p := positions[n] if p != nil { el = p.EndLine ep = p.EndPos @@ -73,8 +74,8 @@ func getNodeEndPos(n node.Node) endPos { return endPos{el, ep} } -func NewNodeListPosition(list []node.Node) *node.Position { - return &node.Position{ +func NewNodeListPosition(list []node.Node) *position.Position { + return &position.Position{ getListStartPos(list).startLine, getListEndPos(list).endLine, getListStartPos(list).startPos, @@ -82,8 +83,8 @@ func NewNodeListPosition(list []node.Node) *node.Position { } } -func NewNodePosition(n node.Node) *node.Position { - return &node.Position{ +func NewNodePosition(n node.Node) *position.Position { + return &position.Position{ getNodeStartPos(n).startLine, getNodeEndPos(n).endLine, getNodeStartPos(n).startPos, @@ -91,8 +92,8 @@ func NewNodePosition(n node.Node) *node.Position { } } -func NewTokenPosition(t token.Token) *node.Position { - return &node.Position{ +func NewTokenPosition(t token.Token) *position.Position { + return &position.Position{ t.StartLine, t.EndLine, t.StartPos, @@ -100,8 +101,8 @@ func NewTokenPosition(t token.Token) *node.Position { } } -func NewTokensPosition(startToken token.Token, endToken token.Token) *node.Position { - return &node.Position{ +func NewTokensPosition(startToken token.Token, endToken token.Token) *position.Position { + return &position.Position{ startToken.StartLine, endToken.EndLine, startToken.StartPos, @@ -109,8 +110,8 @@ func NewTokensPosition(startToken token.Token, endToken token.Token) *node.Posit } } -func NewTokenNodePosition(t token.Token, n node.Node) *node.Position { - return &node.Position{ +func NewTokenNodePosition(t token.Token, n node.Node) *position.Position { + return &position.Position{ t.StartLine, getNodeEndPos(n).endLine, t.StartPos, @@ -118,8 +119,8 @@ func NewTokenNodePosition(t token.Token, n node.Node) *node.Position { } } -func NewNodeTokenPosition(n node.Node, t token.Token) *node.Position { - return &node.Position{ +func NewNodeTokenPosition(n node.Node, t token.Token) *position.Position { + return &position.Position{ getNodeStartPos(n).startLine, t.EndLine, getNodeStartPos(n).startPos, @@ -127,8 +128,8 @@ func NewNodeTokenPosition(n node.Node, t token.Token) *node.Position { } } -func NewNodesPosition(startNode node.Node, endNode node.Node) *node.Position { - return &node.Position{ +func NewNodesPosition(startNode node.Node, endNode node.Node) *position.Position { + return &position.Position{ getNodeStartPos(startNode).startLine, getNodeEndPos(endNode).endLine, getNodeStartPos(startNode).startPos, @@ -136,8 +137,8 @@ func NewNodesPosition(startNode node.Node, endNode node.Node) *node.Position { } } -func NewNodeListTokenPosition(list []node.Node, t token.Token) *node.Position { - return &node.Position{ +func NewNodeListTokenPosition(list []node.Node, t token.Token) *position.Position { + return &position.Position{ getListStartPos(list).startLine, t.EndLine, getListStartPos(list).startPos, @@ -145,8 +146,8 @@ func NewNodeListTokenPosition(list []node.Node, t token.Token) *node.Position { } } -func NewTokenNodeListPosition(t token.Token, list []node.Node) *node.Position { - return &node.Position{ +func NewTokenNodeListPosition(t token.Token, list []node.Node) *position.Position { + return &position.Position{ t.StartLine, getListEndPos(list).endLine, t.StartPos, @@ -154,8 +155,8 @@ func NewTokenNodeListPosition(t token.Token, list []node.Node) *node.Position { } } -func NewNodeNodeListPosition(n node.Node, list []node.Node) *node.Position { - return &node.Position{ +func NewNodeNodeListPosition(n node.Node, list []node.Node) *position.Position { + return &position.Position{ getNodeStartPos(n).startLine, getListEndPos(list).endLine, getNodeStartPos(n).startPos, @@ -163,16 +164,16 @@ func NewNodeNodeListPosition(n node.Node, list []node.Node) *node.Position { } } -func NewOptionalListTokensPosition(list []node.Node, t token.Token, endToken token.Token) *node.Position { +func NewOptionalListTokensPosition(list []node.Node, t token.Token, endToken token.Token) *position.Position { if list == nil { - return &node.Position{ + return &position.Position{ t.StartLine, endToken.EndLine, t.StartPos, endToken.EndPos, } } else { - return &node.Position{ + return &position.Position{ getListStartPos(list).startLine, endToken.EndLine, getListStartPos(list).startPos, diff --git a/position/position.go b/position/position.go new file mode 100644 index 0000000..7448cfa --- /dev/null +++ b/position/position.go @@ -0,0 +1,24 @@ +package position + +import ( + "fmt" + + "github.com/z7zmey/php-parser/node" +) + +type Position struct { + StartLine int + EndLine int + StartPos int + EndPos int +} + +func (p Position) String() string { + return fmt.Sprintf("Pos{Line: %d-%d Pos: %d-%d}", p.StartLine, p.EndLine, p.StartPos, p.EndPos) +} + +type Positions map[node.Node]*Position + +func (p Positions) AddPosition(node node.Node, position *Position) { + p[node] = position +} diff --git a/test/node/scalar/encapsed_test.go b/test/node/scalar/encapsed_test.go index 0abdf6f..0576156 100644 --- a/test/node/scalar/encapsed_test.go +++ b/test/node/scalar/encapsed_test.go @@ -16,16 +16,20 @@ import ( func TestSimpleVar(t *testing.T) { src := `bar()";` - varName := node.NewIdentifier("$foo").SetPosition(&node.Position{1, 1, 10, 13}) - variable := expr.NewVariable(varName).SetPosition(&node.Position{1, 1, 10, 13}) - - property := node.NewIdentifier("bar").SetPosition(&node.Position{1, 1, 16, 18}) - propertyFetch := expr.NewPropertyFetch(variable, property).SetPosition(&node.Position{1, 1, 10, 18}) - - parts := []node.Node{ - scalar.NewEncapsedStringPart("test ").SetPosition(&node.Position{1, 1, 5, 9}), - propertyFetch, - scalar.NewEncapsedStringPart("()").SetPosition(&node.Position{1, 1, 19, 20}), + expected := &stmt.StmtList{ + Stmts: []node.Node{ + &stmt.Expression{ + Expr: &scalar.Encapsed{ + Parts: []node.Node{ + &scalar.EncapsedStringPart{Value: "test "}, + &expr.PropertyFetch{ + Variable: &expr.Variable{VarName: &node.Identifier{Value: "$foo"}}, + Property: &node.Identifier{Value: "bar"}, + }, + &scalar.EncapsedStringPart{Value: "()"}, + }, + }, + }, + }, } - encapsed := scalar.NewEncapsed(parts).SetPosition(&node.Position{1, 1, 4, 21}) - expr := stmt.NewExpression(encapsed).SetPosition(&node.Position{1, 1, 4, 22}) - expected := stmt.NewStmtList([]node.Node{expr}).SetPosition(&node.Position{1, 1, 4, 22}) - actual, _ := parser.Parse(bytes.NewBufferString(src), "test.php") + actual, _, _ := parser.Parse(bytes.NewBufferString(src), "test.php") if diff := pretty.Compare(expected, actual); diff != "" { t.Errorf("diff: (-expected +actual)\n%s", diff) @@ -60,17 +66,20 @@ func TestSimpleVarPropertyFetch(t *testing.T) { func TestDollarOpenCurlyBraces(t *testing.T) { src := `bar()}";` - varName := node.NewIdentifier("$foo").SetPosition(&node.Position{1, 1, 11, 14}) - variable := expr.NewVariable(varName).SetPosition(&node.Position{1, 1, 11, 14}) - - method := node.NewIdentifier("bar").SetPosition(&node.Position{1, 1, 17, 19}) - - methodCall := expr.NewMethodCall(variable, method, nil).SetPosition(&node.Position{1, 1, 11, 21}) - - parts := []node.Node{ - scalar.NewEncapsedStringPart("test ").SetPosition(&node.Position{1, 1, 5, 9}), - methodCall, + expected := &stmt.StmtList{ + Stmts: []node.Node{ + &stmt.Expression{ + Expr: &scalar.Encapsed{ + Parts: []node.Node{ + &scalar.EncapsedStringPart{Value: "test "}, + &expr.MethodCall{ + Variable: &expr.Variable{VarName: &node.Identifier{Value: "$foo"}}, + Method: &node.Identifier{Value: "bar"}, + }, + }, + }, + }, + }, } - encapsed := scalar.NewEncapsed(parts).SetPosition(&node.Position{1, 1, 4, 23}) - expr := stmt.NewExpression(encapsed).SetPosition(&node.Position{1, 1, 4, 24}) - expected := stmt.NewStmtList([]node.Node{expr}).SetPosition(&node.Position{1, 1, 4, 24}) - actual, _ := parser.Parse(bytes.NewBufferString(src), "test.php") + actual, _, _ := parser.Parse(bytes.NewBufferString(src), "test.php") if diff := pretty.Compare(expected, actual); diff != "" { t.Errorf("diff: (-expected +actual)\n%s", diff) diff --git a/test/node/scalar/string_test.go b/test/node/scalar/string_test.go index bd105d3..a04a8a9 100644 --- a/test/node/scalar/string_test.go +++ b/test/node/scalar/string_test.go @@ -14,11 +14,15 @@ import ( func TestDoubleQuotedScalarString(t *testing.T) { src := `