[refactoring] update ast structure of "Foreach" node
This commit is contained in:
@@ -27,7 +27,6 @@ type NodeVisitor interface {
|
||||
ArgumentList(n *ArgumentList)
|
||||
Argument(n *Argument)
|
||||
|
||||
StmtAltForeach(n *StmtAltForeach)
|
||||
StmtBreak(n *StmtBreak)
|
||||
StmtCase(n *StmtCase)
|
||||
StmtCatch(n *StmtCatch)
|
||||
|
||||
@@ -175,19 +175,6 @@ func (n *ScalarString) Accept(v NodeVisitor) {
|
||||
v.ScalarString(n)
|
||||
}
|
||||
|
||||
// StmtAltForeach node
|
||||
type StmtAltForeach struct {
|
||||
Node
|
||||
Expr Vertex
|
||||
Key Vertex
|
||||
Var Vertex
|
||||
Stmt Vertex
|
||||
}
|
||||
|
||||
func (n *StmtAltForeach) Accept(v NodeVisitor) {
|
||||
v.StmtAltForeach(n)
|
||||
}
|
||||
|
||||
// StmtBreak node
|
||||
type StmtBreak struct {
|
||||
Node
|
||||
@@ -452,10 +439,19 @@ func (n *StmtFor) Accept(v NodeVisitor) {
|
||||
// StmtForeach node
|
||||
type StmtForeach struct {
|
||||
Node
|
||||
Expr Vertex
|
||||
Key Vertex
|
||||
Var Vertex
|
||||
Stmt Vertex
|
||||
Alt bool
|
||||
ForeachTkn *token.Token
|
||||
OpenParenthesisTkn *token.Token
|
||||
Expr Vertex
|
||||
AsTkn *token.Token
|
||||
Key Vertex
|
||||
DoubleArrowTkn *token.Token
|
||||
Var Vertex
|
||||
CloseParenthesisTkn *token.Token
|
||||
ColonTkn *token.Token
|
||||
Stmt Vertex
|
||||
EndForeachTkn *token.Token
|
||||
SemiColonTkn *token.Token
|
||||
}
|
||||
|
||||
func (n *StmtForeach) Accept(v NodeVisitor) {
|
||||
|
||||
@@ -119,33 +119,6 @@ func (t *DFS) Traverse(n ast.Vertex) {
|
||||
t.Traverse(nn.Expr)
|
||||
t.visitor.Leave("Expr", true)
|
||||
}
|
||||
case *ast.StmtAltForeach:
|
||||
if nn == nil {
|
||||
return
|
||||
}
|
||||
if !t.visitor.EnterNode(nn) {
|
||||
return
|
||||
}
|
||||
if nn.Expr != nil {
|
||||
t.visitor.Enter("Expr", true)
|
||||
t.Traverse(nn.Expr)
|
||||
t.visitor.Leave("Expr", true)
|
||||
}
|
||||
if nn.Key != nil {
|
||||
t.visitor.Enter("Key", true)
|
||||
t.Traverse(nn.Key)
|
||||
t.visitor.Leave("Key", true)
|
||||
}
|
||||
if nn.Var != nil {
|
||||
t.visitor.Enter("Var", true)
|
||||
t.Traverse(nn.Var)
|
||||
t.visitor.Leave("Var", true)
|
||||
}
|
||||
if nn.Stmt != nil {
|
||||
t.visitor.Enter("Stmt", true)
|
||||
t.Traverse(nn.Stmt)
|
||||
t.visitor.Leave("Stmt", true)
|
||||
}
|
||||
case *ast.StmtBreak:
|
||||
if nn == nil {
|
||||
return
|
||||
|
||||
@@ -252,12 +252,6 @@ func (v *Dump) Argument(n *ast.Argument) {
|
||||
}
|
||||
}
|
||||
|
||||
func (v *Dump) StmtAltForeach(n *ast.StmtAltForeach) {
|
||||
v.printIndentIfNotSingle(v.indent - 1)
|
||||
v.print("&ast.StmtAltForeach{\n")
|
||||
v.printNode(n.GetNode())
|
||||
}
|
||||
|
||||
func (v *Dump) StmtBreak(n *ast.StmtBreak) {
|
||||
v.printIndentIfNotSingle(v.indent - 1)
|
||||
v.print("&ast.StmtBreak{\n")
|
||||
|
||||
@@ -111,26 +111,6 @@ func (v *FilterParserNodes) StmtReturn(n *ast.StmtReturn) {
|
||||
}
|
||||
}
|
||||
|
||||
func (v *FilterParserNodes) StmtForeach(n *ast.StmtForeach) {
|
||||
for {
|
||||
if nn, ok := n.Expr.(*ast.ParserBrackets); ok {
|
||||
n.Expr = nn.Child
|
||||
} else {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (v *FilterParserNodes) StmtAltForeach(n *ast.StmtAltForeach) {
|
||||
for {
|
||||
if nn, ok := n.Expr.(*ast.ParserBrackets); ok {
|
||||
n.Expr = nn.Child
|
||||
} else {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (v *FilterParserNodes) ExprYield(n *ast.ExprYield) {
|
||||
for {
|
||||
if nn, ok := n.Key.(*ast.ParserBrackets); ok {
|
||||
|
||||
@@ -213,3 +213,14 @@ func (v *FilterTokens) StmtUnset(n *ast.StmtUnset) {
|
||||
n.SemiColonTkn = nil
|
||||
n.SemiColonTkn = nil
|
||||
}
|
||||
|
||||
func (v *FilterTokens) StmtForeach(n *ast.StmtForeach) {
|
||||
n.ForeachTkn = nil
|
||||
n.OpenParenthesisTkn = nil
|
||||
n.AsTkn = nil
|
||||
n.DoubleArrowTkn = nil
|
||||
n.CloseParenthesisTkn = nil
|
||||
n.ColonTkn = nil
|
||||
n.EndForeachTkn = nil
|
||||
n.SemiColonTkn = nil
|
||||
}
|
||||
|
||||
@@ -54,10 +54,6 @@ func (v *Null) Argument(_ *ast.Argument) {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
func (v *Null) StmtAltForeach(_ *ast.StmtAltForeach) {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
func (v *Null) StmtBreak(_ *ast.StmtBreak) {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user