IMP (Eclipse プロジェクト) を使用してエディターを開発している特定の言語を記述した yacc ファイルがあります。LPG をパーサー ジェネレーターとして使用しているため、yacc ファイルから BNF ルールを抽出する必要がありました。受け取った yacc ファイルには、ルールとアクションが含まれています。しかし、LPGで使われる文法記述のルールだけを抽出したかったのです。これを行う 1 つの方法は、手動でルールを抽出し、それを BNF 構文に再フォーマットすることです (または、必要な方法に変換するプログラムを作成することもできます)。これを行う自動化された方法があるかどうか疑問に思っていました。バイソンが役立つ可能性があるというブログをいくつか読みましたが、適切なコマンドを正確に見つけることができませんでした。誰もこの問題に対処する方法を知っていますか。
私が持っている yacc ファイルは機密情報であるため、実際に投稿することはできません。しかし、私は次のように例を挙げることができます
argExprList:
assignExp
{
// some rules here
}
| assignExpList ',' assignExp
{
//some other rules here
}
;
私が変換したかったのは、単に次のようなものです
argExpList ::= assignExp|assignExpList ',' assignExp