我想用perl解析C程序文件(.c扩展名)。我想以这样的方式来进行解析像一个C程序示例会含有类似有没有什么办法使用Perl解析C程序文件
printf ("%d => Hello",x);
声明令X是在程序中整型变量。所以当我解析上面的这一行时,有没有办法获得x值。请记住,我只想解析一行并得到x的值,我不能解析任何以前的行来获取x的值。有什么办法可以动态地获得x的实际值,还是解析目标文件更好。
我想用perl解析C程序文件(.c扩展名)。我想以这样的方式来进行解析像一个C程序示例会含有类似有没有什么办法使用Perl解析C程序文件
printf ("%d => Hello",x);
声明令X是在程序中整型变量。所以当我解析上面的这一行时,有没有办法获得x值。请记住,我只想解析一行并得到x的值,我不能解析任何以前的行来获取x的值。有什么办法可以动态地获得x的实际值,还是解析目标文件更好。
世界上没有一种工具仅使用printf ("%d => Hello",x);
行就可以可靠地找到x的值。该值取决于之前的行,也可能取决于用户输入,根本不在源代码中。
编辑
在另一方面,也有的与C代码的工作工具,如静态分析,调试器,口译等很多。您可能想要查找其中一个选项。
号想想看:
int x = rand();
printf("%d", x);
你怎么可能知道什么x
是不运行的程序?
当然,使用解析器查找'x'的值很复杂,称为停止问题... –
有限制,但这些工具可以处理复杂化的级别。 – MByD
同意。当然,我们可以证明最终会终止一些*程序(实际上是大多数真实世界的程序),但是对于这个问题来说,完全一般的解决方案是不可能的。这并不是说解析器完全是解决这类问题的错误工具 - 一旦解析树被构建,解析器的工作就会停止。 –