summaryrefslogtreecommitdiff
path: root/parser/node.go
diff options
context:
space:
mode:
Diffstat (limited to 'parser/node.go')
-rw-r--r--parser/node.go15
1 files changed, 12 insertions, 3 deletions
diff --git a/parser/node.go b/parser/node.go
index d2f13ef..b6e34cd 100644
--- a/parser/node.go
+++ b/parser/node.go
@@ -3,9 +3,9 @@ package parser
import "github.com/gnolang/parscan/scanner"
type Node struct {
- Child []*Node // sub-tree nodes
- scanner.Token // token at origin of the node
- Kind // Node kind, depends on the language spec
+ Child []*Node // sub-tree nodes
+ *scanner.Token // token at origin of the node
+ Kind // Node kind, depends on the language spec
}
// TODO: remove it in favor of Walk2
@@ -39,3 +39,12 @@ func (n *Node) Walk2(a *Node, i int, in, out func(*Node, *Node, int) bool) (stop
}
return
}
+
+func (n *Node) RemoveChild(i int) {
+ n.Child = append(n.Child[:i], n.Child[i+1:]...)
+}
+
+func (n *Node) InsertChild(node *Node, i int) {
+ n.Child = append(n.Child[:i+1], n.Child[i:]...)
+ n.Child[i] = node
+}