問題タブ [antlr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - ANTLR のターゲット パッケージを指定する方法は?
私が電話した場合:
...antlr-3.1.3 では、パーサーとレクサーのコードがディレクトリに生成されoutdir/sources/com/example
ます。package
しかし、生成されたクラスにはステートメントがありません。私はそれらがパッケージの中で生活する必要がありますcom.example
。
対象パッケージを指定する方法はありますか?
java - ANTLR: 「ルール スコープで属性アクセスが欠落している」問題
次のようなタグ付きの文を解析する ANTLR 文法を構築しようとしています。
そして文法を持っています:
文法ジェネレーターmissing attribute access on rule scope: nounPhrase
は、最後の行に " " を生成します。
[私はまだ ANTLR に不慣れで、一部の文法は機能しますが、まだ試行錯誤です。また、これほど小さな文法を実行すると、「OutOfMemory」エラーが頻繁に発生します-どんな助けも歓迎します.]
ANTLRWorks 1.3 を使用してコードを生成し、Java 1.6 で実行しています。
antlr - ANTLRの使用を開始し、よくある間違いを回避する
私はANTLRを学び始め、2007年の本「TheDefinitive ANTLR Reference」とANTLRWorks(文法を作成するためのインタラクティブなツール)の両方を持っています。そして、そのような人である私は、第3章(「せっかちな人のためのクイックツアー」)から始めました。
特にいくつかのエラーはかなり侵入できないため、これはかなり苦痛なプロセスです(たとえば、ANTLR:「ルールスコープでの属性アクセスの欠落」の問題は、私にとって「何かが間違っている」ことを意味します)。また、非常に単純な文法(3〜4プロダクションのみ)と単純な入力(2行)があり、実行すると「OutOfMemory」エラーが発生します。
ANTLRサイトは便利ですが、多少断片化されており、一部のSOユーザーは本とチュートリアルが高いエントリーレベルを期待しているとコメントしています( https://stackoverflow.com/questions/278480/good-tutorial-for-antlr )。このため、私はANTLRディスカッションリストに近づくことを躊躇してきました。
後で私たちはそれを理解し始めています。穏やかに拡張できる単純で信頼できる例があると便利です。ANTLRに基づいて私たちの考え方のかなりの部分を改造したので、それは確かに習得する価値があります。
1つの問題は、ANTLRV3がV2から大幅に変更されていることです。SO(およびANTLRページ)の1つの回答は、使用できなくなったV2構文に言及していました。
SOに関するANTLRの質問のいくつかは私を大いに助けてくれましたが、それらを見つけるのは少しアドホックです。そこで、SOユーザーが学習プロセスの苦痛を軽減するためにどのように役立つかを知りたいと思います。(参考書を参照する場合は、特定のページを指すと便利です)。
編集します。@duffymoと@JamesAndersonは、ANTLRが大変な作業であることを確認しました。これは主にパーサーが難しいためです。(FWIW私はLEX / YACCなどを経験しましたが、ANTLRの方が強力で、操作が簡単であることは間違いありません。)次のような汚れを回避できる領域があると便利だと思います。
- 変数名の正しい大文字化を確認してください
- パッケージ名をレクサーとパーサーに追加します
- 優先順位に影響するため、ルールの順序に注意してください
そして、これらの種類の多くが役立つでしょう。
antlr - この文法はどうしたの?
問題は、define
ルールがトークン、、と一致しdefine
ますが、ID
一致しないことです。MissingTokenExceptionが発生しています。as
TYPE
次のようにTYPEをインライン化すると、意図したとおりに機能します。
更新:fragment
別の競合を解決するために、キーワードが追加されました:The following token definitions can never be matched because prior tokens match the same input: TYPE
。
c - ANTLR3C を使用して導入レコグナイザーを生成する方法は?
The Definitive ANTLR Guide は単純なレコグナイザーから始まります。'%s' は ANTLR にとって何かを意味するため、文法を逐語的に使用して C ランタイムをターゲットにすると失敗します。
この場合、ANTLR に '%' を無視するように指示するにはどうすればよいですか?
java - JavaCC の問題 - 生成されたコードですべての解析エラーが検出されない
JavaCCを始めたばかりです。しかし、私はそれに対して奇妙な行動をとっています。記号 (+、-、/) で連結され、括弧を含めることができるトークン (文字と数字) の形式で入力を検証したいと考えています。それが理解できたことを願っています:)
メイン メソッドには文字列があり、開き括弧が 1 つと閉じ括弧が 2 つあるため、エラーが発生するはずですが、解析例外が発生しません --> なぜですか?
なぜ例外が発生しないのか、誰にも手がかりがありますか?
私は最初の試行で左再帰と選択の競合に苦しんでいましたが、なんとかそれらを乗り越えることができました. 多分私は問題を導入しましたか?
ああ、おそらく私の解決策はあまり良くありません-この事実を無視してください...または、より良いアドバイスをしてください;-)
ファイル: CodeParser.jj
編集 - 2009 年 11 月 16 日
今、ANTLRを試してみました。
問題のドメインにより適合するようにいくつかの用語を変更しました。次のコードを思いつきました(このサイトの回答を使用)。これは現在機能しているようです:
ところで... ANTLRWORKS は、デバッグ/視覚化のための優れたツールです! とても助かりました。
追加情報
上記のコードは次のようなものに一致します:
antlr - Antlrを使用したクエリ文法ビルドでの暗黙の「and」に関する問題
私はANTLR(C#)でグーグルのようなクエリ構文パーサーを構築してきました。
長い間苦労して解決できなかった一つのことを除いて、私は終わりました。
ユーザーが「word1word2word3」と入力した場合、パーサーはこれを「word1とword2とword3」と同じように処理します。したがって、事実上、「and」はオプション/用語間の暗黙的です。
ASTサブツリーのルートを形成するために「and」が必要ですが、「and」が実際に存在しない場合はうまくいきません。先読み/後戻りがあっても、それを機能させるための正しい構文を見つけることができません。
これは、明示的な「and」で機能する現在の文法の抜粋です。
理想的には、andexpressionを次のようにしたいと思います。
しかし、「羊の犬の魚」のような文字列を解析するRewriteEmptyStreamExceptionが発生します。
私の「and」をオプションにする方法について誰かが何かヒントを持っているなら、それは大いにありがたいです。
antlr - ANTLR を使用して xml ドキュメントを解析する方法
ANTLR ツール (Java) を使用して xml ドキュメント用の独自の文法を作成する方法と、ANTLR ツール (Java) を使用してそれらのドキュメントを解析する方法を誰か教えてもらえますか?
java - antlr3 AST をシリアライズする方法
antlr3 の使用を開始したばかりで、.g 文法の AST 出力をシリアル化しようとしています。
ありがとう、
レザン