問題タブ [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.
parsing - なぜこのエラーが発生したのですか?-「次の選択肢は決して一致することはできません」
コンパイラー、パーサー、パーサージェネレーターの作成に興味がありますが、よくわかりません。
この質問の答えを読んだ後、私は「非常に」単純なLaTeXパーサーを作成しようとしました。
これはコードです:
(テスト目的で、PUNCには2文字しかありません)
そしてこれはエラーメッセージです:
このエラーはあいまいさが原因で発生することがわかりました。コードは2つ以上の方法で解釈できますが、このあいまいさがどのように生成されるのかわかりません。
そして、これは図であり、何かを解釈できる2つの方法です(多分)。
...しかし、どのよう\
に、そして}
混乱する可能性がありますか?
antlr - 空でないクロージャーと疑問符: 最初の要素のみが AST に入れられますか?
私は奇妙な現象に悩まされています:
結果の AST では、 の最初の だけx
がz: x | '<'! y? '>'
発生y: x (','! x)*
します。ただし、Maven リポジトリにデプロイされた Antlr3 を使用してコードをコンパイルした場合に限ります。AntlrWorks を使用すると、正しいツリーが表示されます。
b: a a*; c: d b? d;
意味的に間違っていますか?私は何を間違っていますか?それとも、単に Antlr にエラーがあるのでしょうか?
より完全な例が必要な場合 (私の問題は、try_ の $v2 で発生します):
(完全なソースと入力ファイルの例: https://gist.github.com/1004329。ツリーには in catch の T のみが存在しますが、AntlrWorks には T と R の両方が表示されます。)
parsing - ANTLRで解析されたトークンのリストの反復/処理
ルールがあります
cns=IDENT
'cns + = IDENT'に置き換えると、これは正しく機能します。その場合、どうすればとしてアクセスできます cns
か$cns.text
。
java - 次の選択肢には到達できません: 2
ANTLR の使い方を学ぶために非常に単純な文法を作成しようとしていますが、次のメッセージが表示されます。
「次の選択肢には決して到達できません: 2」
これは私の文法の試みです:
IDEA 用の ANTLRWorks プラグインを使用しています。
python - ANTLR 解析の MismatchedTokenException
私が書いているさらに単純な言語用の単純なパーサーを作成しようとしています。後置式で構成されています。今のところ、パーサーに問題があります。入力に対して実行すると2 2 * test >>
、MismatchedTokenException が発生します。
また、再帰的な後置パーサーを実装するにはどうすればよいですか?
これが私のコードです:
c# - C# ターゲットを使用したワンパス モデル ツリー階層の作成
要するに、1 回のパスで ANTLR 文法内からモデル階層を適切に構築する方法と、現在の C# コード生成でそれを行う適切な方法を知りたいと思っています。ドキュメントで説明されているように、戻り変数へのアクセスは現在機能していないようです。
ドキュメントからこの例を参照してください
私の実装は C# ですが、C# のターゲット ドキュメント(2008 年頃?) には、文法内の標準アクション パターンからの逸脱については言及されていません。このため、ANTLRWorks 1.4 (この記事の執筆時点では最新の 1.4.2 ではありません) を使用しています。基本的にネストされたinnerStatsで1つの深いツリー階層を設定する私の実装:
これにより、次のエラーが返されます。
現在、この問題を回避する唯一の方法は、C# モデル内にメソッドを作成し、Model.Aliases.Last().AddChild(IStatement)
カプセル化を破る innerStat 内から呼び出すことです。助けてくれてありがとう。
編集: 修正されたコードは次の場所にあります: https://github.com/keithharvey/Script-Parser/blob/master/Installer/Model/DAL/SourceExpr.g
apache-flex - Flash Builder 4.5.1 での ANTLR v3 生成ファイルの使用に関するヒント
これらの指示に従って、現在の Flash Builder 4.5.1 プロジェクトで ANTLR で生成された *.as ファイルを使用しようとしています。
したがって、このANTLR の Actionscript ランタイムをプロジェクトに追加しましたが、問題はありませんでした。
ANTLRWorksを使用してレクサー/パーサーの仕様を問題なくコンパイルしました。
ソース *.g ファイルに言語オプションを追加して、ANTLR が Actionscript ソースを生成するようにしました。
残念ながら、ANTLR/ANTLRworks が生成した Actionscript コードにはバグがあります。
catch ステートメントは のように読みますcatch (RecognitionException re)
が、次のように読む必要があります: catch ( re:RecognitionException )
。
さらに、Flash Builder はここで Array の使用について不平を言います:
誰かがこれらの問題を確認し、おそらくそれらを解決する方法のヒントを提供できますか?
更新-1
ANTLR v3.3 のソースをざっと見てみると、このテンプレート コード [142 行目 @ ActionScript.stg] が明らかになりました。
したがって、現在の 3.3 ブランチは正しい構文を認識しているようです。
残念ながら、3.3 ブランチを含む現在の ANTLRworks 1.4.2 は失敗します。
java - antlrworksでのパケットのインポートに関する問題
いくつかのクラスを含む、私が定義したパッケージを作成する必要があります。そのパッケージを、インポートを行ったプログラムAntlrWorksで作成されたファイル.javaにあることを思い出します。「com.project.redfox」という名前のパッケージ。コマンド「javacTest.javaprovaParser.javaprovaLexer.java」を使用してコードをコンパイルしましたが、パッケージが存在しないというエラーが発生します。
文法に追加されました:
NetBeansで開発されたプロジェクトredfox内にパッケージ「com.project.redfox」を作成したため、ディレクトリcom / project/redfoxはディレクトリredfoxにあります。
どうすればこの問題を解決できますか?
antlr - ANTLRWorks:オペレーターを動作させることができません
私はしばらくの間ANTLRを学ぼうとしてきましたが、ついにTheDefinitiveANTLRリファレンスを手に入れました。さて、ANTLRWorks1.4で次のことを試しました
2 + 4を渡して式を処理すると、ルートが+で、子ノードが2と4のツリーが得られません。むしろ、同じレベルのルートとして式を取得し、子ノードとして2、+、4を取得します。
私が間違っていることを理解することはできません。必死に助けが必要です。
ところで、どうすればそれらのグラフィックの説明を取得できますか?
nested - 文法/ANTLRWorksのネストされた角かっこ/文字'('および')'警告:決定は、複数の選択肢を使用して...などの入力と一致する可能性があります
以下の文法は( left part = right part # comment )
、# comment
オプションです。
2つの質問:
- 時々警告(ANTLRWorks 1.4.2):
決定は、複数の選択肢を使用して「{Int、Word}」などの入力と一致する可能性があります:1、2(参照
id2
)
しかし、たまにしかありません! - 次の拡張は、コメント(
id2
)にchars'('および')'を含めることができることです。
文法: