From 74b51fb8cc2945af10da841a2ff901f4d3046977 Mon Sep 17 00:00:00 2001 From: Ryo Nihei Date: Mon, 2 Aug 2021 01:42:50 +0900 Subject: Print expected terminals on a parse error --- grammar/symbol.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'grammar/symbol.go') diff --git a/grammar/symbol.go b/grammar/symbol.go index 9c0e9bd..136e909 100644 --- a/grammar/symbol.go +++ b/grammar/symbol.go @@ -53,9 +53,12 @@ const ( maskNumberPart = uint16(0x3fff) // 0011 1111 1111 1111 - symbolNil = symbol(0) // 0000 0000 0000 0000 - symbolStart = symbol(0x4001) // 0100 0000 0000 0001 - symbolEOF = symbol(0xc001) // 1100 0000 0000 0001: The EOF symbol is treated as a terminal symbol. + symbolNumStart = uint16(0x0001) // 0000 0000 0000 0001 + symbolNumEOF = uint16(0x0001) // 0000 0000 0000 0001 + + symbolNil = symbol(0) // 0000 0000 0000 0000 + symbolStart = symbol(maskNonTerminal | maskStartOrEOF | symbolNumStart) // 0100 0000 0000 0001 + symbolEOF = symbol(maskTerminal | maskStartOrEOF | symbolNumEOF) // 1100 0000 0000 0001: The EOF symbol is treated as a terminal symbol. nonTerminalNumMin = symbolNum(2) // The number 1 is used by a start symbol. terminalNumMin = symbolNum(2) // The number 1 is used by the EOF symbol. -- cgit v1.2.3