From 7403c18fbc04f3045df1e69b63d7ffd5f04d77db Mon Sep 17 00:00:00 2001 From: Ryo Nihei Date: Fri, 10 Jun 2022 16:41:41 +0900 Subject: Remove the kind field from a node corresponding to an anonymous terminal symbol --- spec/test/parser.go | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'spec/test/parser.go') diff --git a/spec/test/parser.go b/spec/test/parser.go index 175c89e..483e553 100644 --- a/spec/test/parser.go +++ b/spec/test/parser.go @@ -68,7 +68,11 @@ func (t *Tree) format(buf *bytes.Buffer, depth int) { buf.WriteString(" ") } buf.WriteString("(") - buf.WriteString(t.Kind) + if t.Kind == "" { + buf.WriteString("") + } else { + buf.WriteString(t.Kind) + } if len(t.Children) > 0 { buf.WriteString("\n") for i, c := range t.Children { @@ -228,9 +232,17 @@ func formatSyntaxError(synErr *SyntaxError, gram Grammar) []byte { case tok.Invalid(): b.WriteString(fmt.Sprintf("'%v' ()", string(tok.Lexeme()))) default: - b.WriteString(fmt.Sprintf("'%v' (%v)", string(tok.Lexeme()), gram.Terminal(tok.TerminalID()))) + if term := gram.Terminal(tok.TerminalID()); term != "" { + if alias := gram.TerminalAlias(tok.TerminalID()); alias != "" { + b.WriteString(fmt.Sprintf("'%v' (%v)", string(tok.Lexeme()), alias)) + } else { + b.WriteString(fmt.Sprintf("'%v' (%v)", string(tok.Lexeme()), term)) + } + } else { + b.WriteString(fmt.Sprintf("'%v'", string(tok.Lexeme()))) + } } - b.WriteString(fmt.Sprintf("; expected: %v", synErr.ExpectedTerminals[0])) + b.WriteString(fmt.Sprintf(": expected: %v", synErr.ExpectedTerminals[0])) for _, t := range synErr.ExpectedTerminals[1:] { b.WriteString(fmt.Sprintf(", %v", t)) } -- cgit v1.2.3