Warn about unused values.

* src/symlist.h, src/symlist.c (symbol_list, symbol_list_new): Add
a `used' member.
(symbol_list_n_get, symbol_list_n_used_set): New.
(symbol_list_n_type_name_get): Use symbol_list_n_get.
* src/scan-gram.l (handle_action_dollar): Flag used symbols.
* src/reader.c (grammar_current_rule_check): Check that values are
used.
* src/symtab.c (symbol_print): Accept 0.
* tests/existing.at: Remove the type information.
Empty the actions.
Remove useless actions (beware of mid-rule actions: perl -000
-pi -e 's/s*{}(?=[ns]*[|;])//g').
* tests/actions.at (Exotic Dollars): Use unused values.
* tests/calc.at: Likewise.
* tests/glr-regression.at (No users destructors if stack 0 deleted):
Likewise.
* src/gram.c (rule_useful_p, rule_never_reduced_p): Use
rule_useful_p.
This commit is contained in:
Akim Demaille
2005-12-22 11:40:05 +00:00
parent 8bb4c753e2
commit affac6132a
13 changed files with 386 additions and 1514 deletions

View File

@@ -98,6 +98,7 @@ AT_DATA_GRAMMAR([[input.y]],
static int yylex (void);
# define YYDEBUG 1
# define YYERROR_VERBOSE 1
# define USE(Var)
%}
%union
@@ -112,6 +113,7 @@ AT_DATA_GRAMMAR([[input.y]],
exp: a_1 a_2 { $<val>$ = 3; } { $<val>$ = $<val>3 + 1; } a_5
sum_of_the_five_previous_values
{
USE (($1, $2, $5));
printf ("%d\n", $6);
}
;