問題タブ [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.
java - ANTLR3 TreeParser で行番号を取得する方法
ANTLR3 ツリー文法で行番号を取得しようとしています (ANTLR3 によって生成されたコードは TreeParser クラスのものです)。
Googleは、悲しいことにANTLR3では機能しないANTLR2のソリューションのみを見つけました。
明確にするために、.g ファイル自体の行番号にアクセスしようとしています。
メソッドを上書きするか、クラスを拡張する必要があると思いますが、どちらかわかりません。
事前にtnx
編集:Java APIを使用していることを指摘する必要があります
antlr - Antlr3のすべての文法オプションはどこにありますか?
Antlr2には、設定できる文法オプションが多数ありました(参照)。現在、Antlr3には、オプションの量の3分の1があります(参照)。
だから私はこれに関して2つの質問があります:
- なぜこれほど多くのオプションが削除され、そのうちのいずれかが戻ってくるのか誰かが知っていますか?
- Antlr3には、これらすべてのオプションがなくても、Antlr2ができることを実行する機能がありますか?
2番目の質問をより具体的に言うと、いくつかのことができるようになりたいと思います。まず、生成されたレクサークラスとパーサークラス(つまり、Antlr2オプション "classHeaderPrefix")の可視性を変更したいと思います。
次に、「&keyword&」と「&k ey wo rd&」の両方が一致するなど、特定のキーワード内で見つかった空白トークンを無視できるようにしたい(つまり、Antlr2オプション「ignore」だと思いますか?)。
最後に、特定のキーワードで大文字と小文字を区別しないようにします(つまり、Antlr2オプション "caseSensitive")。
c - エラー報告のために例外をスローするのと同等のAntlr3 Cランタイムは何ですか
私は Antlr 2.X と Antlr 3.1.X の CSharp と python ターゲットにかなり精通しています。
しかし、私は現在、プロジェクトに Antlr 3 C ターゲットを使用することを余儀なくされています。
私の問題は、文法またはツリー文法のエラーをどのように報告するかです。
トークンに一致するルールを考えて、それをマップに入れます。トークンが一意であることを確認したいと考えています。通常、トークンが既にマップにある場合は例外をスローし、パーサーの外部で例外をキャッチしてエラーを報告します。
次のルールに相当する Antlr C ランタイムは何ですか?
java - AntlrにレクサーをインポートするとNullPointerExceptionが発生するのはなぜですか?
私はantlr3とAntlrworksを使用しています。これが私の設定です:
レクサーベース//WS、数値などの基本的なトークンが含まれています。
レクサー固有//私の言語固有のトークンが含まれています-ANDはベースレクサーから派生しています
パーサー固有の//私の言語のパーサー
結合された文法->特定のレクサーと特定のパーサーをインポートします
生成すると、常にNPE(Java)を取得します。その理由は、生成された特定のレクサーのベースレクサーへの参照が初期化されていないためです。
私は何かが足りないのですか?
antlr - [Foo]-[Bar]-[Baz][X]-[Y][Z]のantlr文法
私はを可能にする文法を定義しようとしています
これを1つのセットとして解析したいと思います。
私は現在持っています
文法サンプル;
しかし、これはエラーになります
そして図として私は得る
そして、私はこの鉄道図を取得します
どうすればこれを修正できますか?
antlr - Antlrルールの優先順位
まず、この文法は意味がないことを知っていますが、ANTLRルールの優先順位の動作をテストするために作成されました
この文法に「最初のトークンはここに\n2番目のトークンはここに」という入力を与えると、second_ruleと一致します。
開始点であるrule_order_listのsecond_ruleの前にfirst_ruleが表示されるため、最初のルール、次にany_left_over_tokensに一致すると予想していました。なぜこれが起こるのか誰かが説明できますか?
乾杯
antlr - ANTLR3:パラメーターとセマンティック述語(「シンボルが見つかりません」、「タイプの不正な開始」)
ANTLR3で「ブランチ」を実現したい。
私は使用して考えました
DFA45.specialStateTransition(...)
トリックは実行されますが、生成されたソースにパラメータがないため、「シンボルが見つかりません」および「タイプの開始が不正です」というコンパイルエラーが発生しますis_a
。
=>
¹を省略したり、のを省略したりしてみ$
ました$is_a
。
との最初のセットは互いに素ではありませんa
。b
実際b
にはタイプ((C) => c) | a
です。
{...}? => ...
¹)との違いがわからないので{...}? ...
antlr - antlr3のツリー文法でトークンのリストをキャッチする方法は?
たとえば、ダミー言語を取り上げました。これは、1つ以上の「!」を受け入れるだけです。そのレクサーと文法の規則は次のとおりです。
ご覧のとおり、これは「!」を受け入れる言語を表しています。また '!!!' また '!!!!!'...
ASTを構築するためにいくつかの意味のあるクラスを定義しました。
これがツリーの文法です。
生成されたクラスをテストするためのサンプルデータを含むメインクラスコード:
ただし、出力される最終出力は、期待される「!!!」以外は「!」です。これは主に、このコード行が原因です。
上記の$nは1つの「!」のみをキャプチャしました。「!」の3つのトークンすべて、つまり「!」のリストをキャプチャする方法がわかりません。$nで。誰か助けてくれる人はいますか?ありがとう!
java - このANTLR3ログメッセージの意味は何ですか?
Antlr3は、System.out
他のすべてを正しく実行しながら、に次の出力を生成します。
どんな内容ですか?
ps。問題は、構文解析中に時々私が通過することRecognitionException()
です。null
これの結果のように見えます。代わりに、null
意味のあるメッセージがあるはずですが、RecognitionExceptionにはそのようなコンストラクターがありません。何をすべきか?
Foo
同じパッケージのどこかにあるクラス:
今度はユニットテスト:
出力は次のとおりです。
java - antlr3 の解析を「前方」にする方法は?
Antlr3 で次の文法を解析しようとしています。
これは私の.g
ファイルです(その一部):
うまくいきません。Antlr3 は'.'
、 afterをの先頭ではなく、 のATOM
一部として扱います。どうすれば解決できますか?name
DOTS