F#用のBNFまたはEBNFパーサジェネレータの文法
質問
fsyaccにフィードできるC#v4のBNF文法を探しています。または、F#を出力できるEBNFベースのパーサジェネレーターが見つからない場合。
編集: 私はC#のパーサーを作成するつもりはありませんが、非常によく似た文法の実験的なパーサーを作成します。2つの文法の間には文字通りの大きな重複があるため、C#の文法から始めて、逸脱するビットを変更する方が簡単です。しかし、私が見つけたC#v4の唯一の文法はEBNFです
別の答えは、EBNFからBNFへのコンバーターです
解決
以前のコメントを拡張する-直接使用できるC#の堅実な文法はないと思います。いくつかの例がありますが、それらはおそらくすべての新機能(LINQなど)をカバーしていないか、十分にテストされていません。
私が考えることができる最良のオプションは、MonoのC#コンパイラーのパーサーを使用することです。これはオープンソースのC#で書かれており、最近のすべての機能が含まれています(また、かなり堅実です)。詳細については、 Mono C#コンパイラを参照してください。これをコンパイルしてF#から使用できるはずです(またはF#に適したものに変更することもできます)。
他のヒント
ウィキペディアによると、Coco / RはEBNFベースのパーサジェネレータです。そして、彼らのホームページによると、F#ポートがあります。Coco / R(ただし、最終更新日は2007年7月23日なので、いくつかの重大な変更が予想されます)。あなたがそれをチェックすることになった場合、私はあなたの経験に興味があります。
C#v2用のBNF文法を見つけました: http://www.devincook。com / GOLDParser / grammars / index.htm
I found some grammars here; they seem to include up to C# 4.0.