const char *yyname[] = {...};
const char *yyrule[] = {...};
rather than
char *yyname[] = {...};
char *yyrule[] = {...};
to prevent warnings about
initialization discards `const' from pointer target type
when the output of yacc is compiled with a picky warning level.
1) register variables have been killed, except for the ones in the
generated skeleton (which should probably also be killed soon).
2) __P(())ified prototypes for all functions.
3) new style __RCSID's, and #include <sys/cdefs.h>'s.
4) all warnings generated with WARNS=1 (i.e. all warnings you get from
gcc with -Wall -Wstrict-prototypes -Wmissing-prototypes) have been
fixed, although not always in the best possible way.
in particular on #4, in a couple of places I got "control reaches end
of non-void function" errors, and sadly __dead doesn't seem to really
work, so I inserted a couple of exit() calls in strategic
places. These should be nuked if someone can get __dead to Do The
Right Thing.
There were also a couple of places where "while (foo = bar)" things
cropped up and I didn't do the best conceivable thing, but I usually
did.
These fixes should probably go back to the byacc maintainers.