問題タブ [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# - 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を参照できます。
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]
c# - Microsoft CCI - コンパイラを作成するためのリソース、リファレンス
しばらく前、私はコンパイラに取り組んでいましたSystem.Reflection
.AST からコード (IL) を生成していました。今、私は取り組みたい別のコンパイラのアイデアを持っています (これは別のペット プロジェクトであり、少なくとも現在は製品コードで使用されるものではありません)。
ご存知のように、ペット プロジェクトには、実稼働コードよりも大きな利点が 1 つあります。それは、実験して失敗できることです。そこで、 Microsoft の CCIを使用してコンパイラを作成することにしました。
私が見つけた唯一の良い参考資料は、基本言語のサンプル コンパイラ (これは CCI on codeplex の一部です) ですが、チュートリアル、本、記事など、入手できる他のリソースがあればいいのにと思います。コードを勉強すること以外のより多くの情報 (何かを学ぶための最良の方法であるとは限りません。解決策が表示されますが、どのような代替手段があるか、またはそのようなコードが機能する理由はわかりません)。
では、コンパイラの作成と AST の処理に関して、CCI に関するリソース (チュートリアル、書籍) はありますか?
c# - LINQ式ツリーで実行できる最大数はいくつですか?
LINQ式ツリーが実行できる最大値はどれくらいですか?
クラスを定義できますか?宣言された名前、修飾子、パラメータータイプ、リターンタイプがすべて含まれているメソッドはどうですか?
プログラムは常にツリー自体を定義する必要がありますか?特定のC#ファイルからツリーを生成することは可能ですか?
python - Jythonのソース/astを変換する
Jythonで解決すべき問題があります。私が持っている関数は次のようになります:
このように見えるテストはたくさんあり、ほとんどがok = ...テストが含まれていますが、他にもいくつかのテストが行われています。1つの名前空間からのみ取得されるため、テスト可能な関数はわかります(または、「ok =」の部分を残すことができます)。問題は、ソースを自動的に変換する方法です。そのため、私は次のように記述します。
残りは自動的に生成されますか?
私はunparseとastについて知っています-この問題に取り組むためのより良い方法はありますか?(ええ、私は知っています-多分-モナドのように)私もrope
図書館を見ているので決定できません...ここで選択するのに最適な方法はどれですか?私が説明した変換は私が必要とする唯一のものであり、実際のコードに含まれる一時ファイルを作成してもかまいません。
antlr - 式のANTLR文法
式処理文法 (ネストされた括弧などを処理する) を実装しようとしています。これまでのところ、次のものがありますが、一部のケースに対応できません (成功/失敗のケースは、次のコード ブロックの後に表示されます)。何が起こっているか知っている人はいますか?
注: varname +=およびvarname =は、XText の追加の AST 生成ヘルパーにすぎません。今のところは気にしないでください。
そして、ここに解析/失敗のリストがあります:
python - 引用符で囲まれていない Python 関数/ラムダをどのように AST に変換しますか? 2.6
これは簡単なように思えますが、どこにも答えが見つかりません。また、自分で答えを導き出すこともできません。引用符で囲まれていないpython関数/ラムダをASTに変換するにはどうすればよいですか?
これが私ができるようにしたいことです。
python - プログラムでPythonバイトコードを生成する方法はありますか?
Pythonインタープリターをハックして、小さなDSLを作成してみたいと思います。この理論的なコード(LINQ式ツリーと同様)のようなことを実行できるモジュールはありますか?
それとも、Pythonソースコードを生成する方が簡単でしょうか?これは、C、SWIG、またはCythonを使用することで簡単にできますか?
c# - C# でパーサーを作成する最良/最速の方法
自分の言語を解析するために C# でパーサーを構築する最良の方法は何ですか? 理想的には、文法を提供し、抽象構文木を出力として取得したいと考えています。どうもありがとう、ネストール