I'd like to make Bison report an error if the grammar declares a type,
destructor, or printer for a symbol after that symbol has appeared in a
rule. For example:
%union {
int val;
}
%%
start: 'a' { } ;
%type <val> 'a';
%destructor { } 'a';
%printer { } 'a';
%%
Otherwise, Bison can't reliably compute type and destructor warnings for a
rule when it parses that rule. I'm not sure if a similar issue for
printers will arise.
Agreed? Is there anything else like this?
By the way, Bison 2.3 has no problem with the above. Bison built from the
current CVS sources does this:
tmp.y: warning: 1 useless nonterminal and 1 useless rule
tmp.y:5.12-15: warning: useless nonterminal: @1
tmp.y:5.12-15: warning: useless rule: @1: /* empty */
*** glibc detected *** double free or corruption (out): 0x0808d990 ***
Aborted
I don't have time to track this down at the moment.
Joel