質問

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.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top