問題タブ [antlrworks]
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.
antlr - Antlrエラー'文字に実行可能な代替手段がありません'
私はここで利用可能なObjectiveC文法を使用しており、このコードを解析しようとしています。
これはObjectiveCコードであり、解析されるはずですが、関数translation_unitを呼び出すと、次のエラーが発生します。エラーは次のとおりです。
antlrworks - ANTLRWorks 1.4.3 で縦棒や開き括弧などの一部の文字が表示されない
この質問がこのサイトの他の場所で尋ねられ、対処されている場合は、ご容赦ください。ANTLRWorks 1.4.3 でサンプル文法を入力すると、エディターに縦棒 ('|') や開き括弧 '(' などの一部の文字が表示されません。このサイトのどこかで Maya Posch が質問したことに気付きました。拡張 ASCII 文字が適切に処理されていないのですが、別の状況のようです. チュートリアルのサンプル文法を入力すると、それらの文字がエディター画面に表示されません. ただし、エディターペインの下の構文図はこれらの「欠けている」文字の存在を認識するために. 以下は文法です (奇妙なことに、ここにコピーして貼り付けると、次のように表示されます!):
エディターに表示される内容は次のとおりです。
縦棒と開き括弧の文字がエディター ペインに表示されないため、コードがごちゃごちゃしているように見えます。しかし、この投稿のテキストをエディターからコード セグメントにコピーすると、最初に投稿したように、欠落している文字が表示されます。ただし、リテラルの開き括弧 ('(') は表示されたままです。これはエディターの構成の問題でしょうか?
コードを生成すると、すべて正常に動作します。また、構文図にはルールが正しく表示されます。困っているのは、文法規則に欠けている/見えない文字だけです。MacBook Pro で ANTLRWorks を実行しています。
編集: Bart が提案したように、別のフォントを試してみましたが、これらの非表示の文字がエディター ペインに表示されます。設定ページに移動し、フォントをデフォルトの Courier New 以外のものに変更しました。私のコンピュータは MacBook Pro なので、これは Mac 環境に固有のものである可能性があります。これが同じ問題を経験している他の人に役立つことを願っています. ありがとう、バート!
antlr - ANTLRWorks でツリー文法をテストするための AST 入力を作成/指定する方法は?
背景: ANTLR 文法を作成しました。ANTLRWorks を使用してテストとデバッグを行うことができ、パーサーが思い描いていた AST を作成することを確認しました。ここで、AST 用のツリー文法を作成し、ツリーを解析して、ANTLRWorks を使用してツリー文法をデバッグしたいと考えています。
質問: ANTLRWorks を使用してツリー文法をテストおよびデバッグしたいと考えています。したがって、パーサーによって作成された AST を解析したいと考えています。ANTLRWorks でツリー文法をテストするときに、入力として AST を指定するにはどうすればよいですか?
PS で質問/回答を調べました ANTLRWorks でツリー文法をデバッグする方法を知っている人はいますが、私の質問には答えません。OPに受け入れられましたが、彼は同様のコメントをしました。
java - 文法からインタープリターを作成するANTLRworks
ちょっと質問があります。ANTLRworks を使用して、一連の文法から Java でインタープリターを作成しています。手で書き出すつもりでしたが、antlrworks のおかげでその必要がないことに気付きました。私はこのエラーが発生しています
Tg:9:23: ラベル ID が同じ名前のトークンと競合しています
ANTLR は、文法からインタープリターを作成するときに使用する方法です。そして、私のコードにエラーが表示されますか?
ID を az から 1 文字にし、大文字と小文字を区別しないようにしています。そして、すべての語彙素の間に空白を入れます。ありがとうございました
そしてここに文法があります
java - ANTLRWorks出力を解釈できません
ANTLRを理解するために、次の簡単な文法を使用しています。
入力に対してANTLRWorksで文法を実行しようとすると1+2
、コンソールで次のエラーが発生します。
[16:54:08]解釈中...[16:54:08]2:0でのトークンのマッチングの問題
NoViableAltException('' @ [1:1:トークン:(ID | INT | PLUS | ADDNUM);])
誰かが私がどこで間違っているのか理解するのを手伝ってくれませんか?
antlr - このあいまいな文法を解決するにはどうすればよいですか?
私はこの文法を書きました:
INT、FLOAT、ID の字句解析規則は明らかなので省略しました。
問題は c2 ルールです。'(' のためにあいまいです。解決策が見つかりませんでした。解決策を教えてもらえますか?
java - ANTLRはcommontreeが正しいかどうかをチェックしますか、または与えられた入力がANTLR文法と一致するかどうかをチェックする方法は?
こんにちは私は与えられた入力に基づいてブール式trueまたはfalseを返すjavaまたはc#メソッドを実行したいと思います。例えば:
if(入力がantlr文法と一致する)がtrueを返す; それ以外の場合はfalseを返します。したがって、問題は、commontreeに不一致トークンがあるかどうかを確認する方法がわからないことです。ツリーをトラバースしようとしましたが、ツリーのノードとして不一致トークンが表示されません。おそらく問題は、ASTが不一致のトークンを表示せず、解析ツリーのみを表示することです。誰かがパーサーから解析ツリーを取得する方法を教えてくれた場合にも役立つ可能性がありますか?
ANTLR .gファイルを作成しましたが、正常に機能します。次の手順を実行する必要があります。入力が正しいかどうかを確認する必要があります。これを実行しましたが、機能しません。
したがって、入力文字列が正しい場合にのみtrueを返し、それ以外の場合はfalseを返すことをメソッドから期待しています。私が行った方法では常にtrueが返されますが、文字列が正しくない場合は出力されます
「1:4行の無関係な入力'+'はEOFを期待しています」
コンソールで。
antlr - AST演算子を無視するANTLR
^と!を使用しています ルートノードを設定する演算子と、ASTに含まれない演算子。ただし、ANTLRWorksによって生成されるツリーには違いはありません。そのため、文法が正しくないのか、ANTLRWorksが正しいツリーを作成していないのかわかりません。
これが私の文法の抜粋です
これらの括弧はASTに含めるべきではありません。
プラスまたはマイナスは、ASTのルートノードである必要があります。
しかし、これらのことはどちらも私が期待するようには起こっていません。取り外しても元に戻しても違いはありません。ANTLRWorks 1.4.3 ANTLR 3.4
antlr - ANTLR 文法から AST を生成する
@BartKiers が提案した質問と文法について (ありがとう!)、options
出力を次のように指定するブロックを追加しました。
ただし、出力にアクセスする方法がわかりませんAST
。ツリーをたどり、入力で指定された各操作を処理する必要があります。
ここの例を使用して、値を返すルールを実装しようとしています。ただし、次のエラーが発生しています。
コンパイル エラー:
これがコンパイラに失敗する理由を理解するのを手伝ってもらえますか?
ペーストビンを追加しました: http://pastebin.com/u1Bv3L0A