3

我正在寻找一个用 Java 编写的能够读取 JML 的解析器。

基本上我希望解析器能够读取 JML 块并知道它属于哪个方法。

我一直在看 OpenJML 项目,但只是项目设置太多了。

4

1 回答 1

3

我怀疑您是否会找到一种工具可以完全满足您的需求,甚至接近您想要的。

您可以编写一个“部分”Java 语法来扫描输入文件//@ .../*@ ... @*/直接跟在方法声明之后。“部分”是指您不是在语义上解析输入源,而是仅在词汇级别上执行此操作(因此仅用于标记)。确保您考虑了字符串文字:您不希望文字String s = "/*@";成为 JML 规范的开始。

两个著名的 Java 解析器生成器是:

  1. ANTLR
  2. JavaCC

掌握其中任何一个都需要一些时间,特别是如果您是解析器生成器的新手,但是一旦您掌握了窍门,创建一个可以可靠地做到这一点的小语法实际上并没有太多工作。

于 2011-04-13T18:22:12.013 回答