問題タブ [antlr]
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 - ANTLRは役に立ちますか?別の提案?
私がANTLRに飛び込む前に(それは明らかに心の弱い人のためではないので)、私はその使用法に関して正しい決定をしたことを確認したいだけです。
アプリケーション内に値を入力できるように、事前定義されたタグを使用してテキストファイルで解析する文法を作成したいと思います。(テキストファイルは別のアプリケーションによって生成されます。)したがって、基本的に、次のようなものを解析できるようにしたいと思います。
私のアプリケーションでは、TheFileNameは文字列として格納され、両方の値のセットが配列に格納されます。(これは単なるサンプルであり、ファイルははるかに複雑です。)とにかく、私は少なくともANTLRで正しい道を進んでいますか?他に何か提案はありますか?
編集 ファイルはユーザーによって作成され、タグを介して領域を定義します。だから、こんな感じかもしれません。
それらの線に沿った何か。
java - JavaCC の ADVANTAGE と ANTLR の違い
短所を教えてくれる人が多すぎますが、メリットがあるとすれば何ですか?
java - ANTLR Java文法を指定してJavaソースメソッド名リストを取得していますか?
ANTLR Java Grammar が与えられた場合 - Java ソース リストのメソッド名のリストを取得するには、どの Java ソース コードを記述しますか?
たとえば、次の場合
戻るだろう
java - ANTLRの木を理解する
私はいくつかのテキストIDEのような機能にAntlrを使用しようとしています。具体的には、ファイルを解析してコード折り畳みのポイントを特定し、構文の強調表示を適用します。
最初の質問-Antlrはこの要件に適していますか、それともやり過ぎですか?これは、正規表現や手巻きパーサーを使用して実現できます...しかし、Antlrが私のためにこの作業を行うためにそこにいるようです。
...と優れたチュートリアルリソースをここで確認しました。
私は(標準の文法を使用して)Java文法を構築し、すべてをきちんと解析してツリーにすることができました。ただし、ツリー内にネストされた要素が表示されることを期待していました。実際には、すべてが最上位の要素の子です。
例えば。与えられた:
Fooのツリーノードがパッケージ宣言のノードの子になることを期待していました。同様に、myStringはFooの子になります。
代わりに、私はそれと(Foo
そしてmyString
そのことに関する他のすべて)はすべての子であることに気づいていますpackage
。
解析を行う関連する抜粋は次のとおりです。
調べると、子が解析の結果であるインスタンスresult.getTree()
が返されます。CommonTree
期待値(おそらく間違っている)
(または同様のもの)
実際の値(すべての値はのルートノードの子ですresult.getTree()
)
これがどのように正しく機能するかについての私の理解はありますか?
私はこれまでのところAntlrの完全な初心者であり、学習曲線はかなり急であると感じています。
parsing - proxy.handshake 呼び出しでハングする ANTLR パーサー
私は基本的な ECMAScript パーサーを動作させようとしており、ECMAScript 3の完全な ANTLR 文法を見つけました。これは正常にコンパイルされ、適切な Lexer/Parser/Walker Java ファイルを生成するように見えます。
( Eclipse 3.5 のANTLR IDE プラグイン内で実行)
ただし、実際に単純なテスト コード ( ANTLR wiki のガイドに従ってください) で使用しようとすると、パーサーを作成しようとするとハングします。
問題をコンストラクター内で追跡しES3Parser
、そこで関数を呼び出していますproxy.handshake()
-この行の前では正常に実行できますSystem.out.println("text")
が、その後は何も得られません。
では、ハングしている理由を見つけて停止するにはどうすればよいでしょうか。または、このセクションをバイパスすることもできます (デバッグを無効にすることはできますか?)。 .
antlr - Flex/Bison と比較して、ANTLR を使用することの欠点は何ですか?
私は数年前、学部生時代に Flex や Bison に取り組みました。とはいえ、今はあまり覚えていません。最近、ANTLRのことをよく耳にするようになりました。
- Flex/Bison をブラッシュアップするために、ANTLR またはそれ以上を学習することをお勧めしますか?
- ANTLR の機能は Flex/Bison より多い/少ないですか?
antlr - ANTLR文法ファイルをモジュール化できますか?
同じ文法規則のいくつかが異なるアプリケーションで使用される可能性が高いANTLR3アプリケーションを構築しています。多くの*.gファイルがありますが、たとえば、すべてが同じバージョンのFLOATを参照したい場合があります。*.gを他の*.gファイルからアセンブルできる「インポート」機能はありますか?ある場合、優先順位のルールは何ですか?
antlr - ANTLR文法の予約語のリストはありますか?
最近、ANTLR3パーサールールを作成しました
これはコンパイルされずoptions
、予約語であることがわかるまでに時間がかかりました(AntlrWorksはエラーを示しましたが、理由は示していません)。ANTLRに予約語のリストがあり、命名規則のベストプラクティスがありますか(これはこれを回避するのに役立つ可能性があります)?
regex - Automatic Documentation - クイック パーサーを作成するための最良の方法
エンドユーザーが編集する必要がある大きなスクリプトがあるため、多少冗長なコメントが必要です。これに似たファイルのレイアウトを使用します
関数の概要をファイルのヘッダーにコピー/貼り付けする単純なパーサーを作成したいと考えています。ANTLR や RegEx など、これを実現するのに役立ついくつかのツールを知っていますが、最善の方法は何でしょうか?
antlr - Antlr 3 / Cサンプルmain()を探しています
http://www.antlr.org/wiki/display/ANTLR3/Five+minute+introduction+to+ANTLR+3やhttp://www.antlrなど、Cのmain()のサンプルがいくつか浮かんでいます。 org / api / C / index.html
間接参照はASTのようです。私はそれが何であるかわかりません、そして-すみません-私がそれを避けることができればしたくありません。
レクサーと文法(モデムATコマンド用)を定義して、main()を自動生成するか、どこかから切り取って貼り付けるのが好きです。
少しひねりを加えたのは、ほとんどの例がファイルから読み取られているように見えるのに対し、パラメーターとして渡される一連の入力(ATコマンド)を文字列として取得することです。
誰かが私が適応できる単純なmain()を私に指摘してもらえますか(そしておそらくそれを適応させるためにhwoを提案しますか?)私が知っていることをたくさん尋ねます、ごめんなさい。