私はLL(k)言語のEBNFを与えられたパーザージェネレータを探していますが、私にC#パーサを与え、EBNFで定義された型をクラス生成します。良いC#コンパイラコンパイラ/パーサジェネレータは何ですか?
答えて
GoldはOKです(他には何も言っていないため)。
ANTLR遠くパーサジェネレータが行くように
だけでなく、あなたのことを行う必要があり15文字になるようなことを言う。 ;)+1 – kenny
ANTLRには、適切なエラーメッセージを与えるのに本当の問題があると思います。幸運を考え出してください。 @inludeの仕様はどこに置かれますか?ドキュメンテーションは驚くべきことであり、決して好きなやり方を示すものではありません。ツリー文法は時間の無駄です。ANTLRサイトでも、これに関する膨大なブログエントリがあります。 –
http://www.antlr.org/wiki/display/ANTLR3/Antlr+3+CSharp+Targetは3年前に最後に更新され、すべてのコードブロックが欠落しているよううーん、見える - それはちょうど何、いや、待ってJavaScriptが無効になっているときに発生します。とにかく、C#は常に第二のクラスのANTLRターゲットでした。私が最初に使ったとき、C#ランタイムソースコードは利用できませんでした。著者(ANTLRの作者と同じではありません)は、指定されたライセンスIIRCを持たないバイナリをリリースし、地球の顔から落ちました。 Reflectorを使ってソースコードを再構築しました。 – Qwertie
Grammaticaは、LL(k)をサポートしています。 http://grammatica.percederberg.net/
PROSにアイロニーを探す:これは単純な CONSです:ドキュメント の-Lack
Coco/R -Ratherスロー(SSWから - "ヨハネス・ケプラー" 大学リンツ)
ブロック上には、LL(k)文法とゼロ幅アサーションをサポートする新しいパーサジェネレータがLLLPGと呼ばれています。ランタイムライブラリなしで使用できます(基本クラスで十分です)。ドキュメントはかなり詳細ですが、LLLPGを使用してC#の方言の大部分を解析しました(これは実際にはLLLPGの主な入力言語です)。入力構文はEBNFではありませんが(C#+ ANTLRスタイルのコードのマッシュアップのようなものです)。
全開示:私はそれを書きました。質問は大歓迎です。
私はかなり良いと言っています – SpaceghostAli
OPはLL(k)を求めました。金はLALRです。 –
私が間違っていると私を修正してください:LL文法はLALR文法のサブセットではありませんか? –