From 033e64fc54361500c177e757862ea38e1f595132 Mon Sep 17 00:00:00 2001 From: Sasha Koshka Date: Fri, 12 Aug 2022 17:09:37 -0500 Subject: [PATCH] Parser can now print out a list of expected token kinds --- parser/parser.go | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/parser/parser.go b/parser/parser.go index 7ce8fcc..90d2603 100644 --- a/parser/parser.go +++ b/parser/parser.go @@ -77,9 +77,25 @@ func (parser *ParsingOperation) expect (allowed ...lexer.TokenKind) (err error) if parser.token.Is(kind) { return } } + message := + "unexpected " + parser.token.Kind().Describe() + + " token, expected " + + for index, allowedItem := range allowed { + if index > 0 { + if index == len(allowed) - 1 { + message += " or " + } else { + message += ", " + } + } + + message += allowedItem.Describe() + } + err = file.NewError ( parser.token.Location(), - "unexpected token", file.ErrorKindError) + message, file.ErrorKindError) return }