From 70a4ef18ab4e4b38b16dc25a9ce180cc9a756b12 Mon Sep 17 00:00:00 2001 From: vadim Date: Fri, 29 Dec 2017 17:20:24 +0200 Subject: [PATCH] node attributes --- dumper.go | 15 +- node/argument.go | 26 +- node/expr/array.go | 29 +- node/expr/array_dim_fetch.go | 12 +- node/expr/array_item.go | 24 +- node/expr/assign_op/assign.go | 12 +- node/expr/assign_op/assign_ref.go | 12 +- node/expr/assign_op/bitwise_and.go | 12 +- node/expr/assign_op/bitwise_or.go | 12 +- node/expr/assign_op/bitwise_xor.go | 4 + node/expr/assign_op/concat.go | 12 +- node/expr/assign_op/div.go | 12 +- node/expr/assign_op/minus.go | 12 +- node/expr/assign_op/mod.go | 12 +- node/expr/assign_op/mul.go | 12 +- node/expr/assign_op/plus.go | 12 +- node/expr/assign_op/pow.go | 12 +- node/expr/assign_op/shift_left.go | 12 +- node/expr/assign_op/shift_right.go | 12 +- node/expr/binary_op/bitwise_and.go | 12 +- node/expr/binary_op/bitwise_or.go | 4 + node/expr/binary_op/bitwise_xor.go | 4 + node/expr/binary_op/boolean_and.go | 12 +- node/expr/binary_op/boolean_or.go | 12 +- node/expr/binary_op/coalesce.go | 12 +- node/expr/binary_op/concat.go | 12 +- node/expr/binary_op/div.go | 12 +- node/expr/binary_op/equal.go | 12 +- node/expr/binary_op/greater.go | 12 +- node/expr/binary_op/greater_or_equal.go | 12 +- node/expr/binary_op/identical.go | 12 +- node/expr/binary_op/logical_and.go | 12 +- node/expr/binary_op/logical_or.go | 12 +- node/expr/binary_op/logical_xor.go | 12 +- node/expr/binary_op/minus.go | 12 +- node/expr/binary_op/mod.go | 12 +- node/expr/binary_op/mul.go | 12 +- node/expr/binary_op/not_equal.go | 12 +- node/expr/binary_op/not_identical.go | 12 +- node/expr/binary_op/plus.go | 12 +- node/expr/binary_op/pow.go | 12 +- node/expr/binary_op/shift_left.go | 12 +- node/expr/binary_op/shift_right.go | 12 +- node/expr/binary_op/smaller.go | 12 +- node/expr/binary_op/smaller_or_equal.go | 12 +- node/expr/binary_op/spaceship.go | 12 +- node/expr/bitwise_not.go | 12 +- node/expr/boolean_not.go | 12 +- node/expr/cast/cast_array.go | 12 +- node/expr/cast/cast_bool.go | 12 +- node/expr/cast/cast_double.go | 12 +- node/expr/cast/cast_int.go | 12 +- node/expr/cast/cast_object.go | 12 +- node/expr/cast/cast_string.go | 12 +- node/expr/cast/cast_unset.go | 12 +- node/expr/class_const_fetch.go | 21 +- node/expr/clone.go | 12 +- node/expr/closure.go | 34 +- node/expr/closure_use.go | 24 +- node/expr/const_fetch.go | 12 +- node/expr/empty.go | 12 +- node/expr/error_suppress.go | 12 +- node/expr/eval.go | 12 +- node/expr/exit.go | 22 +- node/expr/function_call.go | 12 +- node/expr/include.go | 12 +- node/expr/include_once.go | 12 +- node/expr/instance_of.go | 12 +- node/expr/isset.go | 12 +- node/expr/list.go | 12 +- node/expr/method_call.go | 12 +- node/expr/new.go | 12 +- node/expr/post_dec.go | 16 +- node/expr/post_inc.go | 16 +- node/expr/pre_dec.go | 16 +- node/expr/pre_inc.go | 16 +- node/expr/print.go | 12 +- node/expr/property_fetch.go | 12 +- node/expr/require.go | 12 +- node/expr/require_once.go | 12 +- node/expr/shell_exec.go | 12 +- node/expr/short_array.go | 29 +- node/expr/short_list.go | 12 +- node/expr/static_call.go | 12 +- node/expr/static_property_fetch.go | 12 +- node/expr/ternary.go | 12 +- node/expr/unary_minus.go | 12 +- node/expr/unary_plus.go | 12 +- node/expr/variable.go | 12 +- node/expr/yield.go | 12 +- node/expr/yield_from.go | 12 +- node/identifier.go | 22 +- node/name/fully_qualified.go | 4 + node/name/name.go | 14 +- node/name/name_part.go | 29 +- node/name/relative.go | 4 + node/node.go | 1 + node/nullable.go | 12 +- node/parameter.go | 30 +- node/scalar/dnumber.go | 29 +- node/scalar/encapsed.go | 29 +- node/scalar/encapsed_string_part.go | 29 +- node/scalar/lnumber.go | 29 +- node/scalar/magic_constant.go | 29 +- node/scalar/string.go | 30 +- node/stmt/alt_else.go | 27 +- node/stmt/alt_else_if.go | 31 +- node/stmt/alt_if.go | 17 +- node/stmt/break.go | 27 +- node/stmt/case.go | 31 +- node/stmt/catch.go | 17 +- node/stmt/class.go | 24 +- node/stmt/class_const_list.go | 31 +- node/stmt/class_method.go | 53 +- node/stmt/const_list.go | 27 +- node/stmt/constant.go | 34 +- node/stmt/continue.go | 27 +- node/stmt/declare.go | 31 +- node/stmt/default.go | 27 +- node/stmt/do.go | 31 +- node/stmt/echo.go | 27 +- node/stmt/else.go | 27 +- node/stmt/else_if.go | 31 +- node/stmt/expression.go | 12 +- node/stmt/finally.go | 27 +- node/stmt/for.go | 27 +- node/stmt/foreach.go | 45 +- node/stmt/function.go | 49 +- node/stmt/global.go | 27 +- node/stmt/goto.go | 33 +- node/stmt/group_use.go | 19 +- node/stmt/halt_compiler.go | 23 +- node/stmt/if.go | 17 +- node/stmt/inline_html.go | 29 +- node/stmt/interface.go | 40 +- node/stmt/label.go | 30 +- node/stmt/namespace.go | 31 +- node/stmt/nop.go | 32 +- node/stmt/property.go | 33 +- node/stmt/property_list.go | 12 +- node/stmt/return.go | 27 +- node/stmt/static.go | 27 +- node/stmt/static_var.go | 34 +- node/stmt/stmt_list.go | 12 +- node/stmt/switch.go | 4 + node/stmt/throw.go | 27 +- node/stmt/trait.go | 35 +- node/stmt/trait_method_ref.go | 25 +- node/stmt/trait_use.go | 32 +- node/stmt/trait_use_alias.go | 22 +- node/stmt/trait_use_precedence.go | 12 +- node/stmt/try.go | 17 +- node/stmt/unset.go | 27 +- node/stmt/use.go | 16 +- node/stmt/use_list.go | 31 +- node/stmt/while.go | 4 + node/visitor.go | 1 - parser/parser.go | 858 ++++++++++++------------ parser/parser.y | 188 +++--- 159 files changed, 2214 insertions(+), 1682 deletions(-) diff --git a/dumper.go b/dumper.go index 9b94f3e..d3b16c3 100644 --- a/dumper.go +++ b/dumper.go @@ -11,18 +11,19 @@ type dumper struct { } func (d dumper) EnterNode(n node.Node) bool { - fmt.Printf("%v[%v]:\n", d.indent, n.Name()) + + fmt.Printf("%v%v", d.indent, n.Name()) + if a := n.Attributes(); a != nil { + fmt.Printf(" %v", a) + } + fmt.Println() return true } func (d dumper) GetChildrenVisitor(key string) node.Visitor { - fmt.Printf("%v%v:\n", d.indent+". ", key) - return dumper{d.indent + ". . "} -} - -func (d dumper) Scalar(key string, value interface{}) { - fmt.Printf("%v%v: %v\n", d.indent+". ", key, value) + fmt.Printf("%v%q:\n", d.indent+" ", key) + return dumper{d.indent + " "} } func (d dumper) LeaveNode(n node.Node) { diff --git a/node/argument.go b/node/argument.go index 9c20f41..63faf22 100644 --- a/node/argument.go +++ b/node/argument.go @@ -1,21 +1,29 @@ package node type Argument struct { - name string - expr Node - variadic bool + name string + arguments map[string]interface{} + expr Node + variadic bool +} + +func NewArgument(expression Node, variadic bool) Node { + return Argument{ + "Argument", + map[string]interface{}{ + "variadic": variadic, + }, + expression, + variadic, + } } func (n Argument) Name() string { return "Argument" } -func NewArgument(expression Node, variadic bool) Node { - return Argument{ - "Argument", - expression, - variadic, - } +func (n Argument) Attributes() map[string]interface{} { + return n.arguments } func (n Argument) Walk(v Visitor) { diff --git a/node/expr/array.go b/node/expr/array.go index 439fd63..1a720c7 100644 --- a/node/expr/array.go +++ b/node/expr/array.go @@ -2,27 +2,26 @@ package expr import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type Array struct { + name string + items []node.Node +} + +func NewArray(items []node.Node) node.Node { + return Array{ + "Array", + items, + } +} + func (n Array) Name() string { return "Array" } -type Array struct { - name string - opentToken token.Token - closeToken token.Token - items []node.Node -} - -func NewArray(opentToken token.Token, closeToken token.Token, items []node.Node) node.Node { - return Array{ - "Array", - opentToken, - closeToken, - items, - } +func (n Array) Attributes() map[string]interface{} { + return nil } func (n Array) Walk(v node.Visitor) { diff --git a/node/expr/array_dim_fetch.go b/node/expr/array_dim_fetch.go index bb126b2..a8a5437 100644 --- a/node/expr/array_dim_fetch.go +++ b/node/expr/array_dim_fetch.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n ArrayDimFetch) Name() string { - return "ArrayDimFetch" -} - type ArrayDimFetch struct { name string variable node.Node @@ -22,6 +18,14 @@ func NewArrayDimFetch(variable node.Node, dim node.Node) node.Node { } } +func (n ArrayDimFetch) Name() string { + return "ArrayDimFetch" +} + +func (n ArrayDimFetch) Attributes() map[string]interface{} { + return nil +} + 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 b71b0df..a7b841b 100644 --- a/node/expr/array_item.go +++ b/node/expr/array_item.go @@ -4,26 +4,32 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n ArrayItem) Name() string { - return "ArrayItem" -} - type ArrayItem struct { - name string - key node.Node - val node.Node - byRef bool + name string + attributes map[string]interface{} + key node.Node + val node.Node } func NewArrayItem(key node.Node, val node.Node, byRef bool) node.Node { return ArrayItem{ "ArrayItem", + map[string]interface{}{ + "byRef": byRef, + }, key, val, - byRef, } } +func (n ArrayItem) Name() string { + return "ArrayItem" +} + +func (n ArrayItem) Attributes() map[string]interface{} { + return nil +} + 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 8207d37..48f106b 100644 --- a/node/expr/assign_op/assign.go +++ b/node/expr/assign_op/assign.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Assign) Name() string { - return "Assign" -} - type Assign struct { AssignOp } @@ -22,6 +18,14 @@ func NewAssign(variable node.Node, expression node.Node) node.Node { } } +func (n Assign) Name() string { + return "Assign" +} + +func (n Assign) Attributes() map[string]interface{} { + return nil +} + func (n Assign) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/assign_op/assign_ref.go b/node/expr/assign_op/assign_ref.go index e17a463..27a2e23 100644 --- a/node/expr/assign_op/assign_ref.go +++ b/node/expr/assign_op/assign_ref.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n AssignRef) Name() string { - return "AssignRef" -} - type AssignRef struct { AssignOp } @@ -22,6 +18,14 @@ func NewAssignRef(variable node.Node, expression node.Node) node.Node { } } +func (n AssignRef) Name() string { + return "AssignRef" +} + +func (n AssignRef) Attributes() map[string]interface{} { + return nil +} + 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 9e3bf85..183248c 100644 --- a/node/expr/assign_op/bitwise_and.go +++ b/node/expr/assign_op/bitwise_and.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n BitwiseAnd) Name() string { - return "BitwiseAnd" -} - type BitwiseAnd struct { AssignOp } @@ -22,6 +18,14 @@ func NewBitwiseAnd(variable node.Node, expression node.Node) node.Node { } } +func (n BitwiseAnd) Name() string { + return "BitwiseAnd" +} + +func (n BitwiseAnd) Attributes() map[string]interface{} { + return nil +} + 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 3e93244..f9c4bed 100644 --- a/node/expr/assign_op/bitwise_or.go +++ b/node/expr/assign_op/bitwise_or.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n BitwiseOr) Name() string { - return "BitwiseOr" -} - type BitwiseOr struct { AssignOp } @@ -22,6 +18,14 @@ func NewBitwiseOr(variable node.Node, expression node.Node) node.Node { } } +func (n BitwiseOr) Name() string { + return "BitwiseOr" +} + +func (n BitwiseOr) Attributes() map[string]interface{} { + return nil +} + 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 b213e46..0661c30 100644 --- a/node/expr/assign_op/bitwise_xor.go +++ b/node/expr/assign_op/bitwise_xor.go @@ -18,6 +18,10 @@ func NewBitwiseXor(variable node.Node, expression node.Node) node.Node { } } +func (n BitwiseXor) Attributes() map[string]interface{} { + return nil +} + func (n BitwiseXor) Name() string { return "BitwiseXor" } diff --git a/node/expr/assign_op/concat.go b/node/expr/assign_op/concat.go index 54fdca8..0a91af7 100644 --- a/node/expr/assign_op/concat.go +++ b/node/expr/assign_op/concat.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Concat) Name() string { - return "Concat" -} - type Concat struct { AssignOp } @@ -22,6 +18,14 @@ func NewConcat(variable node.Node, expression node.Node) node.Node { } } +func (n Concat) Name() string { + return "Concat" +} + +func (n Concat) Attributes() map[string]interface{} { + return nil +} + 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 bfdaed8..8ae9ae5 100644 --- a/node/expr/assign_op/div.go +++ b/node/expr/assign_op/div.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Div) Name() string { - return "Div" -} - type Div struct { AssignOp } @@ -22,6 +18,14 @@ func NewDiv(variable node.Node, expression node.Node) node.Node { } } +func (n Div) Name() string { + return "Div" +} + +func (n Div) Attributes() map[string]interface{} { + return nil +} + 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 0c30485..782e5e7 100644 --- a/node/expr/assign_op/minus.go +++ b/node/expr/assign_op/minus.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Minus) Name() string { - return "Minus" -} - type Minus struct { AssignOp } @@ -22,6 +18,14 @@ func NewMinus(variable node.Node, expression node.Node) node.Node { } } +func (n Minus) Name() string { + return "Minus" +} + +func (n Minus) Attributes() map[string]interface{} { + return nil +} + 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 c0e60b3..334815d 100644 --- a/node/expr/assign_op/mod.go +++ b/node/expr/assign_op/mod.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Mod) Name() string { - return "Mod" -} - type Mod struct { AssignOp } @@ -22,6 +18,14 @@ func NewMod(variable node.Node, expression node.Node) node.Node { } } +func (n Mod) Name() string { + return "Mod" +} + +func (n Mod) Attributes() map[string]interface{} { + return nil +} + 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 be7764a..6326165 100644 --- a/node/expr/assign_op/mul.go +++ b/node/expr/assign_op/mul.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Mul) Name() string { - return "Mul" -} - type Mul struct { AssignOp } @@ -22,6 +18,14 @@ func NewMul(variable node.Node, expression node.Node) node.Node { } } +func (n Mul) Name() string { + return "Mul" +} + +func (n Mul) Attributes() map[string]interface{} { + return nil +} + 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 c576320..2a764e6 100644 --- a/node/expr/assign_op/plus.go +++ b/node/expr/assign_op/plus.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Plus) Name() string { - return "Plus" -} - type Plus struct { AssignOp } @@ -22,6 +18,14 @@ func NewPlus(variable node.Node, expression node.Node) node.Node { } } +func (n Plus) Name() string { + return "Plus" +} + +func (n Plus) Attributes() map[string]interface{} { + return nil +} + 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 9d44761..4807ced 100644 --- a/node/expr/assign_op/pow.go +++ b/node/expr/assign_op/pow.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Pow) Name() string { - return "Pow" -} - type Pow struct { AssignOp } @@ -22,6 +18,14 @@ func NewPow(variable node.Node, expression node.Node) node.Node { } } +func (n Pow) Name() string { + return "Pow" +} + +func (n Pow) Attributes() map[string]interface{} { + return nil +} + 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 8e40721..b913bae 100644 --- a/node/expr/assign_op/shift_left.go +++ b/node/expr/assign_op/shift_left.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n ShiftLeft) Name() string { - return "ShiftLeft" -} - type ShiftLeft struct { AssignOp } @@ -22,6 +18,14 @@ func NewShiftLeft(variable node.Node, expression node.Node) node.Node { } } +func (n ShiftLeft) Name() string { + return "ShiftLeft" +} + +func (n ShiftLeft) Attributes() map[string]interface{} { + return nil +} + 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 ac507c2..4707551 100644 --- a/node/expr/assign_op/shift_right.go +++ b/node/expr/assign_op/shift_right.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n ShiftRight) Name() string { - return "ShiftRight" -} - type ShiftRight struct { AssignOp } @@ -22,6 +18,14 @@ func NewShiftRight(variable node.Node, expression node.Node) node.Node { } } +func (n ShiftRight) Name() string { + return "ShiftRight" +} + +func (n ShiftRight) Attributes() map[string]interface{} { + return nil +} + func (n ShiftRight) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/binary_op/bitwise_and.go b/node/expr/binary_op/bitwise_and.go index 25d3625..0871304 100644 --- a/node/expr/binary_op/bitwise_and.go +++ b/node/expr/binary_op/bitwise_and.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n BitwiseAnd) Name() string { - return "BitwiseAnd" -} - type BitwiseAnd struct { BinaryOp } @@ -22,6 +18,14 @@ func NewBitwiseAnd(variable node.Node, expression node.Node) node.Node { } } +func (n BitwiseAnd) Name() string { + return "BitwiseAnd" +} + +func (n BitwiseAnd) Attributes() map[string]interface{} { + return nil +} + 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 56c7261..083242d 100644 --- a/node/expr/binary_op/bitwise_or.go +++ b/node/expr/binary_op/bitwise_or.go @@ -18,6 +18,10 @@ func NewBitwiseOr(variable node.Node, expression node.Node) node.Node { } } +func (n BitwiseOr) Attributes() map[string]interface{} { + return nil +} + func (n BitwiseOr) Name() string { return "BitwiseOr" } diff --git a/node/expr/binary_op/bitwise_xor.go b/node/expr/binary_op/bitwise_xor.go index d0dd8b8..a461dd3 100644 --- a/node/expr/binary_op/bitwise_xor.go +++ b/node/expr/binary_op/bitwise_xor.go @@ -18,6 +18,10 @@ func NewBitwiseXor(variable node.Node, expression node.Node) node.Node { } } +func (n BitwiseXor) Attributes() map[string]interface{} { + return nil +} + func (n BitwiseXor) Name() string { return "BitwiseXor" } diff --git a/node/expr/binary_op/boolean_and.go b/node/expr/binary_op/boolean_and.go index e15e031..153d4f8 100644 --- a/node/expr/binary_op/boolean_and.go +++ b/node/expr/binary_op/boolean_and.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n BooleanAnd) Name() string { - return "BooleanAnd" -} - type BooleanAnd struct { BinaryOp } @@ -22,6 +18,14 @@ func NewBooleanAnd(variable node.Node, expression node.Node) node.Node { } } +func (n BooleanAnd) Name() string { + return "BooleanAnd" +} + +func (n BooleanAnd) Attributes() map[string]interface{} { + return nil +} + 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 3b2002c..9dfed38 100644 --- a/node/expr/binary_op/boolean_or.go +++ b/node/expr/binary_op/boolean_or.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n BooleanOr) Name() string { - return "BooleanOr" -} - type BooleanOr struct { BinaryOp } @@ -22,6 +18,14 @@ func NewBooleanOr(variable node.Node, expression node.Node) node.Node { } } +func (n BooleanOr) Name() string { + return "BooleanOr" +} + +func (n BooleanOr) Attributes() map[string]interface{} { + return nil +} + 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 611f3ab..81fc772 100644 --- a/node/expr/binary_op/coalesce.go +++ b/node/expr/binary_op/coalesce.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Coalesce) Name() string { - return "Coalesce" -} - type Coalesce struct { BinaryOp } @@ -22,6 +18,14 @@ func NewCoalesce(variable node.Node, expression node.Node) node.Node { } } +func (n Coalesce) Name() string { + return "Coalesce" +} + +func (n Coalesce) Attributes() map[string]interface{} { + return nil +} + 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 cf0ad5c..f21001b 100644 --- a/node/expr/binary_op/concat.go +++ b/node/expr/binary_op/concat.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Concat) Name() string { - return "Concat" -} - type Concat struct { BinaryOp } @@ -22,6 +18,14 @@ func NewConcat(variable node.Node, expression node.Node) node.Node { } } +func (n Concat) Name() string { + return "Concat" +} + +func (n Concat) Attributes() map[string]interface{} { + return nil +} + 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 13f8a31..63e292f 100644 --- a/node/expr/binary_op/div.go +++ b/node/expr/binary_op/div.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Div) Name() string { - return "Div" -} - type Div struct { BinaryOp } @@ -22,6 +18,14 @@ func NewDiv(variable node.Node, expression node.Node) node.Node { } } +func (n Div) Name() string { + return "Div" +} + +func (n Div) Attributes() map[string]interface{} { + return nil +} + 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 da77da4..9f168e2 100644 --- a/node/expr/binary_op/equal.go +++ b/node/expr/binary_op/equal.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Equal) Name() string { - return "Equal" -} - type Equal struct { BinaryOp } @@ -22,6 +18,14 @@ func NewEqual(variable node.Node, expression node.Node) node.Node { } } +func (n Equal) Name() string { + return "Equal" +} + +func (n Equal) Attributes() map[string]interface{} { + return nil +} + 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 f3f8352..704d26e 100644 --- a/node/expr/binary_op/greater.go +++ b/node/expr/binary_op/greater.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Greater) Name() string { - return "Greater" -} - type Greater struct { BinaryOp } @@ -22,6 +18,14 @@ func NewGreater(variable node.Node, expression node.Node) node.Node { } } +func (n Greater) Name() string { + return "Greater" +} + +func (n Greater) Attributes() map[string]interface{} { + return nil +} + 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 c267c63..deb22c4 100644 --- a/node/expr/binary_op/greater_or_equal.go +++ b/node/expr/binary_op/greater_or_equal.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n GreaterOrEqual) Name() string { - return "GreaterOrEqual" -} - type GreaterOrEqual struct { BinaryOp } @@ -22,6 +18,14 @@ func NewGreaterOrEqual(variable node.Node, expression node.Node) node.Node { } } +func (n GreaterOrEqual) Name() string { + return "GreaterOrEqual" +} + +func (n GreaterOrEqual) Attributes() map[string]interface{} { + return nil +} + 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 61e5ed4..7eb731f 100644 --- a/node/expr/binary_op/identical.go +++ b/node/expr/binary_op/identical.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Identical) Name() string { - return "Identical" -} - type Identical struct { BinaryOp } @@ -22,6 +18,14 @@ func NewIdentical(variable node.Node, expression node.Node) node.Node { } } +func (n Identical) Name() string { + return "Identical" +} + +func (n Identical) Attributes() map[string]interface{} { + return nil +} + 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 e10075d..f2a19d7 100644 --- a/node/expr/binary_op/logical_and.go +++ b/node/expr/binary_op/logical_and.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n LogicalAnd) Name() string { - return "LogicalAnd" -} - type LogicalAnd struct { BinaryOp } @@ -22,6 +18,14 @@ func NewLogicalAnd(variable node.Node, expression node.Node) node.Node { } } +func (n LogicalAnd) Name() string { + return "LogicalAnd" +} + +func (n LogicalAnd) Attributes() map[string]interface{} { + return nil +} + 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 463f20d..a049fdd 100644 --- a/node/expr/binary_op/logical_or.go +++ b/node/expr/binary_op/logical_or.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n LogicalOr) Name() string { - return "LogicalOr" -} - type LogicalOr struct { BinaryOp } @@ -22,6 +18,14 @@ func NewLogicalOr(variable node.Node, expression node.Node) node.Node { } } +func (n LogicalOr) Name() string { + return "LogicalOr" +} + +func (n LogicalOr) Attributes() map[string]interface{} { + return nil +} + 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 0fe06d3..21ff258 100644 --- a/node/expr/binary_op/logical_xor.go +++ b/node/expr/binary_op/logical_xor.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n LogicalXor) Name() string { - return "LogicalXor" -} - type LogicalXor struct { BinaryOp } @@ -22,6 +18,14 @@ func NewLogicalXor(variable node.Node, expression node.Node) node.Node { } } +func (n LogicalXor) Name() string { + return "LogicalXor" +} + +func (n LogicalXor) Attributes() map[string]interface{} { + return nil +} + 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 89be533..0fc5b14 100644 --- a/node/expr/binary_op/minus.go +++ b/node/expr/binary_op/minus.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Minus) Name() string { - return "Minus" -} - type Minus struct { BinaryOp } @@ -22,6 +18,14 @@ func NewMinus(variable node.Node, expression node.Node) node.Node { } } +func (n Minus) Name() string { + return "Minus" +} + +func (n Minus) Attributes() map[string]interface{} { + return nil +} + 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 6515806..c795437 100644 --- a/node/expr/binary_op/mod.go +++ b/node/expr/binary_op/mod.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Mod) Name() string { - return "Mod" -} - type Mod struct { BinaryOp } @@ -22,6 +18,14 @@ func NewMod(variable node.Node, expression node.Node) node.Node { } } +func (n Mod) Name() string { + return "Mod" +} + +func (n Mod) Attributes() map[string]interface{} { + return nil +} + 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 257d1c3..7878e53 100644 --- a/node/expr/binary_op/mul.go +++ b/node/expr/binary_op/mul.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Mul) Name() string { - return "Mul" -} - type Mul struct { BinaryOp } @@ -22,6 +18,14 @@ func NewMul(variable node.Node, expression node.Node) node.Node { } } +func (n Mul) Name() string { + return "Mul" +} + +func (n Mul) Attributes() map[string]interface{} { + return nil +} + 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 4b393df..173568a 100644 --- a/node/expr/binary_op/not_equal.go +++ b/node/expr/binary_op/not_equal.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n NotEqual) Name() string { - return "NotEqual" -} - type NotEqual struct { BinaryOp } @@ -22,6 +18,14 @@ func NewNotEqual(variable node.Node, expression node.Node) node.Node { } } +func (n NotEqual) Name() string { + return "NotEqual" +} + +func (n NotEqual) Attributes() map[string]interface{} { + return nil +} + 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 d351b72..4e81ba0 100644 --- a/node/expr/binary_op/not_identical.go +++ b/node/expr/binary_op/not_identical.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n NotIdentical) Name() string { - return "NotIdentical" -} - type NotIdentical struct { BinaryOp } @@ -22,6 +18,14 @@ func NewNotIdentical(variable node.Node, expression node.Node) node.Node { } } +func (n NotIdentical) Name() string { + return "NotIdentical" +} + +func (n NotIdentical) Attributes() map[string]interface{} { + return nil +} + 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 0c21d7d..bf40f91 100644 --- a/node/expr/binary_op/plus.go +++ b/node/expr/binary_op/plus.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Plus) Name() string { - return "Plus" -} - type Plus struct { BinaryOp } @@ -22,6 +18,14 @@ func NewPlus(variable node.Node, expression node.Node) node.Node { } } +func (n Plus) Name() string { + return "Plus" +} + +func (n Plus) Attributes() map[string]interface{} { + return nil +} + 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 56cedc3..c97dabb 100644 --- a/node/expr/binary_op/pow.go +++ b/node/expr/binary_op/pow.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Pow) Name() string { - return "Pow" -} - type Pow struct { BinaryOp } @@ -22,6 +18,14 @@ func NewPow(variable node.Node, expression node.Node) node.Node { } } +func (n Pow) Name() string { + return "Pow" +} + +func (n Pow) Attributes() map[string]interface{} { + return nil +} + 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 980c0da..f4be34d 100644 --- a/node/expr/binary_op/shift_left.go +++ b/node/expr/binary_op/shift_left.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n ShiftLeft) Name() string { - return "ShiftLeft" -} - type ShiftLeft struct { BinaryOp } @@ -22,6 +18,14 @@ func NewShiftLeft(variable node.Node, expression node.Node) node.Node { } } +func (n ShiftLeft) Name() string { + return "ShiftLeft" +} + +func (n ShiftLeft) Attributes() map[string]interface{} { + return nil +} + 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 6b6e1b5..9700449 100644 --- a/node/expr/binary_op/shift_right.go +++ b/node/expr/binary_op/shift_right.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n ShiftRight) Name() string { - return "ShiftRight" -} - type ShiftRight struct { BinaryOp } @@ -22,6 +18,14 @@ func NewShiftRight(variable node.Node, expression node.Node) node.Node { } } +func (n ShiftRight) Name() string { + return "ShiftRight" +} + +func (n ShiftRight) Attributes() map[string]interface{} { + return nil +} + 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 f2d7f33..aafe19d 100644 --- a/node/expr/binary_op/smaller.go +++ b/node/expr/binary_op/smaller.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Smaller) Name() string { - return "Smaller" -} - type Smaller struct { BinaryOp } @@ -22,6 +18,14 @@ func NewSmaller(variable node.Node, expression node.Node) node.Node { } } +func (n Smaller) Name() string { + return "Smaller" +} + +func (n Smaller) Attributes() map[string]interface{} { + return nil +} + 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 db7be1a..ac3149d 100644 --- a/node/expr/binary_op/smaller_or_equal.go +++ b/node/expr/binary_op/smaller_or_equal.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n SmallerOrEqual) Name() string { - return "SmallerOrEqual" -} - type SmallerOrEqual struct { BinaryOp } @@ -22,6 +18,14 @@ func NewSmallerOrEqual(variable node.Node, expression node.Node) node.Node { } } +func (n SmallerOrEqual) Name() string { + return "SmallerOrEqual" +} + +func (n SmallerOrEqual) Attributes() map[string]interface{} { + return nil +} + 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 043204a..e85bd59 100644 --- a/node/expr/binary_op/spaceship.go +++ b/node/expr/binary_op/spaceship.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Spaceship) Name() string { - return "Spaceship" -} - type Spaceship struct { BinaryOp } @@ -22,6 +18,14 @@ func NewSpaceship(variable node.Node, expression node.Node) node.Node { } } +func (n Spaceship) Name() string { + return "Spaceship" +} + +func (n Spaceship) Attributes() map[string]interface{} { + return nil +} + 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 06afcc5..639d0c7 100644 --- a/node/expr/bitwise_not.go +++ b/node/expr/bitwise_not.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n BitwiseNot) Name() string { - return "BitwiseNot" -} - type BitwiseNot struct { name string expr node.Node @@ -20,6 +16,14 @@ func NewBitwiseNot(expression node.Node) node.Node { } } +func (n BitwiseNot) Name() string { + return "BitwiseNot" +} + +func (n BitwiseNot) Attributes() map[string]interface{} { + return nil +} + 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 3b33e24..bbe4b89 100644 --- a/node/expr/boolean_not.go +++ b/node/expr/boolean_not.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n BooleanNot) Name() string { - return "BooleanNot" -} - type BooleanNot struct { name string expr node.Node @@ -20,6 +16,14 @@ func NewBooleanNot(expression node.Node) node.Node { } } +func (n BooleanNot) Name() string { + return "BooleanNot" +} + +func (n BooleanNot) Attributes() map[string]interface{} { + return nil +} + func (n BooleanNot) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/expr/cast/cast_array.go b/node/expr/cast/cast_array.go index 69c29e0..b0979a5 100644 --- a/node/expr/cast/cast_array.go +++ b/node/expr/cast/cast_array.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n CastArray) Name() string { - return "CastArray" -} - type CastArray struct { Cast } @@ -21,6 +17,14 @@ func NewCastArray(expr node.Node) node.Node { } } +func (n CastArray) Name() string { + return "CastArray" +} + +func (n CastArray) Attributes() map[string]interface{} { + return nil +} + 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 f5191ea..232d68f 100644 --- a/node/expr/cast/cast_bool.go +++ b/node/expr/cast/cast_bool.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n CastBool) Name() string { - return "CastBool" -} - type CastBool struct { Cast } @@ -21,6 +17,14 @@ func NewCastBool(expr node.Node) node.Node { } } +func (n CastBool) Name() string { + return "CastBool" +} + +func (n CastBool) Attributes() map[string]interface{} { + return nil +} + 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 dc98d5d..bff4c6d 100644 --- a/node/expr/cast/cast_double.go +++ b/node/expr/cast/cast_double.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n CastDouble) Name() string { - return "CastDouble" -} - type CastDouble struct { Cast } @@ -21,6 +17,14 @@ func NewCastDouble(expr node.Node) node.Node { } } +func (n CastDouble) Name() string { + return "CastDouble" +} + +func (n CastDouble) Attributes() map[string]interface{} { + return nil +} + 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 3fc0cde..143ac81 100644 --- a/node/expr/cast/cast_int.go +++ b/node/expr/cast/cast_int.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n CastInt) Name() string { - return "CastInt" -} - type CastInt struct { Cast } @@ -21,6 +17,14 @@ func NewCastInt(expr node.Node) node.Node { } } +func (n CastInt) Name() string { + return "CastInt" +} + +func (n CastInt) Attributes() map[string]interface{} { + return nil +} + 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 366cc15..e1d5f72 100644 --- a/node/expr/cast/cast_object.go +++ b/node/expr/cast/cast_object.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n CastObject) Name() string { - return "CastObject" -} - type CastObject struct { Cast } @@ -21,6 +17,14 @@ func NewCastObject(expr node.Node) node.Node { } } +func (n CastObject) Name() string { + return "CastObject" +} + +func (n CastObject) Attributes() map[string]interface{} { + return nil +} + 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 a61003d..891a970 100644 --- a/node/expr/cast/cast_string.go +++ b/node/expr/cast/cast_string.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n CastString) Name() string { - return "CastString" -} - type CastString struct { Cast } @@ -21,6 +17,14 @@ func NewCastString(expr node.Node) node.Node { } } +func (n CastString) Name() string { + return "CastString" +} + +func (n CastString) Attributes() map[string]interface{} { + return nil +} + 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 97959dc..ba60af5 100644 --- a/node/expr/cast/cast_unset.go +++ b/node/expr/cast/cast_unset.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n CastUnset) Name() string { - return "CastUnset" -} - type CastUnset struct { Cast } @@ -21,6 +17,14 @@ func NewCastUnset(expr node.Node) node.Node { } } +func (n CastUnset) Name() string { + return "CastUnset" +} + +func (n CastUnset) Attributes() map[string]interface{} { + return nil +} + 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 8feb796..be1d396 100644 --- a/node/expr/class_const_fetch.go +++ b/node/expr/class_const_fetch.go @@ -2,25 +2,27 @@ package expr import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +func (n ClassConstFetch) Attributes() map[string]interface{} { + return nil +} + func (n ClassConstFetch) Name() string { return "ClassConstFetch" } type ClassConstFetch struct { - name string - class node.Node - constant token.Token + name string + class node.Node + constantName node.Node } -// TODO: constant must be identifier -func NewClassConstFetch(class node.Node, constant token.Token) node.Node { +func NewClassConstFetch(class node.Node, constantName node.Node) node.Node { return ClassConstFetch{ "ClassConstFetch", class, - constant, + constantName, } } @@ -29,7 +31,10 @@ func (n ClassConstFetch) Walk(v node.Visitor) { return } - v.Scalar("constant", n.constant.Value) + if n.constantName != nil { + vv := v.GetChildrenVisitor("constantName") + n.constantName.Walk(vv) + } if n.class != nil { vv := v.GetChildrenVisitor("class") diff --git a/node/expr/clone.go b/node/expr/clone.go index a5bdee8..a6e8b94 100644 --- a/node/expr/clone.go +++ b/node/expr/clone.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Clone) Name() string { - return "Clone" -} - type Clone struct { name string expr node.Node @@ -20,6 +16,14 @@ func NewClone(expression node.Node) node.Node { } } +func (n Clone) Name() string { + return "Clone" +} + +func (n Clone) Attributes() map[string]interface{} { + return nil +} + 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 75d1d4b..b9e7893 100644 --- a/node/expr/closure.go +++ b/node/expr/closure.go @@ -4,40 +4,42 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Closure) Name() string { - return "Closure" -} - type Closure struct { - name string - params []node.Node - uses []node.Node - returnType node.Node - stmts []node.Node - isReturnRef bool - isStatic bool + name string + attributes map[string]interface{} + params []node.Node + uses []node.Node + returnType node.Node + stmts []node.Node } func NewClosure(params []node.Node, uses []node.Node, returnType node.Node, stmts []node.Node, isStatic bool, isReturnRef bool) node.Node { return Closure{ "Closure", + map[string]interface{}{ + "isReturnRef": isReturnRef, + "isStatic": isStatic, + }, params, uses, returnType, stmts, - isReturnRef, - isStatic, } } +func (n Closure) Name() string { + return "Closure" +} + +func (n Closure) Attributes() map[string]interface{} { + return nil +} + func (n Closure) Walk(v node.Visitor) { if v.EnterNode(n) == false { return } - v.Scalar("isStatic", n.isStatic) - v.Scalar("isReturnRef", n.isReturnRef) - if n.params != nil { vv := v.GetChildrenVisitor("params") for _, nn := range n.params { diff --git a/node/expr/closure_use.go b/node/expr/closure_use.go index 302a8bf..b5996e1 100644 --- a/node/expr/closure_use.go +++ b/node/expr/closure_use.go @@ -4,31 +4,35 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n ClusureUse) Name() string { - return "ClusureUse" -} - type ClusureUse struct { - name string - variable node.Node - byRef bool + name string + attributes map[string]interface{} + variable node.Node } func NewClusureUse(variable node.Node, byRef bool) node.Node { return ClusureUse{ "ClusureUse", + map[string]interface{}{ + "byRef": byRef, + }, variable, - byRef, } } +func (n ClusureUse) Name() string { + return "ClusureUse" +} + +func (n ClusureUse) Attributes() map[string]interface{} { + return nil +} + func (n ClusureUse) Walk(v node.Visitor) { if v.EnterNode(n) == false { return } - v.Scalar("byRef", n.byRef) - if n.variable != nil { vv := v.GetChildrenVisitor("variable") n.variable.Walk(vv) diff --git a/node/expr/const_fetch.go b/node/expr/const_fetch.go index 7385953..d53c260 100644 --- a/node/expr/const_fetch.go +++ b/node/expr/const_fetch.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n ConstFetch) Name() string { - return "ConstFetch" -} - type ConstFetch struct { name string constant node.Node @@ -20,6 +16,14 @@ func NewConstFetch(constant node.Node) node.Node { } } +func (n ConstFetch) Name() string { + return "ConstFetch" +} + +func (n ConstFetch) Attributes() map[string]interface{} { + return nil +} + 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 19426b9..7f8fbb0 100644 --- a/node/expr/empty.go +++ b/node/expr/empty.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Empty) Name() string { - return "Empty" -} - type Empty struct { name string expr node.Node @@ -20,6 +16,14 @@ func NewEmpty(expression node.Node) node.Node { } } +func (n Empty) Name() string { + return "Empty" +} + +func (n Empty) Attributes() map[string]interface{} { + return nil +} + 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 6346230..f465a23 100644 --- a/node/expr/error_suppress.go +++ b/node/expr/error_suppress.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n ErrorSuppress) Name() string { - return "ErrorSuppress" -} - type ErrorSuppress struct { name string expr node.Node @@ -20,6 +16,14 @@ func NewErrorSuppress(expression node.Node) node.Node { } } +func (n ErrorSuppress) Name() string { + return "ErrorSuppress" +} + +func (n ErrorSuppress) Attributes() map[string]interface{} { + return nil +} + 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 2f40487..3289d47 100644 --- a/node/expr/eval.go +++ b/node/expr/eval.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Eval) Name() string { - return "Eval" -} - type Eval struct { name string expr node.Node @@ -20,6 +16,14 @@ func NewEval(expression node.Node) node.Node { } } +func (n Eval) Name() string { + return "Eval" +} + +func (n Eval) Attributes() map[string]interface{} { + return nil +} + 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 b0a5d83..ed5c022 100644 --- a/node/expr/exit.go +++ b/node/expr/exit.go @@ -4,24 +4,30 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Exit) Name() string { - return "Exit" -} - type Exit struct { - name string - expr node.Node - isDie bool + name string + attributes map[string]interface{} + expr node.Node } func NewExit(expr node.Node, isDie bool) node.Node { return Exit{ "Exit", + map[string]interface{}{ + "isDie": isDie, + }, expr, - isDie, } } +func (n Exit) Name() string { + return "Exit" +} + +func (n Exit) Attributes() map[string]interface{} { + return nil +} + 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 0b8ffed..2d716b1 100644 --- a/node/expr/function_call.go +++ b/node/expr/function_call.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n FunctionCall) Name() string { - return "FunctionCall" -} - type FunctionCall struct { name string function node.Node @@ -22,6 +18,14 @@ func NewFunctionCall(function node.Node, arguments []node.Node) node.Node { } } +func (n FunctionCall) Name() string { + return "FunctionCall" +} + +func (n FunctionCall) Attributes() map[string]interface{} { + return nil +} + 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 8cdd2c4..a783573 100644 --- a/node/expr/include.go +++ b/node/expr/include.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Include) Name() string { - return "Include" -} - type Include struct { name string expr node.Node @@ -20,6 +16,14 @@ func NewInclude(expression node.Node) node.Node { } } +func (n Include) Name() string { + return "Include" +} + +func (n Include) Attributes() map[string]interface{} { + return nil +} + 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 78d56d3..d09eb13 100644 --- a/node/expr/include_once.go +++ b/node/expr/include_once.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n IncludeOnce) Name() string { - return "IncludeOnce" -} - type IncludeOnce struct { name string expr node.Node @@ -20,6 +16,14 @@ func NewIncludeOnce(expression node.Node) node.Node { } } +func (n IncludeOnce) Name() string { + return "IncludeOnce" +} + +func (n IncludeOnce) Attributes() map[string]interface{} { + return nil +} + 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 dff3b90..55099c3 100644 --- a/node/expr/instance_of.go +++ b/node/expr/instance_of.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n InstanceOf) Name() string { - return "InstanceOf" -} - type InstanceOf struct { name string expr node.Node @@ -22,6 +18,14 @@ func NewInstanceOf(expr node.Node, class node.Node) node.Node { } } +func (n InstanceOf) Name() string { + return "InstanceOf" +} + +func (n InstanceOf) Attributes() map[string]interface{} { + return nil +} + 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 57f0a7b..f1ee5b4 100644 --- a/node/expr/isset.go +++ b/node/expr/isset.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Isset) Name() string { - return "Isset" -} - type Isset struct { name string variables []node.Node @@ -20,6 +16,14 @@ func NewIsset(variables []node.Node) node.Node { } } +func (n Isset) Name() string { + return "Isset" +} + +func (n Isset) Attributes() map[string]interface{} { + return nil +} + 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 8093e3e..b07bbea 100644 --- a/node/expr/list.go +++ b/node/expr/list.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n List) Name() string { - return "List" -} - type List struct { name string items []node.Node @@ -20,6 +16,14 @@ func NewList(items []node.Node) node.Node { } } +func (n List) Name() string { + return "List" +} + +func (n List) Attributes() map[string]interface{} { + return nil +} + 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 d9bcbaf..ff9358c 100644 --- a/node/expr/method_call.go +++ b/node/expr/method_call.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n MethodCall) Name() string { - return "MethodCall" -} - type MethodCall struct { name string variable node.Node @@ -24,6 +20,14 @@ func NewMethodCall(variable node.Node, method node.Node, arguments []node.Node) } } +func (n MethodCall) Name() string { + return "MethodCall" +} + +func (n MethodCall) Attributes() map[string]interface{} { + return nil +} + 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 625ea4d..a07c7ba 100644 --- a/node/expr/new.go +++ b/node/expr/new.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n New) Name() string { - return "New" -} - type New struct { name string class node.Node @@ -22,6 +18,14 @@ func NewNew(class node.Node, arguments []node.Node) node.Node { } } +func (n New) Name() string { + return "New" +} + +func (n New) Attributes() map[string]interface{} { + return nil +} + 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 8f7454d..fc45364 100644 --- a/node/expr/post_dec.go +++ b/node/expr/post_dec.go @@ -4,22 +4,26 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n PostDec) Name() string { - return "PostDec" -} - type PostDec struct { name string variable node.Node } -func NewPostDec(variableession node.Node) node.Node { +func NewPostDec(variable node.Node) node.Node { return PostDec{ "PostDec", - variableession, + variable, } } +func (n PostDec) Name() string { + return "PostDec" +} + +func (n PostDec) Attributes() map[string]interface{} { + return nil +} + 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 5da07e7..d040f9a 100644 --- a/node/expr/post_inc.go +++ b/node/expr/post_inc.go @@ -4,22 +4,26 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n PostInc) Name() string { - return "PostInc" -} - type PostInc struct { name string variable node.Node } -func NewPostInc(variableession node.Node) node.Node { +func NewPostInc(variable node.Node) node.Node { return PostInc{ "PostInc", - variableession, + variable, } } +func (n PostInc) Name() string { + return "PostInc" +} + +func (n PostInc) Attributes() map[string]interface{} { + return nil +} + 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 6a10549..c1eac0a 100644 --- a/node/expr/pre_dec.go +++ b/node/expr/pre_dec.go @@ -4,22 +4,26 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n PreDec) Name() string { - return "PreDec" -} - type PreDec struct { name string variable node.Node } -func NewPreDec(variableession node.Node) node.Node { +func NewPreDec(variable node.Node) node.Node { return PreDec{ "PreDec", - variableession, + variable, } } +func (n PreDec) Name() string { + return "PreDec" +} + +func (n PreDec) Attributes() map[string]interface{} { + return nil +} + 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 d94c28c..18113d5 100644 --- a/node/expr/pre_inc.go +++ b/node/expr/pre_inc.go @@ -4,22 +4,26 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n PreInc) Name() string { - return "PreInc" -} - type PreInc struct { name string variable node.Node } -func NewPreInc(variableession node.Node) node.Node { +func NewPreInc(variable node.Node) node.Node { return PreInc{ "PreInc", - variableession, + variable, } } +func (n PreInc) Name() string { + return "PreInc" +} + +func (n PreInc) Attributes() map[string]interface{} { + return nil +} + 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 98623df..7706421 100644 --- a/node/expr/print.go +++ b/node/expr/print.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Print) Name() string { - return "Print" -} - type Print struct { name string expr node.Node @@ -20,6 +16,14 @@ func NewPrint(expression node.Node) node.Node { } } +func (n Print) Name() string { + return "Print" +} + +func (n Print) Attributes() map[string]interface{} { + return nil +} + 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 f95efb0..718586c 100644 --- a/node/expr/property_fetch.go +++ b/node/expr/property_fetch.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n PropertyFetch) Name() string { - return "PropertyFetch" -} - type PropertyFetch struct { name string variable node.Node @@ -22,6 +18,14 @@ func NewPropertyFetch(variable node.Node, property node.Node) node.Node { } } +func (n PropertyFetch) Name() string { + return "PropertyFetch" +} + +func (n PropertyFetch) Attributes() map[string]interface{} { + return nil +} + 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 af115b7..256bc9e 100644 --- a/node/expr/require.go +++ b/node/expr/require.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Require) Name() string { - return "Require" -} - type Require struct { name string expr node.Node @@ -20,6 +16,14 @@ func NewRequire(expression node.Node) node.Node { } } +func (n Require) Name() string { + return "Require" +} + +func (n Require) Attributes() map[string]interface{} { + return nil +} + 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 3c49f34..b1cac07 100644 --- a/node/expr/require_once.go +++ b/node/expr/require_once.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n RequireOnce) Name() string { - return "RequireOnce" -} - type RequireOnce struct { name string expr node.Node @@ -20,6 +16,14 @@ func NewRequireOnce(expression node.Node) node.Node { } } +func (n RequireOnce) Name() string { + return "RequireOnce" +} + +func (n RequireOnce) Attributes() map[string]interface{} { + return nil +} + 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 92bfdac..07f3738 100644 --- a/node/expr/shell_exec.go +++ b/node/expr/shell_exec.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n ShellExec) Name() string { - return "ShellExec" -} - type ShellExec struct { name string parts []node.Node @@ -20,6 +16,14 @@ func NewShellExec(parts []node.Node) node.Node { } } +func (n ShellExec) Name() string { + return "ShellExec" +} + +func (n ShellExec) Attributes() map[string]interface{} { + return nil +} + 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 ab8b148..cf8ee39 100644 --- a/node/expr/short_array.go +++ b/node/expr/short_array.go @@ -2,27 +2,26 @@ package expr import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type ShortArray struct { + name string + items []node.Node +} + +func NewShortArray(items []node.Node) node.Node { + return ShortArray{ + "ShortArray", + items, + } +} + func (n ShortArray) Name() string { return "ShortArray" } -type ShortArray struct { - name string - opentToken token.Token - closeToken token.Token - items []node.Node -} - -func NewShortArray(opentToken token.Token, closeToken token.Token, items []node.Node) node.Node { - return ShortArray{ - "ShortArray", - opentToken, - closeToken, - items, - } +func (n ShortArray) Attributes() map[string]interface{} { + return nil } func (n ShortArray) Walk(v node.Visitor) { diff --git a/node/expr/short_list.go b/node/expr/short_list.go index f326507..d31b94a 100644 --- a/node/expr/short_list.go +++ b/node/expr/short_list.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n ShortList) Name() string { - return "ShortList" -} - type ShortList struct { name string items []node.Node @@ -20,6 +16,14 @@ func NewShortList(items []node.Node) node.Node { } } +func (n ShortList) Name() string { + return "ShortList" +} + +func (n ShortList) Attributes() map[string]interface{} { + return nil +} + 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 d43cf8a..e1804dc 100644 --- a/node/expr/static_call.go +++ b/node/expr/static_call.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n StaticCall) Name() string { - return "StaticCall" -} - type StaticCall struct { name string class node.Node @@ -24,6 +20,14 @@ func NewStaticCall(class node.Node, call node.Node, arguments []node.Node) node. } } +func (n StaticCall) Name() string { + return "StaticCall" +} + +func (n StaticCall) Attributes() map[string]interface{} { + return nil +} + 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 12a9b62..7a17097 100644 --- a/node/expr/static_property_fetch.go +++ b/node/expr/static_property_fetch.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n StaticPropertyFetch) Name() string { - return "StaticPropertyFetch" -} - type StaticPropertyFetch struct { name string class node.Node @@ -22,6 +18,14 @@ func NewStaticPropertyFetch(class node.Node, property node.Node) node.Node { } } +func (n StaticPropertyFetch) Name() string { + return "StaticPropertyFetch" +} + +func (n StaticPropertyFetch) Attributes() map[string]interface{} { + return nil +} + 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 b56735b..872cf0a 100644 --- a/node/expr/ternary.go +++ b/node/expr/ternary.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Ternary) Name() string { - return "Ternary" -} - type Ternary struct { name string condition node.Node @@ -24,6 +20,14 @@ func NewTernary(condition node.Node, ifTrue node.Node, ifFalse node.Node) node.N } } +func (n Ternary) Name() string { + return "Ternary" +} + +func (n Ternary) Attributes() map[string]interface{} { + return nil +} + 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 0c4260c..7453098 100644 --- a/node/expr/unary_minus.go +++ b/node/expr/unary_minus.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n UnaryMinus) Name() string { - return "UnaryMinus" -} - type UnaryMinus struct { name string expr node.Node @@ -20,6 +16,14 @@ func NewUnaryMinus(expression node.Node) node.Node { } } +func (n UnaryMinus) Name() string { + return "UnaryMinus" +} + +func (n UnaryMinus) Attributes() map[string]interface{} { + return nil +} + 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 1e8578a..571627b 100644 --- a/node/expr/unary_plus.go +++ b/node/expr/unary_plus.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n UnaryPlus) Name() string { - return "UnaryPlus" -} - type UnaryPlus struct { name string expr node.Node @@ -20,6 +16,14 @@ func NewUnaryPlus(expression node.Node) node.Node { } } +func (n UnaryPlus) Name() string { + return "UnaryPlus" +} + +func (n UnaryPlus) Attributes() map[string]interface{} { + return nil +} + 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 b1282ef..d3ba182 100644 --- a/node/expr/variable.go +++ b/node/expr/variable.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Variable) Name() string { - return "Variable" -} - type Variable struct { name string varName node.Node @@ -20,6 +16,14 @@ func NewVariable(varName node.Node) node.Node { } } +func (n Variable) Name() string { + return "Variable" +} + +func (n Variable) Attributes() map[string]interface{} { + return nil +} + 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 20f677e..6a51f4e 100644 --- a/node/expr/yield.go +++ b/node/expr/yield.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Yield) Name() string { - return "Yield" -} - type Yield struct { name string key node.Node @@ -22,6 +18,14 @@ func NewYield(key node.Node, value node.Node) node.Node { } } +func (n Yield) Name() string { + return "Yield" +} + +func (n Yield) Attributes() map[string]interface{} { + return nil +} + 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 4a85d76..92c26f4 100644 --- a/node/expr/yield_from.go +++ b/node/expr/yield_from.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n YieldFrom) Name() string { - return "YieldFrom" -} - type YieldFrom struct { name string expr node.Node @@ -20,6 +16,14 @@ func NewYieldFrom(expression node.Node) node.Node { } } +func (n YieldFrom) Name() string { + return "YieldFrom" +} + +func (n YieldFrom) Attributes() map[string]interface{} { + return nil +} + func (n YieldFrom) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/identifier.go b/node/identifier.go index 24ad694..ec173a6 100644 --- a/node/identifier.go +++ b/node/identifier.go @@ -5,19 +5,25 @@ import ( ) type Identifier struct { - name string - token token.Token + name string + attributes map[string]interface{} +} + +func NewIdentifier(token token.Token) Node { + return Identifier{ + "Identifier", + map[string]interface{}{ + "value": token.Value, + }, + } } func (n Identifier) Name() string { return "Identifier" } -func NewIdentifier(token token.Token) Node { - return Identifier{ - "Identifier", - token, - } +func (n Identifier) Attributes() map[string]interface{} { + return n.attributes } func (n Identifier) Walk(v Visitor) { @@ -25,7 +31,5 @@ func (n Identifier) Walk(v Visitor) { return } - v.Scalar("token", n.token.Value) - v.LeaveNode(n) } diff --git a/node/name/fully_qualified.go b/node/name/fully_qualified.go index ef1f216..a18ea5c 100644 --- a/node/name/fully_qualified.go +++ b/node/name/fully_qualified.go @@ -20,3 +20,7 @@ func NewFullyQualified(parts []node.Node) node.Node { func (n FullyQualified) Name() string { return "FullyQualified" } + +func (n FullyQualified) Attributes() map[string]interface{} { + return nil +} diff --git a/node/name/name.go b/node/name/name.go index 4eb061a..eb0c601 100644 --- a/node/name/name.go +++ b/node/name/name.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n NameNode) Name() string { - return "Name" -} - type NameNode struct { name string parts []node.Node @@ -20,6 +16,14 @@ func NewName(parts []node.Node) node.Node { } } +func (n NameNode) Name() string { + return "Name" +} + +func (n NameNode) Attributes() map[string]interface{} { + return nil +} + func (n NameNode) Walk(v node.Visitor) { if v.EnterNode(n) == false { return @@ -31,4 +35,6 @@ func (n NameNode) Walk(v node.Visitor) { nn.Walk(vv) } } + + v.LeaveNode(n) } diff --git a/node/name/name_part.go b/node/name/name_part.go index 37223b7..ed3e3de 100644 --- a/node/name/name_part.go +++ b/node/name/name_part.go @@ -2,23 +2,28 @@ package name import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type NamePart struct { + name string + attributes map[string]interface{} +} + +func NewNamePart(value string) node.Node { + return NamePart{ + "NamePart", + map[string]interface{}{ + "value": value, + }, + } +} + func (n NamePart) Name() string { return "NamePart" } -type NamePart struct { - name string - token token.Token -} - -func NewNamePart(token token.Token) node.Node { - return NamePart{ - "NamePart", - token, - } +func (n NamePart) Attributes() map[string]interface{} { + return n.attributes } func (n NamePart) Walk(v node.Visitor) { @@ -26,5 +31,5 @@ func (n NamePart) Walk(v node.Visitor) { return } - v.Scalar("token", n.token.Value) + v.LeaveNode(n) } diff --git a/node/name/relative.go b/node/name/relative.go index 4647462..de58ba4 100644 --- a/node/name/relative.go +++ b/node/name/relative.go @@ -20,3 +20,7 @@ func NewRelative(parts []node.Node) node.Node { func (n Relative) Name() string { return "Relative" } + +func (n Relative) Attributes() map[string]interface{} { + return nil +} diff --git a/node/node.go b/node/node.go index 0dca0ac..e4af1dc 100644 --- a/node/node.go +++ b/node/node.go @@ -2,5 +2,6 @@ package node type Node interface { Name() string + Attributes() map[string]interface{} Walk(v Visitor) } diff --git a/node/nullable.go b/node/nullable.go index 3ec57e6..a1675d9 100644 --- a/node/nullable.go +++ b/node/nullable.go @@ -5,10 +5,6 @@ type Nullable struct { expr Node } -func (n Nullable) Name() string { - return "Nullable" -} - func NewNullable(expression Node) Node { return Nullable{ "Nullable", @@ -16,6 +12,14 @@ func NewNullable(expression Node) Node { } } +func (n Nullable) Name() string { + return "Nullable" +} + +func (n Nullable) Attributes() map[string]interface{} { + return nil +} + func (n Nullable) Walk(v Visitor) { if v.EnterNode(n) == false { return diff --git a/node/parameter.go b/node/parameter.go index 39c340c..d5b0331 100644 --- a/node/parameter.go +++ b/node/parameter.go @@ -2,26 +2,31 @@ package node type Parameter struct { name string + attributes map[string]interface{} variableType Node variable Node defaultValue Node - byRef bool - variadic bool +} + +func NewParameter(variableType Node, variable Node, defaultValue Node, byRef bool, variadic bool) Node { + return Parameter{ + "Parameter", + map[string]interface{}{ + "byRef": byRef, + "variadic": variadic, + }, + variableType, + variable, + defaultValue, + } } func (n Parameter) Name() string { return "Parameter" } -func NewParameter(variableType Node, variable Node, defaultValue Node, byRef bool, variadic bool) Node { - return Parameter{ - "Parameter", - variableType, - variable, - defaultValue, - byRef, - variadic, - } +func (n Parameter) Attributes() map[string]interface{} { + return n.attributes } func (n Parameter) Walk(v Visitor) { @@ -29,9 +34,6 @@ func (n Parameter) Walk(v Visitor) { return } - v.Scalar("byRef", n.byRef) - v.Scalar("variadic", n.variadic) - if n.variableType != nil { vv := v.GetChildrenVisitor("variableType") n.variableType.Walk(vv) diff --git a/node/scalar/dnumber.go b/node/scalar/dnumber.go index 5003e3b..eb59e30 100644 --- a/node/scalar/dnumber.go +++ b/node/scalar/dnumber.go @@ -2,23 +2,28 @@ package scalar import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type Dnumber struct { + name string + attributes map[string]interface{} +} + +func NewDnumber(value string) node.Node { + return Dnumber{ + "Dnumber", + map[string]interface{}{ + "value": value, + }, + } +} + func (n Dnumber) Name() string { return "Dnumber" } -type Dnumber struct { - name string - token token.Token -} - -func NewDnumber(token token.Token) node.Node { - return Dnumber{ - "Dnumber", - token, - } +func (n Dnumber) Attributes() map[string]interface{} { + return nil } func (n Dnumber) Walk(v node.Visitor) { @@ -26,5 +31,5 @@ func (n Dnumber) Walk(v node.Visitor) { return } - v.Scalar("token", n.token.Value) + v.LeaveNode(n) } diff --git a/node/scalar/encapsed.go b/node/scalar/encapsed.go index 0367495..868e566 100644 --- a/node/scalar/encapsed.go +++ b/node/scalar/encapsed.go @@ -2,27 +2,26 @@ package scalar import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type Encapsed struct { + name string + parts []node.Node +} + +func NewEncapsed(parts []node.Node) node.Node { + return Encapsed{ + "Encapsed", + parts, + } +} + func (n Encapsed) Name() string { return "Encapsed" } -type Encapsed struct { - name string - startToken token.Token - endToken token.Token - parts []node.Node -} - -func NewEncapsed(startToken token.Token, parts []node.Node, endToken token.Token) node.Node { - return Encapsed{ - "Encapsed", - startToken, - endToken, - parts, - } +func (n Encapsed) Attributes() map[string]interface{} { + return nil } func (n Encapsed) Walk(v node.Visitor) { diff --git a/node/scalar/encapsed_string_part.go b/node/scalar/encapsed_string_part.go index c20b739..62011af 100644 --- a/node/scalar/encapsed_string_part.go +++ b/node/scalar/encapsed_string_part.go @@ -2,23 +2,28 @@ package scalar import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type EncapsedStringPart struct { + name string + attributes map[string]interface{} +} + +func NewEncapsedStringPart(value string) node.Node { + return EncapsedStringPart{ + "EncapsedStringPart", + map[string]interface{}{ + "value": value, + }, + } +} + func (n EncapsedStringPart) Name() string { return "EncapsedStringPart" } -type EncapsedStringPart struct { - name string - token token.Token -} - -func NewEncapsedStringPart(t token.Token) node.Node { - return EncapsedStringPart{ - "EncapsedStringPart", - t, - } +func (n EncapsedStringPart) Attributes() map[string]interface{} { + return nil } func (n EncapsedStringPart) Walk(v node.Visitor) { @@ -26,5 +31,5 @@ func (n EncapsedStringPart) Walk(v node.Visitor) { return } - v.Scalar("token", n.token.Value) + v.LeaveNode(n) } diff --git a/node/scalar/lnumber.go b/node/scalar/lnumber.go index 0752ad7..1b79a03 100644 --- a/node/scalar/lnumber.go +++ b/node/scalar/lnumber.go @@ -2,23 +2,28 @@ package scalar import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type Lnumber struct { + name string + attributes map[string]interface{} +} + +func NewLnumber(value string) node.Node { + return Lnumber{ + "Lnumber", + map[string]interface{}{ + "value": value, + }, + } +} + func (n Lnumber) Name() string { return "Lnumber" } -type Lnumber struct { - name string - token token.Token -} - -func NewLnumber(token token.Token) node.Node { - return Lnumber{ - "Lnumber", - token, - } +func (n Lnumber) Attributes() map[string]interface{} { + return nil } func (n Lnumber) Walk(v node.Visitor) { @@ -26,5 +31,5 @@ func (n Lnumber) Walk(v node.Visitor) { return } - v.Scalar("token", n.token.Value) + v.LeaveNode(n) } diff --git a/node/scalar/magic_constant.go b/node/scalar/magic_constant.go index eda5ef7..44a3fcd 100644 --- a/node/scalar/magic_constant.go +++ b/node/scalar/magic_constant.go @@ -2,23 +2,28 @@ package scalar import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type MagicConstant struct { + name string + attributes map[string]interface{} +} + +func NewMagicConstant(value string) node.Node { + return MagicConstant{ + "MagicConstant", + map[string]interface{}{ + "value": value, + }, + } +} + func (n MagicConstant) Name() string { return "MagicConstant" } -type MagicConstant struct { - name string - token token.Token -} - -func NewMagicConstant(token token.Token) node.Node { - return MagicConstant{ - "MagicConstant", - token, - } +func (n MagicConstant) Attributes() map[string]interface{} { + return nil } func (n MagicConstant) Walk(v node.Visitor) { @@ -26,5 +31,5 @@ func (n MagicConstant) Walk(v node.Visitor) { return } - v.Scalar("token", n.token.Value) + v.LeaveNode(n) } diff --git a/node/scalar/string.go b/node/scalar/string.go index 1798d1a..5134f4c 100644 --- a/node/scalar/string.go +++ b/node/scalar/string.go @@ -2,23 +2,29 @@ package scalar import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type String struct { + name string + attributes map[string]interface{} +} + +func NewString(value string) node.Node { + return String{ + "String", + + map[string]interface{}{ + "value": value, + }, + } +} + func (n String) Name() string { return "String" } -type String struct { - name string - token token.Token -} - -func NewString(token token.Token) node.Node { - return String{ - "String", - token, - } +func (n String) Attributes() map[string]interface{} { + return nil } func (n String) Walk(v node.Visitor) { @@ -26,5 +32,5 @@ func (n String) Walk(v node.Visitor) { return } - v.Scalar("token", n.token.Value) + v.LeaveNode(n) } diff --git a/node/stmt/alt_else.go b/node/stmt/alt_else.go index c64960d..f2195ab 100644 --- a/node/stmt/alt_else.go +++ b/node/stmt/alt_else.go @@ -2,25 +2,26 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type AltElse struct { + name string + stmt node.Node +} + +func NewAltElse(stmt node.Node) node.Node { + return AltElse{ + "AltElse", + stmt, + } +} + func (n AltElse) Name() string { return "AltElse" } -type AltElse struct { - name string - token token.Token - stmt node.Node -} - -func NewAltElse(token token.Token, stmt node.Node) node.Node { - return AltElse{ - "AltElse", - token, - stmt, - } +func (n AltElse) Attributes() map[string]interface{} { + return nil } func (n AltElse) Walk(v node.Visitor) { diff --git a/node/stmt/alt_else_if.go b/node/stmt/alt_else_if.go index 703d374..5b63a55 100644 --- a/node/stmt/alt_else_if.go +++ b/node/stmt/alt_else_if.go @@ -2,27 +2,28 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type AltElseIf struct { + name string + cond node.Node + stmt node.Node +} + +func NewAltElseIf(cond node.Node, stmt node.Node) node.Node { + return AltElseIf{ + "AltElseIf", + cond, + stmt, + } +} + func (n AltElseIf) Name() string { return "AltElseIf" } -type AltElseIf struct { - name string - token token.Token - cond node.Node - stmt node.Node -} - -func NewAltElseIf(token token.Token, cond node.Node, stmt node.Node) node.Node { - return AltElseIf{ - "AltElseIf", - token, - cond, - stmt, - } +func (n AltElseIf) Attributes() map[string]interface{} { + return nil } func (n AltElseIf) Walk(v node.Visitor) { diff --git a/node/stmt/alt_if.go b/node/stmt/alt_if.go index 0c77679..62aaaa6 100644 --- a/node/stmt/alt_if.go +++ b/node/stmt/alt_if.go @@ -2,26 +2,19 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) -func (n AltIf) Name() string { - return "AltIf" -} - type AltIf struct { name string - token token.Token cond node.Node stmt node.Node elseIf []node.Node _else node.Node } -func NewAltIf(token token.Token, cond node.Node, stmt node.Node) node.Node { +func NewAltIf(cond node.Node, stmt node.Node) node.Node { return AltIf{ "AltIf", - token, cond, stmt, nil, @@ -29,6 +22,14 @@ func NewAltIf(token token.Token, cond node.Node, stmt node.Node) node.Node { } } +func (n AltIf) Name() string { + return "AltIf" +} + +func (n AltIf) Attributes() map[string]interface{} { + return nil +} + 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 3811725..d6c1e97 100644 --- a/node/stmt/break.go +++ b/node/stmt/break.go @@ -2,25 +2,26 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type Break struct { + name string + expr node.Node +} + +func NewBreak(expr node.Node) node.Node { + return Break{ + "Break", + expr, + } +} + func (n Break) Name() string { return "Break" } -type Break struct { - name string - token token.Token - expr node.Node -} - -func NewBreak(token token.Token, expr node.Node) node.Node { - return Break{ - "Break", - token, - expr, - } +func (n Break) Attributes() map[string]interface{} { + return nil } func (n Break) Walk(v node.Visitor) { diff --git a/node/stmt/case.go b/node/stmt/case.go index 86ae459..f29ea67 100644 --- a/node/stmt/case.go +++ b/node/stmt/case.go @@ -2,27 +2,28 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type Case struct { + name string + cond node.Node + stmts []node.Node +} + +func NewCase(cond node.Node, stmts []node.Node) node.Node { + return Case{ + "Case", + cond, + stmts, + } +} + func (n Case) Name() string { return "Case" } -type Case struct { - name string - token token.Token - cond node.Node - stmts []node.Node -} - -func NewCase(token token.Token, cond node.Node, stmts []node.Node) node.Node { - return Case{ - "Case", - token, - cond, - stmts, - } +func (n Case) Attributes() map[string]interface{} { + return nil } func (n Case) Walk(v node.Visitor) { diff --git a/node/stmt/catch.go b/node/stmt/catch.go index b716a40..859c75f 100644 --- a/node/stmt/catch.go +++ b/node/stmt/catch.go @@ -2,31 +2,32 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) -func (n Catch) Name() string { - return "Catch" -} - type Catch struct { name string - token token.Token types []node.Node variable node.Node stmts []node.Node } -func NewCatch(token token.Token, types []node.Node, variable node.Node, stmts []node.Node) node.Node { +func NewCatch(types []node.Node, variable node.Node, stmts []node.Node) node.Node { return Catch{ "Catch", - token, types, variable, stmts, } } +func (n Catch) Name() string { + return "Catch" +} + +func (n Catch) Attributes() map[string]interface{} { + return nil +} + 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 f2e76b6..1cbb6b4 100644 --- a/node/stmt/class.go +++ b/node/stmt/class.go @@ -2,16 +2,11 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) -func (n Class) Name() string { - return "Class" -} - type Class struct { name string - token token.Token + className node.Node modifiers []node.Node args []node.Node extends node.Node @@ -19,10 +14,10 @@ type Class struct { stmts []node.Node } -func NewClass(token token.Token, modifiers []node.Node, args []node.Node, extends node.Node, implements []node.Node, stmts []node.Node) node.Node { +func NewClass(className node.Node, modifiers []node.Node, args []node.Node, extends node.Node, implements []node.Node, stmts []node.Node) node.Node { return Class{ "Class", - token, + className, modifiers, args, extends, @@ -31,12 +26,23 @@ func NewClass(token token.Token, modifiers []node.Node, args []node.Node, extend } } +func (n Class) Name() string { + return "Class" +} + +func (n Class) Attributes() map[string]interface{} { + return nil +} + func (n Class) Walk(v node.Visitor) { if v.EnterNode(n) == false { return } - v.Scalar("token", n.token.Value) + if n.className != nil { + vv := v.GetChildrenVisitor("className") + n.className.Walk(vv) + } if n.modifiers != nil { vv := v.GetChildrenVisitor("modifiers") diff --git a/node/stmt/class_const_list.go b/node/stmt/class_const_list.go index 4329ff7..4ba106c 100644 --- a/node/stmt/class_const_list.go +++ b/node/stmt/class_const_list.go @@ -2,27 +2,28 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type ClassConstList struct { + name string + modifiers []node.Node + consts []node.Node +} + +func NewClassConstList(modifiers []node.Node, consts []node.Node) node.Node { + return ClassConstList{ + "ClassConstList", + modifiers, + consts, + } +} + func (n ClassConstList) Name() string { return "ClassConstList" } -type ClassConstList struct { - name string - token token.Token - modifiers []node.Node - consts []node.Node -} - -func NewClassConstList(token token.Token, modifiers []node.Node, consts []node.Node) node.Node { - return ClassConstList{ - "ClassConstList", - token, - modifiers, - consts, - } +func (n ClassConstList) Attributes() map[string]interface{} { + return nil } func (n ClassConstList) Walk(v node.Visitor) { diff --git a/node/stmt/class_method.go b/node/stmt/class_method.go index 8af4213..e2cdc68 100644 --- a/node/stmt/class_method.go +++ b/node/stmt/class_method.go @@ -2,33 +2,38 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type ClassMethod struct { + name string + attributes map[string]interface{} + methodName node.Node + modifiers []node.Node + params []node.Node + returnType node.Node + stmts []node.Node +} + +func NewClassMethod(methodName node.Node, modifiers []node.Node, returnsRef bool, params []node.Node, returnType node.Node, stmts []node.Node) node.Node { + return ClassMethod{ + "ClassMethod", + map[string]interface{}{ + "returnsRef": returnsRef, + }, + methodName, + modifiers, + params, + returnType, + stmts, + } +} + func (n ClassMethod) Name() string { return "ClassMethod" } -type ClassMethod struct { - name string - token token.Token - modifiers []node.Node - isReturnRef bool - params []node.Node - returnType node.Node - stmts []node.Node -} - -func NewClassMethod(token token.Token, modifiers []node.Node, isReturnRef bool, params []node.Node, returnType node.Node, stmts []node.Node) node.Node { - return ClassMethod{ - "ClassMethod", - token, - modifiers, - isReturnRef, - params, - returnType, - stmts, - } +func (n ClassMethod) Attributes() map[string]interface{} { + return nil } func (n ClassMethod) Walk(v node.Visitor) { @@ -36,8 +41,10 @@ func (n ClassMethod) Walk(v node.Visitor) { return } - v.Scalar("token", n.token.Value) - v.Scalar("isReturnRef", n.isReturnRef) + if n.methodName != nil { + vv := v.GetChildrenVisitor("methodName") + n.methodName.Walk(vv) + } if n.modifiers != nil { vv := v.GetChildrenVisitor("modifiers") diff --git a/node/stmt/const_list.go b/node/stmt/const_list.go index b749c7c..cc85b59 100644 --- a/node/stmt/const_list.go +++ b/node/stmt/const_list.go @@ -2,25 +2,26 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type ConstList struct { + name string + consts []node.Node +} + +func NewConstList(consts []node.Node) node.Node { + return ConstList{ + "ConstList", + consts, + } +} + func (n ConstList) Name() string { return "ConstList" } -type ConstList struct { - name string - token token.Token - consts []node.Node -} - -func NewConstList(token token.Token, consts []node.Node) node.Node { - return ConstList{ - "ConstList", - token, - consts, - } +func (n ConstList) Attributes() map[string]interface{} { + return nil } func (n ConstList) Walk(v node.Visitor) { diff --git a/node/stmt/constant.go b/node/stmt/constant.go index 1211f2a..572a51a 100644 --- a/node/stmt/constant.go +++ b/node/stmt/constant.go @@ -2,25 +2,28 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type Constant struct { + name string + constantName node.Node + expr node.Node +} + +func NewConstant(constantName node.Node, expr node.Node) node.Node { + return Constant{ + "Constant", + constantName, + expr, + } +} + func (n Constant) Name() string { return "Constant" } -type Constant struct { - name string - token token.Token - expr node.Node -} - -func NewConstant(token token.Token, expr node.Node) node.Node { - return Constant{ - "Constant", - token, - expr, - } +func (n Constant) Attributes() map[string]interface{} { + return nil } func (n Constant) Walk(v node.Visitor) { @@ -28,7 +31,10 @@ func (n Constant) Walk(v node.Visitor) { return } - v.Scalar("token", n.token.Value) + if n.constantName != nil { + vv := v.GetChildrenVisitor("constantName") + n.constantName.Walk(vv) + } if n.expr != nil { vv := v.GetChildrenVisitor("expr") diff --git a/node/stmt/continue.go b/node/stmt/continue.go index cdea152..f00936d 100644 --- a/node/stmt/continue.go +++ b/node/stmt/continue.go @@ -2,25 +2,26 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type Continue struct { + name string + expr node.Node +} + +func NewContinue(expr node.Node) node.Node { + return Continue{ + "Continue", + expr, + } +} + func (n Continue) Name() string { return "Continue" } -type Continue struct { - name string - token token.Token - expr node.Node -} - -func NewContinue(token token.Token, expr node.Node) node.Node { - return Continue{ - "Continue", - token, - expr, - } +func (n Continue) Attributes() map[string]interface{} { + return nil } func (n Continue) Walk(v node.Visitor) { diff --git a/node/stmt/declare.go b/node/stmt/declare.go index 6e412f9..41b4b49 100644 --- a/node/stmt/declare.go +++ b/node/stmt/declare.go @@ -2,27 +2,28 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type Declare struct { + name string + consts []node.Node + stmt node.Node +} + +func NewDeclare(consts []node.Node, stmt node.Node) node.Node { + return Declare{ + "Declare", + consts, + stmt, + } +} + func (n Declare) Name() string { return "Declare" } -type Declare struct { - name string - token token.Token - consts []node.Node - stmt node.Node -} - -func NewDeclare(token token.Token, consts []node.Node, stmt node.Node) node.Node { - return Declare{ - "Declare", - token, - consts, - stmt, - } +func (n Declare) Attributes() map[string]interface{} { + return nil } func (n Declare) Walk(v node.Visitor) { diff --git a/node/stmt/default.go b/node/stmt/default.go index da57757..b95233b 100644 --- a/node/stmt/default.go +++ b/node/stmt/default.go @@ -2,25 +2,26 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type Default struct { + name string + stmts []node.Node +} + +func NewDefault(stmts []node.Node) node.Node { + return Default{ + "Default", + stmts, + } +} + func (n Default) Name() string { return "Default" } -type Default struct { - name string - token token.Token - stmts []node.Node -} - -func NewDefault(token token.Token, stmts []node.Node) node.Node { - return Default{ - "Default", - token, - stmts, - } +func (n Default) Attributes() map[string]interface{} { + return nil } func (n Default) Walk(v node.Visitor) { diff --git a/node/stmt/do.go b/node/stmt/do.go index 989e0d8..372dd04 100644 --- a/node/stmt/do.go +++ b/node/stmt/do.go @@ -2,27 +2,28 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type Do struct { + name string + stmt node.Node + cond node.Node +} + +func NewDo(stmt node.Node, cond node.Node) node.Node { + return Do{ + "Do", + stmt, + cond, + } +} + func (n Do) Name() string { return "Do" } -type Do struct { - name string - token token.Token - stmt node.Node - cond node.Node -} - -func NewDo(token token.Token, stmt node.Node, cond node.Node) node.Node { - return Do{ - "Do", - token, - stmt, - cond, - } +func (n Do) Attributes() map[string]interface{} { + return nil } func (n Do) Walk(v node.Visitor) { diff --git a/node/stmt/echo.go b/node/stmt/echo.go index f4bca66..35a85b2 100644 --- a/node/stmt/echo.go +++ b/node/stmt/echo.go @@ -2,25 +2,26 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type Echo struct { + name string + exprs []node.Node +} + +func NewEcho(exprs []node.Node) node.Node { + return Echo{ + "Echo", + exprs, + } +} + func (n Echo) Name() string { return "Echo" } -type Echo struct { - name string - token token.Token - exprs []node.Node -} - -func NewEcho(token token.Token, exprs []node.Node) node.Node { - return Echo{ - "Echo", - token, - exprs, - } +func (n Echo) Attributes() map[string]interface{} { + return nil } func (n Echo) Walk(v node.Visitor) { diff --git a/node/stmt/else.go b/node/stmt/else.go index f97bed3..84c27a6 100644 --- a/node/stmt/else.go +++ b/node/stmt/else.go @@ -2,25 +2,26 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type Else struct { + name string + stmt node.Node +} + +func NewElse(stmt node.Node) node.Node { + return Else{ + "Else", + stmt, + } +} + func (n Else) Name() string { return "Else" } -type Else struct { - name string - token token.Token - stmt node.Node -} - -func NewElse(token token.Token, stmt node.Node) node.Node { - return Else{ - "Else", - token, - stmt, - } +func (n Else) Attributes() map[string]interface{} { + return nil } func (n Else) Walk(v node.Visitor) { diff --git a/node/stmt/else_if.go b/node/stmt/else_if.go index 4c89d99..85cf49d 100644 --- a/node/stmt/else_if.go +++ b/node/stmt/else_if.go @@ -2,27 +2,28 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type ElseIf struct { + name string + cond node.Node + stmt node.Node +} + +func NewElseIf(cond node.Node, stmt node.Node) node.Node { + return ElseIf{ + "ElseIf", + cond, + stmt, + } +} + func (n ElseIf) Name() string { return "ElseIf" } -type ElseIf struct { - name string - token token.Token - cond node.Node - stmt node.Node -} - -func NewElseIf(token token.Token, cond node.Node, stmt node.Node) node.Node { - return ElseIf{ - "ElseIf", - token, - cond, - stmt, - } +func (n ElseIf) Attributes() map[string]interface{} { + return nil } func (n ElseIf) Walk(v node.Visitor) { diff --git a/node/stmt/expression.go b/node/stmt/expression.go index 69b9614..7f28d93 100644 --- a/node/stmt/expression.go +++ b/node/stmt/expression.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n Expression) Name() string { - return "Expression" -} - type Expression struct { name string expr node.Node @@ -20,6 +16,14 @@ func NewExpression(expr node.Node) node.Node { } } +func (n Expression) Name() string { + return "Expression" +} + +func (n Expression) Attributes() map[string]interface{} { + return nil +} + 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 e0c3042..016f341 100644 --- a/node/stmt/finally.go +++ b/node/stmt/finally.go @@ -2,25 +2,26 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type Finally struct { + name string + stmts []node.Node +} + +func NewFinally(stmts []node.Node) node.Node { + return Finally{ + "Finally", + stmts, + } +} + func (n Finally) Name() string { return "Finally" } -type Finally struct { - name string - token token.Token - stmts []node.Node -} - -func NewFinally(token token.Token, stmts []node.Node) node.Node { - return Finally{ - "Finally", - token, - stmts, - } +func (n Finally) Attributes() map[string]interface{} { + return nil } func (n Finally) Walk(v node.Visitor) { diff --git a/node/stmt/for.go b/node/stmt/for.go index daf0b7a..900d951 100644 --- a/node/stmt/for.go +++ b/node/stmt/for.go @@ -2,26 +2,19 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) -func (n For) Name() string { - return "For" -} - type For struct { - name string - token token.Token - init []node.Node - cond []node.Node - loop []node.Node - stmt node.Node + name string + init []node.Node + cond []node.Node + loop []node.Node + stmt node.Node } -func NewFor(token token.Token, init []node.Node, cond []node.Node, loop []node.Node, stmt node.Node) node.Node { +func NewFor(init []node.Node, cond []node.Node, loop []node.Node, stmt node.Node) node.Node { return For{ "For", - token, init, cond, loop, @@ -29,6 +22,14 @@ func NewFor(token token.Token, init []node.Node, cond []node.Node, loop []node.N } } +func (n For) Name() string { + return "For" +} + +func (n For) Attributes() map[string]interface{} { + return nil +} + 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 eeda925..fd5f9ff 100644 --- a/node/stmt/foreach.go +++ b/node/stmt/foreach.go @@ -2,33 +2,36 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type Foreach struct { + name string + attributes map[string]interface{} + expr node.Node + key node.Node + variable node.Node + stmt node.Node +} + +func NewForeach(expr node.Node, key node.Node, variable node.Node, stmt node.Node, byRef bool) node.Node { + return Foreach{ + "Foreach", + map[string]interface{}{ + "byRef": byRef, + }, + expr, + key, + variable, + stmt, + } +} + func (n Foreach) Name() string { return "Foreach" } -type Foreach struct { - name string - token token.Token - expr node.Node - key node.Node - variable node.Node - stmt node.Node - byRef bool -} - -func NewForeach(token token.Token, expr node.Node, key node.Node, variable node.Node, stmt node.Node, byRef bool) node.Node { - return Foreach{ - "Foreach", - token, - expr, - key, - variable, - stmt, - byRef, - } +func (n Foreach) Attributes() map[string]interface{} { + return n.attributes } func (n Foreach) Walk(v node.Visitor) { diff --git a/node/stmt/function.go b/node/stmt/function.go index 82521b4..c73cc41 100644 --- a/node/stmt/function.go +++ b/node/stmt/function.go @@ -2,31 +2,36 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type Function struct { + name string + attributes map[string]interface{} + functionName node.Node + params []node.Node + returnType node.Node + stmts []node.Node +} + +func NewFunction(functionName node.Node, returnsRef bool, params []node.Node, returnType node.Node, stmts []node.Node) node.Node { + return Function{ + "Function", + map[string]interface{}{ + "returnsRef": returnsRef, + }, + functionName, + params, + returnType, + stmts, + } +} + func (n Function) Name() string { return "Function" } -type Function struct { - name string - token token.Token - isReturnRef bool - params []node.Node - returnType node.Node - stmts []node.Node -} - -func NewFunction(token token.Token, isReturnRef bool, params []node.Node, returnType node.Node, stmts []node.Node) node.Node { - return Function{ - "Function", - token, - isReturnRef, - params, - returnType, - stmts, - } +func (n Function) Attributes() map[string]interface{} { + return n.attributes } func (n Function) Walk(v node.Visitor) { @@ -34,8 +39,10 @@ func (n Function) Walk(v node.Visitor) { return } - v.Scalar("token", n.token.Value) - v.Scalar("isReturnRef", n.isReturnRef) + if n.functionName != nil { + vv := v.GetChildrenVisitor("functionName") + n.functionName.Walk(vv) + } if n.params != nil { vv := v.GetChildrenVisitor("params") diff --git a/node/stmt/global.go b/node/stmt/global.go index 9900139..531e432 100644 --- a/node/stmt/global.go +++ b/node/stmt/global.go @@ -2,25 +2,26 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type Global struct { + name string + vars []node.Node +} + +func NewGlobal(vars []node.Node) node.Node { + return Global{ + "Global", + vars, + } +} + func (n Global) Name() string { return "Global" } -type Global struct { - name string - token token.Token - vars []node.Node -} - -func NewGlobal(token token.Token, vars []node.Node) node.Node { - return Global{ - "Global", - token, - vars, - } +func (n Global) Attributes() map[string]interface{} { + return nil } func (n Global) Walk(v node.Visitor) { diff --git a/node/stmt/goto.go b/node/stmt/goto.go index 18840a8..a62184b 100644 --- a/node/stmt/goto.go +++ b/node/stmt/goto.go @@ -2,26 +2,26 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type Goto struct { + name string + label node.Node +} + +func NewGoto(label node.Node) node.Node { + return Goto{ + "Goto", + label, + } +} + func (n Goto) Name() string { return "Goto" } -type Goto struct { - name string - token token.Token - label token.Token -} - -// todl label must be identifier -func NewGoto(token token.Token, label token.Token) node.Node { - return Goto{ - "Goto", - token, - label, - } +func (n Goto) Attributes() map[string]interface{} { + return nil } func (n Goto) Walk(v node.Visitor) { @@ -29,7 +29,10 @@ func (n Goto) Walk(v node.Visitor) { return } - v.Scalar("label", n.label.Value) + if n.label != nil { + vv := v.GetChildrenVisitor("label") + n.label.Walk(vv) + } v.LeaveNode(n) } diff --git a/node/stmt/group_use.go b/node/stmt/group_use.go index 25f3e1d..5154dad 100644 --- a/node/stmt/group_use.go +++ b/node/stmt/group_use.go @@ -2,35 +2,30 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) -func (n GroupUse) Name() string { - return "GroupUse" -} - type GroupUse struct { name string - token token.TokenInterface useType node.Node prefix node.Node useList []node.Node } -//TODO: stmts myst be []node.Node -func NewGroupUse(token token.TokenInterface, useType node.Node, prefix node.Node, useList []node.Node) node.Node { +func NewGroupUse(useType node.Node, prefix node.Node, useList []node.Node) node.Node { return GroupUse{ "GroupUse", - token, useType, prefix, useList, } } -func (n GroupUse) SetToken(token token.TokenInterface) node.Node { - n.token = token - return n +func (n GroupUse) Name() string { + return "GroupUse" +} + +func (n GroupUse) Attributes() map[string]interface{} { + return nil } func (n GroupUse) SetUseType(useType node.Node) node.Node { diff --git a/node/stmt/halt_compiler.go b/node/stmt/halt_compiler.go index e84cdbf..91e2889 100644 --- a/node/stmt/halt_compiler.go +++ b/node/stmt/halt_compiler.go @@ -2,23 +2,24 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type HaltCompiler struct { + name string +} + +func NewHaltCompiler() node.Node { + return HaltCompiler{ + "HaltCompiler", + } +} + func (n HaltCompiler) Name() string { return "HaltCompiler" } -type HaltCompiler struct { - name string - token token.Token -} - -func NewHaltCompiler(token token.Token) node.Node { - return HaltCompiler{ - "HaltCompiler", - token, - } +func (n HaltCompiler) Attributes() map[string]interface{} { + return nil } func (n HaltCompiler) Walk(v node.Visitor) { diff --git a/node/stmt/if.go b/node/stmt/if.go index aafba63..f19a7b8 100644 --- a/node/stmt/if.go +++ b/node/stmt/if.go @@ -2,26 +2,19 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) -func (n If) Name() string { - return "If" -} - type If struct { name string - token token.Token cond node.Node stmt node.Node elseIf []node.Node _else node.Node } -func NewIf(token token.Token, cond node.Node, stmt node.Node) node.Node { +func NewIf(cond node.Node, stmt node.Node) node.Node { return If{ "If", - token, cond, stmt, nil, @@ -29,6 +22,14 @@ func NewIf(token token.Token, cond node.Node, stmt node.Node) node.Node { } } +func (n If) Name() string { + return "If" +} + +func (n If) Attributes() map[string]interface{} { + return nil +} + 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 7c7993f..268d7dd 100644 --- a/node/stmt/inline_html.go +++ b/node/stmt/inline_html.go @@ -2,23 +2,28 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type InlineHtml struct { + name string + attributes map[string]interface{} +} + +func NewInlineHtml(value string) node.Node { + return InlineHtml{ + "InlineHtml", + map[string]interface{}{ + "value": value, + }, + } +} + func (n InlineHtml) Name() string { return "InlineHtml" } -type InlineHtml struct { - name string - token token.Token -} - -func NewInlineHtml(token token.Token) node.Node { - return InlineHtml{ - "InlineHtml", - token, - } +func (n InlineHtml) Attributes() map[string]interface{} { + return n.attributes } func (n InlineHtml) Walk(v node.Visitor) { @@ -26,7 +31,5 @@ func (n InlineHtml) Walk(v node.Visitor) { return } - v.Scalar("token", n.token.Value) - v.LeaveNode(n) } diff --git a/node/stmt/interface.go b/node/stmt/interface.go index 96f921d..8c79ad7 100644 --- a/node/stmt/interface.go +++ b/node/stmt/interface.go @@ -2,29 +2,30 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type Interface struct { + name string + interfaceName node.Node + extends []node.Node + stmts []node.Node +} + +func NewInterface(interfaceName node.Node, extends []node.Node, stmts []node.Node) node.Node { + return Interface{ + "Interface", + interfaceName, + extends, + stmts, + } +} + func (n Interface) Name() string { return "Interface" } -type Interface struct { - name string - token token.Token - interfaceName token.Token - extends []node.Node - stmts []node.Node -} - -func NewInterface(token token.Token, name token.Token, extends []node.Node, stmts []node.Node) node.Node { - return Interface{ - "Interface", - token, - name, - extends, - stmts, - } +func (n Interface) Attributes() map[string]interface{} { + return nil } func (n Interface) Walk(v node.Visitor) { @@ -32,7 +33,10 @@ func (n Interface) Walk(v node.Visitor) { return } - v.Scalar("token", n.interfaceName.Value) + if n.interfaceName != nil { + vv := v.GetChildrenVisitor("interfaceName") + n.interfaceName.Walk(vv) + } if n.extends != nil { vv := v.GetChildrenVisitor("extends") diff --git a/node/stmt/label.go b/node/stmt/label.go index 9bbbfbd..1ef3f72 100644 --- a/node/stmt/label.go +++ b/node/stmt/label.go @@ -2,23 +2,26 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type Label struct { + name string + labelName node.Node +} + +func NewLabel(labelName node.Node) node.Node { + return Label{ + "Label", + labelName, + } +} + func (n Label) Name() string { return "Label" } -type Label struct { - name string - token token.Token -} - -func NewLabel(token token.Token) node.Node { - return Label{ - "Label", - token, - } +func (n Label) Attributes() map[string]interface{} { + return nil } func (n Label) Walk(v node.Visitor) { @@ -26,7 +29,10 @@ func (n Label) Walk(v node.Visitor) { return } - v.Scalar("token", n.token.Value) + if n.labelName != nil { + vv := v.GetChildrenVisitor("labelName") + n.labelName.Walk(vv) + } v.LeaveNode(n) } diff --git a/node/stmt/namespace.go b/node/stmt/namespace.go index 4228a97..ba51331 100644 --- a/node/stmt/namespace.go +++ b/node/stmt/namespace.go @@ -2,27 +2,28 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type Namespace struct { + name string + namespaceName node.Node + stmts []node.Node +} + +func NewNamespace(namespaceName node.Node, stmts []node.Node) node.Node { + return Namespace{ + "Namespace", + namespaceName, + stmts, + } +} + func (n Namespace) Name() string { return "Namespace" } -type Namespace struct { - name string - token token.Token - namespaceName node.Node - stmts []node.Node -} - -func NewNamespace(token token.Token, namespaceName node.Node, stmts []node.Node) node.Node { - return Namespace{ - "Namespace", - token, - namespaceName, - stmts, - } +func (n Namespace) Attributes() map[string]interface{} { + return nil } func (n Namespace) Walk(v node.Visitor) { diff --git a/node/stmt/nop.go b/node/stmt/nop.go index cc49ef0..3b5fd6d 100644 --- a/node/stmt/nop.go +++ b/node/stmt/nop.go @@ -1,31 +1,25 @@ package stmt import ( - "fmt" - "io" - "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type Nop struct { + name string +} + +func NewNop() node.Node { + return Nop{ + "Nop", + } +} + func (n Nop) Name() string { return "Nop" } -type Nop struct { - name string - token token.Token -} - -func NewNop(token token.Token) node.Node { - return Nop{ - "Nop", - token, - } -} - -func (n Nop) Print(out io.Writer, indent string) { - fmt.Fprintf(out, "\n%v%v [%d %d] %q", indent, n.name, n.token.StartLine, n.token.EndLine, n.token.Value) +func (n Nop) Attributes() map[string]interface{} { + return nil } func (n Nop) Walk(v node.Visitor) { @@ -33,7 +27,5 @@ func (n Nop) Walk(v node.Visitor) { return } - v.Scalar("token", n.token.Value) - v.LeaveNode(n) } diff --git a/node/stmt/property.go b/node/stmt/property.go index 099a5b6..9536261 100644 --- a/node/stmt/property.go +++ b/node/stmt/property.go @@ -2,25 +2,27 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type Property struct { + name string + variable node.Node + expr node.Node +} + +func NewProperty(variable node.Node, expr node.Node) node.Node { + return Property{ + "Property", + variable, + expr, + } +} func (n Property) Name() string { return "Property" } -type Property struct { - name string - token token.Token - expr node.Node -} - -func NewProperty(token token.Token, expr node.Node) node.Node { - return Property{ - "Property", - token, - expr, - } +func (n Property) Attributes() map[string]interface{} { + return nil } func (n Property) Walk(v node.Visitor) { @@ -28,7 +30,10 @@ func (n Property) Walk(v node.Visitor) { return } - v.Scalar("token", n.token.Value) + if n.variable != nil { + vv := v.GetChildrenVisitor("variable") + n.variable.Walk(vv) + } if n.expr != nil { vv := v.GetChildrenVisitor("expr") diff --git a/node/stmt/property_list.go b/node/stmt/property_list.go index 224978c..d925127 100644 --- a/node/stmt/property_list.go +++ b/node/stmt/property_list.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n PropertyList) Name() string { - return "PropertyList" -} - type PropertyList struct { name string modifiers []node.Node @@ -22,6 +18,14 @@ func NewPropertyList(modifiers []node.Node, properties []node.Node) node.Node { } } +func (n PropertyList) Name() string { + return "PropertyList" +} + +func (n PropertyList) Attributes() map[string]interface{} { + return nil +} + 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 a1166fb..ef27682 100644 --- a/node/stmt/return.go +++ b/node/stmt/return.go @@ -2,25 +2,26 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type Return struct { + name string + expr node.Node +} + +func NewReturn(expr node.Node) node.Node { + return Return{ + "Return", + expr, + } +} + func (n Return) Name() string { return "Return" } -type Return struct { - name string - token token.Token - expr node.Node -} - -func NewReturn(token token.Token, expr node.Node) node.Node { - return Return{ - "Return", - token, - expr, - } +func (n Return) Attributes() map[string]interface{} { + return nil } func (n Return) Walk(v node.Visitor) { diff --git a/node/stmt/static.go b/node/stmt/static.go index 1bb12ae..ca5611b 100644 --- a/node/stmt/static.go +++ b/node/stmt/static.go @@ -2,25 +2,26 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type Static struct { + name string + vars []node.Node +} + +func NewStatic(vars []node.Node) node.Node { + return Static{ + "Static", + vars, + } +} + func (n Static) Name() string { return "Static" } -type Static struct { - name string - token token.Token - vars []node.Node -} - -func NewStatic(token token.Token, vars []node.Node) node.Node { - return Static{ - "Static", - token, - vars, - } +func (n Static) Attributes() map[string]interface{} { + return nil } func (n Static) Walk(v node.Visitor) { diff --git a/node/stmt/static_var.go b/node/stmt/static_var.go index cd18ec1..bb6b5eb 100644 --- a/node/stmt/static_var.go +++ b/node/stmt/static_var.go @@ -2,25 +2,28 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type StaticVar struct { + name string + variable node.Node + expr node.Node +} + +func NewStaticVar(variable node.Node, expr node.Node) node.Node { + return StaticVar{ + "StaticVar", + variable, + expr, + } +} + func (n StaticVar) Name() string { return "StaticVar" } -type StaticVar struct { - name string - token token.Token - expr node.Node -} - -func NewStaticVar(token token.Token, expr node.Node) node.Node { - return StaticVar{ - "StaticVar", - token, - expr, - } +func (n StaticVar) Attributes() map[string]interface{} { + return nil } func (n StaticVar) Walk(v node.Visitor) { @@ -28,6 +31,11 @@ func (n StaticVar) Walk(v node.Visitor) { return } + if n.variable != nil { + vv := v.GetChildrenVisitor("variable") + n.variable.Walk(vv) + } + if n.expr != nil { vv := v.GetChildrenVisitor("expr") n.expr.Walk(vv) diff --git a/node/stmt/stmt_list.go b/node/stmt/stmt_list.go index fc77d91..e8cdd33 100644 --- a/node/stmt/stmt_list.go +++ b/node/stmt/stmt_list.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n StmtList) Name() string { - return "StmtList" -} - type StmtList struct { name string stmts []node.Node @@ -20,6 +16,14 @@ func NewStmtList(stmts []node.Node) node.Node { } } +func (n StmtList) Name() string { + return "StmtList" +} + +func (n StmtList) Attributes() map[string]interface{} { + return nil +} + 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 227d6bb..2db8d39 100644 --- a/node/stmt/switch.go +++ b/node/stmt/switch.go @@ -5,6 +5,10 @@ import ( "github.com/z7zmey/php-parser/token" ) +func (n Switch) Attributes() map[string]interface{} { + return nil +} + func (n Switch) Name() string { return "Switch" } diff --git a/node/stmt/throw.go b/node/stmt/throw.go index 0e743d4..37257fc 100644 --- a/node/stmt/throw.go +++ b/node/stmt/throw.go @@ -2,25 +2,26 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type Throw struct { + name string + expr node.Node +} + +func NewThrow(expr node.Node) node.Node { + return Throw{ + "Throw", + expr, + } +} + func (n Throw) Name() string { return "Throw" } -type Throw struct { - name string - token token.Token - expr node.Node -} - -func NewThrow(token token.Token, expr node.Node) node.Node { - return Throw{ - "Throw", - token, - expr, - } +func (n Throw) Attributes() map[string]interface{} { + return nil } func (n Throw) Walk(v node.Visitor) { diff --git a/node/stmt/trait.go b/node/stmt/trait.go index 79a3f6f..4a4330e 100644 --- a/node/stmt/trait.go +++ b/node/stmt/trait.go @@ -2,26 +2,28 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type Trait struct { + name string + traitName node.Node + stmts []node.Node +} + +func NewTrait(traitName node.Node, stmts []node.Node) node.Node { + return Trait{ + "Trait", + traitName, + stmts, + } +} + func (n Trait) Name() string { return "Trait" } -type Trait struct { - name string - token token.Token - stmts []node.Node -} - -//TODO: stmts myst be []node.Node -func NewTrait(token token.Token, stmts []node.Node) node.Node { - return Trait{ - "Trait", - token, - stmts, - } +func (n Trait) Attributes() map[string]interface{} { + return nil } func (n Trait) Walk(v node.Visitor) { @@ -29,7 +31,10 @@ func (n Trait) Walk(v node.Visitor) { return } - v.Scalar("token", n.token.Value) + if n.traitName != nil { + vv := v.GetChildrenVisitor("traitName") + n.traitName.Walk(vv) + } if n.stmts != nil { vv := v.GetChildrenVisitor("stmts") diff --git a/node/stmt/trait_method_ref.go b/node/stmt/trait_method_ref.go index c80f9f3..66ffafc 100644 --- a/node/stmt/trait_method_ref.go +++ b/node/stmt/trait_method_ref.go @@ -2,21 +2,15 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) -func (n TraitMethodRef) Name() string { - return "TraitMethodRef" -} - type TraitMethodRef struct { name string trait node.Node - method token.Token + method node.Node } -// TODO: method must be identifier -func NewTraitMethodRef(trait node.Node, method token.Token) node.Node { +func NewTraitMethodRef(trait node.Node, method node.Node) node.Node { return TraitMethodRef{ "TraitMethodRef", trait, @@ -24,17 +18,28 @@ func NewTraitMethodRef(trait node.Node, method token.Token) node.Node { } } +func (n TraitMethodRef) Name() string { + return "TraitMethodRef" +} + +func (n TraitMethodRef) Attributes() map[string]interface{} { + return nil +} + func (n TraitMethodRef) Walk(v node.Visitor) { if v.EnterNode(n) == false { return } - v.Scalar("method", n.method.Value) - if n.trait != nil { vv := v.GetChildrenVisitor("trait") n.trait.Walk(vv) } + if n.method != nil { + vv := v.GetChildrenVisitor("method") + n.method.Walk(vv) + } + v.LeaveNode(n) } diff --git a/node/stmt/trait_use.go b/node/stmt/trait_use.go index 2ba6f1d..33ac0bb 100644 --- a/node/stmt/trait_use.go +++ b/node/stmt/trait_use.go @@ -2,28 +2,28 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type TraitUse struct { + name string + traits []node.Node + adaptations []node.Node +} + +func NewTraitUse(traits []node.Node, adaptations []node.Node) node.Node { + return TraitUse{ + "TraitUse", + traits, + adaptations, + } +} + func (n TraitUse) Name() string { return "TraitUse" } -type TraitUse struct { - name string - token token.Token - traits []node.Node - adaptations []node.Node -} - -//TODO: traits myst be []node.Node -func NewTraitUse(token token.Token, traits []node.Node, adaptations []node.Node) node.Node { - return TraitUse{ - "TraitUse", - token, - traits, - adaptations, - } +func (n TraitUse) Attributes() map[string]interface{} { + return nil } func (n TraitUse) Walk(v node.Visitor) { diff --git a/node/stmt/trait_use_alias.go b/node/stmt/trait_use_alias.go index f932feb..cb3dbaa 100644 --- a/node/stmt/trait_use_alias.go +++ b/node/stmt/trait_use_alias.go @@ -2,21 +2,16 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) -func (n TraitUseAlias) Name() string { - return "TraitUseAlias" -} - type TraitUseAlias struct { name string ref node.Node modifier node.Node - alias token.TokenInterface + alias node.Node } -func NewTraitUseAlias(ref node.Node, modifier node.Node, alias token.TokenInterface) node.Node { +func NewTraitUseAlias(ref node.Node, modifier node.Node, alias node.Node) node.Node { return TraitUseAlias{ "TraitUseAlias", ref, @@ -25,6 +20,14 @@ func NewTraitUseAlias(ref node.Node, modifier node.Node, alias token.TokenInterf } } +func (n TraitUseAlias) Name() string { + return "TraitUseAlias" +} + +func (n TraitUseAlias) Attributes() map[string]interface{} { + return nil +} + func (n TraitUseAlias) Walk(v node.Visitor) { if v.EnterNode(n) == false { return @@ -40,5 +43,10 @@ func (n TraitUseAlias) Walk(v node.Visitor) { n.modifier.Walk(vv) } + if n.alias != nil { + vv := v.GetChildrenVisitor("alias") + n.alias.Walk(vv) + } + v.LeaveNode(n) } diff --git a/node/stmt/trait_use_precedence.go b/node/stmt/trait_use_precedence.go index 462e895..98853b6 100644 --- a/node/stmt/trait_use_precedence.go +++ b/node/stmt/trait_use_precedence.go @@ -4,10 +4,6 @@ import ( "github.com/z7zmey/php-parser/node" ) -func (n TraitUsePrecedence) Name() string { - return "TraitUsePrecedence" -} - type TraitUsePrecedence struct { name string ref node.Node @@ -22,6 +18,14 @@ func NewTraitUsePrecedence(ref node.Node, insteadof node.Node) node.Node { } } +func (n TraitUsePrecedence) Name() string { + return "TraitUsePrecedence" +} + +func (n TraitUsePrecedence) Attributes() map[string]interface{} { + return nil +} + 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 11de162..d37681f 100644 --- a/node/stmt/try.go +++ b/node/stmt/try.go @@ -2,31 +2,32 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) -func (n Try) Name() string { - return "Try" -} - type Try struct { name string - token token.Token stmts []node.Node catches []node.Node finally node.Node } -func NewTry(token token.Token, stmts []node.Node, catches []node.Node, finally node.Node) node.Node { +func NewTry(stmts []node.Node, catches []node.Node, finally node.Node) node.Node { return Try{ "Try", - token, stmts, catches, finally, } } +func (n Try) Name() string { + return "Try" +} + +func (n Try) Attributes() map[string]interface{} { + return nil +} + 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 baa240d..828e3b3 100644 --- a/node/stmt/unset.go +++ b/node/stmt/unset.go @@ -2,25 +2,26 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type Unset struct { + name string + vars []node.Node +} + +func NewUnset(vars []node.Node) node.Node { + return Unset{ + "Unset", + vars, + } +} + func (n Unset) Name() string { return "Unset" } -type Unset struct { - name string - token token.Token - vars []node.Node -} - -func NewUnset(token token.Token, vars []node.Node) node.Node { - return Unset{ - "Unset", - token, - vars, - } +func (n Unset) Attributes() map[string]interface{} { + return nil } func (n Unset) Walk(v node.Visitor) { diff --git a/node/stmt/use.go b/node/stmt/use.go index c5ced09..7af6add 100644 --- a/node/stmt/use.go +++ b/node/stmt/use.go @@ -2,17 +2,16 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) type Use struct { name string useType node.Node use node.Node - alias token.TokenInterface + alias node.Node } -func NewUse(useType node.Node, use node.Node, alias token.TokenInterface) node.Node { +func NewUse(useType node.Node, use node.Node, alias node.Node) node.Node { return Use{ "Use", useType, @@ -25,7 +24,11 @@ func (n Use) Name() string { return "Use" } -func (n Use) SetType(useType node.Node) node.Node { +func (n Use) Attributes() map[string]interface{} { + return nil +} + +func (n Use) SetUseType(useType node.Node) node.Node { n.useType = useType return n } @@ -45,5 +48,10 @@ func (n Use) Walk(v node.Visitor) { n.use.Walk(vv) } + if n.alias != nil { + vv := v.GetChildrenVisitor("alias") + n.alias.Walk(vv) + } + v.LeaveNode(n) } diff --git a/node/stmt/use_list.go b/node/stmt/use_list.go index 0a54beb..09fd00e 100644 --- a/node/stmt/use_list.go +++ b/node/stmt/use_list.go @@ -2,27 +2,28 @@ package stmt import ( "github.com/z7zmey/php-parser/node" - "github.com/z7zmey/php-parser/token" ) +type UseList struct { + name string + useType node.Node + uses []node.Node +} + +func NewUseList(useType node.Node, uses []node.Node) node.Node { + return UseList{ + "UseList", + useType, + uses, + } +} + func (n UseList) Name() string { return "UseList" } -type UseList struct { - name string - token token.Token - useType node.Node - uses []node.Node -} - -func NewUseList(token token.Token, useType node.Node, uses []node.Node) node.Node { - return UseList{ - "UseList", - token, - useType, - uses, - } +func (n UseList) Attributes() map[string]interface{} { + return nil } func (n UseList) Walk(v node.Visitor) { diff --git a/node/stmt/while.go b/node/stmt/while.go index 4b521cc..3d7d62d 100644 --- a/node/stmt/while.go +++ b/node/stmt/while.go @@ -25,6 +25,10 @@ func (n While) Name() string { return "While" } +func (n While) Attributes() map[string]interface{} { + return nil +} + func (n While) Walk(v node.Visitor) { if v.EnterNode(n) == false { return diff --git a/node/visitor.go b/node/visitor.go index 63cdb28..43195ad 100644 --- a/node/visitor.go +++ b/node/visitor.go @@ -3,6 +3,5 @@ package node type Visitor interface { EnterNode(node Node) bool GetChildrenVisitor(key string) Visitor - Scalar(key string, value interface{}) LeaveNode(node Node) } diff --git a/parser/parser.go b/parser/parser.go index e63ee32..3575d9d 100644 --- a/parser/parser.go +++ b/parser/parser.go @@ -357,7 +357,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line parser/parser.y:1172 +//line parser/parser.y:1170 //line yacctab:1 var yyExca = [...]int{ @@ -2530,13 +2530,13 @@ yydefault: yyDollar = yyS[yypt-1 : yypt+1] //line parser/parser.y:272 { - yyVAL.list = []node.Node{name.NewNamePart(yyDollar[1].token)} + yyVAL.list = []node.Node{name.NewNamePart(yyDollar[1].token.Value)} } case 81: yyDollar = yyS[yypt-3 : yypt+1] //line parser/parser.y:273 { - yyVAL.list = append(yyDollar[1].list, name.NewNamePart(yyDollar[3].token)) + yyVAL.list = append(yyDollar[1].list, name.NewNamePart(yyDollar[3].token.Value)) } case 82: yyDollar = yyS[yypt-1 : yypt+1] @@ -2590,55 +2590,55 @@ yydefault: yyDollar = yyS[yypt-4 : yypt+1] //line parser/parser.y:288 { - yyVAL.node = stmt.NewHaltCompiler(yyDollar[1].token) + yyVAL.node = stmt.NewHaltCompiler() } case 91: yyDollar = yyS[yypt-3 : yypt+1] //line parser/parser.y:289 { - yyVAL.node = stmt.NewNamespace(yyDollar[1].token, name.NewName(yyDollar[2].list), nil) + yyVAL.node = stmt.NewNamespace(name.NewName(yyDollar[2].list), nil) } case 92: yyDollar = yyS[yypt-5 : yypt+1] //line parser/parser.y:291 { - yyVAL.node = stmt.NewNamespace(yyDollar[1].token, name.NewName(yyDollar[2].list), yyDollar[4].list) + yyVAL.node = stmt.NewNamespace(name.NewName(yyDollar[2].list), yyDollar[4].list) } case 93: yyDollar = yyS[yypt-4 : yypt+1] //line parser/parser.y:292 { - yyVAL.node = stmt.NewNamespace(yyDollar[1].token, nil, yyDollar[3].list) + yyVAL.node = stmt.NewNamespace(nil, yyDollar[3].list) } case 94: yyDollar = yyS[yypt-3 : yypt+1] //line parser/parser.y:293 { - yyVAL.node = yyDollar[2].node.(stmt.GroupUse).SetToken(yyDollar[1].token) + yyVAL.node = yyDollar[2].node } case 95: yyDollar = yyS[yypt-4 : yypt+1] //line parser/parser.y:294 { - yyVAL.node = yyDollar[3].node.(stmt.GroupUse).SetToken(yyDollar[1].token).(stmt.GroupUse).SetUseType(yyDollar[2].node) + yyVAL.node = yyDollar[3].node.(stmt.GroupUse).SetUseType(yyDollar[2].node) } case 96: yyDollar = yyS[yypt-3 : yypt+1] //line parser/parser.y:295 { - yyVAL.node = stmt.NewUseList(yyDollar[1].token, nil, yyDollar[2].list) + yyVAL.node = stmt.NewUseList(nil, yyDollar[2].list) } case 97: yyDollar = yyS[yypt-4 : yypt+1] //line parser/parser.y:296 { - yyVAL.node = stmt.NewUseList(yyDollar[1].token, yyDollar[2].node, yyDollar[3].list) + yyVAL.node = stmt.NewUseList(yyDollar[2].node, yyDollar[3].list) } case 98: yyDollar = yyS[yypt-3 : yypt+1] //line parser/parser.y:297 { - yyVAL.node = stmt.NewConstList(yyDollar[1].token, yyDollar[2].list) + yyVAL.node = stmt.NewConstList(yyDollar[2].list) } case 99: yyDollar = yyS[yypt-1 : yypt+1] @@ -2657,26 +2657,26 @@ yydefault: //line parser/parser.y:307 { fmt.Println("group") - yyVAL.node = stmt.NewGroupUse(nil, nil, name.NewName(yyDollar[1].list), yyDollar[4].list) + yyVAL.node = stmt.NewGroupUse(nil, name.NewName(yyDollar[1].list), yyDollar[4].list) } case 102: yyDollar = yyS[yypt-7 : yypt+1] //line parser/parser.y:312 { - yyVAL.node = stmt.NewGroupUse(nil, nil, name.NewName(yyDollar[2].list), yyDollar[5].list) + yyVAL.node = stmt.NewGroupUse(nil, name.NewName(yyDollar[2].list), yyDollar[5].list) } case 103: yyDollar = yyS[yypt-6 : yypt+1] //line parser/parser.y:319 { fmt.Println("mixed") - yyVAL.node = stmt.NewGroupUse(nil, nil, name.NewName(yyDollar[1].list), yyDollar[4].list) + yyVAL.node = stmt.NewGroupUse(nil, name.NewName(yyDollar[1].list), yyDollar[4].list) } case 104: yyDollar = yyS[yypt-7 : yypt+1] //line parser/parser.y:324 { - yyVAL.node = stmt.NewGroupUse(nil, nil, name.NewName(yyDollar[2].list), yyDollar[5].list) + yyVAL.node = stmt.NewGroupUse(nil, name.NewName(yyDollar[2].list), yyDollar[5].list) } case 107: yyDollar = yyS[yypt-3 : yypt+1] @@ -2724,7 +2724,7 @@ yydefault: yyDollar = yyS[yypt-2 : yypt+1] //line parser/parser.y:353 { - yyVAL.node = yyDollar[2].node.(stmt.Use).SetType(yyDollar[1].node) + yyVAL.node = yyDollar[2].node.(stmt.Use).SetUseType(yyDollar[1].node) } case 115: yyDollar = yyS[yypt-1 : yypt+1] @@ -2736,7 +2736,7 @@ yydefault: yyDollar = yyS[yypt-3 : yypt+1] //line parser/parser.y:358 { - yyVAL.node = stmt.NewUse(nil, name.NewName(yyDollar[1].list), yyDollar[3].token) + yyVAL.node = stmt.NewUse(nil, name.NewName(yyDollar[1].list), node.NewIdentifier(yyDollar[3].token)) } case 117: yyDollar = yyS[yypt-1 : yypt+1] @@ -2808,7 +2808,7 @@ yydefault: yyDollar = yyS[yypt-4 : yypt+1] //line parser/parser.y:382 { - yyVAL.node = stmt.NewHaltCompiler(yyDollar[1].token) + yyVAL.node = stmt.NewHaltCompiler() } case 129: yyDollar = yyS[yypt-3 : yypt+1] @@ -2838,13 +2838,13 @@ yydefault: yyDollar = yyS[yypt-7 : yypt+1] //line parser/parser.y:390 { - yyVAL.node = stmt.NewDo(yyDollar[1].token, yyDollar[2].node, yyDollar[5].node) + yyVAL.node = stmt.NewDo(yyDollar[2].node, yyDollar[5].node) } case 134: yyDollar = yyS[yypt-9 : yypt+1] //line parser/parser.y:392 { - yyVAL.node = stmt.NewFor(yyDollar[1].token, yyDollar[3].list, yyDollar[5].list, yyDollar[7].list, yyDollar[9].node) + yyVAL.node = stmt.NewFor(yyDollar[3].list, yyDollar[5].list, yyDollar[7].list, yyDollar[9].node) } case 135: yyDollar = yyS[yypt-5 : yypt+1] @@ -2856,43 +2856,43 @@ yydefault: yyDollar = yyS[yypt-3 : yypt+1] //line parser/parser.y:394 { - yyVAL.node = stmt.NewBreak(yyDollar[1].token, yyDollar[2].node) + yyVAL.node = stmt.NewBreak(yyDollar[2].node) } case 137: yyDollar = yyS[yypt-3 : yypt+1] //line parser/parser.y:395 { - yyVAL.node = stmt.NewContinue(yyDollar[1].token, yyDollar[2].node) + yyVAL.node = stmt.NewContinue(yyDollar[2].node) } case 138: yyDollar = yyS[yypt-3 : yypt+1] //line parser/parser.y:396 { - yyVAL.node = stmt.NewReturn(yyDollar[1].token, yyDollar[2].node) + yyVAL.node = stmt.NewReturn(yyDollar[2].node) } case 139: yyDollar = yyS[yypt-3 : yypt+1] //line parser/parser.y:397 { - yyVAL.node = stmt.NewGlobal(yyDollar[1].token, yyDollar[2].list) + yyVAL.node = stmt.NewGlobal(yyDollar[2].list) } case 140: yyDollar = yyS[yypt-3 : yypt+1] //line parser/parser.y:398 { - yyVAL.node = stmt.NewStatic(yyDollar[1].token, yyDollar[2].list) + yyVAL.node = stmt.NewStatic(yyDollar[2].list) } case 141: yyDollar = yyS[yypt-3 : yypt+1] //line parser/parser.y:399 { - yyVAL.node = stmt.NewEcho(yyDollar[1].token, yyDollar[2].list) + yyVAL.node = stmt.NewEcho(yyDollar[2].list) } case 142: yyDollar = yyS[yypt-1 : yypt+1] //line parser/parser.y:400 { - yyVAL.node = stmt.NewInlineHtml(yyDollar[1].token) + yyVAL.node = stmt.NewInlineHtml(yyDollar[1].token.Value) } case 143: yyDollar = yyS[yypt-2 : yypt+1] @@ -2904,1843 +2904,1843 @@ yydefault: yyDollar = yyS[yypt-6 : yypt+1] //line parser/parser.y:403 { - yyVAL.node = stmt.NewUnset(yyDollar[1].token, yyDollar[3].list) + yyVAL.node = stmt.NewUnset(yyDollar[3].list) } case 145: yyDollar = yyS[yypt-7 : yypt+1] //line parser/parser.y:405 { - yyVAL.node = stmt.NewForeach(yyDollar[1].token, yyDollar[3].node, nil, yyDollar[5].foreachVariable.node, yyDollar[7].node, yyDollar[5].foreachVariable.byRef) + yyVAL.node = stmt.NewForeach(yyDollar[3].node, nil, yyDollar[5].foreachVariable.node, yyDollar[7].node, yyDollar[5].foreachVariable.byRef) } case 146: yyDollar = yyS[yypt-9 : yypt+1] //line parser/parser.y:407 { - yyVAL.node = stmt.NewForeach(yyDollar[1].token, yyDollar[3].node, yyDollar[5].node, yyDollar[7].foreachVariable.node, yyDollar[9].node, yyDollar[7].foreachVariable.byRef) + yyVAL.node = stmt.NewForeach(yyDollar[3].node, yyDollar[5].node, yyDollar[7].foreachVariable.node, yyDollar[9].node, yyDollar[7].foreachVariable.byRef) } case 147: yyDollar = yyS[yypt-5 : yypt+1] //line parser/parser.y:408 { - yyVAL.node = stmt.NewDeclare(yyDollar[1].token, yyDollar[3].list, yyDollar[5].node) + yyVAL.node = stmt.NewDeclare(yyDollar[3].list, yyDollar[5].node) } case 148: yyDollar = yyS[yypt-1 : yypt+1] //line parser/parser.y:409 { - yyVAL.node = stmt.NewNop(yyDollar[1].token) + yyVAL.node = stmt.NewNop() } case 149: yyDollar = yyS[yypt-6 : yypt+1] //line parser/parser.y:411 { - yyVAL.node = stmt.NewTry(yyDollar[1].token, yyDollar[3].list, yyDollar[5].list, yyDollar[6].node) + yyVAL.node = stmt.NewTry(yyDollar[3].list, yyDollar[5].list, yyDollar[6].node) } case 150: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:414 + //line parser/parser.y:412 { - yyVAL.node = stmt.NewThrow(yyDollar[1].token, yyDollar[2].node) + yyVAL.node = stmt.NewThrow(yyDollar[2].node) } case 151: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:415 + //line parser/parser.y:413 { - yyVAL.node = stmt.NewGoto(yyDollar[1].token, yyDollar[2].token) + yyVAL.node = stmt.NewGoto(node.NewIdentifier(yyDollar[2].token)) } case 152: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:416 + //line parser/parser.y:414 { - yyVAL.node = stmt.NewLabel(yyDollar[1].token) + yyVAL.node = stmt.NewLabel(node.NewIdentifier(yyDollar[1].token)) } case 153: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:419 + //line parser/parser.y:417 { yyVAL.list = []node.Node{} } case 154: yyDollar = yyS[yypt-9 : yypt+1] - //line parser/parser.y:421 + //line parser/parser.y:419 { - yyVAL.list = append(yyDollar[1].list, stmt.NewCatch(yyDollar[2].token, yyDollar[4].list, expr.NewVariable(node.NewIdentifier(yyDollar[5].token)), yyDollar[8].list)) + yyVAL.list = append(yyDollar[1].list, stmt.NewCatch(yyDollar[4].list, expr.NewVariable(node.NewIdentifier(yyDollar[5].token)), yyDollar[8].list)) } case 155: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:424 + //line parser/parser.y:422 { yyVAL.list = []node.Node{yyDollar[1].node} } case 156: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:425 + //line parser/parser.y:423 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 157: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:429 + //line parser/parser.y:427 { yyVAL.node = nil } case 158: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:430 + //line parser/parser.y:428 { - yyVAL.node = stmt.NewFinally(yyDollar[1].token, yyDollar[3].list) + yyVAL.node = stmt.NewFinally(yyDollar[3].list) } case 159: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:434 + //line parser/parser.y:432 { yyVAL.list = []node.Node{yyDollar[1].node} } case 160: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:435 + //line parser/parser.y:433 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 161: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:439 + //line parser/parser.y:437 { yyVAL.node = yyDollar[1].node } case 162: yyDollar = yyS[yypt-10 : yypt+1] - //line parser/parser.y:444 + //line parser/parser.y:442 { - yyVAL.node = stmt.NewFunction(yyDollar[3].token, yyDollar[2].boolean, yyDollar[5].list, yyDollar[7].node, yyDollar[9].list) + yyVAL.node = stmt.NewFunction(node.NewIdentifier(yyDollar[3].token), yyDollar[2].boolean, yyDollar[5].list, yyDollar[7].node, yyDollar[9].list) } case 163: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:450 + //line parser/parser.y:448 { yyVAL.boolean = false } case 164: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:451 + //line parser/parser.y:449 { yyVAL.boolean = true } case 165: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:455 + //line parser/parser.y:453 { yyVAL.boolean = false } case 166: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:456 + //line parser/parser.y:454 { yyVAL.boolean = true } case 167: yyDollar = yyS[yypt-8 : yypt+1] - //line parser/parser.y:461 + //line parser/parser.y:459 { - yyVAL.node = stmt.NewClass(yyDollar[3].token, yyDollar[1].list, nil, yyDollar[4].node, yyDollar[5].list, yyDollar[7].list) + yyVAL.node = stmt.NewClass(node.NewIdentifier(yyDollar[3].token), yyDollar[1].list, nil, yyDollar[4].node, yyDollar[5].list, yyDollar[7].list) } case 168: yyDollar = yyS[yypt-7 : yypt+1] - //line parser/parser.y:463 + //line parser/parser.y:461 { - yyVAL.node = stmt.NewClass(yyDollar[2].token, nil, nil, yyDollar[3].node, yyDollar[4].list, yyDollar[6].list) + yyVAL.node = stmt.NewClass(node.NewIdentifier(yyDollar[2].token), nil, nil, yyDollar[3].node, yyDollar[4].list, yyDollar[6].list) } case 169: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:467 + //line parser/parser.y:465 { yyVAL.list = []node.Node{yyDollar[1].node} } case 170: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:468 + //line parser/parser.y:466 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 171: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:472 + //line parser/parser.y:470 { yyVAL.node = node.NewIdentifier(yyDollar[1].token) } case 172: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:473 + //line parser/parser.y:471 { yyVAL.node = node.NewIdentifier(yyDollar[1].token) } case 173: yyDollar = yyS[yypt-5 : yypt+1] - //line parser/parser.y:477 + //line parser/parser.y:475 { - yyVAL.node = stmt.NewTrait(yyDollar[2].token, yyDollar[4].list) + yyVAL.node = stmt.NewTrait(node.NewIdentifier(yyDollar[2].token), yyDollar[4].list) } case 174: yyDollar = yyS[yypt-6 : yypt+1] - //line parser/parser.y:482 + //line parser/parser.y:480 { - yyVAL.node = stmt.NewInterface(yyDollar[1].token, yyDollar[2].token, yyDollar[3].list, yyDollar[5].list) + yyVAL.node = stmt.NewInterface(node.NewIdentifier(yyDollar[2].token), yyDollar[3].list, yyDollar[5].list) } case 175: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:486 + //line parser/parser.y:484 { yyVAL.node = nil } case 176: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:487 + //line parser/parser.y:485 { yyVAL.node = yyDollar[2].node } case 177: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:491 + //line parser/parser.y:489 { yyVAL.list = nil } case 178: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:492 + //line parser/parser.y:490 { yyVAL.list = yyDollar[2].list } case 179: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:496 + //line parser/parser.y:494 { yyVAL.list = nil } case 180: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:497 + //line parser/parser.y:495 { yyVAL.list = yyDollar[2].list } case 181: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:501 + //line parser/parser.y:499 { yyVAL.foreachVariable = foreachVariable{yyDollar[1].node, false} } case 182: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:502 + //line parser/parser.y:500 { yyVAL.foreachVariable = foreachVariable{yyDollar[2].node, true} } case 183: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:503 + //line parser/parser.y:501 { yyVAL.foreachVariable = foreachVariable{expr.NewList(yyDollar[3].list), false} } case 184: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:504 + //line parser/parser.y:502 { yyVAL.foreachVariable = foreachVariable{expr.NewShortList(yyDollar[2].list), false} } case 185: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:508 + //line parser/parser.y:506 { yyVAL.node = yyDollar[1].node } case 186: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:509 + //line parser/parser.y:507 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) } case 187: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:513 + //line parser/parser.y:511 { yyVAL.node = yyDollar[1].node } case 188: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:514 + //line parser/parser.y:512 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) } case 189: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:518 + //line parser/parser.y:516 { yyVAL.node = yyDollar[1].node } case 190: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:519 + //line parser/parser.y:517 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) } case 191: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:523 + //line parser/parser.y:521 { yyVAL.list = yyDollar[2].list } case 192: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:524 + //line parser/parser.y:522 { yyVAL.list = yyDollar[3].list } case 193: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:525 + //line parser/parser.y:523 { yyVAL.list = yyDollar[2].list } case 194: yyDollar = yyS[yypt-5 : yypt+1] - //line parser/parser.y:526 + //line parser/parser.y:524 { yyVAL.list = yyDollar[3].list } case 195: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:530 + //line parser/parser.y:528 { yyVAL.list = []node.Node{} } case 196: yyDollar = yyS[yypt-5 : yypt+1] - //line parser/parser.y:532 + //line parser/parser.y:530 { - yyVAL.list = append(yyDollar[1].list, stmt.NewCase(yyDollar[2].token, yyDollar[3].node, yyDollar[5].list)) + yyVAL.list = append(yyDollar[1].list, stmt.NewCase(yyDollar[3].node, yyDollar[5].list)) } case 197: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:536 + //line parser/parser.y:534 { - yyVAL.list = append(yyDollar[1].list, stmt.NewDefault(yyDollar[2].token, yyDollar[4].list)) + yyVAL.list = append(yyDollar[1].list, stmt.NewDefault(yyDollar[4].list)) } case 200: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:547 + //line parser/parser.y:545 { yyVAL.node = yyDollar[1].node } case 201: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:548 + //line parser/parser.y:546 { yyVAL.node = stmt.NewStmtList(yyDollar[2].list) } case 202: yyDollar = yyS[yypt-5 : yypt+1] - //line parser/parser.y:552 + //line parser/parser.y:550 { - yyVAL.node = stmt.NewIf(yyDollar[1].token, yyDollar[3].node, yyDollar[5].node) + yyVAL.node = stmt.NewIf(yyDollar[3].node, yyDollar[5].node) } case 203: yyDollar = yyS[yypt-6 : yypt+1] - //line parser/parser.y:554 + //line parser/parser.y:552 { - _elseIf := stmt.NewElseIf(yyDollar[2].token, yyDollar[4].node, yyDollar[6].node) + _elseIf := stmt.NewElseIf(yyDollar[4].node, yyDollar[6].node) yyVAL.node = yyDollar[1].node.(stmt.If).AddElseIf(_elseIf) } case 204: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:561 + //line parser/parser.y:559 { yyVAL.node = yyDollar[1].node } case 205: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:563 + //line parser/parser.y:561 { - _else := stmt.NewElse(yyDollar[2].token, yyDollar[3].node) + _else := stmt.NewElse(yyDollar[3].node) yyVAL.node = yyDollar[1].node.(stmt.If).SetElse(_else) } case 206: yyDollar = yyS[yypt-6 : yypt+1] - //line parser/parser.y:571 + //line parser/parser.y:569 { - yyVAL.node = stmt.NewAltIf(yyDollar[1].token, yyDollar[3].node, stmt.NewStmtList(yyDollar[6].list)) + yyVAL.node = stmt.NewAltIf(yyDollar[3].node, stmt.NewStmtList(yyDollar[6].list)) } case 207: yyDollar = yyS[yypt-7 : yypt+1] - //line parser/parser.y:575 + //line parser/parser.y:573 { - _elseIf := stmt.NewAltElseIf(yyDollar[2].token, yyDollar[4].node, stmt.NewStmtList(yyDollar[7].list)) + _elseIf := stmt.NewAltElseIf(yyDollar[4].node, stmt.NewStmtList(yyDollar[7].list)) yyVAL.node = yyDollar[1].node.(stmt.AltIf).AddElseIf(_elseIf) } case 208: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:582 + //line parser/parser.y:580 { yyVAL.node = yyDollar[1].node } case 209: yyDollar = yyS[yypt-6 : yypt+1] - //line parser/parser.y:584 + //line parser/parser.y:582 { - _else := stmt.NewAltElse(yyDollar[2].token, stmt.NewStmtList(yyDollar[4].list)) + _else := stmt.NewAltElse(stmt.NewStmtList(yyDollar[4].list)) yyVAL.node = yyDollar[1].node.(stmt.AltIf).SetElse(_else) } case 210: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:591 + //line parser/parser.y:589 { yyVAL.list = yyDollar[1].list } case 211: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:592 + //line parser/parser.y:590 { yyVAL.list = nil } case 212: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:596 + //line parser/parser.y:594 { yyVAL.list = []node.Node{yyDollar[1].node} } case 213: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:597 + //line parser/parser.y:595 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 214: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:602 + //line parser/parser.y:600 { yyVAL.node = node.NewParameter(yyDollar[1].node, expr.NewVariable(node.NewIdentifier(yyDollar[4].token)), nil, yyDollar[2].boolean, yyDollar[3].boolean) } case 215: yyDollar = yyS[yypt-6 : yypt+1] - //line parser/parser.y:606 + //line parser/parser.y:604 { yyVAL.node = node.NewParameter(yyDollar[1].node, expr.NewVariable(node.NewIdentifier(yyDollar[4].token)), yyDollar[6].node, yyDollar[2].boolean, yyDollar[3].boolean) } case 216: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:612 + //line parser/parser.y:610 { yyVAL.node = nil } case 217: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:613 + //line parser/parser.y:611 { yyVAL.node = yyDollar[1].node } case 218: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:617 + //line parser/parser.y:615 { yyVAL.node = yyDollar[1].node } case 219: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:618 + //line parser/parser.y:616 { yyVAL.node = node.NewNullable(yyDollar[2].node) } case 220: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:622 + //line parser/parser.y:620 { yyVAL.node = node.NewIdentifier(yyDollar[1].token) } case 221: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:623 + //line parser/parser.y:621 { yyVAL.node = node.NewIdentifier(yyDollar[1].token) } case 222: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:624 + //line parser/parser.y:622 { yyVAL.node = yyDollar[1].node } case 223: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:628 + //line parser/parser.y:626 { yyVAL.node = nil } case 224: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:629 + //line parser/parser.y:627 { yyVAL.node = yyDollar[2].node } case 225: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:633 + //line parser/parser.y:631 { yyVAL.list = []node.Node{} } case 226: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:634 + //line parser/parser.y:632 { yyVAL.list = yyDollar[2].list } case 227: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:638 + //line parser/parser.y:636 { yyVAL.list = []node.Node{yyDollar[1].node} } case 228: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:639 + //line parser/parser.y:637 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 229: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:643 + //line parser/parser.y:641 { yyVAL.node = node.NewArgument(yyDollar[1].node, false) } case 230: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:644 + //line parser/parser.y:642 { yyVAL.node = node.NewArgument(yyDollar[2].node, true) } case 231: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:648 + //line parser/parser.y:646 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 232: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:649 + //line parser/parser.y:647 { yyVAL.list = []node.Node{yyDollar[1].node} } case 233: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:653 + //line parser/parser.y:651 { yyVAL.node = yyDollar[1].node } case 234: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:657 + //line parser/parser.y:655 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 235: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:658 + //line parser/parser.y:656 { yyVAL.list = []node.Node{yyDollar[1].node} } case 236: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:662 + //line parser/parser.y:660 { - yyVAL.node = stmt.NewStaticVar(yyDollar[1].token, nil) + yyVAL.node = stmt.NewStaticVar(expr.NewVariable(node.NewIdentifier(yyDollar[1].token)), nil) } case 237: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:663 + //line parser/parser.y:661 { - yyVAL.node = stmt.NewStaticVar(yyDollar[1].token, yyDollar[3].node) + yyVAL.node = stmt.NewStaticVar(expr.NewVariable(node.NewIdentifier(yyDollar[1].token)), yyDollar[3].node) } case 238: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:667 + //line parser/parser.y:665 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 239: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:668 + //line parser/parser.y:666 { yyVAL.list = []node.Node{} } case 240: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:672 + //line parser/parser.y:670 { yyVAL.node = stmt.NewPropertyList(yyDollar[1].list, yyDollar[2].list) } case 241: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:673 + //line parser/parser.y:671 { - yyVAL.node = stmt.NewClassConstList(yyDollar[2].token, yyDollar[1].list, yyDollar[3].list) + yyVAL.node = stmt.NewClassConstList(yyDollar[1].list, yyDollar[3].list) } case 242: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:674 + //line parser/parser.y:672 { - yyVAL.node = stmt.NewTraitUse(yyDollar[1].token, yyDollar[2].list, yyDollar[3].list) + yyVAL.node = stmt.NewTraitUse(yyDollar[2].list, yyDollar[3].list) } case 243: yyDollar = yyS[yypt-9 : yypt+1] - //line parser/parser.y:676 + //line parser/parser.y:674 { - yyVAL.node = stmt.NewClassMethod(yyDollar[4].token, yyDollar[1].list, yyDollar[3].boolean, yyDollar[6].list, yyDollar[8].node, yyDollar[9].list) + yyVAL.node = stmt.NewClassMethod(node.NewIdentifier(yyDollar[4].token), yyDollar[1].list, yyDollar[3].boolean, yyDollar[6].list, yyDollar[8].node, yyDollar[9].list) } case 244: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:682 + //line parser/parser.y:680 { yyVAL.list = []node.Node{yyDollar[1].node} } case 245: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:683 + //line parser/parser.y:681 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 246: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:687 + //line parser/parser.y:685 { yyVAL.list = nil } case 247: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:688 + //line parser/parser.y:686 { yyVAL.list = nil } case 248: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:689 + //line parser/parser.y:687 { yyVAL.list = yyDollar[2].list } case 249: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:693 + //line parser/parser.y:691 { yyVAL.list = []node.Node{yyDollar[1].node} } case 250: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:694 + //line parser/parser.y:692 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 251: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:698 + //line parser/parser.y:696 { yyVAL.node = yyDollar[1].node } case 252: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:699 + //line parser/parser.y:697 { yyVAL.node = yyDollar[1].node } case 253: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:704 + //line parser/parser.y:702 { yyVAL.node = stmt.NewTraitUsePrecedence(yyDollar[1].node, name.NewName(yyDollar[3].list)) } case 254: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:710 + //line parser/parser.y:708 { - yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, yyDollar[3].token) + yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, node.NewIdentifier(yyDollar[3].token)) } case 255: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:712 + //line parser/parser.y:710 { - yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, yyDollar[3].token) + yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, nil, node.NewIdentifier(yyDollar[3].token)) } case 256: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:714 + //line parser/parser.y:712 { - yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, yyDollar[4].token) + yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, node.NewIdentifier(yyDollar[4].token)) } case 257: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:715 + //line parser/parser.y:713 { yyVAL.node = stmt.NewTraitUseAlias(yyDollar[1].node, yyDollar[3].node, nil) } case 258: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:719 + //line parser/parser.y:717 { - yyVAL.node = stmt.NewTraitMethodRef(nil, yyDollar[1].token) + yyVAL.node = stmt.NewTraitMethodRef(nil, node.NewIdentifier(yyDollar[1].token)) } case 259: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:720 + //line parser/parser.y:718 { yyVAL.node = yyDollar[1].node } case 260: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:724 + //line parser/parser.y:722 { - yyVAL.node = stmt.NewTraitMethodRef(yyDollar[1].node, yyDollar[3].token) + yyVAL.node = stmt.NewTraitMethodRef(yyDollar[1].node, node.NewIdentifier(yyDollar[3].token)) } case 261: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:728 + //line parser/parser.y:726 { yyVAL.list = nil } case 262: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:729 + //line parser/parser.y:727 { yyVAL.list = yyDollar[2].list } case 263: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:733 + //line parser/parser.y:731 { yyVAL.list = yyDollar[1].list } case 264: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:734 + //line parser/parser.y:732 { yyVAL.list = []node.Node{node.NewIdentifier(yyDollar[1].token)} } case 265: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:738 + //line parser/parser.y:736 { yyVAL.list = nil } case 266: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:739 + //line parser/parser.y:737 { yyVAL.list = yyDollar[1].list } case 267: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:743 + //line parser/parser.y:741 { yyVAL.list = []node.Node{yyDollar[1].node} } case 268: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:744 + //line parser/parser.y:742 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 269: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:748 + //line parser/parser.y:746 { yyVAL.node = node.NewIdentifier(yyDollar[1].token) } case 270: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:749 + //line parser/parser.y:747 { yyVAL.node = node.NewIdentifier(yyDollar[1].token) } case 271: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:750 + //line parser/parser.y:748 { yyVAL.node = node.NewIdentifier(yyDollar[1].token) } case 272: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:751 + //line parser/parser.y:749 { yyVAL.node = node.NewIdentifier(yyDollar[1].token) } case 273: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:752 + //line parser/parser.y:750 { yyVAL.node = node.NewIdentifier(yyDollar[1].token) } case 274: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:753 + //line parser/parser.y:751 { yyVAL.node = node.NewIdentifier(yyDollar[1].token) } case 275: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:757 + //line parser/parser.y:755 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 276: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:758 + //line parser/parser.y:756 { yyVAL.list = []node.Node{yyDollar[1].node} } case 277: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:762 + //line parser/parser.y:760 { - yyVAL.node = stmt.NewProperty(yyDollar[1].token, nil) + yyVAL.node = stmt.NewProperty(expr.NewVariable(node.NewIdentifier(yyDollar[1].token)), nil) } case 278: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:763 + //line parser/parser.y:761 { - yyVAL.node = stmt.NewProperty(yyDollar[1].token, yyDollar[3].node) + yyVAL.node = stmt.NewProperty(expr.NewVariable(node.NewIdentifier(yyDollar[1].token)), yyDollar[3].node) } case 279: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:767 + //line parser/parser.y:765 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 280: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:768 + //line parser/parser.y:766 { yyVAL.list = []node.Node{yyDollar[1].node} } case 281: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:772 + //line parser/parser.y:770 { - yyVAL.node = stmt.NewConstant(yyDollar[1].token, yyDollar[3].node) + yyVAL.node = stmt.NewConstant(node.NewIdentifier(yyDollar[1].token), yyDollar[3].node) } case 282: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:776 + //line parser/parser.y:774 { - yyVAL.node = stmt.NewConstant(yyDollar[1].token, yyDollar[3].node) + yyVAL.node = stmt.NewConstant(node.NewIdentifier(yyDollar[1].token), yyDollar[3].node) } case 283: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:780 + //line parser/parser.y:778 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 284: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:781 + //line parser/parser.y:779 { yyVAL.list = []node.Node{yyDollar[1].node} } case 285: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:785 + //line parser/parser.y:783 { yyVAL.node = yyDollar[1].node } case 286: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:789 + //line parser/parser.y:787 { yyVAL.list = nil } case 287: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:790 + //line parser/parser.y:788 { yyVAL.list = yyDollar[1].list } case 288: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:793 + //line parser/parser.y:791 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 289: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:794 + //line parser/parser.y:792 { yyVAL.list = []node.Node{yyDollar[1].node} } case 290: yyDollar = yyS[yypt-7 : yypt+1] - //line parser/parser.y:799 + //line parser/parser.y:797 { { - yyVAL.node = stmt.NewClass(yyDollar[1].token, nil, yyDollar[2].list, yyDollar[3].node, yyDollar[4].list, yyDollar[6].list) + yyVAL.node = stmt.NewClass(nil, nil, yyDollar[2].list, yyDollar[3].node, yyDollar[4].list, yyDollar[6].list) } } case 291: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:805 + //line parser/parser.y:803 { yyVAL.node = expr.NewNew(yyDollar[2].node, yyDollar[3].list) } case 292: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:806 + //line parser/parser.y:804 { yyVAL.node = expr.NewNew(yyDollar[2].node, nil) } case 293: yyDollar = yyS[yypt-6 : yypt+1] - //line parser/parser.y:811 + //line parser/parser.y:809 { list := expr.NewList(yyDollar[3].list) yyVAL.node = assign_op.NewAssign(list, yyDollar[6].node) } case 294: yyDollar = yyS[yypt-5 : yypt+1] - //line parser/parser.y:816 + //line parser/parser.y:814 { shortList := expr.NewShortList(yyDollar[2].list) yyVAL.node = assign_op.NewAssign(shortList, yyDollar[5].node) } case 295: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:820 + //line parser/parser.y:818 { yyVAL.node = assign_op.NewAssign(yyDollar[1].node, yyDollar[3].node) } case 296: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:821 + //line parser/parser.y:819 { yyVAL.node = assign_op.NewAssignRef(yyDollar[1].node, yyDollar[4].node) } case 297: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:822 + //line parser/parser.y:820 { yyVAL.node = expr.NewClone(yyDollar[2].node) } case 298: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:823 + //line parser/parser.y:821 { yyVAL.node = assign_op.NewPlus(yyDollar[1].node, yyDollar[3].node) } case 299: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:824 + //line parser/parser.y:822 { yyVAL.node = assign_op.NewMinus(yyDollar[1].node, yyDollar[3].node) } case 300: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:825 + //line parser/parser.y:823 { yyVAL.node = assign_op.NewMul(yyDollar[1].node, yyDollar[3].node) } case 301: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:826 + //line parser/parser.y:824 { yyVAL.node = assign_op.NewPow(yyDollar[1].node, yyDollar[3].node) } case 302: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:827 + //line parser/parser.y:825 { yyVAL.node = assign_op.NewDiv(yyDollar[1].node, yyDollar[3].node) } case 303: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:828 + //line parser/parser.y:826 { yyVAL.node = assign_op.NewConcat(yyDollar[1].node, yyDollar[3].node) } case 304: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:829 + //line parser/parser.y:827 { yyVAL.node = assign_op.NewMod(yyDollar[1].node, yyDollar[3].node) } case 305: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:830 + //line parser/parser.y:828 { yyVAL.node = assign_op.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) } case 306: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:831 + //line parser/parser.y:829 { yyVAL.node = assign_op.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) } case 307: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:832 + //line parser/parser.y:830 { yyVAL.node = assign_op.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) } case 308: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:833 + //line parser/parser.y:831 { yyVAL.node = assign_op.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) } case 309: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:834 + //line parser/parser.y:832 { yyVAL.node = assign_op.NewShiftRight(yyDollar[1].node, yyDollar[3].node) } case 310: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:835 + //line parser/parser.y:833 { yyVAL.node = expr.NewPostInc(yyDollar[1].node) } case 311: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:836 + //line parser/parser.y:834 { yyVAL.node = expr.NewPreInc(yyDollar[2].node) } case 312: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:837 + //line parser/parser.y:835 { yyVAL.node = expr.NewPostDec(yyDollar[1].node) } case 313: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:838 + //line parser/parser.y:836 { yyVAL.node = expr.NewPreDec(yyDollar[2].node) } case 314: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:839 + //line parser/parser.y:837 { yyVAL.node = binary_op.NewBooleanOr(yyDollar[1].node, yyDollar[3].node) } case 315: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:840 + //line parser/parser.y:838 { yyVAL.node = binary_op.NewBooleanAnd(yyDollar[1].node, yyDollar[3].node) } case 316: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:841 + //line parser/parser.y:839 { yyVAL.node = binary_op.NewLogicalOr(yyDollar[1].node, yyDollar[3].node) } case 317: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:842 + //line parser/parser.y:840 { yyVAL.node = binary_op.NewLogicalAnd(yyDollar[1].node, yyDollar[3].node) } case 318: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:843 + //line parser/parser.y:841 { yyVAL.node = binary_op.NewLogicalXor(yyDollar[1].node, yyDollar[3].node) } case 319: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:844 + //line parser/parser.y:842 { yyVAL.node = binary_op.NewBitwiseOr(yyDollar[1].node, yyDollar[3].node) } case 320: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:845 + //line parser/parser.y:843 { yyVAL.node = binary_op.NewBitwiseAnd(yyDollar[1].node, yyDollar[3].node) } case 321: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:846 + //line parser/parser.y:844 { yyVAL.node = binary_op.NewBitwiseXor(yyDollar[1].node, yyDollar[3].node) } case 322: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:847 + //line parser/parser.y:845 { yyVAL.node = binary_op.NewConcat(yyDollar[1].node, yyDollar[3].node) } case 323: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:848 + //line parser/parser.y:846 { yyVAL.node = binary_op.NewPlus(yyDollar[1].node, yyDollar[3].node) } case 324: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:849 + //line parser/parser.y:847 { yyVAL.node = binary_op.NewMinus(yyDollar[1].node, yyDollar[3].node) } case 325: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:850 + //line parser/parser.y:848 { yyVAL.node = binary_op.NewMul(yyDollar[1].node, yyDollar[3].node) } case 326: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:851 + //line parser/parser.y:849 { yyVAL.node = binary_op.NewPow(yyDollar[1].node, yyDollar[3].node) } case 327: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:852 + //line parser/parser.y:850 { yyVAL.node = binary_op.NewDiv(yyDollar[1].node, yyDollar[3].node) } case 328: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:853 + //line parser/parser.y:851 { yyVAL.node = binary_op.NewMod(yyDollar[1].node, yyDollar[3].node) } case 329: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:854 + //line parser/parser.y:852 { yyVAL.node = binary_op.NewShiftLeft(yyDollar[1].node, yyDollar[3].node) } case 330: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:855 + //line parser/parser.y:853 { yyVAL.node = binary_op.NewShiftRight(yyDollar[1].node, yyDollar[3].node) } case 331: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:856 + //line parser/parser.y:854 { yyVAL.node = expr.NewUnaryPlus(yyDollar[2].node) } case 332: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:857 + //line parser/parser.y:855 { yyVAL.node = expr.NewUnaryMinus(yyDollar[2].node) } case 333: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:858 + //line parser/parser.y:856 { yyVAL.node = expr.NewBooleanNot(yyDollar[2].node) } case 334: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:859 + //line parser/parser.y:857 { yyVAL.node = expr.NewBitwiseNot(yyDollar[2].node) } case 335: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:860 + //line parser/parser.y:858 { yyVAL.node = binary_op.NewIdentical(yyDollar[1].node, yyDollar[3].node) } case 336: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:861 + //line parser/parser.y:859 { yyVAL.node = binary_op.NewNotIdentical(yyDollar[1].node, yyDollar[3].node) } case 337: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:862 + //line parser/parser.y:860 { yyVAL.node = binary_op.NewEqual(yyDollar[1].node, yyDollar[3].node) } case 338: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:863 + //line parser/parser.y:861 { yyVAL.node = binary_op.NewNotEqual(yyDollar[1].node, yyDollar[3].node) } case 339: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:864 + //line parser/parser.y:862 { yyVAL.node = binary_op.NewSmaller(yyDollar[1].node, yyDollar[3].node) } case 340: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:865 + //line parser/parser.y:863 { yyVAL.node = binary_op.NewSmallerOrEqual(yyDollar[1].node, yyDollar[3].node) } case 341: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:866 + //line parser/parser.y:864 { yyVAL.node = binary_op.NewGreater(yyDollar[1].node, yyDollar[3].node) } case 342: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:867 + //line parser/parser.y:865 { yyVAL.node = binary_op.NewGreaterOrEqual(yyDollar[1].node, yyDollar[3].node) } case 343: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:868 + //line parser/parser.y:866 { yyVAL.node = binary_op.NewSpaceship(yyDollar[1].node, yyDollar[3].node) } case 344: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:869 + //line parser/parser.y:867 { yyVAL.node = expr.NewInstanceOf(yyDollar[1].node, yyDollar[3].node) } case 345: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:870 + //line parser/parser.y:868 { yyVAL.node = yyDollar[2].node } case 346: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:871 + //line parser/parser.y:869 { yyVAL.node = yyDollar[1].node } case 347: yyDollar = yyS[yypt-5 : yypt+1] - //line parser/parser.y:872 + //line parser/parser.y:870 { yyVAL.node = expr.NewTernary(yyDollar[1].node, yyDollar[3].node, yyDollar[5].node) } case 348: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:873 + //line parser/parser.y:871 { yyVAL.node = expr.NewTernary(yyDollar[1].node, nil, yyDollar[4].node) } case 349: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:874 + //line parser/parser.y:872 { yyVAL.node = binary_op.NewCoalesce(yyDollar[1].node, yyDollar[3].node) } case 350: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:875 + //line parser/parser.y:873 { yyVAL.node = yyDollar[1].node } case 351: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:876 + //line parser/parser.y:874 { yyVAL.node = cast.NewCastInt(yyDollar[2].node) } case 352: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:877 + //line parser/parser.y:875 { yyVAL.node = cast.NewCastDouble(yyDollar[2].node) } case 353: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:878 + //line parser/parser.y:876 { yyVAL.node = cast.NewCastString(yyDollar[2].node) } case 354: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:879 + //line parser/parser.y:877 { yyVAL.node = cast.NewCastArray(yyDollar[2].node) } case 355: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:880 + //line parser/parser.y:878 { yyVAL.node = cast.NewCastObject(yyDollar[2].node) } case 356: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:881 + //line parser/parser.y:879 { yyVAL.node = cast.NewCastBool(yyDollar[2].node) } case 357: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:882 + //line parser/parser.y:880 { yyVAL.node = cast.NewCastUnset(yyDollar[2].node) } case 358: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:883 + //line parser/parser.y:881 { yyVAL.node = expr.NewExit(yyDollar[2].node, strings.EqualFold(yyDollar[1].token.Value, "die")) } case 359: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:884 + //line parser/parser.y:882 { yyVAL.node = expr.NewErrorSuppress(yyDollar[2].node) } case 360: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:885 + //line parser/parser.y:883 { yyVAL.node = yyDollar[1].node } case 361: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:886 + //line parser/parser.y:884 { yyVAL.node = expr.NewShellExec(yyDollar[2].list) } case 362: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:887 + //line parser/parser.y:885 { yyVAL.node = expr.NewPrint(yyDollar[2].node) } case 363: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:888 + //line parser/parser.y:886 { yyVAL.node = expr.NewYield(nil, nil) } case 364: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:889 + //line parser/parser.y:887 { yyVAL.node = expr.NewYield(nil, yyDollar[2].node) } case 365: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:890 + //line parser/parser.y:888 { yyVAL.node = expr.NewYield(yyDollar[2].node, yyDollar[4].node) } case 366: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:891 + //line parser/parser.y:889 { yyVAL.node = expr.NewYieldFrom(yyDollar[2].node) } case 367: yyDollar = yyS[yypt-10 : yypt+1] - //line parser/parser.y:893 + //line parser/parser.y:891 { yyVAL.node = expr.NewClosure(yyDollar[4].list, yyDollar[6].list, yyDollar[7].node, yyDollar[9].list, false, yyDollar[2].boolean) } case 368: yyDollar = yyS[yypt-11 : yypt+1] - //line parser/parser.y:897 + //line parser/parser.y:895 { yyVAL.node = expr.NewClosure(yyDollar[5].list, yyDollar[7].list, yyDollar[8].node, yyDollar[10].list, true, yyDollar[3].boolean) } case 369: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:903 + //line parser/parser.y:901 { yyVAL.boolean = false } case 370: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:904 + //line parser/parser.y:902 { yyVAL.boolean = true } case 371: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:908 + //line parser/parser.y:906 { yyVAL.list = []node.Node{} } case 372: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:909 + //line parser/parser.y:907 { yyVAL.list = yyDollar[3].list } case 373: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:913 + //line parser/parser.y:911 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 374: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:914 + //line parser/parser.y:912 { yyVAL.list = []node.Node{yyDollar[1].node} } case 375: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:918 + //line parser/parser.y:916 { yyVAL.node = expr.NewClusureUse(expr.NewVariable(node.NewIdentifier(yyDollar[1].token)), false) } case 376: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:919 + //line parser/parser.y:917 { yyVAL.node = expr.NewClusureUse(expr.NewVariable(node.NewIdentifier(yyDollar[2].token)), true) } case 377: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:923 + //line parser/parser.y:921 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].list) } case 378: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:925 + //line parser/parser.y:923 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].list) } case 379: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:927 + //line parser/parser.y:925 { yyVAL.node = expr.NewStaticCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].list) } case 380: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:928 + //line parser/parser.y:926 { yyVAL.node = expr.NewFunctionCall(yyDollar[1].node, yyDollar[2].list) } case 381: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:932 + //line parser/parser.y:930 { yyVAL.node = node.NewIdentifier(yyDollar[1].token) } case 382: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:933 + //line parser/parser.y:931 { yyVAL.node = yyDollar[1].node } case 383: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:937 + //line parser/parser.y:935 { yyVAL.node = yyDollar[1].node } case 384: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:938 + //line parser/parser.y:936 { yyVAL.node = yyDollar[1].node } case 385: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:942 + //line parser/parser.y:940 { yyVAL.node = nil } case 386: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:943 + //line parser/parser.y:941 { yyVAL.node = yyDollar[2].node } case 387: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:947 + //line parser/parser.y:945 { yyVAL.list = []node.Node{} } case 388: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:948 + //line parser/parser.y:946 { - yyVAL.list = []node.Node{scalar.NewEncapsedStringPart(yyDollar[1].token)} + yyVAL.list = []node.Node{scalar.NewEncapsedStringPart(yyDollar[1].token.Value)} } case 389: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:949 + //line parser/parser.y:947 { yyVAL.list = yyDollar[1].list } case 390: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:953 + //line parser/parser.y:951 { yyVAL.list = nil } case 391: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:954 + //line parser/parser.y:952 { yyVAL.list = yyDollar[1].list } case 392: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:958 + //line parser/parser.y:956 { - yyVAL.node = expr.NewArray(yyDollar[1].token, yyDollar[4].token, yyDollar[3].list) + yyVAL.node = expr.NewArray(yyDollar[3].list) } case 393: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:959 + //line parser/parser.y:957 { - yyVAL.node = expr.NewShortArray(yyDollar[1].token, yyDollar[3].token, yyDollar[2].list) + yyVAL.node = expr.NewShortArray(yyDollar[2].list) } case 394: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:960 + //line parser/parser.y:958 { - yyVAL.node = scalar.NewString(yyDollar[1].token) + yyVAL.node = scalar.NewString(yyDollar[1].token.Value) } case 395: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:964 + //line parser/parser.y:962 { - yyVAL.node = scalar.NewLnumber(yyDollar[1].token) + yyVAL.node = scalar.NewLnumber(yyDollar[1].token.Value) } case 396: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:965 + //line parser/parser.y:963 { - yyVAL.node = scalar.NewDnumber(yyDollar[1].token) + yyVAL.node = scalar.NewDnumber(yyDollar[1].token.Value) } case 397: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:966 + //line parser/parser.y:964 { - yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token) + yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) } case 398: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:967 + //line parser/parser.y:965 { - yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token) + yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) } case 399: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:968 + //line parser/parser.y:966 { - yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token) + yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) } case 400: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:969 + //line parser/parser.y:967 { - yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token) + yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) } case 401: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:970 + //line parser/parser.y:968 { - yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token) + yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) } case 402: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:971 + //line parser/parser.y:969 { - yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token) + yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) } case 403: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:972 + //line parser/parser.y:970 { - yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token) + yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) } case 404: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:973 + //line parser/parser.y:971 { - yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token) + yyVAL.node = scalar.NewMagicConstant(yyDollar[1].token.Value) } case 405: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:975 + //line parser/parser.y:973 { - yyVAL.node = scalar.NewString(yyDollar[2].token) /* TODO: mark as Heredoc*/ + yyVAL.node = scalar.NewString(yyDollar[2].token.Value) /* TODO: mark as Heredoc*/ } case 406: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:977 + //line parser/parser.y:975 { - yyVAL.node = scalar.NewEncapsed(yyDollar[1].token, nil, yyDollar[2].token) + yyVAL.node = scalar.NewEncapsed(nil) } case 407: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:978 + //line parser/parser.y:976 { - yyVAL.node = scalar.NewEncapsed(yyDollar[1].token, yyDollar[2].list, yyDollar[3].token) + yyVAL.node = scalar.NewEncapsed(yyDollar[2].list) } case 408: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:979 + //line parser/parser.y:977 { - yyVAL.node = scalar.NewEncapsed(yyDollar[1].token, yyDollar[2].list, yyDollar[3].token) + yyVAL.node = scalar.NewEncapsed(yyDollar[2].list) } case 409: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:980 + //line parser/parser.y:978 { yyVAL.node = yyDollar[1].node } case 410: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:981 + //line parser/parser.y:979 { yyVAL.node = yyDollar[1].node } case 411: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:985 + //line parser/parser.y:983 { yyVAL.node = expr.NewConstFetch(yyDollar[1].node) } case 412: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:986 + //line parser/parser.y:984 { - yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, yyDollar[3].token) + yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, node.NewIdentifier(yyDollar[3].token)) } case 413: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:988 + //line parser/parser.y:986 { - yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, yyDollar[3].token) + yyVAL.node = expr.NewClassConstFetch(yyDollar[1].node, node.NewIdentifier(yyDollar[3].token)) } case 414: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:992 + //line parser/parser.y:990 { yyVAL.node = yyDollar[1].node } case 415: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:993 + //line parser/parser.y:991 { yyVAL.node = yyDollar[1].node } case 416: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:997 + //line parser/parser.y:995 { yyVAL.node = nil } case 417: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:998 + //line parser/parser.y:996 { yyVAL.node = yyDollar[1].node } case 418: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1002 + //line parser/parser.y:1000 { yyVAL.node = yyDollar[1].node } case 419: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1006 + //line parser/parser.y:1004 { yyVAL.node = yyDollar[1].node } case 420: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1007 + //line parser/parser.y:1005 { yyVAL.node = yyDollar[2].node } case 421: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1008 + //line parser/parser.y:1006 { yyVAL.node = yyDollar[1].node } case 422: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1012 + //line parser/parser.y:1010 { yyVAL.node = yyDollar[1].node } case 423: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1013 + //line parser/parser.y:1011 { yyVAL.node = yyDollar[2].node } case 424: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1014 + //line parser/parser.y:1012 { yyVAL.node = yyDollar[1].node } case 425: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1018 + //line parser/parser.y:1016 { yyVAL.node = yyDollar[1].node } case 426: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:1019 + //line parser/parser.y:1017 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) } case 427: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:1020 + //line parser/parser.y:1018 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) } case 428: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:1021 + //line parser/parser.y:1019 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) } case 429: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:1023 + //line parser/parser.y:1021 { yyVAL.node = expr.NewMethodCall(yyDollar[1].node, yyDollar[3].node, yyDollar[4].list) } case 430: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1024 + //line parser/parser.y:1022 { yyVAL.node = yyDollar[1].node } case 431: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1028 + //line parser/parser.y:1026 { yyVAL.node = yyDollar[1].node } case 432: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1029 + //line parser/parser.y:1027 { yyVAL.node = yyDollar[1].node } case 433: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1030 + //line parser/parser.y:1028 { yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) } case 434: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1034 + //line parser/parser.y:1032 { yyVAL.node = expr.NewVariable(node.NewIdentifier(yyDollar[1].token)) } case 435: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:1035 + //line parser/parser.y:1033 { yyVAL.node = expr.NewVariable(yyDollar[3].node) } case 436: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1036 + //line parser/parser.y:1034 { yyVAL.node = expr.NewVariable(yyDollar[2].node) } case 437: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1041 + //line parser/parser.y:1039 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) } case 438: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1043 + //line parser/parser.y:1041 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) } case 439: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1047 + //line parser/parser.y:1045 { yyVAL.node = yyDollar[1].node } case 440: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:1048 + //line parser/parser.y:1046 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) } case 441: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:1049 + //line parser/parser.y:1047 { yyVAL.node = expr.NewArrayDimFetch(yyDollar[1].node, yyDollar[3].node) } case 442: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1050 + //line parser/parser.y:1048 { yyVAL.node = expr.NewPropertyFetch(yyDollar[1].node, yyDollar[3].node) } case 443: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1052 + //line parser/parser.y:1050 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) } case 444: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1054 + //line parser/parser.y:1052 { yyVAL.node = expr.NewStaticPropertyFetch(yyDollar[1].node, yyDollar[3].node) } case 445: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1058 + //line parser/parser.y:1056 { yyVAL.node = node.NewIdentifier(yyDollar[1].token) } case 446: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1059 + //line parser/parser.y:1057 { yyVAL.node = yyDollar[2].node } case 447: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1060 + //line parser/parser.y:1058 { yyVAL.node = yyDollar[1].node } case 448: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1064 + //line parser/parser.y:1062 { yyVAL.node = node.NewIdentifier(yyDollar[1].token) } case 449: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1065 + //line parser/parser.y:1063 { yyVAL.node = yyDollar[2].node } case 450: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1066 + //line parser/parser.y:1064 { yyVAL.node = yyDollar[1].node } case 451: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1071 + //line parser/parser.y:1069 { if yyDollar[1].list[len(yyDollar[1].list)-1] == nil { yyVAL.list = yyDollar[1].list[:len(yyDollar[1].list)-1] @@ -4750,55 +4750,55 @@ yydefault: } case 452: yyDollar = yyS[yypt-0 : yypt+1] - //line parser/parser.y:1081 + //line parser/parser.y:1079 { yyVAL.node = nil } case 453: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1082 + //line parser/parser.y:1080 { yyVAL.node = yyDollar[1].node } case 454: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1087 + //line parser/parser.y:1085 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 455: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1088 + //line parser/parser.y:1086 { yyVAL.list = []node.Node{yyDollar[1].node} } case 456: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1092 + //line parser/parser.y:1090 { yyVAL.node = expr.NewArrayItem(yyDollar[1].node, yyDollar[3].node, false) } case 457: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1093 + //line parser/parser.y:1091 { yyVAL.node = expr.NewArrayItem(nil, yyDollar[1].node, false) } case 458: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:1094 + //line parser/parser.y:1092 { yyVAL.node = expr.NewArrayItem(yyDollar[1].node, yyDollar[4].node, true) } case 459: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1095 + //line parser/parser.y:1093 { yyVAL.node = expr.NewArrayItem(nil, yyDollar[2].node, true) } case 460: yyDollar = yyS[yypt-6 : yypt+1] - //line parser/parser.y:1097 + //line parser/parser.y:1095 { // TODO: Cannot use list() as standalone expression list := expr.NewList(yyDollar[5].list) @@ -4806,7 +4806,7 @@ yydefault: } case 461: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:1103 + //line parser/parser.y:1101 { // TODO: Cannot use list() as standalone expression list := expr.NewList(yyDollar[3].list) @@ -4814,162 +4814,162 @@ yydefault: } case 462: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1111 + //line parser/parser.y:1109 { yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) } case 463: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1112 + //line parser/parser.y:1110 { - yyVAL.list = append(yyDollar[1].list, scalar.NewEncapsedStringPart(yyDollar[2].token)) + yyVAL.list = append(yyDollar[1].list, scalar.NewEncapsedStringPart(yyDollar[2].token.Value)) } case 464: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1113 + //line parser/parser.y:1111 { yyVAL.list = []node.Node{yyDollar[1].node} } case 465: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1114 + //line parser/parser.y:1112 { - yyVAL.list = []node.Node{scalar.NewEncapsedStringPart(yyDollar[1].token), yyDollar[2].node} + yyVAL.list = []node.Node{scalar.NewEncapsedStringPart(yyDollar[1].token.Value), yyDollar[2].node} } case 466: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1118 + //line parser/parser.y:1116 { yyVAL.node = expr.NewVariable(node.NewIdentifier(yyDollar[1].token)) } case 467: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:1119 + //line parser/parser.y:1117 { yyVAL.node = expr.NewArrayDimFetch(expr.NewVariable(node.NewIdentifier(yyDollar[1].token)), yyDollar[3].node) } case 468: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1120 + //line parser/parser.y:1118 { yyVAL.node = expr.NewPropertyFetch(expr.NewVariable(node.NewIdentifier(yyDollar[1].token)), node.NewIdentifier(yyDollar[3].token)) } case 469: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1121 + //line parser/parser.y:1119 { yyVAL.node = expr.NewVariable(yyDollar[2].node) } case 470: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1122 + //line parser/parser.y:1120 { yyVAL.node = expr.NewVariable(node.NewIdentifier(yyDollar[2].token)) } case 471: yyDollar = yyS[yypt-6 : yypt+1] - //line parser/parser.y:1124 + //line parser/parser.y:1122 { yyVAL.node = expr.NewArrayDimFetch(expr.NewVariable(node.NewIdentifier(yyDollar[2].token)), yyDollar[4].node) } case 472: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1125 + //line parser/parser.y:1123 { yyVAL.node = yyDollar[2].node } case 473: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1128 + //line parser/parser.y:1126 { - yyVAL.node = scalar.NewString(yyDollar[1].token) + yyVAL.node = scalar.NewString(yyDollar[1].token.Value) } case 474: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1130 + //line parser/parser.y:1128 { // 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) + yyVAL.node = scalar.NewLnumber(yyDollar[1].token.Value) } else { - yyVAL.node = scalar.NewString(yyDollar[1].token) + yyVAL.node = scalar.NewString(yyDollar[1].token.Value) } } case 475: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1139 + //line parser/parser.y:1137 { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi(yyDollar[2].token.Value); err == nil { - yyVAL.node = expr.NewUnaryMinus(scalar.NewLnumber(yyDollar[2].token)) + yyVAL.node = expr.NewUnaryMinus(scalar.NewLnumber(yyDollar[2].token.Value)) } else { yyDollar[2].token.Value = "-" + yyDollar[2].token.Value - yyVAL.node = scalar.NewString(yyDollar[2].token) + yyVAL.node = scalar.NewString(yyDollar[2].token.Value) } } case 476: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1148 + //line parser/parser.y:1146 { yyVAL.node = expr.NewVariable(node.NewIdentifier(yyDollar[1].token)) } case 477: yyDollar = yyS[yypt-5 : yypt+1] - //line parser/parser.y:1152 + //line parser/parser.y:1150 { yyVAL.node = expr.NewIsset(yyDollar[3].list) } case 478: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:1153 + //line parser/parser.y:1151 { yyVAL.node = expr.NewEmpty(yyDollar[3].node) } case 479: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1154 + //line parser/parser.y:1152 { yyVAL.node = expr.NewInclude(yyDollar[2].node) } case 480: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1155 + //line parser/parser.y:1153 { yyVAL.node = expr.NewIncludeOnce(yyDollar[2].node) } case 481: yyDollar = yyS[yypt-4 : yypt+1] - //line parser/parser.y:1156 + //line parser/parser.y:1154 { yyVAL.node = expr.NewEval(yyDollar[3].node) } case 482: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1157 + //line parser/parser.y:1155 { yyVAL.node = expr.NewRequire(yyDollar[2].node) } case 483: yyDollar = yyS[yypt-2 : yypt+1] - //line parser/parser.y:1158 + //line parser/parser.y:1156 { yyVAL.node = expr.NewRequireOnce(yyDollar[2].node) } case 484: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1162 + //line parser/parser.y:1160 { yyVAL.list = []node.Node{yyDollar[1].node} } case 485: yyDollar = yyS[yypt-3 : yypt+1] - //line parser/parser.y:1163 + //line parser/parser.y:1161 { yyVAL.list = append(yyDollar[1].list, yyDollar[3].node) } case 486: yyDollar = yyS[yypt-1 : yypt+1] - //line parser/parser.y:1167 + //line parser/parser.y:1165 { yyVAL.node = yyDollar[1].node } diff --git a/parser/parser.y b/parser/parser.y index f1fe036..71efbcd 100644 --- a/parser/parser.y +++ b/parser/parser.y @@ -269,8 +269,8 @@ top_statement_list: ; namespace_name: - T_STRING { $$ = []node.Node{name.NewNamePart($1)} } - | namespace_name T_NS_SEPARATOR T_STRING { $$ = append($1, name.NewNamePart($3)) } + T_STRING { $$ = []node.Node{name.NewNamePart($1.Value)} } + | namespace_name T_NS_SEPARATOR T_STRING { $$ = append($1, name.NewNamePart($3.Value)) } ; name: @@ -285,16 +285,16 @@ top_statement: | class_declaration_statement { $$ = $1; } | trait_declaration_statement { $$ = $1; } | interface_declaration_statement { $$ = $1; } - | T_HALT_COMPILER '(' ')' ';' { $$ = stmt.NewHaltCompiler($1) } - | T_NAMESPACE namespace_name ';' { $$ = stmt.NewNamespace($1, name.NewName($2), nil) } + | T_HALT_COMPILER '(' ')' ';' { $$ = stmt.NewHaltCompiler() } + | T_NAMESPACE namespace_name ';' { $$ = stmt.NewNamespace(name.NewName($2), nil) } | T_NAMESPACE namespace_name '{' top_statement_list '}' - { $$ = stmt.NewNamespace($1, name.NewName($2), $4) } - | T_NAMESPACE '{' top_statement_list '}' { $$ = stmt.NewNamespace($1, nil, $3) } - | T_USE mixed_group_use_declaration ';' { $$ = $2.(stmt.GroupUse).SetToken($1) } - | T_USE use_type group_use_declaration ';' { $$ = $3.(stmt.GroupUse).SetToken($1).(stmt.GroupUse).SetUseType($2) } - | T_USE use_declarations ';' { $$ = stmt.NewUseList($1, nil, $2) } - | T_USE use_type use_declarations ';' { $$ = stmt.NewUseList($1, $2, $3) } - | T_CONST const_list ';' { $$ = stmt.NewConstList($1, $2) } + { $$ = stmt.NewNamespace(name.NewName($2), $4) } + | T_NAMESPACE '{' top_statement_list '}' { $$ = stmt.NewNamespace(nil, $3) } + | 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) } + | T_USE use_type use_declarations ';' { $$ = stmt.NewUseList($2, $3) } + | T_CONST const_list ';' { $$ = stmt.NewConstList($2) } ; use_type: @@ -306,11 +306,11 @@ group_use_declaration: namespace_name T_NS_SEPARATOR '{' unprefixed_use_declarations possible_comma '}' { fmt.Println("group") - $$ = stmt.NewGroupUse(nil, nil, name.NewName($1), $4) + $$ = stmt.NewGroupUse(nil, name.NewName($1), $4) } | T_NS_SEPARATOR namespace_name T_NS_SEPARATOR '{' unprefixed_use_declarations possible_comma '}' { - $$ = stmt.NewGroupUse(nil, nil, name.NewName($2), $5) + $$ = stmt.NewGroupUse(nil, name.NewName($2), $5) } ; @@ -318,11 +318,11 @@ mixed_group_use_declaration: namespace_name T_NS_SEPARATOR '{' inline_use_declarations possible_comma '}' { fmt.Println("mixed") - $$ = stmt.NewGroupUse(nil, nil, name.NewName($1), $4) + $$ = stmt.NewGroupUse(nil, name.NewName($1), $4) } | T_NS_SEPARATOR namespace_name T_NS_SEPARATOR '{' inline_use_declarations possible_comma '}' { - $$ = stmt.NewGroupUse(nil, nil, name.NewName($2), $5) + $$ = stmt.NewGroupUse(nil, name.NewName($2), $5) } ; @@ -350,12 +350,12 @@ use_declarations: inline_use_declaration: unprefixed_use_declaration { $$ = $1; } - | use_type unprefixed_use_declaration { $$ = $2.(stmt.Use).SetType($1) } + | use_type unprefixed_use_declaration { $$ = $2.(stmt.Use).SetUseType($1) } ; unprefixed_use_declaration: namespace_name { $$ = stmt.NewUse(nil, name.NewName($1), nil) } - | namespace_name T_AS T_STRING { $$ = stmt.NewUse(nil, name.NewName($1), $3) } + | namespace_name T_AS T_STRING { $$ = stmt.NewUse(nil, name.NewName($1), node.NewIdentifier($3)) } ; use_declaration: @@ -379,7 +379,7 @@ inner_statement: | class_declaration_statement { $$ = $1; } | trait_declaration_statement { $$ = $1; } | interface_declaration_statement { $$ = $1; } - | T_HALT_COMPILER '(' ')' ';' { $$ = stmt.NewHaltCompiler($1) } + | T_HALT_COMPILER '(' ')' ';' { $$ = stmt.NewHaltCompiler() } statement: '{' inner_statement_list '}' { $$ = stmt.NewStmtList($2) } @@ -387,38 +387,36 @@ statement: | alt_if_stmt { $$ = $1; } | T_WHILE '(' expr ')' while_statement { $$ = stmt.NewWhile($1, $3, $5) } - | T_DO statement T_WHILE '(' expr ')' ';' { $$ = stmt.NewDo($1, $2, $5) } + | T_DO statement T_WHILE '(' expr ')' ';' { $$ = stmt.NewDo($2, $5) } | T_FOR '(' for_exprs ';' for_exprs ';' for_exprs ')' for_statement - { $$ = stmt.NewFor($1, $3, $5, $7, $9) } + { $$ = stmt.NewFor($3, $5, $7, $9) } | T_SWITCH '(' expr ')' switch_case_list { $$ = stmt.NewSwitch($1, $3, $5) } - | T_BREAK optional_expr ';' { $$ = stmt.NewBreak($1, $2) } - | T_CONTINUE optional_expr ';' { $$ = stmt.NewContinue($1, $2) } - | T_RETURN optional_expr ';' { $$ = stmt.NewReturn($1, $2) } - | T_GLOBAL global_var_list ';' { $$ = stmt.NewGlobal($1, $2) } - | T_STATIC static_var_list ';' { $$ = stmt.NewStatic($1, $2); } - | T_ECHO echo_expr_list ';' { $$ = stmt.NewEcho($1, $2) } - | T_INLINE_HTML { $$ = stmt.NewInlineHtml($1) } + | T_BREAK optional_expr ';' { $$ = stmt.NewBreak($2) } + | T_CONTINUE optional_expr ';' { $$ = stmt.NewContinue($2) } + | T_RETURN optional_expr ';' { $$ = stmt.NewReturn($2) } + | T_GLOBAL global_var_list ';' { $$ = stmt.NewGlobal($2) } + | T_STATIC static_var_list ';' { $$ = stmt.NewStatic($2); } + | T_ECHO echo_expr_list ';' { $$ = stmt.NewEcho($2) } + | T_INLINE_HTML { $$ = stmt.NewInlineHtml($1.Value) } | expr ';' { $$ = stmt.NewExpression($1); } | T_UNSET '(' unset_variables possible_comma ')' ';' - { $$ = stmt.NewUnset($1, $3) } + { $$ = stmt.NewUnset($3) } | T_FOREACH '(' expr T_AS foreach_variable ')' foreach_statement - { $$ = stmt.NewForeach($1, $3, nil, $5.node, $7, $5.byRef); } + { $$ = stmt.NewForeach($3, nil, $5.node, $7, $5.byRef); } | T_FOREACH '(' expr T_AS variable T_DOUBLE_ARROW foreach_variable ')' foreach_statement - { $$ = stmt.NewForeach($1, $3, $5, $7.node, $9, $7.byRef); } - | T_DECLARE '(' const_list ')' declare_statement { $$ = stmt.NewDeclare($1, $3, $5) } - | ';' { $$ = stmt.NewNop($1) } + { $$ = stmt.NewForeach($3, $5, $7.node, $9, $7.byRef); } + | T_DECLARE '(' const_list ')' declare_statement { $$ = stmt.NewDeclare($3, $5) } + | ';' { $$ = stmt.NewNop() } | T_TRY '{' inner_statement_list '}' catch_list finally_statement - { - $$ = stmt.NewTry($1, $3, $5, $6) - } - | T_THROW expr ';' { $$ = stmt.NewThrow($1, $2) } - | T_GOTO T_STRING ';' { $$ = stmt.NewGoto($1, $2) } - | T_STRING ':' { $$ = stmt.NewLabel($1) } + { $$ = stmt.NewTry($3, $5, $6) } + | T_THROW expr ';' { $$ = stmt.NewThrow($2) } + | T_GOTO T_STRING ';' { $$ = stmt.NewGoto(node.NewIdentifier($2)) } + | T_STRING ':' { $$ = stmt.NewLabel(node.NewIdentifier($1)) } catch_list: /* empty */ { $$ = []node.Node{} } | catch_list T_CATCH '(' catch_name_list T_VARIABLE ')' '{' inner_statement_list '}' - { $$ = append($1, stmt.NewCatch($2, $4, expr.NewVariable(node.NewIdentifier($5)), $8)) } + { $$ = append($1, stmt.NewCatch($4, expr.NewVariable(node.NewIdentifier($5)), $8)) } ; catch_name_list: name { $$ = []node.Node{$1} } @@ -427,7 +425,7 @@ catch_name_list: finally_statement: /* empty */ { $$ = nil } - | T_FINALLY '{' inner_statement_list '}' { $$ = stmt.NewFinally($1, $3) } + | T_FINALLY '{' inner_statement_list '}' { $$ = stmt.NewFinally($3) } ; unset_variables: @@ -442,7 +440,7 @@ unset_variable: function_declaration_statement: T_FUNCTION returns_ref T_STRING '(' parameter_list ')' return_type '{' inner_statement_list '}' { - $$ = stmt.NewFunction($3, $2, $5, $7, $9) + $$ = stmt.NewFunction(node.NewIdentifier($3), $2, $5, $7, $9) } ; @@ -458,9 +456,9 @@ is_variadic: class_declaration_statement: class_modifiers T_CLASS T_STRING extends_from implements_list '{' class_statement_list '}' - { $$ = stmt.NewClass($3, $1, nil, $4, $5, $7) } + { $$ = stmt.NewClass(node.NewIdentifier($3), $1, nil, $4, $5, $7) } | T_CLASS T_STRING extends_from implements_list '{' class_statement_list '}' - { $$ = stmt.NewClass($2, nil, nil, $3, $4, $6) } + { $$ = stmt.NewClass(node.NewIdentifier($2), nil, nil, $3, $4, $6) } ; class_modifiers: @@ -474,12 +472,12 @@ class_modifier: ; trait_declaration_statement: - T_TRAIT T_STRING '{' class_statement_list '}' { $$ = stmt.NewTrait($2, $4) } + T_TRAIT T_STRING '{' class_statement_list '}' { $$ = stmt.NewTrait(node.NewIdentifier($2), $4) } ; interface_declaration_statement: T_INTERFACE T_STRING interface_extends_list '{' class_statement_list '}' - { $$ = stmt.NewInterface($1, $2, $3, $5) } + { $$ = stmt.NewInterface(node.NewIdentifier($2), $3, $5) } ; extends_from: @@ -530,11 +528,11 @@ case_list: /* empty */ { $$ = []node.Node{} } | case_list T_CASE expr case_separator inner_statement_list { - $$ = append($1, stmt.NewCase($2, $3, $5)) + $$ = append($1, stmt.NewCase($3, $5)) } | case_list T_DEFAULT case_separator inner_statement_list { - $$ = append($1, stmt.NewDefault($2, $4)) + $$ = append($1, stmt.NewDefault($4)) } ; @@ -549,10 +547,10 @@ while_statement: ; if_stmt_without_else: - T_IF '(' expr ')' statement { $$ = stmt.NewIf($1, $3, $5) } + T_IF '(' expr ')' statement { $$ = stmt.NewIf($3, $5) } | if_stmt_without_else T_ELSEIF '(' expr ')' statement { - _elseIf := stmt.NewElseIf($2, $4, $6) + _elseIf := stmt.NewElseIf($4, $6) $$ = $1.(stmt.If).AddElseIf(_elseIf) } ; @@ -561,7 +559,7 @@ if_stmt: if_stmt_without_else %prec T_NOELSE { $$ = $1; } | if_stmt_without_else T_ELSE statement { - _else := stmt.NewElse($2, $3) + _else := stmt.NewElse($3) $$ = $1.(stmt.If).SetElse(_else) } ; @@ -569,11 +567,11 @@ if_stmt: alt_if_stmt_without_else: T_IF '(' expr ')' ':' inner_statement_list { - $$ = stmt.NewAltIf($1, $3, stmt.NewStmtList($6)) + $$ = stmt.NewAltIf($3, stmt.NewStmtList($6)) } | alt_if_stmt_without_else T_ELSEIF '(' expr ')' ':' inner_statement_list { - _elseIf := stmt.NewAltElseIf($2, $4, stmt.NewStmtList($7)) + _elseIf := stmt.NewAltElseIf($4, stmt.NewStmtList($7)) $$ = $1.(stmt.AltIf).AddElseIf(_elseIf) } ; @@ -582,7 +580,7 @@ alt_if_stmt: alt_if_stmt_without_else T_ENDIF ';' { $$ = $1; } | alt_if_stmt_without_else T_ELSE ':' inner_statement_list T_ENDIF ';' { - _else := stmt.NewAltElse($2, stmt.NewStmtList($4)) + _else := stmt.NewAltElse(stmt.NewStmtList($4)) $$ = $1.(stmt.AltIf).SetElse(_else) } ; @@ -659,8 +657,8 @@ static_var_list: ; static_var: - T_VARIABLE { $$ = stmt.NewStaticVar($1, nil) } - | T_VARIABLE '=' expr { $$ = stmt.NewStaticVar($1, $3) } + T_VARIABLE { $$ = stmt.NewStaticVar(expr.NewVariable(node.NewIdentifier($1)), nil) } + | T_VARIABLE '=' expr { $$ = stmt.NewStaticVar(expr.NewVariable(node.NewIdentifier($1)), $3) } ; class_statement_list: @@ -670,11 +668,11 @@ class_statement_list: class_statement: variable_modifiers property_list ';' { $$ = stmt.NewPropertyList($1, $2) } - | method_modifiers T_CONST class_const_list ';' { $$ = stmt.NewClassConstList($2, $1, $3); } - | T_USE name_list trait_adaptations { $$ = stmt.NewTraitUse($1, $2, $3) } + | method_modifiers T_CONST class_const_list ';' { $$ = stmt.NewClassConstList($1, $3); } + | T_USE name_list trait_adaptations { $$ = stmt.NewTraitUse($2, $3) } | method_modifiers T_FUNCTION returns_ref identifier '(' parameter_list ')' return_type method_body { - $$ = stmt.NewClassMethod($4, $1, $3, $6, $8, $9) + $$ = stmt.NewClassMethod(node.NewIdentifier($4), $1, $3, $6, $8, $9) } ; @@ -707,21 +705,21 @@ trait_precedence: ; trait_alias: - trait_method_reference T_AS T_STRING { $$ = stmt.NewTraitUseAlias($1, nil, $3) } + trait_method_reference T_AS T_STRING { $$ = stmt.NewTraitUseAlias($1, nil, node.NewIdentifier($3)) } | trait_method_reference T_AS reserved_non_modifiers - { $$ = stmt.NewTraitUseAlias($1, nil, $3) } + { $$ = stmt.NewTraitUseAlias($1, nil, node.NewIdentifier($3)) } | trait_method_reference T_AS member_modifier identifier - { $$ = stmt.NewTraitUseAlias($1, $3, $4) } + { $$ = stmt.NewTraitUseAlias($1, $3, node.NewIdentifier($4)) } | trait_method_reference T_AS member_modifier { $$ = stmt.NewTraitUseAlias($1, $3, nil) } ; trait_method_reference: - identifier { $$ = stmt.NewTraitMethodRef(nil, $1) } + identifier { $$ = stmt.NewTraitMethodRef(nil, node.NewIdentifier($1)) } | absolute_trait_method_reference { $$ = $1; } ; absolute_trait_method_reference: - name T_PAAMAYIM_NEKUDOTAYIM identifier { $$ = stmt.NewTraitMethodRef($1, $3) } + name T_PAAMAYIM_NEKUDOTAYIM identifier { $$ = stmt.NewTraitMethodRef($1, node.NewIdentifier($3)) } ; method_body: @@ -759,8 +757,8 @@ property_list: ; property: - T_VARIABLE { $$ = stmt.NewProperty($1, nil) } - | T_VARIABLE '=' expr { $$ = stmt.NewProperty($1, $3) } + T_VARIABLE { $$ = stmt.NewProperty(expr.NewVariable(node.NewIdentifier($1)), nil) } + | T_VARIABLE '=' expr { $$ = stmt.NewProperty(expr.NewVariable(node.NewIdentifier($1)), $3) } ; class_const_list: @@ -769,11 +767,11 @@ class_const_list: ; class_const_decl: - identifier '=' expr { $$ = stmt.NewConstant($1, $3) } + identifier '=' expr { $$ = stmt.NewConstant(node.NewIdentifier($1), $3) } ; const_decl: - T_STRING '=' expr { $$ = stmt.NewConstant($1, $3) } + T_STRING '=' expr { $$ = stmt.NewConstant(node.NewIdentifier($1), $3) } ; echo_expr_list: @@ -797,7 +795,7 @@ non_empty_for_exprs: anonymous_class: T_CLASS ctor_arguments extends_from implements_list '{' class_statement_list '}' { - { $$ = stmt.NewClass($1, nil, $2, $3, $4, $6) } + { $$ = stmt.NewClass(nil, nil, $2, $3, $4, $6) } } ; @@ -945,7 +943,7 @@ exit_expr: backticks_expr: /* empty */ { $$ = []node.Node{} } - | T_ENCAPSED_AND_WHITESPACE { $$ = []node.Node{scalar.NewEncapsedStringPart($1)} } + | T_ENCAPSED_AND_WHITESPACE { $$ = []node.Node{scalar.NewEncapsedStringPart($1.Value)} } | encaps_list { $$ = $1; } ; @@ -955,37 +953,37 @@ ctor_arguments: ; dereferencable_scalar: - T_ARRAY '(' array_pair_list ')' { $$ = expr.NewArray($1, $4, $3) } - | '[' array_pair_list ']' { $$ = expr.NewShortArray($1, $3, $2) } - | T_CONSTANT_ENCAPSED_STRING { $$ = scalar.NewString($1) } + T_ARRAY '(' array_pair_list ')' { $$ = expr.NewArray($3) } + | '[' array_pair_list ']' { $$ = expr.NewShortArray($2) } + | T_CONSTANT_ENCAPSED_STRING { $$ = scalar.NewString($1.Value) } ; scalar: - T_LNUMBER { $$ = scalar.NewLnumber($1) } - | T_DNUMBER { $$ = scalar.NewDnumber($1) } - | T_LINE { $$ = scalar.NewMagicConstant($1) } - | T_FILE { $$ = scalar.NewMagicConstant($1) } - | T_DIR { $$ = scalar.NewMagicConstant($1) } - | T_TRAIT_C { $$ = scalar.NewMagicConstant($1) } - | T_METHOD_C { $$ = scalar.NewMagicConstant($1) } - | T_FUNC_C { $$ = scalar.NewMagicConstant($1) } - | T_NS_C { $$ = scalar.NewMagicConstant($1) } - | T_CLASS_C { $$ = scalar.NewMagicConstant($1) } + T_LNUMBER { $$ = scalar.NewLnumber($1.Value) } + | T_DNUMBER { $$ = scalar.NewDnumber($1.Value) } + | T_LINE { $$ = scalar.NewMagicConstant($1.Value) } + | T_FILE { $$ = scalar.NewMagicConstant($1.Value) } + | T_DIR { $$ = scalar.NewMagicConstant($1.Value) } + | T_TRAIT_C { $$ = scalar.NewMagicConstant($1.Value) } + | T_METHOD_C { $$ = scalar.NewMagicConstant($1.Value) } + | T_FUNC_C { $$ = scalar.NewMagicConstant($1.Value) } + | T_NS_C { $$ = scalar.NewMagicConstant($1.Value) } + | T_CLASS_C { $$ = scalar.NewMagicConstant($1.Value) } | T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC - { $$ = scalar.NewString($2) /* TODO: mark as Heredoc*/ } + { $$ = scalar.NewString($2.Value) /* TODO: mark as Heredoc*/ } | T_START_HEREDOC T_END_HEREDOC - { $$ = scalar.NewEncapsed($1, nil, $2) } - | '"' encaps_list '"' { $$ = scalar.NewEncapsed($1, $2, $3) } - | T_START_HEREDOC encaps_list T_END_HEREDOC { $$ = scalar.NewEncapsed($1, $2, $3) } + { $$ = scalar.NewEncapsed(nil) } + | '"' encaps_list '"' { $$ = scalar.NewEncapsed($2) } + | T_START_HEREDOC encaps_list T_END_HEREDOC { $$ = scalar.NewEncapsed($2) } | dereferencable_scalar { $$ = $1; } | constant { $$ = $1; } ; constant: name { $$ = expr.NewConstFetch($1) } - | class_name T_PAAMAYIM_NEKUDOTAYIM identifier { $$ = expr.NewClassConstFetch($1, $3) } + | class_name T_PAAMAYIM_NEKUDOTAYIM identifier { $$ = expr.NewClassConstFetch($1, node.NewIdentifier($3)) } | variable_class_name T_PAAMAYIM_NEKUDOTAYIM identifier - { $$ = expr.NewClassConstFetch($1, $3) } + { $$ = expr.NewClassConstFetch($1, node.NewIdentifier($3)) } ; expr: @@ -1109,9 +1107,9 @@ array_pair: encaps_list: encaps_list encaps_var { $$ = append($1, $2) } - | encaps_list T_ENCAPSED_AND_WHITESPACE { $$ = append($1, scalar.NewEncapsedStringPart($2)) } + | encaps_list T_ENCAPSED_AND_WHITESPACE { $$ = append($1, scalar.NewEncapsedStringPart($2.Value)) } | encaps_var { $$ = []node.Node{$1} } - | T_ENCAPSED_AND_WHITESPACE encaps_var { $$ = []node.Node{scalar.NewEncapsedStringPart($1), $2} } + | T_ENCAPSED_AND_WHITESPACE encaps_var { $$ = []node.Node{scalar.NewEncapsedStringPart($1.Value), $2} } ; encaps_var: @@ -1125,24 +1123,24 @@ encaps_var: | T_CURLY_OPEN variable '}' { $$ = $2; } ; encaps_var_offset: - T_STRING { $$ = scalar.NewString($1) } + T_STRING { $$ = scalar.NewString($1.Value) } | T_NUM_STRING { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi($1.Value); err == nil { - $$ = scalar.NewLnumber($1) + $$ = scalar.NewLnumber($1.Value) } else { - $$ = scalar.NewString($1) + $$ = scalar.NewString($1.Value) } } | '-' T_NUM_STRING { // TODO: add option to handle 64 bit integer if _, err := strconv.Atoi($2.Value); err == nil { - $$ = expr.NewUnaryMinus(scalar.NewLnumber($2)) + $$ = expr.NewUnaryMinus(scalar.NewLnumber($2.Value)) } else { $2.Value = "-"+$2.Value - $$ = scalar.NewString($2) + $$ = scalar.NewString($2.Value) } } | T_VARIABLE { $$ = expr.NewVariable(node.NewIdentifier($1)) }