問題タブ [abstract-syntax-tree]
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.
c - プリプロセッサディレクティブを保持するCフロントエンドを推奨
Cコードの変換を伴うプロジェクトを開始したいのですが、プリプロセッサディレクティブを含めたいと思います。自分のCパーサーを作成して車輪の再発明をしたくないので、CプリプロセッサーとCコードを解析し、再生成(またはかなり-)に使用できるASTを生成できるフロントエンドを知っている人はいますか?印刷)元のソース?
例えば、:
上記のコードは、ソースを再生成するために使用できるメモリ内表現に解析する必要があります。つまり、最初にPPディレクティブを処理し、次に純粋なCコードを解析するという、2つのフェーズで通常のCとして処理するべきではありません。むしろ、プリプロセッサ変数を含むコンパイル時ロジック全体を表す必要があります。
antlr3 - ANTLR3は私のツリーにintを注入します
私がここで試みていることを行うことは可能ですか? または、おそらく私はそれに間違って近づいていますか?
java - ASTからコードを生成するための最良の設計?
私は、いくつかの高級言語にコンパイルしたい非常に複雑なDSLに取り組んでいます。全体のプロセスは学習体験でした。コンパイラはJavaで書かれています。
コードジェネレーター部分の設計のベストプラクティスを誰かが知っているかどうか疑問に思いました。私は現在、すべてを抽象構文木に解析しています。
テンプレートシステムを使うことを考えていましたが、スタックオーバーフローから最初にいくつかの知恵を聞きたいので、まだその方向性をあまり研究していません。
ありがとう!
java - Eclipse の AST ベースの検索
プロジェクト ファイルの Java AST (Abstract Syntax Tree) に基づいて検索できる Eclipse 用のプラグインはありますか? 「Java 検索」機能は、次のようなケースをカバーしていないようです。
「すべてのクラスで 'X' 型として宣言されているすべてのフィールドを取得してください」
AST ベースの検索でさらに多くの可能性が開けることは想像できますが、そのようなプラグインが実用的なパフォーマンスを発揮するかどうかさえわかりません。
更新: 以下でケビンが指摘したように、Java 検索機能は、私が言及したユースケースをカバーしています。任意の種類の AST 検索を可能にするプラグインを誰かが作成したかどうかについては、まだ興味があります。「すべての文字列連結を取得」 (+ 演算子と StringLiteral オペランドを使用した InfixExpression)
groovy - Groovy - AST 変換、実用的な例
AST 変換は Groovy で実装されます。AST 変換を使用した実用的な例は何ですか?
java - 日食の検索ボタンでのASTの使用法
日食の検索ボタンでAST(抽象構文木)がどのように使用されているか知りたいのですが、リンクや情報を教えてもらえますか?ヘルプ
c++ - C ++コードをxmlに変換できるアクティブに保守されているツールはありますか?
C ++コードをxml、または解析しやすい他の形式に変換できるツールはありますか?xmlをC++に戻すオプションもあれば素晴らしいと思います。私はすでにdoxygenのxml形式を知っています...多分それは私だけですが、私はそれが特に役立つとは思いません。
lambda - antlr と DLR の併用 -- AST 変換
ANTLR を介して生成された AST があり、それを DLR 互換のもの (式ツリー) に変換する必要があります。ただし、式ツリーはインスタンス化時にサブツリーを必要とするため、これにはツリーパターンマッチャーを使用できないようです(これは取得できません)。どのソリューションを使用するのが最適ですか?
python - PythonAST処理
私はPythonASTを持っています[ast.parse()によって返される]。
私はこれがクラスメソッドのASTであることを知っています。
同じクラスの他のメソッドへのすべての呼び出しを見つけるにはどうすればよいですか?
基本的に、私は次のようなものを収集したいと思います。
次のようなコードスニペットの場合:
ASTを受け入れ、同じクラスのメソッド内で呼び出されているクラスの他のメソッド[文字列としてのメソッド名]のリストを返す関数が必要です。