With some versions of GCC we need to suppress dianostics in grammar.h. With at least some versions of GCC, we need to suppress the -Wshadow diagnostics before the global variable is defined as well as before the local variable is defined, otherwise only the complaint about grammar.c is suppressed, not the compaint about grammar.h.