java - 如何检查Java中语句的可达性

标签 java compiler-construction

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

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

最佳答案

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

实际答案:查看静态分析教科书。这是一个非常困难的问题,在这里你不会得到完整的答案(我认为)。 当前的编译器尝试了相当有限的解决方案来解决问题,其他非编译器工具则尝试其他方法。最后,对于实现,您必须决定要涵盖哪些可行的情况,以及允许编译器的速度有多慢。因为显然,你的分析越精确,花费的时间就越长。

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

关于java - 如何检查Java中语句的可达性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9709589/

相关文章:

java - 点 '.' 的 java keyevent 字段是什么?

java - 使用 JSTL 设置 session 变量并在 servlet/ Controller 类中访问它

java - 如何使用mockito更改函数中的 boolean 值

c - 函数在可执行文件中的位置

java - 如何自定义 JFileChooser

java - 在 Excel 中将单元格拆分为字符串 - Apache POI JAVA

c# - 是否有编译器作为 C++ 的服务?

linux - Lex分析器,用于生成文件,但不生成带有词法错误消息的程序列表

python - 理解python编译

c++ - 如何快速测试 C 或 C++ 片段?