aboutsummaryrefslogtreecommitdiff
path: root/grammar/symbol.go
diff options
context:
space:
mode:
authorRyo Nihei <nihei.dev@gmail.com>2021-08-02 01:42:50 +0900
committerRyo Nihei <nihei.dev@gmail.com>2021-08-02 01:42:50 +0900
commit74b51fb8cc2945af10da841a2ff901f4d3046977 (patch)
treec4f3d5e2f3fb4969cd7393107210e22649240f06 /grammar/symbol.go
parentUse maleeni v0.3.0 (diff)
downloadurubu-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.go9
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.