我正在寻找一个能够读取JML的Java编写的解析器。
基本上,我希望解析器能够读取JML块并知道它属于哪个方法。
我一直在看OpenJML项目,但只是项目设置太多了。
我怀疑您是否会找到一种完全符合您要求的工具,甚至接近于您要求的工具。
您可以编写一个"部分"Java语法,它直接扫描输入文件中的//@ ...
和/*@ ... @*/
,然后跟着一个方法声明。我所说的"部分"是指您没有对输入源进行语义解析,而是仅在词法级别执行此操作(因此仅限令牌)。请确保您考虑了字符串字面值:您不会希望字面值String s = "/*@";
作为JML规范的开头。
两个著名的Java解析器生成器:
- ANTLR
- JavaCC
掌握其中任何一个都需要花费一些时间,特别是如果您是解析器生成器的新手,但是一旦您掌握了它的窍门,创建一个能够可靠地完成此任务的小语法真的不需要太多的工作。