3

JML を読み取ることができる Java で書かれたパーサーを探しています。

基本的に、パーサーが JML ブロックを読み取って、それがどのメソッドに属しているかを認識できるようにしたいと考えています。

OpenJML プロジェクトを見てきましたが、プロジェクトのセットアップだけでは多すぎます。

4

1 に答える 1

3

私はあなたがあなたが望むものを正確に、あるいはあなたが望むものにさえ近いものをするツールを見つけるとは思えません。

//@ ...入力ファイルをスキャン/*@ ... @*/してメソッド宣言の直後に続く「部分的な」Java文法を書くことができます。「部分的」とは、入力ソースを意味的に解析しているのではなく、字句レベルでのみ実行することを意味します(つまり、トークンのみ)。文字列リテラルを考慮に入れるようにしてください。リテラルString s = "/*@";がJML仕様の先頭になることは望ましくありません。

Java用の2つのよく知られたパーサジェネレータは次のとおりです。

  1. ANTLR
  2. JavaCC

特にパーサジェネレータを初めて使用する場合は、どちらかを理解するのに少し時間がかかりますが、一度慣れれば、これを確実に実行できる小さな文法を作成するのはそれほど手間がかかりません。

于 2011-04-13T18:22:12.013 に答える