問題タブ [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.
java - コード分析用 Java ライブラリ
指定されたJavaソースファイルからASTを構築するのに役立つ、またはその逆(ASTreeオブジェクトからコードを生成する)に役立つJavaライブラリはありますか? このようなものが必要ですが、生成されたツリーにプログラムでアクセスできる API が必要です。
c++ - ブーストスピリットASTのヘルプ
大学の研究活動の一環として、単純な B マシン置換を分析するための小さなツールを作成しています。コードは mySubst := var1 + var2 の形式のテスト入力を正常に解析します。しかし、「このアプリケーションは、異常な方法でランタイムを終了するように要求しました。」というポップアップ エラー メッセージが表示されます。コマンド プロンプト ウィンドウに、「アサーション失敗メッセージ」が表示されます。主なプログラムを以下に示します。
BMachineTreeGrammar.hpp ファイルで定義されている文法を以下に示します。
プログラムの実行時に得られる出力は次のとおりです。
この問題を解決するための助けに感謝します。
parsing - ソースからAST、CodeDomへ
私は本LanguageImplementationPatterns(http://pragprog.com/book/tpdsl/language-implementation-patterns)を読んでいますが、概念を明確にするために他のいくつかの本や時折のWebサイトを混ぜ合わせています。私は、些細なプログラミング言語を読み取り、それに対していくつかの基本的な分析を実行するツールを作成しようとしています。
このツールの設計段階で行き詰まっています。ソースファイルを適切に検証する、単純な手書きの再帰下降パーサーを作成しました。ただし、CodeDomツリーを使用してソース操作を実行すると便利です。
質問:
1)このようなツールがとる論理的な手順は次のとおりです。テキストツリーと一致するシンボルテーブルを解析して構築し、これをCodeDomに変換しますか?
2)テキストツリーを構築する場合、最も便利なのはASTであり、CodeDomへの変換が簡単です。ただし、リファクタリングツールは、インラインコメントを保持するために、ステートメントに埋め込まれたすべてのトークンのリストを維持し、これをどのように追跡しますか彼らの木に?
eclipse - 文字列フィールドの値を取得する JDT ASTParser
jdt ASTParser を使用して、Java ファイルで宣言された String フィールドの値を取得する方法はありますか。実際に必要なのは、他のクラスからの可能な依存関係を解決することです。たとえば、
public String str = "somethig"+SomeTherClass.SOMETHING_ELSE.
c++ - C++ (C ではない) で bison と flex を使用して簡単な電卓を作成する
bison と flex を使用して単純な C++ 電卓を作成したいと考えています。私はパーサーを作成するのが初めてであることに注意してください。bison/flex で既にいくつかの例を見つけましたが、それらはすべて C で記述されていました。
私の目標は、クラスに値、操作、関数のノードが含まれる C++ コードを作成して、AST を作成することです (評価は、AST 全体を作成した直後に、ルートから開始して実行されます)。
例えば:
次のように解析されます。
2 番目の AST は次のようになります。
次に、次の疑似コードは AST を反映しています。
ここで、expは次のとおりです。
しかし、このようではありません:
このようにして、ノードを作成する代わりに操作の値を直接取得するためです。
Node には type (of operation)、val1 (Node)、val2 (Node) を含める必要があると思います。場合によっては、val2 が NULL になることがあります。たとえば、上記のsqrtのように、最後に 1 つの引数を取ります。右?
ASTでノードを作成/保持する方法を理解するために、上記の問題(ASTを作成する* .yファイルを含む)に対するC++スケルトン(評価なし)を提案していただければ幸いです。アイデアを得るために、コードを切り取ることができます。
また、ご存知の場合は、既存の (おそらく単純な) 例を教えていただければ幸いです。
お時間とご協力ありがとうございました。
java - Java ソースコードの調査
セキュリティ ポリシーを調べて適用する必要がある Java ソース コードがあります [CWE の適用など]。AST を使用してツリーをたどる初心者向けに、いくつかのアイデアがあります。その他には、正規表現の使用が含まれます。そのようなプロセスに使用できる AST または正規表現以外のオプションはありますか。
java - ast で生成された Java コンパイラ ツリー API からコメントにアクセスするにはどうすればよいですか?
Java コンパイラ ツリー API を使用して、Java ソース ファイルの ast を生成しました。ただし、ソース ファイルのコメントにアクセスできません。
これまでのところ、ソース ファイルからコメントを抽出する方法を見つけることができませんでした..コンパイラ API または他のツールを使用する方法はありますか?
parsing - プラグインから Qt クリエーターの内部パーサーにアクセスできますか?
Qt Creator のプラグインを作成したいのですが、Qt Creator の解析ファイル (AST) にアクセスしたいと考えています。たとえば、変数を右クリックすると、その型が取得されます。
ドキュメントを見ただけで、非常に重要なものは見つかりませんでした。そして、ページを解析しなければならないのではないかと心配しています。
試して成功した人いますか?:p
ocaml - OCamlプログラムのASTを取得することは可能ですか?
特定のOCamlプログラムのASTを取得できるようにしたい(たとえば、ASTをウォークして、インストルメント化されたバージョンのコードを生成したり、何らかの変換を実行したりしたい)。OCamlツールのいずれかがこの機能をサポートしていますか?
python - 単純な関数から名前を抽出するにはどうすればよいですか?
私はこのコードを持っています:
関数'func'から抽出したい:
または次のようなもの:
編集
私がこれを行う必要があると思う理由を説明するためのいくつかの背景
簡単なPython関数のコードをスプレッドシートの数式に変換したいと思います。
だから私は変換する必要があります:
に:
サンプルスプレッドシートhttp://img441.imageshack.us/img441/1451/84516405.png
**再編集*
私がこれまでに持っているもの。
以下のプログラムは以下を出力します。
コード:
ここでいくつかのリソースを見つけました:Python内部:Python ASTの操作ここで 、動作するcodegenモジュールを取得しました。