我正在寻找一个用 Java 编写的能够读取 JML 的解析器。
基本上我希望解析器能够读取 JML 块并知道它属于哪个方法。
我一直在看 OpenJML 项目,但只是项目设置太多了。
我怀疑您是否会找到一种工具可以完全满足您的需求,甚至接近您想要的。
您可以编写一个“部分”Java 语法来扫描输入文件//@ ...
并/*@ ... @*/
直接跟在方法声明之后。“部分”是指您不是在语义上解析输入源,而是仅在词汇级别上执行此操作(因此仅用于标记)。确保您考虑了字符串文字:您不希望文字String s = "/*@";
成为 JML 规范的开始。
两个著名的 Java 解析器生成器是:
掌握其中任何一个都需要一些时间,特别是如果您是解析器生成器的新手,但是一旦您掌握了窍门,创建一个可以可靠地做到这一点的小语法实际上并没有太多工作。