A coupe of tests failed and revealed a problem with l10n: the Windows 'setlocale' doesn't cater to the LC_* environment variables, so isprint returns values that are not necessarily consistent with the locale that Bison is instructed to use (the test in question sets LC_ALL=C). Here's a patch to fix that:
--- src/main.c~0 2014-10-07 08:45:06 +0300 +++ src/main.c 2014-10-07 09:53:07 +0300 @@ -58,7 +58,32 @@ int main (int argc, char *argv[]) { set_program_name (argv[0]); +#ifdef __MINGW32__ + /* The Windows 'setlocale' doesn't look at the environment + variables, so do it here by hand. */ + { + char const *cp = getenv ("LC_ALL"); + + if (!cp) + cp = getenv ("LANG"); + if (cp) + setlocale (LC_ALL, cp); + else + setlocale (LC_ALL, ""); + if ((cp = getenv ("LC_COLLATE")) != NULL) + setlocale (LC_COLLATE, cp); + if ((cp = getenv ("LC_CTYPE")) != NULL) + setlocale (LC_CTYPE, cp); + if ((cp = getenv ("LC_NUMERIC")) != NULL) + setlocale (LC_NUMERIC, cp); + if ((cp = getenv ("LC_MONETARY")) != NULL) + setlocale (LC_MONETARY, cp); + if ((cp = getenv ("LC_TIME")) != NULL) + setlocale (LC_TIME, cp); + } +#else /* !__MINGW32__ */ setlocale (LC_ALL, ""); +#endif (void) bindtextdomain (PACKAGE, LOCALEDIR); (void) bindtextdomain ("bison-runtime", LOCALEDIR); (void) textdomain (PACKAGE);