From 75bcfe3de92a4e083ff2745b8f84bac8a43fe508 Mon Sep 17 00:00:00 2001 From: brettlangdon Date: Fri, 25 Sep 2015 23:12:53 -0400 Subject: [PATCH] fix up some nodes and stuffs --- grammar/expressions.go | 7 ++++--- grammar/nodes.go | 9 ++++++--- grammar/parser.go | 6 +++--- grammar/tests.go | 8 ++++---- 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/grammar/expressions.go b/grammar/expressions.go index 71135c2..aa51f99 100644 --- a/grammar/expressions.go +++ b/grammar/expressions.go @@ -8,18 +8,19 @@ type TestlistStarExpressionChild interface { } type TestlistStarExpression struct { - ParentNode + ListNode } func NewTestListStarExpression() *TestlistStarExpression { node := &TestlistStarExpression{} node.initBaseNode(symbol.TESTLIST_STAR_EXPR) + node.initListNode() return node } func (node *TestlistStarExpression) expressionStatementChild() {} -func (node *TestlistStarExpression) SetChild(n TestlistStarExpressionChild) { - node.ParentNode.SetChild(n) +func (node *TestlistStarExpression) Append(n TestlistStarExpressionChild) { + node.ListNode.Append(n) } type ComparisonChild interface { diff --git a/grammar/nodes.go b/grammar/nodes.go index 362d75f..58fcf59 100644 --- a/grammar/nodes.go +++ b/grammar/nodes.go @@ -8,6 +8,7 @@ import ( ) type Node interface { + ID() symbol.SymbolID Name() string Repr() []interface{} } @@ -30,6 +31,7 @@ func (node *TokenNode) fileInputChild() {} func (node *TokenNode) shiftExpressionChild() {} func (node *TokenNode) simpleStatementChild() {} func (node *TokenNode) trailerChild() {} +func (node *TokenNode) ID() symbol.SymbolID { return 0 } func (node *TokenNode) Name() string { return token.TokenNames[node.Token.ID] } func (node *TokenNode) Repr() []interface{} { parts := make([]interface{}, 0) @@ -39,12 +41,13 @@ func (node *TokenNode) Repr() []interface{} { } type BaseNode struct { - ID symbol.SymbolID + id symbol.SymbolID child Node } -func (node *BaseNode) initBaseNode(id symbol.SymbolID) { node.ID = id } -func (node *BaseNode) Name() string { return symbol.SymbolNames[node.ID] } +func (node *BaseNode) initBaseNode(id symbol.SymbolID) { node.id = id } +func (node *BaseNode) ID() symbol.SymbolID { return node.id } +func (node *BaseNode) Name() string { return symbol.SymbolNames[node.ID()] } func (node *BaseNode) Repr() (parts []interface{}) { return append(parts, node.Name()) } type ParentNode struct { diff --git a/grammar/parser.go b/grammar/parser.go index d1a0316..294b406 100644 --- a/grammar/parser.go +++ b/grammar/parser.go @@ -391,14 +391,14 @@ func (parser *GrammarParser) parseNotTest() *NotTest { if test == nil { return nil } - notTest.SetChild(test) + notTest.Append(test) } else { parser.unreadToken(next) comparison := parser.parseComparison() if comparison == nil { return nil } - notTest.SetChild(comparison) + notTest.Append(comparison) } return notTest } @@ -489,7 +489,7 @@ func (parser *GrammarParser) parseTestlistStarExpression() *TestlistStarExpressi if expr == nil { return nil } - testlistStarExpression.SetChild(expr) + testlistStarExpression.Append(expr) return testlistStarExpression } diff --git a/grammar/tests.go b/grammar/tests.go index b71d69e..8fa551f 100644 --- a/grammar/tests.go +++ b/grammar/tests.go @@ -63,7 +63,7 @@ type NotTestChild interface { } type NotTest struct { - ParentNode + ListNode } func NewNotTest() *NotTest { @@ -72,6 +72,6 @@ func NewNotTest() *NotTest { return node } -func (node *NotTest) notTestChild() {} -func (node *NotTest) andTestChild() {} -func (node *NotTest) SetChild(n NotTestChild) { node.ParentNode.SetChild(n) } +func (node *NotTest) notTestChild() {} +func (node *NotTest) andTestChild() {} +func (node *NotTest) Append(n NotTestChild) { node.ListNode.Append(n) }