译者:winterTTr
AST对象的创建,来自于源代码或者语法分析树。当从源代码创建AST对象时,不同的函数用来创建eval或者exec的形式。
expr( source)
这个函数用来分析参数source的代码,就好像利用compile(source, 'file.py', 'eval')。如果分析成功,返回AST对象代表内部语法树结构,否则抛出异常。
suite( source)
suite函数解析source的代码,就好像利用compile(source, 'file.py', 'exec')。如果分析成功,返回AST对象代表内部语法树结构,否则抛出异常。
sequence2ast( sequence)
这个函数接受一个序列形式的语法分析树,在可能的情况下,建造内部表示。如果能够验证树符合python语法规则同时所有的节点都是当前版本python的有效节点,那么,一个AST对象被创建,并返回。如果在创建内部表示的时候出现问题,或者树不能被验证,ParserError的异常被抛出。通过这种方式创建的AST对象,不应该被默认为是可以正确编译的,当AST对象被传递给compileast()函数时,一般的编译异常扔可能被抛出。但是,这并不一定代表语法错误(例如:MemoryError异常),但是仍可能来自于语法的构建,例如:del f(0)这种能够通过python的语法分析,但是会被字节码编译器检出。
代表终止序列的token可能被表示成带个元素的列表(1, 'name')或者三个元素的列表(1, 'name', 56)。当第三个元素被标示出来时,代表一个有效的行号。这个数字代表在输入树中的任何一个终止序列的子集。
tuple2ast( sequence)
与sequence2ast()相同,只是用来保持向后兼容性。