質問

C または C++ に最適な (最も使いやすく、最も速い) レクサー/パーサー ジェネレーターはどれですか?私は現在 flex と bison を使用していますが、bison は LALR(1) 文法のみを処理します。私が解析している言語はそうではありません 本当に 無制限の先読みが必要ですが、無制限の先読みでは解析が困難になります たくさん より簡単に。Antlr を試してみるべきですか?ココ/R?エルクハウンド?他に何か?

役に立ちましたか?

解決

更新しました 2015-01-05:

私の 元の答え 現在削除された質問を指しています。

この質問に対する良い答えはすでにたくさんあります どのパーサージェネレーターをお勧めしますか

そこで私はからアイテムのリストを取り出しました archive.org の回答が削除されました ここに少なくとも 1 票を投じてください:

私は自分自身でいくつかの flex/bison システムを作成しましたが、今では両方を次のように置き換えます。 レモン sqlite は 1 つのツールであり、再入可能でスレッドセーフであり、ストリーミング/プルベースのモデルを備えているためです。

他のヒント

悪いニュースは、ほとんどの実際のコンピュータlangaugesあなたはYACCが本当のlangaugesを解析するために、かなりの牛車に頼る必要があるということ「LALR(1)」、ではないということです。

あなたがDSLを設計している場合、パーサジェネレータはsquawksたときに、あなたのDSLの文法を変更することができますので、

、あなたは正確に多くの困難なしに任意のLALRパーサジェネレータを使用することができます。 LLパーサジェネレータは、ほとんど同じ理由でここにも動作しますが、左再帰の欠如は、本当の痛みをすることができます。

あなたがあなたの構文を好きなようにuncomprisingされている場合は、

、GLRパーサは、ハンズダウン勝者です。私たちは、 DMSソフトウェアリエンジニアリングツールキットの中でそれらを使用しての生産品質のパーサを構築しています解析するのはほぼ不可能と言ってフォーク定理を持つC ++など、いくつかの30以上の言語。フォーク定理は、C ++を試してみて、処理するためにLLとLALRパーサを使用している人々によって開始されました。 GLRは簡単にそれをしない。

ANTLRは、「バックトラック」オプションを使用して無制限の先読みは非常に簡単になります。それはあなたがあなたの文法を視覚化し、デバッグすることができますANTLRWORKSを持っているので、それはまた、あなたの「使用するのが最も簡単最速」の基準を修飾する可能性があります。

もう一つの利点は、それがバイソンに欠けている建物のASTのためのビルトインサポートとASTの建物は自明簡単になることです。

は、公開2冊で - 「ANTLR:Definitive Guideの」と「言語のデザインパターン」、それが可能な非常によく文書化ツールの中の1つです。あなたはまた、非常に活発なメーリングリストを持っています。

私は、あなたが正確に探しているかわかりません、 私はブースト Xpressive のが見て価値があると思います...

ではない正確にパーサジェネレータが、文法を処理するのに最適なツールと私はそれが奇妙なものを扱うことができると感じています。

私はGOLD解析システムを使用している( http://www.devincook.com/goldparser)非常に良い結果と。私のプロジェクトでは、CのNCファイルの解析システム小さいです しかし、私は、ツールが同様に、より複雑なプロジェクトを扱うことができると思います。

最新のバイソンは、(実質的に)同時に複数のパースを行うことで、無制限の先読みを行うことを主張しています。すでにバイソンの投資を持っている場合、それはむしろ別のパッケージに切り替えるよりも、これを試してみる価値があるかもしれません。

http://www.gnu.org/software /bison/manual/bison.html#GLR-Parsersする

私も、この機能を自分自身を使用していない。

限り、他のシステムが行くように、私はANTLRを使用しています。私は(ドキュメントが非常に良好ではなかった、もう1つは、手動で、演算子の優先順位に対応するために自分の文法を考慮する必要があります)特にそれ好きではなかったが、それは仕事をした、と非常に多く、それは確かに見て価値があること、それによって誓う。

LRSTAR 9.1 にはLR(1)及びLR(*)パーサを生成することができます。これは、WindowsおよびVisual StudioにやさしいC ++ベースのシステムです。これは、コンパイルする小型かつ迅速ですテーブル駆動パーサとテーブル駆動レクサーを作成します。 LRSTARパーサは自動的にASTを構築することができます。

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