1
445141126 2015 年 9 月 15 日 类似 lint 的功能?
首先要解析 c 文件生成语法树 ast ,根据语法树构造符号表作用域之类的,再分析就好了。 推荐这本《编程语言实现模式》 |
2
445141126 2015 年 9 月 15 日 python 有 c 代码的解析库 https://github.com/eliben/pycparser
|
3
dimingxuan OP @445141126 是一个简化的 lint ,谢谢提供的资料
|
4
YuJianrong 2015 年 9 月 15 日 为什么不直接用 ctags ……
|
5
dimingxuan OP @YuJianrong 没用过,能区别出输入输出变量吗?
|
6
dialox 2015 年 9 月 15 日 用 lex 可以实现
|
7
YuJianrong 2015 年 9 月 15 日 @dimingxuan 好吧那大概不行……
|
8
exch4nge 2015 年 9 月 16 日 如果你要有完整支持的话,还是比较恶心的,你得做 preprocessor ,用词法语法分析器(可选 flex/bison (lex/yacc ))分析出 AST ,然后找出所哦有函数定义,做到你要的功能……
想通过简单的方式的话,你得忍受很多特殊情况不支持的问题,可以不用 preprocessor 、语法分析器,只用词法分析器+自己实现的只能满足你的要求的语法分析器来做…… 更想简单更省事的话,可以像楼上说的那样,用 ctags 或 cscope 获取到所有函数定义所在的位置,然后自己去分析出参数名字 |
9
dimingxuan OP @exch4nge 谢谢,看来坑很深啊, preprocessor 做起来挺费劲的吧,没有接触过相关的知识
|