問題タブ [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.

0 投票する
3 に答える
4175 参照

c# - ANTLR を使用して独自の C# コンパイラを構築する: Compilation Unit

ルート、クラス、メソッドなどを抽出するために、compile_unit_return タイプの x を使用して何ができますか? そのアダプタを抽出する必要がありますか? それ、どうやったら出来るの?Compilation_unit_return は私の CSParser でそのように定義されていることに注意してください (これは ANTLR によって自動的に生成されます):

ただし、取得しているツリーはオブジェクト型です。デバッガーを使用して実行したところ、BaseTree タイプであることがわかりました。しかし、BaseTree はインターフェースです。それが BaseTree とどのように関係しているかはわかりませんし、このツリーから詳細を抽出する方法もわかりません。

クラス、メソッド、変数などにアクセスするビジターを作成する必要があります。ParserRuleReturn クラスは RuleReturnScope から拡張され、開始オブジェクトと停止オブジェクトを持ちますが、それが何であるかはわかりません。

さらに、ANTLR が提供するこの TreeVisitor クラスがありますが、これは紛らわしく見えます。コンストラクターにパラメーターとしてアダプターを渡す必要があります (そうでない場合は、デフォルトの CommonTreeAdaptor を使用します)。これが、以前にアダプターを取得する方法について尋ねた理由です。そして他の問題も。API については、 http://www.antlr.org/api/CSharp/annotated.htmlを参照できます。

0 投票する
2 に答える
4158 参照

java - EclipseのASTVisitor

プロジェクトでASTVisitorを実行する方法を学んでいるので、そのための包括的なAPIを備えたEclipseを使い始めました。

パックされたサンプルプロジェクトを次のWebサイトからダウンロードしました: http ://www.eclipse.org/articles/article.php?file = Article-JavaCodeManipulation_AST / index.html

しかし、コードにはmain()メソッドがないことに気付きましたが、プログラムを実行することはできます。誰もが理由を知っていますか?[qn 1]

ただし、コードはコンパイルされすぎて機能しないようであり、基本的なことを行うための手順はあまり明確ではありません。

だから私もこれを見続けました: http ://www.vogella.de/articles/EclipsePreferences/article.html

execute(ExecutionEvent event)を呼び出すためのメインメソッドを作成する方法を知っている人はいますか?-サンプルコードスニペットを提供しますか?[qn2]ExecutionEventの使い方がわかりません...

「スレッド"main"java.lang.IllegalStateExceptionの例外:ワークスペースが閉じています。」が発生し続けました。実行イベントのパラメーターを削除したり(extends部分も削除する必要があります)、メインでコードの一部を使用したりしても。の「ResourcesPlugin」と関係があるようですIWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot()。誰もが理由を知っていますか?[qn 3]

0 投票する
1 に答える
3224 参照

c# - Microsoft CCI - コンパイラを作成するためのリソース、リファレンス

しばらく前、私はコンパイラに取り組んでいましたSystem.Reflection.AST からコード (IL) を生成していました。今、私は取り組みたい別のコンパイラのアイデアを持っています (これは別のペット プロジェクトであり、少なくとも現在は製品コードで使用されるものではありません)。

ご存知のように、ペット プロジェクトには、実稼働コードよりも大きな利点が 1 つあります。それは、実験して失敗できることです。そこで、 Microsoft の CCIを使用してコンパイラを作成することにしました。

私が見つけた唯一の良い参考資料は、基本言語のサンプル コンパイラ (これは CCI on codeplex の一部です) ですが、チュートリアル、本、記事など、入手できる他のリソースがあればいいのにと思います。コードを勉強すること以外のより多くの情報 (何かを学ぶための最良の方法であるとは限りません。解決策が表示されますが、どのような代替手段があるか、またはそのようなコードが機能する理由はわかりません)。

では、コンパイラの作成と AST の処理に関して、CCI に関するリソース (チュートリアル、書籍) はありますか?

0 投票する
2 に答える
1182 参照

c# - LINQ式ツリーで実行できる最大数はいくつですか?

LINQ式ツリーが実行できる最大値はどれくらいですか?

クラスを定義できますか?宣言された名前、修飾子、パラメータータイプ、リターンタイプがすべて含まれているメソッドはどうですか?

プログラムは常にツリー自体を定義する必要がありますか?特定のC#ファイルからツリーを生成することは可能ですか?

0 投票する
1 に答える
243 参照

python - Jythonのソース/astを変換する

Jythonで解決すべき問題があります。私が持っている関数は次のようになります:

このように見えるテストはたくさんあり、ほとんどがok = ...テストが含まれていますが、他にもいくつかのテストが行​​われています。1つの名前空間からのみ取得されるため、テスト可能な関数はわかります(または、「ok =」の部分を残すことができます)。問題は、ソースを自動的に変換する方法です。そのため、私は次のように記述します。

残りは自動的に生成されますか?

私はunparseとastについて知っています-この問題に取り組むためのより良い方法はありますか?(ええ、私は知っています-多分-モナドのように)私もrope図書館を見ているので決定できません...ここで選択するのに最適な方法はどれですか?私が説明した変換は私が必要とする唯一のものであり、実際のコードに含まれる一時ファイルを作成してもかまいません。

0 投票する
3 に答える
8389 参照

antlr - 式のANTLR文法

式処理文法 (ネストされた括弧などを処理する) を実装しようとしています。これまでのところ、次のものがありますが、一部のケースに対応できません (成功/失敗のケースは、次のコード ブロックの後に表示されます)。何が起こっているか知っている人はいますか?

注: varname +=およびvarname =は、XText の追加の AST 生成ヘルパーにすぎません。今のところは気にしないでください。

そして、ここに解析/失敗のリストがあります:

0 投票する
5 に答える
2806 参照

python - 引用符で囲まれていない Python 関数/ラムダをどのように AST に変換しますか? 2.6

これは簡単なように思えますが、どこにも答えが見つかりません。また、自分で答えを導き出すこともできません。引用符で囲まれていないpython関数/ラムダをASTに変換するにはどうすればよいですか?

これが私ができるようにしたいことです。

0 投票する
6 に答える
4243 参照

python - プログラムでPythonバイトコードを生成する方法はありますか?

Pythonインタープリターをハックして、小さなDSLを作成してみたいと思います。この理論的なコード(LINQ式ツリーと同様)のようなことを実行できるモジュールはありますか?

それとも、Pythonソースコードを生成する方が簡単でしょうか?これは、C、SWIG、またはCythonを使用することで簡単にできますか?

0 投票する
7 に答える
7983 参照

c# - C# でパーサーを作成する最良/最速の方法

自分の言語を解析するために C# でパーサーを構築する最良の方法は何ですか? 理想的には、文法を提供し、抽象構文木を出力として取得したいと考えています。どうもありがとう、ネストール