• 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 缓存生成,  修改的代码才会生效。

  • 相关阅读:
    安全面试题30问(一)
    企业需要考虑的远程办公相关问题
    LDAP 协议有哪些现代化的用例?
    内网渗透之内网信息收集(一)
    安全基础知识详解
    远程办公最佳实践及策略
    基于云的 LDAP 入门(下)
    用好条件访问,远程办公更安全高效
    如何实现合规的远程办公?
    Iis7.07.5 fastcgi解析漏洞
  • 原文地址:https://www.cnblogs.com/liyonghelpme/p/4273787.html
Copyright © 2020-2023  润新知