LL(k)言語のEBNFを指定すると、C#パーサーが提供され、EBNFで定義された型のクラスが生成されるパーサージェネレーターを探しています。
7 に答える
ANTLR(他に言うことはありません)
パーサジェネレータが行く限り、ゴールドはOKです。
LLLPGと呼ばれるブロックに、LL(k)文法とゼロ幅アサーションをサポートする新しいパーサージェネレーターがあります。ランタイムライブラリはオプションです(基本クラスで十分です)。ドキュメントは現在かなり詳細になっています。私はLLLPGを使用して、Enhanced C#(実際にはLLLPGの主要な入力言語)と呼ばれるC#の方言のほとんどを解析しました。ただし、入力構文はEBNFではありません(C#+ ANTLRスタイルのコードのマッシュアップのようなものです)。
完全開示:私はそれを書きました。質問を歓迎します。
編集:「C#パーサジェネレータ」のGoogleの上位の結果は、私のパーサジェネレータが「スタンドアロンでは実際には使用できない」と主張する「Tomassetti」という名前の男によって書かれています。これは、PCが「スタンドアロンのゲームリグとしては実際には使用できない」と言っているようなものです。Webブラウジングやスプレッドシートも実行できるからです。確かに、Visual Studio拡張機能をインストールした後は、個別にNuGetに移動してランタイムライブラリ(Loyc.Syntax)を取得する必要がありますが、それが彼の意味ではないと思います。また、彼が実際にそれを使用しようとしたことはないと思います。LLLPGの設計は機能であり、バグではありません。私が言えるのは、試してみて、あなたの考えを教えてください。
http://irony.codeplex.com/でIronyを見つけてください
長所:それは単純です短所:-ドキュメントの欠如-かなり遅い
GrammaticaはLL(k)をサポートしています。http://grammatica.percederberg.net/
ココ/R(SSWから-「ヨハネスケプラー」大学リンツ)