23

LL(k)言語のEBNFを指定すると、C#パーサーが提供され、EBNFで定義された型のクラスが生成されるパーサージェネレーターを探しています。

4

7 に答える 7

24

ANTLR(他に言うことはありません)

于 2009-07-28T14:58:04.873 に答える
8

パーサジェネレータが行く限り、ゴールドはOKです。

于 2009-07-28T15:02:43.213 に答える
5

LLLPGと呼ばれるブロックに、LL(k)文法とゼロ幅アサーションをサポートする新しいパーサージェネレーターがあります。ランタイムライブラリはオプションです(基本クラスで十分です)。ドキュメントは現在かなり詳細になっています。私はLLLPGを使用して、Enhanced C#(実際にはLLLPGの主要な入力言語)と呼ばれるC#の方言のほとんどを解析しました。ただし、入力構文はEBNFではありません(C#+ ANTLRスタイルのコードのマッシュアップのようなものです)。

完全開示:私はそれを書きました。質問を歓迎します。

編集:「C#パーサジェネレータ」のGoogleの上位の結果は、私のパーサジェネレータが「スタンドアロンでは実際には使用できない」と主張する「Tomassetti」という名前の男によって書かれています。これは、PCが「スタンドアロンのゲームリグとしては実際には使用できない」と言っているようなものです。Webブラウジングやスプレッドシート実行できるからです。確かに、Visual Studio拡張機能をインストールした後は、個別にNuGetに移動してランタイムライブラリ(Loyc.Syntax)を取得する必要がありますが、それが彼の意味ではないと思います。また、彼が実際にそれを使用しようとしたことはないと思います。LLLPGの設計は機能であり、バグではありません。私が言えるのは、試してみて、あなたの考えを教えてください。

于 2013-10-12T19:11:44.300 に答える
4

C#への移植版であるMinosseCCを確認することをお勧めします。JavaCC別の可能性はSpartです。

于 2009-07-28T14:57:49.960 に答える
4

http://irony.codeplex.com/でIronyを見つけてください

長所:それは単純です短所:-ドキュメントの欠如-かなり遅い

于 2012-02-16T21:50:25.697 に答える
2

GrammaticaはLL(k)をサポートしています。http://grammatica.percederberg.net/

于 2011-02-10T19:15:44.340 に答える
1

ココ/R(SSWから-「ヨハネスケプラー」大学リンツ)

于 2012-06-13T05:55:14.397 に答える