package ast
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
type Statement interface {
|
|
Node
|
|
stmt()
|
|
}
|
|
|
|
type Assign struct {
|
|
Targets []Expression
|
|
Value Expression
|
|
}
|
|
|
|
func NewAssign(value Expression) *Assign {
|
|
return &Assign{
|
|
Targets: make([]Expression, 0),
|
|
Value: value,
|
|
}
|
|
}
|
|
|
|
func (assign *Assign) node() {}
|
|
func (assign *Assign) stmt() {}
|
|
func (assign *Assign) Append(target Expression) {
|
|
assign.Targets = append(assign.Targets, target)
|
|
}
|
|
func (assign *Assign) String() string {
|
|
exprs := make([]string, 0)
|
|
for _, expr := range assign.Targets {
|
|
exprs = append(exprs, expr.String())
|
|
}
|
|
|
|
return fmt.Sprintf("Assign(targets=[%s], value=%s)", strings.Join(exprs, ", "), assign.Value.String())
|
|
}
|