如何在Java中检查语句可达性

时间:2012-03-14 20:15:52

标签: java compiler-construction

我正在为java的一个重要子集编写一个编译器。我目前正在尝试检查语句的可达性。我找到了解决这个问题的JLS部分,但似乎有很多规则需要“硬编码”。它们是否是以干净的方式检查这些的算法?我四处寻找但没有运气!

链接:http://docs.oracle.com/javase/specs/jls/se5.0/html/statements.html#236365

1 个答案:

答案 0 :(得分:2)

学术答案:这个问题是不可判定的,即没有可以严格回答问题的算法。

实际答案:检查静态分析的教科书。这是一个非常难的问题,你不会在这里得到一个完整的答案(我认为)。 当前的编译器尝试相当有限的解决方案,其他非编译器工具尝试其他的东西。最后,对于实现,您必须确定要覆盖哪些可行的案例,以及允许编译器的速度有多慢。因为很明显,分析越准确,所需的时间就越长。

话虽如此,看一本教科书实际上会告诉你什么样的事情可以做,以及它们是多么“昂贵”。