問題タブ [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 で単純な AST を生成する
私はANTLRで少し遊んでいて、次のような関数を作成したいと考えています:
これにより、次の AST が生成されます。
これまでのところ、私は運が悪かったのですが、AST にパラメーターを子ではなく兄弟として持たせ続けています。
これまでのコード:
C#:
ANTLR:
antlr - ANTLRはクエリテキストを書き換えて、以前のノードでテキストを繰り返します
私はANTLRを初めて使用し、次を使用してクエリを解析しようとしています。
これは、一般的なクエリでは問題なく機能するようです。ただし、の場合はa near (b or c)
実際には次のように処理する必要があります。
a near (b or c and (d or e))
次のように処理する必要があります。
私はこれを行う方法を決定することができません。どんな助けでも大歓迎です。
ありがとう
antlr - Antlr3.2リライトルール
私は最近、Antlrを学び、Antlr3.2を含むと思われるAntlrWorks1.4をダウンロードし始めました。現在、3.2は「->」のような書き換えルールの文法をサポートすることになっていますが、レクサールールまたはパーサールールのいずれかに基づいて動作するように構築できる最も単純なケースでさえも取得できませんでした。
これをコンパイルしようとすると、次のエラーが発生します。
どうしてこれなの。構造は十分に単純なようです。abは、ノードのみがキャプチャされるツリーを生成する必要があります。それはあなたのやり方ではありませんか?ルート化('^')または無視('!')のどちらでも機能させることができません。私は非常に混乱しました。
antlr - ANTLRAST構築の問題
ASTを取得できません
次の文法を使用する
単語と演算子を表示するASTを作成したい
つまり、私の要件は次のようなものです。
代わりに私が得るものは:
実際、私はMultiwordNodeの下でASTを参照しています(または「アトム」レベルで生成されます)
それは次のように機能するはずです
(私の悪い絵でごめんなさい:))
問題は、演算子が引用符なしで発生する場合、それはその兄弟の頭のようなものでなければならないということです(ASTで参照されているように)。しかし、引用符付きのテキストで発生する場合は、他の単語と同じようにキャプチャする必要があります...
compiler-construction - AntlrWorks & 言語の文法エラー
直接実行できる仮想マシン コードに解釈したいスクリプト言語を含むゲーム プロジェクトに取り組んでいます。以下に文法をまとめました。すべてのレクサー ルールは構文図に正しく表示されていますが、いずれかのパーサー ルールの本体をクリックすると、特定のパーサー ルール X に対して「開始状態が見つからないため、ルール "X" を表示できません」というメッセージが表示されます。
なぜ ANTLR が開始状態がないことについて不平を言っているのか、よくわかりません。文法は、他のパーサー規則によって参照されていないコードラインから明確に開始する必要があります。また、右上のボックスは緑色で、構文エラーがないことを示しています。
他のメッセージ ボードの投稿や、ANTLRv3 サンプル文法ダウンロードで提供されている多くの文法をくまなく調べましたが、いずれのパーサー ルールも開始状態であることを ANTLR に示す特別なコードはありません。単純なものが壊れているように感じますが、それが正確に何であるかについては行き詰まっています。
アドバイスや支援をいただければ幸いです。たとえそれが「これを読んでください」という行に沿っているとしても。
antlr - antlrworksを使用して左再帰を解決する
こんにちは私は後で(デバッグモードで)このコードを受け入れる文法を書きたいです(ANTLRWORKSを使用して)
あなたの助けに感謝します
java - AntlrにレクサーをインポートするとNullPointerExceptionが発生するのはなぜですか?
私はantlr3とAntlrworksを使用しています。これが私の設定です:
レクサーベース//WS、数値などの基本的なトークンが含まれています。
レクサー固有//私の言語固有のトークンが含まれています-ANDはベースレクサーから派生しています
パーサー固有の//私の言語のパーサー
結合された文法->特定のレクサーと特定のパーサーをインポートします
生成すると、常にNPE(Java)を取得します。その理由は、生成された特定のレクサーのベースレクサーへの参照が初期化されていないためです。
私は何かが足りないのですか?
c - AntlrWorks は C ターゲット コードをデバッグしたくない
C をターゲットとする文法をリモート デバッグしようとしています。AntlrWorks はパーサーに正常に接続しますが、最後まで実行するだけです。私は本当にそれを踏むことも壊すこともできません。
AntlrWorks 1.4.2 を使用しています。パーサーは Antlr 3.2 で生成されました。
アドバイスをいただければ幸いです。
antlrworks を使用して C ターゲット コードのデバッグに成功した組織はありますか?
whitespace - ANTLR 空白の質問 (典型的な質問ではありません)
次の短い SmallC プログラムについて考えてみましょう。
私の ANTLR 文法は、ANTLWorks で、Interpreter を使用しているときに行末 -> "Mac (CR)" を指定すると、問題なく認識されます。行末オプションを Unix (LF) に設定すると、文法は NoViableAltException をスローし、include ステートメントの終了後に何も認識しません。インクルードの最後に改行を追加すると、このエラーは消えます。これに使用しているコンピューターは Mac であるため、行末を Mac 形式に設定する必要があることは理にかなっていると考えました。代わりに、Linuxボックスに切り替えて、同じことを取得します。ANTLRWorks インタープリター ボックスに何かを入力し、行末 Mac (CR) を選択しないと、上記の場合のように空白行が不十分であるという問題が発生し、さらに、各ステートメント ブロックの最後のステートメントには、セミコロンに続く余分なスペース (つまり、bob の後; 上記)。
これらのバグは、解析したいコード入力ファイルで文法の Java バージョンを実行すると再び表示されます...
何が問題になる可能性がありますか?問題が、おそらくパーサーが理解できなかった/私の空白ルールに捕らえられなかった形式で、あまりにも多くの新しい行が存在することであったかどうかは理解できます。しかし、この場合、それは新しい行が不足しているという問題です。
私の空白宣言は次のとおりです。
あるいは、これはあいまいさの問題が原因である可能性がありますか?
完全な文法ファイルは次のとおりです (ANTLR のデフォルトのエラー処理メカニズムをオーバーライドする最初のいくつかのブロックは無視してかまいません:
visual-studio-2010 - VS2010でAntlr文法構文のハイライトを探しています
構文を強調表示して、VS2010内でantlr文法ファイルを直接編集する方法を探しています。
私はantlrworksをよく使用しましたが、antlrworksを個別に起動してから、編集するファイルを参照し、変更を加えて保存する必要があるという欠点があります。マイナーな修正については、Antlrworksのすべてのツールは必要ありませんが、構文のハイライトが必要です。
しかし、VS2010で適切なファイルを使用してantlrworksを開くことができず、VS2010エディター内で構文ハイライトを直接取得する他の方法が見つかりませんでした。プレーンテキストとして開くだけです。
Visual Studioでantlrworksを開くことはできますが、クリックしたファイルではなく、最後に開いたファイルのセットのみで開きます。
だから私の質問は:
Visual Studioプロジェクトエクスプローラーでファイルをダブルクリックしたときに、適切なファイルでantlrworksを開く方法はありますか?
Visual Studio内でantlr文法ファイルの正しい構文ハイライトを取得する他の方法はありますか(または別のエディターを使用して、できればお金がかかるものではありませんが、無料のものがない場合は商用のものがオプションになる可能性があります)。