aboutsummaryrefslogtreecommitdiff
path: root/compiler/parser/tree.go
diff options
context:
space:
mode:
authorRyo Nihei <nihei.dev@gmail.com>2021-12-11 18:47:39 +0900
committerRyo Nihei <nihei.dev@gmail.com>2021-12-11 19:31:41 +0900
commit46d49df654e9e152680717830aec70b65e8c507c (patch)
treecb8c1410e34566a233a93bb52039ef47e0914ab8 /compiler/parser/tree.go
parentSimplify process that generates UTF-8 byte sequences from a code point range (diff)
downloadtre-46d49df654e9e152680717830aec70b65e8c507c.tar.gz
tre-46d49df654e9e152680717830aec70b65e8c507c.tar.xz
Make character properties unavailable in bracket expressions
Diffstat (limited to 'compiler/parser/tree.go')
-rw-r--r--compiler/parser/tree.go21
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 {