From 2c6664bdc9e1f6de919ea27121e50e7ffa3cc814 Mon Sep 17 00:00:00 2001 From: z7zmey Date: Mon, 18 Dec 2017 21:34:11 +0200 Subject: [PATCH] assign_ref node --- node/expr/assign_op/assign.go | 15 ++------------- node/expr/assign_op/assign_op.go | 10 +--------- node/expr/assign_op/assign_ref.go | 19 +++++++++++++++++++ parser/parser.go | 8 ++++---- parser/parser.y | 8 ++++---- 5 files changed, 30 insertions(+), 30 deletions(-) create mode 100644 node/expr/assign_op/assign_ref.go diff --git a/node/expr/assign_op/assign.go b/node/expr/assign_op/assign.go index d2c592f..b673c4e 100644 --- a/node/expr/assign_op/assign.go +++ b/node/expr/assign_op/assign.go @@ -1,30 +1,19 @@ package assign_op import ( - "fmt" - "io" - "github.com/z7zmey/php-parser/node" ) type Assign struct { AssignOp - byRef bool } -func NewAssign(variable node.Node, expression node.Node, byRef bool) node.Node { +func NewAssign(variable node.Node, expression node.Node) node.Node { return Assign{ AssignOp{ - node.SimpleNode{Name: "AssignAssign", Attributes: make(map[string]string)}, + node.SimpleNode{Name: "Assign", Attributes: make(map[string]string)}, variable, expression, }, - byRef, } } - -func (n Assign) Print(out io.Writer, indent string) { - n.AssignOp.Print(out, indent) - - fmt.Fprintf(out, "\n%vbyRef: %t", indent+" ", n.byRef) -} diff --git a/node/expr/assign_op/assign_op.go b/node/expr/assign_op/assign_op.go index d4b49ef..4cb819d 100644 --- a/node/expr/assign_op/assign_op.go +++ b/node/expr/assign_op/assign_op.go @@ -13,14 +13,6 @@ type AssignOp struct { expression node.Node } -func NewAssignOp(variable node.Node, expression node.Node) node.Node { - return AssignOp{ - node.SimpleNode{Name: "AssignOp", Attributes: make(map[string]string)}, - variable, - expression, - } -} - func (n AssignOp) Print(out io.Writer, indent string) { fmt.Fprintf(out, "\n%v%v [- -]", indent, n.Name) @@ -28,7 +20,7 @@ func (n AssignOp) Print(out io.Writer, indent string) { fmt.Fprintf(out, "\n%vvariable:", indent+" ") n.variable.Print(out, indent+" ") } - + if n.expression != nil { fmt.Fprintf(out, "\n%vexpression:", indent+" ") n.expression.Print(out, indent+" ") diff --git a/node/expr/assign_op/assign_ref.go b/node/expr/assign_op/assign_ref.go new file mode 100644 index 0000000..941a017 --- /dev/null +++ b/node/expr/assign_op/assign_ref.go @@ -0,0 +1,19 @@ +package assign_op + +import ( + "github.com/z7zmey/php-parser/node" +) + +type AssignRef struct { + AssignOp +} + +func NewAssignRef(variable node.Node, expression node.Node) node.Node { + return AssignRef{ + AssignOp{ + node.SimpleNode{Name: "AssignRef", Attributes: make(map[string]string)}, + variable, + expression, + }, + } +} diff --git a/parser/parser.go b/parser/parser.go index f4f0a53..38a0253 100644 --- a/parser/parser.go +++ b/parser/parser.go @@ -3800,26 +3800,26 @@ yydefault: //line parser/parser.y:817 { list := expr.NewList(yyDollar[3].list) - yyVAL.node = assign_op.NewAssign(list, yyDollar[6].node, false) + yyVAL.node = assign_op.NewAssign(list, yyDollar[6].node) } case 294: yyDollar = yyS[yypt-5 : yypt+1] //line parser/parser.y:822 { shortList := expr.NewShortList(yyDollar[2].list) - yyVAL.node = assign_op.NewAssign(shortList, yyDollar[5].node, false) + yyVAL.node = assign_op.NewAssign(shortList, yyDollar[5].node) } case 295: yyDollar = yyS[yypt-3 : yypt+1] //line parser/parser.y:826 { - yyVAL.node = assign_op.NewAssign(yyDollar[1].node, yyDollar[3].node, false) + yyVAL.node = assign_op.NewAssign(yyDollar[1].node, yyDollar[3].node) } case 296: yyDollar = yyS[yypt-4 : yypt+1] //line parser/parser.y:827 { - yyVAL.node = assign_op.NewAssign(yyDollar[1].node, yyDollar[4].node, true) + yyVAL.node = assign_op.NewAssignRef(yyDollar[1].node, yyDollar[4].node) } case 297: yyDollar = yyS[yypt-2 : yypt+1] diff --git a/parser/parser.y b/parser/parser.y index 1722f7f..cc74428 100644 --- a/parser/parser.y +++ b/parser/parser.y @@ -816,15 +816,15 @@ expr_without_variable: T_LIST '(' array_pair_list ')' '=' expr { list := expr.NewList($3) - $$ = assign_op.NewAssign(list, $6, false) + $$ = assign_op.NewAssign(list, $6) } | '[' array_pair_list ']' '=' expr { shortList := expr.NewShortList($2) - $$ = assign_op.NewAssign(shortList, $5, false) + $$ = assign_op.NewAssign(shortList, $5) } - | variable '=' expr { $$ = assign_op.NewAssign($1, $3, false) } - | variable '=' '&' expr { $$ = assign_op.NewAssign($1, $4, true) } + | variable '=' expr { $$ = assign_op.NewAssign($1, $3) } + | variable '=' '&' expr { $$ = assign_op.NewAssignRef($1, $4) } | T_CLONE expr { $$ = expr.NewClone($2) } | variable T_PLUS_EQUAL expr { $$ = assign_op.NewPlus($1, $3) } | variable T_MINUS_EQUAL expr { $$ = assign_op.NewMinus($1, $3) }