在没有完整C解析器的情况下检测C声明的开始和结束
我想部分解析C声明和/或函数定义的列表.
也就是说,我想将其拆分为子串,每个子串包含一个声明或函数定义. 然后将每个声明(单独)传递给另一个模块(它包含一个完整的C解析器,但我无法直接调用.) 显然我可以通过在我的程序中包含另一个完整的C解析器来做到这一点,但我希望避免这种情况. 到目前为止,我遇到的棘手案件涉及“}’是否终止声明/定义的问题.例如在 int main(int ac,char **av) {return 0;} ……’}’是终结者,而在…中 typedef struct foo {int bar;} *pfoo; 它不是.可能还有像这样的病态代码片段: struct {int bar;} *getFooPtr(...) { /* code... */ } 笔记 >请假设在我的功能看到之前C代码已经完全预处理. (实际上它没有,但我们有一个解决方法.) 解决方法
要在您的答案中扩展状态机来处理函数定义,请添加以下步骤:
>将fun / var state设置为’unknown’ 当然,这只适用于预处理后的代码 – 如果你有宏做了各种奇怪的事情还没有扩展,所有的赌注都是关闭的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |