summaryrefslogtreecommitdiffstats
path: root/Parser
diff options
context:
space:
mode:
authorBrett Cannon <bcannon@gmail.com>2007-02-12 03:51:02 (GMT)
committerBrett Cannon <bcannon@gmail.com>2007-02-12 03:51:02 (GMT)
commit0db62aaf0987db16fc36d3331786168a70ccda8b (patch)
tree3ee770aec1fa6b83be80f500dad8c488d779804c /Parser
parentd080d4b0470aa9d7cbcf44378f1d8c88c5460d09 (diff)
downloadcpython-0db62aaf0987db16fc36d3331786168a70ccda8b.zip
cpython-0db62aaf0987db16fc36d3331786168a70ccda8b.tar.gz
cpython-0db62aaf0987db16fc36d3331786168a70ccda8b.tar.bz2
Modify Parser/asdl_c.py so that the __version__ number for Python/Python-ast.c
is specified at the top of the file. Also add a note that Python/Python-ast.c needs to be committed separately after a change to the AST grammar to capture the revision number of the change (which is what __version__ is set to).
Diffstat (limited to 'Parser')
-rwxr-xr-xParser/asdl_c.py21
1 files changed, 19 insertions, 2 deletions
diff --git a/Parser/asdl_c.py b/Parser/asdl_c.py
index 4d330a3..14859ee 100755
--- a/Parser/asdl_c.py
+++ b/Parser/asdl_c.py
@@ -525,6 +525,9 @@ static PyObject* ast2obj_int(bool b)
(cons.name, cons.name), 1)
self.emit("if (!%s_singleton) return 0;" % cons.name, 1)
+def parse_version(mod):
+ return mod.version.value[12:-3]
+
class ASTModuleVisitor(PickleVisitor):
def visitModule(self, mod):
@@ -540,7 +543,8 @@ class ASTModuleVisitor(PickleVisitor):
self.emit('if (PyModule_AddIntConstant(m, "PyCF_ONLY_AST", PyCF_ONLY_AST) < 0)', 1)
self.emit("return;", 2)
# Value of version: "$Revision$"
- self.emit('if (PyModule_AddStringConstant(m, "__version__", "%s") < 0)' % mod.version.value[12:-3], 1)
+ self.emit('if (PyModule_AddStringConstant(m, "__version__", "%s") < 0)'
+ % parse_version(mod), 1)
self.emit("return;", 2)
for dfn in mod.dfns:
self.visit(dfn)
@@ -721,11 +725,23 @@ class ChainOfVisitors:
v.visit(object)
v.emit("", 0)
+common_msg = "/* File automatically generated by %s. */\n"
+
+c_file_msg = """
+/*
+ __version__ %s.
+
+ This module must be committed separately after each AST grammar change;
+ The __version__ number is set to the revision number of the commit
+ containing the grammar change.
+*/
+"""
+
def main(srcfile):
argv0 = sys.argv[0]
components = argv0.split(os.sep)
argv0 = os.sep.join(components[-2:])
- auto_gen_msg = '/* File automatically generated by %s */\n' % argv0
+ auto_gen_msg = common_msg % argv0
mod = asdl.parse(srcfile)
if not asdl.check(mod):
sys.exit(1)
@@ -746,6 +762,7 @@ def main(srcfile):
p = os.path.join(SRC_DIR, str(mod.name) + "-ast.c")
f = open(p, "wb")
print >> f, auto_gen_msg
+ print >> f, c_file_msg % parse_version(mod)
print >> f, '#include "Python.h"'
print >> f, '#include "%s-ast.h"' % mod.name
print >> f