問題タブ [antlrv3ide]
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 を使用して DSL を作成しています。Lexer と Parser は 1 つの文法ファイル (たとえば、layout.g) に記述されています。ツリー文法は、別の文法ファイル (layoutTree.g など) に記述されています。現在、ツリー パーサーは適切に解析していません。パーサーからのAST出力を印刷しましたが、正しいです。生成されたツリー パーサー コードを調べたところ、トークン値宣言がツリー パーサーとパーサーで異なる値を割り当てることがわかりました。以下は、パーサーとツリー パーサーからのサンプル出力です。
パーサー出力
ツリー パーサーの出力
ご覧のとおり、DECLARATION_TOKEN はパーサー出力とツリー パーサー出力で異なる値を持っています。このツリー パーサーが原因で、期待どおりに動作しません。この問題を修正するにはどうすればよいですか?
生成されたトークン ファイル (layout.token など) に問題がありますか? このファイルは私のプロジェクトでは空です。このファイルを生成するにはどうすればよいですか?
antlr - ANTLR-キーワード間の任意の文字を許可
簡単な言語の文法を定義したいと思います。
この言語では、ある種の割り当てが可能です。
例
重要なのは、キーワードと':'
任意の文字の後に可能である必要があるということです(キーワードも)
私は多くのことを試しましたが、私はまだレクサーとパーサーの考え方にそれほど興味がないと思います...
私の最後のアイデアは失敗しました:
編集
まず第一に:あなたの答えに感謝します!
マニュアルを読み、scottstanchfieldによるチュートリアルを見ました。
問題は、私が「anychar」のものを取得できないことです!
あなたは正しいです、私が急いでいたので、私が上で投稿した文法は間違っていました。
より良い試みはこれを先に行うことです。問題は、Tokenizerが定義alaのkeywordaなどを認識することです。
文法:
編集II
なんてこった、あなたがそれを説明したようにそれをするのは静かに明白です。なぜ自分で手に入らなかったのかわからない!説明してくれたティムに感謝します!
残りの質問がもう1つあります。レクサーのトークンとパーサーの文法を定義する場合です。ツリーパーサーまたはパーサー自体のセマンティックをチェックする一般的な方法ですか?
たとえば、あなたが投稿したのと同じ文法が定義されているとしましょう。
ここで、keywordaを定義するたびに、keywordbが定義されているかどうかを確認したいと思います。後で、値が適切かどうかの意味を確認したいと思います。キーワードextends:'keyword value'があり、'keywordvalue'がすでに定義されているかどうかを確認する必要があると仮定します。
これは2つの方法で行うことができます。まず、パーサーの文法規則を変更し、そこにチェック用のJavaコードを追加します。次に、文法はそのままで、これらの条件をチェックするためにツリーパーサー文法を定義します。
どちらが良いのか、長所と短所は何なのか、私にはよくわかりません...
あなたの助けをどうもありがとう
java - EclipseのAntlrIDEが機能しない
プロジェクトにAntlrv3とjavaを使用していて、AntlrWorksですべてうまくいきますが、EclipseのプラグインであるAntlr IDEに切り替えると、インタープリターが私が書いた文と一致せず、不一致が表示されます。また、レクサーで指定したスキップする単語のリストを認識できないようです。ただし、AntlrWorksで完全に機能するのと同じです。
助言がありますか?
Eclipseでantlrbuiderをセットアップしました:Antlr Parser Generator v3.4
eclipse - Eclipseによって自動生成されないパーサーファイルとレクサーファイル
EclipseIndigoでANTLRのantlr-3.4-complete-no-antlrv2.jarバージョンを使用しています。
ZESTとGEFと一緒にANTLRIDEプラグインをインストールしました。結合された文法ファイルを生成し、ヘッダー、レクサーヘッダー、およびルールを追加すると、Eclipseはパーサーファイルとレクサーファイルを生成しません。
私がantlr-3.2.jarを使用する場合、それは行います。java -classpath antlr-3.4-complete-no-antlrv2.jar org.antlr.Tool Sample.gを使用して、Eclipseの外部で(antlr-3.4。*を使用して)レクサーファイルとパーサーファイルを生成できます。
バージョン3.4のEclipseでこれをオンにする方法はありますか?
antlr - 2 つの ANLTR パーサーが同じ文字列を異なる方法で解釈するのはなぜですか?
次のANTLR文法があります。
I と次の文字列:
(TODO (TODO TODO (TODO) TODO))
これは、文法から ANTRL によって生成されたパーサーによって正常に解析されます。たとえば、次のデモを使用します。
ただし、Eclipse プラグインANTLR IDE ツール 2.1.1は、同じ文字列を解釈するときにエラーを返します。
MismatchedTokenException: 行 1:6 の入力が一致しませんでした '(' は '\u0007' を期待しています
両方のプログラム間のこの不一致の理由は何ですか?
antlr - ANTLRインタープリターの実行エラー
次のようにインタプリタを実行すると、
ANTLR 3.4(Eclipse 3.7)で解析ツリーを作成するには、次のように表示されます。
「ANTLRイベントリスナー」中に内部エラーが発生しました。入力文字列の場合: "false"
2番目のオプションを実行してDebug(Java)
も、エラーは発生せず、ツリーも解析されません。
どうすればこれを解決できますか?
ありがとう
compiler-construction - ANTLR 文法エラー: 次の選択肢は決して一致しません
ANTLR 3.4 を使用して C-- コンパイラを構築しようとしています。
私が書いた関数の文法について
しかし、2 つの Kleene スター操作を使用するとエラーが発生します。
antlr - C ターゲット文法パーサーの構築、コンパイル時にインクルードする方法を知る必要がある
Windows 7 プラットフォームで antlrIDE を使用して (C 言語で) パーサーを構築しようとしています。自動的にレクサーとパーサーを生成する文法 (結合文法の .g) を完成させました。ただし、.c および .h ファイルをコンパイルする方法がわかりません。試してみましたが、ヘッダーが含まれているためエラーが発生しました(antlrIDE#include "antlr.h"
はパーサードットcファイルにヘッダーを自動生成します)。この記事を読みましたANTLR3 Cターゲットの使用
しかし、それは私には役に立ちません。その方法を教えてください。よろしくお願いします。
antlr - EclipseAntlrインタープリターの障害
次の文法は、文字列を処理するためのパーサーを正常に生成します'ccdunion'
。しかし、通訳を試してみると、NoViableAltException
エラーが発生します。なぜですか。