問題タブ [antlr3]

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.

0 投票する
2 に答える
3425 参照

antlr - Cコードを生成するときに非常に単純なANTLRエラー処理の例を探す

Cコードを生成したい。入力ファイルから一度に1行ずつ読み取ることはありません(たとえば、コンパイラーのように)。むしろ、ユーザー入力が到着したときに、一度に1行ずつ解析します。

レクサー/パーサーでの不正な入力を検出して処理したいと思います。

OK、レクサー/パーサーでキャッチできない場合は、使用する必要があるようですが、どうすればよいですdisplayRecognitionError()か?

Cコードを生成し、無効な入力のエラー処理を示す非常に単純な例を誰かに教えてもらえますか?

ありがとう!


OK、賞金、yippee!

しかし、実際に機能するコードを使用した、実際に機能する答えの場合のみです。wxampleなしで「メソッドX()を使用する」ことはできません。

0 投票する
2 に答える
9483 参照

java - 入力変数をサポートするための単純な ANTLR 文法の拡張

私はまだ本当に単純な言語を探していますが、今では何もないことを知っています。だから私はANTLR3を使って自分で書いています。

この回答で本当に素晴らしい例を見つけました:

Exp.g:

Java コード:

この ANTLR 文法を使用して、次のような式を評価できます

結果として13を取得します。

ここで、私のユースケースに欠けているのは、これに単純な double 変数を挿入する方法だけです。これにより、{"A": 12.0, "B":14.0} を入力マップとして指定することで以下を評価できます。

何か案は?

0 投票する
1 に答える
3321 参照

antlr - ANTLR3でTreeParserを作成するにはどうすればよいですか?

私は楽しみのために言語解析を学ぼうとしています...

私は、実装したいと思っている単純な言語と一致すると信じているANTLR文法を作成しました。次の構文になります。

実際の例:

この構成に一致するように文法が正しく機能していると思います。現在、その言語の抽象構文ツリーを構築しようとしています。

まず、この木がどのように見えるか正確にはわからないことを認めなければなりません。第二に、私は私のAntlr文法でこれを行う方法を完全に失っています...私は何時間もあまり成功せずに試みてきました。

これは私がツリーのために行っている現在のアイデアです:

これは私の現在のAntlr文法ファイルです:

どんな助け/アドバイスも素晴らしいでしょう。私は何十ものチュートリアルを読んでみましたが、AST世代については何も固執していないようです:(

0 投票する
2 に答える
10859 参照

unicode - antlr で Unicode 文字を一致させるにはどうすればよいですか

テキスト内のすべてのトークンを選択しようとしており、すべての Ascii および Unicode 文字と一致する必要があるため、それらをどのように配置したかを次に示します。

ここで、トークン ルールを次のように記述したとします。

「Decision can match input such as "'A'..'Z'" using multiple alternatives: 1, 3 結果として、alternative(s) 3 was disabled for that input」 「Decision can match input such as "' 0'..'9'" 複数の選択肢を使用: 2、3 その結果、その入力に対して選択肢 3 が無効になりました"

そして、何も一致しません。また、次のように記述した場合

何も一致しません。

これを行う方法はありますか。

0 投票する
1 に答える
56 参照

antlr3 - ANTLR3は私のツリーにintを注入します

私がここで試みていることを行うことは可能ですか? または、おそらく私はそれに間違って近づいていますか?

0 投票する
1 に答える
3287 参照

llvm - ANTLR と C ターゲットを使用して LLVM IR を生成する方法

現在、ANTLR3 で LLVM IR を生成しようとしています。しかし、問題は、C ターゲットが必要なことです (C++ の方が優れていますが、まだ機能していませんか?) が、C からは、IR を構築するための LLVM C++ API を呼び出すことができません。

Terence Parr のチュートリアルでは、Java と StringTemplate ライブラリを使用しています。しかし、私が知っているように、StringTemplate ライブラリは C では利用できません。

これをどのように行うことができるか、誰かが良いアイデアを持っていますか? :)

どうも

0 投票する
1 に答える
168 参照

c - ANTLR3 C ターゲットはスレッドセーフですか?

ANTLR3 C ターゲットはスレッドセーフですか?

0 投票する
1 に答える
1081 参照

antlr - ANTRLリライター文法からのStringTemplateの区切り文字として$を使用する

StringTemplateを使用してHTML出力を生成するANTLR3文法を書き込もうとしています。テンプレートルール(例)のすべてのHTMLタグをエスケープする必要がないように\<p\><variable>\</p\>、StringTemplate(例<p>$variable$</p>)の区切り文字としてドルを使用することをお勧めします。

StringTemplateが単独で使用される場合、後者がデフォルトのように見えますが、ANTRLによって生成されたパーサーコードは、StringTemplateをAngleBracketTemplateLexer初期化するときに常に使用します。

ANTLRにコードを生成させるにはどうすればよいですかDefaultTemplateLexer(つまり、ドルを区切り文字として使用するバリアント)?

0 投票する
2 に答える
717 参照

c# - ANTLR - 予期しない文字を含む基本的な文法?

私は本当に単純な ANTLR 文法を手に入れようとしていますが、現時点では惨めに失敗しています。これに関するいくつかの指針を本当に感謝します...

次のテスト入力を使用します。

キーワード ノードの単なるリストであるツリーが必要です。

私が得る瞬間に

(なぜか最後のキーワード内に「.」があり、「work」が抜けている)

ABBRV 句を次のように変更すると、

それはうまくいきますが、キーワード(asp)とキーワード(.net)を別々に取得しますが、それらは単一のトークンとして必要です。

あなたが与えることができるどんな助けも大歓迎です。

0 投票する
4 に答える
7444 参照

compiler-construction - ANTLR を使用して CommonTokenStream のトークンのテキストを変更するにはどうすればよいですか?

私はANTLRを学び、同時にそれを現在のプロジェクトに使用しようとしています。

コードのチャンクに対してレクサーを実行し、それを CommonTokenStream に出力できるようになりました。これは正常に機能しており、ソース テキストが適切なトークンに分割されていることを確認しました。

ここで、このストリーム内の特定のトークンのテキストを変更し、変更されたソース コードを表示できるようにしたいと考えています。

たとえば、私は試しました:

すべての識別子トークンのテキストを文字列リテラル「V」に設定しようとしています。

  1. tokens.toString() を呼び出したときに、トークンのテキストへの変更が反映されないのはなぜですか?

  2. さまざまなトークン タイプ ID を知るにはどうすればよいですか? デバッガーを使用して調べたところ、IDENTIFIER トークンの ID が「4」であることがわかりました (したがって、定数が一番上に表示されます)。しかし、そうでなければどうやってそれを知ったでしょうか?トークン タイプ ID をトークン名にマッピングする他の方法はありますか?


編集:

私にとって重要なことの 1 つは、トークンに元の開始位置と終了位置を持たせたいということです。つまり、変数名を「V」に変更して新しい位置を反映させたくありません。これは、トークンが元のソース テキストのどこにあったかを知るためです。