bpo-11410: Standardize and use symbol visibility attributes across POSIX and Windows. (GH-16347)

diff --git a/Parser/pgen/grammar.py b/Parser/pgen/grammar.py
index 56188db..ce40e16 100644
--- a/Parser/pgen/grammar.py
+++ b/Parser/pgen/grammar.py
@@ -61,13 +61,14 @@
     def produce_graminit_c(self, writer):
         writer("/* Generated by Parser/pgen */\n\n")
 
+        writer('#include "exports.h"\n')
         writer('#include "grammar.h"\n')
-        writer("grammar _PyParser_Grammar;\n")
+        writer("Py_EXPORTED_SYMBOL grammar _PyParser_Grammar;\n")
 
         self.print_dfas(writer)
         self.print_labels(writer)
 
-        writer("grammar _PyParser_Grammar = {\n")
+        writer("Py_EXPORTED_SYMBOL grammar _PyParser_Grammar = {\n")
         writer("    {n_dfas},\n".format(n_dfas=len(self.dfas)))
         writer("    dfas,\n")
         writer("    {{{n_labels}, labels}},\n".format(n_labels=len(self.labels)))