diff options
author | Ryo Nihei <nihei.dev@gmail.com> | 2021-08-02 01:42:50 +0900 |
---|---|---|
committer | Ryo Nihei <nihei.dev@gmail.com> | 2021-08-02 01:42:50 +0900 |
commit | 74b51fb8cc2945af10da841a2ff901f4d3046977 (patch) | |
tree | c4f3d5e2f3fb4969cd7393107210e22649240f06 /grammar/symbol.go | |
parent | Use maleeni v0.3.0 (diff) | |
download | urubu-74b51fb8cc2945af10da841a2ff901f4d3046977.tar.gz urubu-74b51fb8cc2945af10da841a2ff901f4d3046977.tar.xz |
Print expected terminals on a parse error
Diffstat (limited to 'grammar/symbol.go')
-rw-r--r-- | grammar/symbol.go | 9 |
1 files changed, 6 insertions, 3 deletions
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. |