assign_ref node
This commit is contained in:
parent
3ec45dc334
commit
2c6664bdc9
@ -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)
|
||||
}
|
||||
|
@ -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+" ")
|
||||
|
19
node/expr/assign_op/assign_ref.go
Normal file
19
node/expr/assign_op/assign_ref.go
Normal file
@ -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,
|
||||
},
|
||||
}
|
||||
}
|
@ -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]
|
||||
|
@ -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) }
|
||||
|
Loading…
Reference in New Issue
Block a user