In files.c, there's this comment: /* Initializing some values below (such SPEC_NAME_PREFIX to `yy') is tempting, but don't do that: for the time being our handling of the %directive vs --option leaves precedence to the options by deciding that if a %directive sets a variable which is really set (i.e., not NULL), then the %directive is ignored. As a result, %name-prefix, for instance, will not be honored. */
Although that logic makes sense to me, Bison doesn't follow it. Instead, for example, %name-prefix has precedence over --name-prefix. Which way should Bison behave?
