問題タブ [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.
java - ANTLRでトークンの正確な出現回数を指定する方法は?
以下に示すようなファイルの文法を定義する必要があります。
//サンプルファイル
NameCount = 4
Name = a
Name = b
Name = c
Name = d
//ファイルの終わり
これで、 NameCountとNameのトークンを定義できるようになりました。しかし、 NameCountの後の値であるトークンNameのインスタンスの有効な数を含むファイル構造を定義する必要があります。値を解析して整数に変換し、文法のグローバルスコープで変数に保存します(変数ncなど)。
Nameが正確にnc回繰り返されるように文法で定義する方法は?
java - ANTLRWorks で生成されたクラス ファイルのコンパイル
ANTLRWorks を使用して ANTLR 文法を作成しています。有効な文法があり、パーサーとレクサーのソース ファイルも生成されます。生成されたコードのデバッグも試みましたが、出力はデバッガー出力で期待どおりです。
しかし、デバッガーによって生成された __Test__ クラスを呼び出そうとすると、コンソールに何も表示されません。同じクラスパスで __Test__.java を正常にコンパイルできるため、クラスパスを適切に設定しました。
問題は何でしょうか?antlr と antlrworks を使用してサンプル パーサーを作成およびコンパイルするための明確なチュートリアルはありますか?
return-value - ANTLR でリストの戻り値を処理する方法
ANTLRでこの問題を解決する正しい方法は何ですか:
単純な文法規則があります。たとえば、任意の数の要素を持つリストです。
リストの戻り値を割り当て、その値をプロダクションからの戻り値の実際のリストにしたい場合、それを行う適切な方法は何ですか? 私が楽しんでいる代替案は次のとおりです。
- これらのリストを追跡するために、グローバル スコープで独自のスタックを作成します
- 私の下のツリーノードを調べて、そのように情報を抽出してみてください
- ルールに関連付けられたアクション内からそのようなリストに簡単にアクセスできる方法を見つけたいと思っています。
問題は次のとおりだと思います。クールな子供たちはどのようにそれを行うのですか?
(参考までに、私はANTLRにpython APIを使用していますが、別の言語で私を襲った場合は、それを処理できます)
parsing - ANTLR:他の数値リテラルも可能な場合に2桁の数値を解析する
私は適度なサイズの言語の文法を書いています、そして私は形式の時間リテラルを実装しようとしていますhh:mm:ss
。
ただし、たとえば、12:34:56
として解析しようとするtimeLiteral
と、数字で不一致のトークン例外が発生します。誰かが私が間違っているかもしれないことを知っていますか?
現在定義されている関連ルールは次のとおりです。
antlr - 指定したパッケージのディレクトリを修正するコードを生成する
私は ANTLRWorks を使用しており、@header アクションを使用して Java パッケージを指定しています。
@header {パッケージ com.xxx.xxx.xxx.compiler}
ただし、Java コードを生成すると、src/com/xxx/xxx/xxx/compiler ではなくルート src ディレクトリに生成されます。その結果、きれいにコンパイルされません。
コードを生成する正しいディレクトリを指定するにはどうすればよいですか?
antlr - ANTLRWorksでツリー文法をデバッグする方法を知っている人はいますか
ANTLRの使用に推奨されるパターンは、パーサーに抽象構文ツリーを構築させてから、それらを処理するためのツリーウォーカー(別名ツリー文法)を構築することです。
ツリーの文法が機能しない理由を突き止めようとしています。パーサー自体に使用したのと同じ方法でANTLRWorksのデバッガーを使用したいと考えています。パーサーへの入力は「ソースコード」ですが、ツリーパーサーへの入力はパーサーのAST結果です。ツリーの文法をテストするための入力としてそれを利用できるようにする方法がわかりません。
ANTLRWorksでツリー文法をテストする方法があるかどうかは明らかではありません。それができれば、正しい方向へのポインタをいただければ幸いです。
antlr - ANTLR 1.3/ANTLRWorksでコードを生成する際の問題
ANTLR 1.3とANTLRWorksをダウンロードしましたが、ルールとシンタックスダイアグラムを生成できます。java org.antlr.Tool Temp.g
コードを生成しようとすると(たとえば、ANTLRWorksのGenerateCodeによって、または
私はWindows7ベータ版、Java1.6を使用しています。ディストロが暗示するANTLRWorksがそのまま機能するため、クラスパスを具体的に設定していません。
編集 これは(ANTLRWorksの例で生成された)簡単な文法であり、はい、ファイルは存在し、内容は次のとおりです。
parsing - ANTLRは役に立ちますか?別の提案?
私がANTLRに飛び込む前に(それは明らかに心の弱い人のためではないので)、私はその使用法に関して正しい決定をしたことを確認したいだけです。
アプリケーション内に値を入力できるように、事前定義されたタグを使用してテキストファイルで解析する文法を作成したいと思います。(テキストファイルは別のアプリケーションによって生成されます。)したがって、基本的に、次のようなものを解析できるようにしたいと思います。
私のアプリケーションでは、TheFileNameは文字列として格納され、両方の値のセットが配列に格納されます。(これは単なるサンプルであり、ファイルははるかに複雑です。)とにかく、私は少なくともANTLRで正しい道を進んでいますか?他に何か提案はありますか?
編集 ファイルはユーザーによって作成され、タグを介して領域を定義します。だから、こんな感じかもしれません。
それらの線に沿った何か。
antlr - ANTLR「サブツリーの予期しない終わり」
おい。私はANTLRを初めて使用します。ANTLRWorksウィザードは私のために次のコードを書きました:
デバッグすると、次のエラーがスローされます。
誰かがエラーとは何か、どこにあるのか、どうすれば修正できるのか説明してもらえますか?
ありがとう。