On Wed, Oct 8, 2008 at 9:14 PM, "Martin v. Löwis" <[EMAIL PROTECTED]> wrote: >> The documentation for the ast module states that it "helps to find out >> programmatically what the current grammar looks like". I can't find >> any reference (even when reading the code) on how you should go about >> this, other than checking the sys.version number and reading up on the >> changes. > > Not sure what "this" is, but if you mean what you quoted - what does > that have to do with version numbers? > > To find out what the grammar looks like, just inspect the classes in > the _ast module, e.g. > > py> _ast.For._fields > ('target', 'iter', 'body', 'orelse') > py> _ast.For._attributes > ['lineno', 'col_offset']
Thanks, that clears things up a bit. > In any case, you shouldn't look at sys.version, but at _ast.__version__ Right - the documentation says I should look at ast.__version__ (not _ast.__version__), which doesn't exist. I've filed a bug report about it. > > To see the source code version of that, look at Python/Parser.asdl. > >> My understanding is that there is no way to write, say, an ast visitor >> that runs under Python 3.0 that targets 2.4 because the ast has >> changed, and there's no way to indicate that you want to parse another >> version. > > I wouldn't say that. The writer might not be trivial, but should be > fairly simple. It can't be 1:1, because, as you say, the AST has > changed. > >> I guess that Python 2.6 can target Python 2.3-6, and with specific >> compiler flags it can also target 3.0, so it seems that the correct >> thing to do is to use that. > > Depends on what you want to do. To transform source code so that > people can still read and understand it, the _ast module might be > inappropriate, as it drops all comments. > > For code-rewriting applications, look at lib2to3 instead. > >> Am I correct? Am I seriously confused? Please help! > > I think you are a little confused. :) Hopefully as I start coding against ast I'll understand more about this. > Regards, > Martin > -- > http://mail.python.org/mailman/listinfo/python-list > Thanks, Orestis -- [EMAIL PROTECTED] http://orestis.gr -- http://mail.python.org/mailman/listinfo/python-list