python c语言语法分析_pycparse python的c语法分析器

有时候需要分析一个程序语言,可以根据分析结果AST 树转化成其它语言,或者重构代码的某些部分, 例如最简单的有一个函数addlabel(xxx, type, size);用于在场景中加入一个文字,其中第二个参数是字体,比如之前各个地方使用不同的字体, 现在希望将所有字体统一, 这时候需要分析代码找到所有使用这个函数的位置, 将第二个参数变成另一个字符串。可以整个分析所有代码,但是由于实际使用的语言更类似于javascript 和 c不同,整体分析不现实,首先取出代码中所有包含addlabel的行, 接着对该行进行分析, 替换参数之后,将行重写写回去既可。那么现在就局限在这一行代码上,首先c语言需要将代码写在函数里面, 所以构造一个函数:void main(){ xxx.addlabel(xxx, ???, pppp).adfsf(fd).bfdsd(fds);} 这样一行代码分析的结果是 c语言中的 结构引用和函数调用,  找到结构引用中域名叫做addlabel的函数调用, 修改第二个参数即可。当然语言中也有扩充,比如addlabel 参数 中可能是 [xxx, xxx, xxx] 的数组, 因此需要扩充语法 加入 这种数组。

pycparse 使用的ply库, 需要在初始化CParser 是设置 lex_optimizer parse_optimize 为false 关闭 LR table 缓存生成,  修改的代码才会生效。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值