2009-11-02 11 views
9

私はANTLRを学び始め、2007年の本「The Definitive ANTLR Reference」とANTLRWorks(文法を作成するためのインタラクティブなツール)の両方を持っています。そして、そのような人である私は、第3章(「気楽な人のためのクイックツアー」)から始めました。ANTLRの使い方とよくある間違いの回避

特に、いくつかのエラーがかなり透過的であるため、かなり痛いプロセスです(例:ANTLR: "missing attribute access on rule scope" problem)。私には「あなたが何か間違っている」という意味です。また、私はいくつかの非常に単純な文法(3-4制作のみ)と簡単な入力(2行)を実行すると "OutOfMemory"エラーが出ます。

ANTLRサイトは役に立ちますが、多少断片化しており、一部のSOユーザーは本とチュートリアルでは高い入力レベルを期待しています(https://stackoverflow.com/questions/278480/good-tutorial-for-antlr)。私はこれのためにANTLRディスカッション・リストに近づくことには消極的でした。

続きを読む私たちはそれに慣れ始めています。静かに拡張できる簡単で信頼できる例を持つことは有益でしょう。 ANTLRに基づいた思考をかなり改造してきたので、それは確かに価値のあるものです。

問題点の1つは、ANTLR V3にV2から大きな変化があることです。 SO(およびANTLRページ)の1つの答えは、もはや利用できないV2構文を参照していました。

SOに関するANTLRの質問のいくつかは私を大いに助けてくれましたが、それらを見つけるのはちょっと面倒です。だから私は、SOのユーザーが学習プロセスを苦痛を少なくするためにどのように役立つかを知りたい。 (参考書を参照すると、特定のページを指すのが便利です)。

EDIT。 @duffymoと@JamesAndersonは、ANTLRが困難であることを確認しました。主にパーサーが難しいためです。 (FWIW私はLEX/YACCなどを通っていますが、ANTLRがより強力で使いやすくなっていることは間違いありません)。

のような汚れを避けることが可能な領域を持つことは依然として有用であると思います。
  • レクサーにパッケージ名を追加するだけでなく、それが優先これらの並べ替えの

多くは有用であろう影響するようパーサ

  • は、ルールの順序を介して世話をする変数名
  • の正しい総額を確保します。

  • +0

    特に、ANTLRに関するものではありませんが、Terは後でLanguage Implementation Patternsという本を書いています。それは初心者と獣医の両方に関連性のある優れた作品です。 I | MVHOは、解析作業を行う人にとって絶対必要です。 –

    答えて

    7

    私は同意します - ANTLRは心のかすかなものではありません。文法やパーサーは簡単ではないので、高いエントリーレベルが期待されます。

    1. v2を忘れる:そうは言って

      は、ここでいくつかの提案があります。バージョン3が標準です。以前のバージョンまたはそのドキュメントを考慮して時間を無駄にしないでください。

    2. OutOfMemoryErrorは、あなたが定義した文法の中に何かがあることを伝えています。
    3. IntelliJには、ANTLR v3を使用するための素晴らしいIDEがあります。文法、ステップ・スルー・デバッグなどをグラフィカルに表示します。ANTLRで多くの作業を行う場合、ライセンスを購入するには数ドルの価値があります。

    ANTLRは簡単にマスターできません。本は良いですが、濃いです。あなたが指摘したように、エラーメッセージは謎めいています。ここにいる誰もが簡単にできるのであれば、私は驚くだろう。

    +0

    ANTLRWorksは、文法を構築するのにも素晴らしいツールであり、IntelliJによく似た機能を備えています。 – RCIX

    +0

    ANTLRWorksはIntelliJプラグインです。私はIDEの外で使っていません。 – duffymo

    5

    申し訳ありません申し訳ありませんが、ANTLR(実際にはjavacc、bison、または完全な関数パーサ)の経験は、あなたの学習のほとんどがあなたの間違いを修正することです!

    他の人々のコードの良い例を得ることは、これを幾分カットして、最高の例は本当にシンプルに見えますが、あなたはすべての汗と髪を引っ張っていません。

    +0

    +1これは本当に便利です。 –

    +5

    私はちょうどそれを使い始めています。そして、「髪を引っ張っている」ことは確かにANTLRに関連する学習曲線の正しい技術用語です。一度あなたが山のANTLRの頂点に達すると、頂上からの眺めは壮観です。 –

    2

    コマンドラインが好きでも、問題があるときはAntlrWorksを使う価値があります。図式表現は、何が間違っているのかを簡単に見ることができます。

    画像には何千ものエラーメッセージが含まれています。

    関連する問題