2012-05-07 28 views
2

我想用perl解析C程序文件(.c扩展名)。我想以这样的方式来进行解析像一个C程序示例会含有类似有没有什么办法使用Perl解析C程序文件

printf ("%d => Hello",x); 

声明令X是在程序中整型变量。所以当我解析上面的这一行时,有没有办法获得x值。请记住,我只想解析一行并得到x的值,我不能解析任何以前的行来获取x的值。有什么办法可以动态地获得x的实际值,还是解析目标文件更好。

回答

11

世界上没有一种工具仅使用printf ("%d => Hello",x);行就可以可靠地找到x的值。该值取决于之前的行,也可能取决于用户输入,根本不在源代码中。

编辑

在另一方面,也有的与C代码的工作工具,如静态分析,调试器,口译等很多。您可能想要查找其中一个选项。

+4

当然,使用解析器查找'x'的值很复杂,称为停止问题... –

+1

有限制,但这些工具可以处理复杂化的级别。 – MByD

+0

同意。当然,我们可以证明最终会终止一些*程序(实际上是大多数真实世界的程序),但是对于这个问题来说,完全一般的解决方案是不可能的。这并不是说解析器完全是解决这类问题的错误工具 - 一旦解析树被构建,解析器的工作就会停止。 –

7

号想想看:

int x = rand(); 
printf("%d", x); 

你怎么可能知道什么x是不运行的程序?

相关问题