4

fsyaccにフィードできるC#v4のBNF文法を探しています。または、F#を出力できるEBNFベースのパーサージェネレーターが見つからない場合。

編集: 私はC#のパーサーを書くつもりはありませんが、非常によく似た文法の実験的なパーサーです。2つの文法の間に文字通りの大きな重複があるため、C#の文法から始めて、逸脱するビットを変更する方が簡単です。 。しかし、私が見つけたC#v4の文法はEBNFだけです。

別の答えは、EBNFからBNFへのコンバーターです

4

3 に答える 3

1

ウィキペディアによると、Coco/RはEBNFベースのパーサジェネレータです。そして彼らのホームページによると、Coco / RのF#ポートがあります(ただし、最終更新日は2007年7月23日なので、いくつかの重大な変更が予想されます)。あなたがそれをチェックすることになったなら、私はあなたの経験に興味があるでしょう。

C#v2用のBNF文法を見つけました:http ://www.devincook.com/GOLDParser/grammars/index.htm

于 2011-09-16T05:26:03.530 に答える
1

以前のコメントを拡張する-直接使用できるC#の堅実な文法はないと思います。いくつかの例がありますが、それらはおそらくすべての新機能(LINQなど)をカバーしていないか、十分にテストされていません。

私が考えることができる最良のオプションは、MonoのC#コンパイラーのパーサーを使用することです。これはオープンソースのC#で記述されており、最近のすべての機能が含まれています(また、かなり堅実です)。詳細については、Mono C#コンパイラを参照してください。これをコンパイルしてF#から使用できるはずです(またはF#に適したものに変更することもできます)。

于 2011-12-08T22:22:37.900 に答える
1

ここでいくつかの文法を見つけました; C#4.0まで含まれているようです。

于 2013-01-10T03:40:40.237 に答える