Python语言服务 -- parser(2)

译者: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()相同,只是用来保持向后兼容性。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值