* src/main.c (main): If there are complains after grammar

reductions, then output the report anyway if requested, then die.
* src/symtab.c (bucket_new): Initialize `value' to -1, not 0.
* src/reader.c (eoftoken): New.
(parse_token_decl): If the token being defined has value `0', it
is the eoftoken.
(packsymbols): No longer hack `tags' to insert `$' by hand.
Be sure to preserve the value of the eoftoken.
(reader): Make sure eoftoken is defined.
Initialize nsyms to 0: now eoftoken is created just like the others.
* src/print.c (print_grammar): Don't special case the eof token.
* src/regression.at: Adjust: `$' has value 0, not -1, which was a
lie anyway, albeit pleasant.
* tests/calc.at: Exercise error messages with eoftoken.
Change the grammar so that empty input is invalid.
Adjust expectations.
When yyungeting, be sure to use a valid yylloc: use last_yylloc.
This commit is contained in:
Akim Demaille
2001-12-27 18:13:09 +00:00
parent ec2da99ffe
commit b7c49edf13
8 changed files with 111 additions and 50 deletions

View File

@@ -73,7 +73,7 @@ Grammar
Terminals, with rules where they appear
$ (-1)
$ (0)
error (256)
NUM (257) 2
OP (258) 1
@@ -177,7 +177,7 @@ Grammar
Terminals, with rules where they appear
$ (-1)
$ (0)
error (256)
NUM (257) 2
OP (258) 1
@@ -304,7 +304,7 @@ AT_CHECK([cat input.output], [],
Terminals, with rules where they appear
$ (-1)
$ (0)
'a' (97) 2
'b' (98) 2
'c' (99) 4
@@ -652,7 +652,7 @@ AT_CHECK([sed -n 's/ *$//;/^$/!p' input.output], 0,
4 15 @1 -> /* empty */
5 15 CONST_DEC -> @1 undef_id_tok '=' const_id_tok ';'
Terminals, with rules where they appear
$ (-1)
$ (0)
';' (59) 5
'=' (61) 5
error (256)