diff options
Diffstat (limited to 'compiler/parser/tree.go')
-rw-r--r-- | compiler/parser/tree.go | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/compiler/parser/tree.go b/compiler/parser/tree.go index 77d2e46..b5fb723 100644 --- a/compiler/parser/tree.go +++ b/compiler/parser/tree.go @@ -159,7 +159,7 @@ func newRangeSymbolNode(from, to rune) *symbolNode { } func (n *symbolNode) String() string { - return fmt.Sprintf("symbol: %v - %v", n.From, n.To) + return fmt.Sprintf("symbol: %X..%X", n.From, n.To) } func (n *symbolNode) Range() (rune, rune, bool) { @@ -424,13 +424,20 @@ func printCPTree(w io.Writer, t CPTree, ruledLine string, childRuledLinePrefix s return } fmt.Fprintf(w, "%v%v\n", ruledLine, t) - left, right := t.children() children := []CPTree{} - if left != nil { - children = append(children, left) - } - if right != nil { - children = append(children, right) + switch n := t.(type) { + case *rootNode: + children = append(children, n.tree) + case *fragmentNode: + children = append(children, n.tree) + default: + left, right := t.children() + if left != nil { + children = append(children, left) + } + if right != nil { + children = append(children, right) + } } num := len(children) for i, child := range children { |