diff options
author | Akim Demaille <akim.demaille@gmail.com> | 2022-09-10 14:04:11 +0200 |
---|---|---|
committer | Akim Demaille <akim.demaille@gmail.com> | 2022-09-10 14:09:02 +0200 |
commit | dd6ca199276506c4902a993b863fa10414a90178 (patch) | |
tree | d57cccc0f14f53d733bfbd5c1d04fa65e33940cc /src | |
parent | 3661ebbb2c7b8ef45e4f5df38d57ece098251be6 (diff) | |
download | bison-dd6ca199276506c4902a993b863fa10414a90178.tar.gz |
reader: reject rules on YYEOF
We crashed when rules were given on YYEOF.
Reported by Han Zheng.
Fixes https://github.com/akimd/bison/issues/92.
* src/reader.c (check_and_convert_grammar): Make sure YYEOF is not
an nterm.
* tests/input.at (Rule for YYEOF): New.
Diffstat (limited to 'src')
-rw-r--r-- | src/reader.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/reader.c b/src/reader.c index baa5d803..3d60ab36 100644 --- a/src/reader.c +++ b/src/reader.c @@ -954,6 +954,10 @@ check_and_convert_grammar (void) if (!eoftoken) { eoftoken = symbol_get ("YYEOF", empty_loc); + if (eoftoken->content->class == nterm_sym) + complain (&eoftoken->location, complaint, + _("rule given for %s, which is a token"), + eoftoken->tag); eoftoken->content->class = token_sym; eoftoken->content->number = 0; /* Value specified by POSIX. */ |