diff --git a/Parser/Python.asdl b/Parser/Python.asdl
index ba4459e..11c9665 100644
--- a/Parser/Python.asdl
+++ b/Parser/Python.asdl
@@ -1,6 +1,6 @@
 -- ASDL's five builtin types are identifier, int, string, object, bool
 
-module Python
+module Python version "$Revision$"
 {
 	mod = Module(stmt* body)
 	    | Interactive(stmt* body)
diff --git a/Parser/asdl.py b/Parser/asdl.py
index 5b856dd..2128732 100644
--- a/Parser/asdl.py
+++ b/Parser/asdl.py
@@ -6,6 +6,8 @@
 Only supports top level module decl, not view.  I'm guessing that view
 is intended to support the browser and I'm not interested in the
 browser.
+
+Changes for Python: Add support for module versions
 """
 
 #__metaclass__ = type
@@ -36,6 +38,12 @@
 
     def __str__(self):
         return self.value
+        
+class String(Token):
+    def __init__(self, value, lineno):
+        self.type = 'String'
+        self.value = value
+        self.lineno = lineno
 
 class ASDLSyntaxError:
 
@@ -63,6 +71,10 @@
         # XXX doesn't distinguish upper vs. lower, which is
         # significant for ASDL.
         self.rv.append(Id(s, self.lineno))
+        
+    def t_string(self, s):
+        r'"[^"]*"'
+        self.rv.append(String(s, self.lineno))
 
     def t_xxx(self, s): # not sure what this production means
         r"<="
@@ -98,19 +110,26 @@
     def error(self, tok):
         raise ASDLSyntaxError(tok.lineno, tok)
 
-    def p_module_0(self, (module, name, _0, _1)):
-        " module ::= Id Id { } "
+    def p_module_0(self, (module, name, version, _0, _1)):
+        " module ::= Id Id version { } "
         if module.value != "module":
             raise ASDLSyntaxError(module.lineno,
                                   msg="expected 'module', found %s" % module)
-        return Module(name, None)
+        return Module(name, None, version)
 
-    def p_module(self, (module, name, _0, definitions, _1)):
-        " module ::= Id Id { definitions } "
+    def p_module(self, (module, name, version, _0, definitions, _1)):
+        " module ::= Id Id version { definitions } "
         if module.value != "module":
             raise ASDLSyntaxError(module.lineno,
                                   msg="expected 'module', found %s" % module)
-        return Module(name, definitions)
+        return Module(name, definitions, version)
+        
+    def p_version(self, (version, V)):
+        "version ::= Id String"
+        if version.value != "version":
+            raise ASDLSyntaxError(version.lineno,
+                                msg="expected 'version', found %" % version)
+        return V
 
     def p_definition_0(self, (definition,)):
         " definitions ::= definition "
@@ -209,9 +228,10 @@
     pass # a marker class
 
 class Module(AST):
-    def __init__(self, name, dfns):
+    def __init__(self, name, dfns, version):
         self.name = name
         self.dfns = dfns
+        self.version = version
         self.types = {} # maps type name to value (from dfns)
         for type in dfns:
             self.types[type.name.value] = type.value
diff --git a/Parser/asdl_c.py b/Parser/asdl_c.py
index 4ac3f74..3f62af3 100755
--- a/Parser/asdl_c.py
+++ b/Parser/asdl_c.py
@@ -524,6 +524,7 @@
         self.emit('if (PyDict_SetItemString(d, "AST", (PyObject*)AST_type) < 0) return;', 1)
         self.emit('if (PyModule_AddIntConstant(m, "PyCF_ONLY_AST", PyCF_ONLY_AST) < 0)', 1)
         self.emit("return;", 2)
+        self.emit("/* %s */" % mod.version.value, 1)
         for dfn in mod.dfns:
             self.visit(dfn)
         self.emit("}", 0)
