fix node lists

This commit is contained in:
vadim
2017-12-06 16:25:20 +02:00
parent 24dfe3f734
commit 01f7e3fe63
8 changed files with 80 additions and 51 deletions

View File

@@ -12,11 +12,10 @@ type Case struct {
node.SimpleNode
token token.Token
cond node.Node
stmts node.Node
stmts []node.Node
}
//TODO: stmts myst be []node.Node
func NewCase(token token.Token, cond node.Node, stmts node.Node) node.Node {
func NewCase(token token.Token, cond node.Node, stmts []node.Node) node.Node {
return Case{
node.SimpleNode{Name: "Case", Attributes: make(map[string]string)},
token,
@@ -27,8 +26,14 @@ func NewCase(token token.Token, cond node.Node, stmts node.Node) node.Node {
func (n Case) Print(out io.Writer, indent string) {
fmt.Fprintf(out, "\n%v%v [%d %d] %q", indent, n.Name, n.token.StartLine, n.token.EndLine, n.token.Value)
fmt.Fprintf(out, "\n%vcond:", indent+" ")
n.cond.Print(out, indent+" ")
fmt.Fprintf(out, "\n%vstmts:", indent+" ")
n.stmts.Print(out, indent+" ")
if n.stmts != nil {
fmt.Fprintf(out, "\n%vstmts:", indent+" ")
for _, nn := range n.stmts {
nn.Print(out, indent+" ")
}
}
}

View File

@@ -13,11 +13,10 @@ type Catch struct {
token token.Token
types []node.Node
variable node.Node
stmts node.Node
stmts []node.Node
}
//TODO: stmts myst be []node.Node
func NewCatch(token token.Token, types []node.Node, variable node.Node, stmts node.Node) node.Node {
func NewCatch(token token.Token, types []node.Node, variable node.Node, stmts []node.Node) node.Node {
return Catch{
node.SimpleNode{Name: "Catch", Attributes: make(map[string]string)},
token,
@@ -38,6 +37,10 @@ func (n Catch) Print(out io.Writer, indent string) {
fmt.Fprintf(out, "\n%vvariable:", indent+" ")
n.variable.Print(out, indent+" ")
fmt.Fprintf(out, "\n%vstmts:", indent+" ")
n.stmts.Print(out, indent+" ")
if n.stmts != nil {
fmt.Fprintf(out, "\n%vstmts:", indent+" ")
for _, nn := range n.stmts {
nn.Print(out, indent+" ")
}
}
}

View File

@@ -12,14 +12,14 @@ type Class struct {
node.SimpleNode
token token.Token
modifiers []string
args node.Node
args []node.Node
extends node.Node
implements node.Node
stmts node.Node
implements []node.Node
stmts []node.Node
}
//TODO: stmts myst be []node.Node
func NewClass(token token.Token, modifiers []string, args node.Node, extends node.Node, implements node.Node, stmts node.Node) node.Node {
func NewClass(token token.Token, modifiers []string, args []node.Node, extends node.Node, implements []node.Node, stmts []node.Node) node.Node {
return Class{
node.SimpleNode{Name: "Class", Attributes: make(map[string]string)},
token,
@@ -43,7 +43,9 @@ func (n Class) Print(out io.Writer, indent string) {
if n.args != nil {
fmt.Fprintf(out, "\n%vargs:", indent+" ")
n.args.Print(out, indent+" ")
for _, nn := range n.args {
nn.Print(out, indent+" ")
}
}
if n.extends != nil {
@@ -53,9 +55,15 @@ func (n Class) Print(out io.Writer, indent string) {
if n.implements != nil {
fmt.Fprintf(out, "\n%vimplements:", indent+" ")
n.implements.Print(out, indent+" ")
for _, nn := range n.implements {
nn.Print(out, indent+" ")
}
}
fmt.Fprintf(out, "\n%vstmts:", indent+" ")
n.stmts.Print(out, indent+" ")
if n.stmts != nil {
fmt.Fprintf(out, "\n%vstmts:", indent+" ")
for _, nn := range n.stmts {
nn.Print(out, indent+" ")
}
}
}

View File

@@ -11,10 +11,10 @@ import (
type Default struct {
node.SimpleNode
token token.Token
stmts node.Node
stmts []node.Node
}
func NewDefault(token token.Token, stmts node.Node) node.Node {
func NewDefault(token token.Token, stmts []node.Node) node.Node {
return Default{
node.SimpleNode{Name: "Default", Attributes: make(map[string]string)},
token,
@@ -24,6 +24,11 @@ func NewDefault(token token.Token, stmts node.Node) node.Node {
func (n Default) Print(out io.Writer, indent string) {
fmt.Fprintf(out, "\n%v%v [%d %d] %q", indent, n.Name, n.token.StartLine, n.token.EndLine, n.token.Value)
fmt.Fprintf(out, "\n%vstmts:", indent+" ")
n.stmts.Print(out, indent+" ")
if n.stmts != nil {
fmt.Fprintf(out, "\n%vstmts:", indent+" ")
for _, nn := range n.stmts {
nn.Print(out, indent+" ")
}
}
}

View File

@@ -11,11 +11,10 @@ import (
type Finally struct {
node.SimpleNode
token token.Token
stmts node.Node
stmts []node.Node
}
//TODO: stmts myst be []node.Node
func NewFinally(token token.Token, stmts node.Node) node.Node {
func NewFinally(token token.Token, stmts []node.Node) node.Node {
return Finally{
node.SimpleNode{Name: "Finally", Attributes: make(map[string]string)},
token,
@@ -26,6 +25,10 @@ func NewFinally(token token.Token, stmts node.Node) node.Node {
func (n Finally) Print(out io.Writer, indent string) {
fmt.Fprintf(out, "\n%v%v [%d %d] %q", indent, n.Name, n.token.StartLine, n.token.EndLine, n.token.Value)
fmt.Fprintf(out, "\n%vstmts:", indent+" ")
n.stmts.Print(out, indent+" ")
if n.stmts != nil {
fmt.Fprintf(out, "\n%vstmts:", indent+" ")
for _, nn := range n.stmts {
nn.Print(out, indent+" ")
}
}
}

View File

@@ -11,13 +11,12 @@ import (
type Try struct {
node.SimpleNode
token token.Token
stmts node.Node
stmts []node.Node
catches []node.Node
finally node.Node
}
//TODO: stmts myst be []node.Node
func NewTry(token token.Token, stmts node.Node, catches []node.Node, finally node.Node) node.Node {
func NewTry(token token.Token, stmts []node.Node, catches []node.Node, finally node.Node) node.Node {
return Try{
node.SimpleNode{Name: "Try", Attributes: make(map[string]string)},
token,
@@ -30,12 +29,18 @@ func NewTry(token token.Token, stmts node.Node, catches []node.Node, finally nod
func (n Try) Print(out io.Writer, indent string) {
fmt.Fprintf(out, "\n%v%v [%d %d] %q", indent, n.Name, n.token.StartLine, n.token.EndLine, n.token.Value)
fmt.Fprintf(out, "\n%vstmts:", indent+" ")
n.stmts.Print(out, indent+" ")
if n.stmts != nil {
fmt.Fprintf(out, "\n%vstmts:", indent+" ")
for _, nn := range n.stmts {
nn.Print(out, indent+" ")
}
}
fmt.Fprintf(out, "\n%vcatches:", indent+" ")
for _, nn := range n.catches {
nn.Print(out, indent+" ")
if n.catches != nil {
fmt.Fprintf(out, "\n%vcatches:", indent+" ")
for _, nn := range n.catches {
nn.Print(out, indent+" ")
}
}
if n.finally != nil {