alt_if nodes and refactor lists

This commit is contained in:
z7zmey
2017-12-19 00:55:57 +02:00
parent 5b54987ddc
commit dbe1e56e2e
7 changed files with 749 additions and 675 deletions

20
node/stmt/alt_else.go Normal file
View File

@@ -0,0 +1,20 @@
package stmt
import (
"github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/token"
)
type AltElse struct {
Else
}
func NewAltElse(token token.Token, stmt node.Node) node.Node {
return AltElse{
Else{
node.SimpleNode{Name: "AltElse", Attributes: make(map[string]string)},
token,
stmt,
},
}
}

21
node/stmt/alt_else_if.go Normal file
View File

@@ -0,0 +1,21 @@
package stmt
import (
"github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/token"
)
type AltElseIf struct {
ElseIf
}
func NewAltElseIf(token token.Token, cond node.Node, stmt node.Node) node.Node {
return AltElseIf{
ElseIf{
node.SimpleNode{Name: "AltElseIf", Attributes: make(map[string]string)},
token,
cond,
stmt,
},
}
}

39
node/stmt/alt_if.go Normal file
View File

@@ -0,0 +1,39 @@
package stmt
import (
"github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/token"
)
type AltIf struct {
If
}
func NewAltIf(token token.Token, cond node.Node, stmt node.Node) node.Node {
return AltIf{
If{
node.SimpleNode{Name: "AltIf", Attributes: make(map[string]string)},
token,
cond,
stmt,
nil,
nil,
},
}
}
func (n AltIf) AddElseIf(elseIf node.Node) node.Node {
if n.elseIf == nil {
n.elseIf = make([]node.Node, 0)
}
n.elseIf = append(n.elseIf, elseIf)
return n
}
func (n AltIf) SetElse(_else node.Node) node.Node {
n._else = _else
return n
}

View File

@@ -5,27 +5,22 @@ import (
"io"
"github.com/z7zmey/php-parser/node"
"github.com/z7zmey/php-parser/token"
)
type StmtList struct {
node.SimpleNode
openBracket token.Token
closeBracket token.Token
stmts []node.Node
stmts []node.Node
}
func NewStmtList(openBracket token.Token, closeBracket token.Token, stmts []node.Node) node.Node {
func NewStmtList(stmts []node.Node) node.Node {
return StmtList{
node.SimpleNode{Name: "StmtList", Attributes: make(map[string]string)},
openBracket,
closeBracket,
stmts,
}
}
func (n StmtList) Print(out io.Writer, indent string) {
fmt.Fprintf(out, "\n%v%v [%d %d]", indent, n.Name, n.openBracket.StartLine, n.closeBracket.EndLine)
fmt.Fprintf(out, "\n%v%v [- -]", indent, n.Name)
if n.stmts != nil {
fmt.Fprintf(out, "\n%vstmts:", indent+" ")