問題タブ [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 投票する
4 に答える
368 参照

antlr - TemplateLanguage/VewEngineの作成

実際の仕事をする以外に、かゆみがあります。私の悩みは、別の言語(Template Toolkit / Perl)のテンプレートシステムを厳密に模倣するビューエンジンを作成することです。これは、新しい種類のプロジェクトを学ぶために時間があったり、やったりした場合の1つです。

私はCoCo/RとANTLRを調べることに時間を費やしました。正直なところ、それは私の脳を傷つけますが、CoCo / Rの一部は沈んでいます。残念ながら、ほとんどの例はソースコードを読み取るコンパイラの作成に関するものですが、テンプレート用のプロセッサを作成する方法をカバーしているようです。

はい、それらは同じことですが、実際のコードが解析されて実行されるのではなく、ソースのほとんどがhtmlであるテンプレートの言語を定義する方法に頭を悩ませることはできません。

この種のことのためにそこに良い初心者のリソースはありますか?私はSparkでガナーを取りましたが、レポに文法が含まれていないようです。

多分それはやり過ぎであり、ファイル内のテンプレート構文をc#にテスト置換してコンパイルすることができます。http://msdn.microsoft.com/en-us/magazine/cc136756.aspx#S2

あなたが私の立場にあり、言語作成の専門家ではなかったとしたら、どこから始めますか?

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

c# - 影響を受けるメソッド(名前)を示すコードファイルのバージョン差分を取得する

(Java / C#の)コードファイルの2つのバージョン間の差分を取得したいのですが、そこから影響を受けるメソッド(名前)のリストを取得します。これは実装されていますか?

これには、差分から戻ってくる線のAST分析が必要になると思います。

これのポイントは、checkstyle / findbugsを改良して、スプリント中に触れられたメソッドでのみ機能するようにすることです。

差分を実行するための日食のプロセスを確認しました。

http://dev.eclipse.org/viewsvn/index.cgi/org.eclipse.compare.tests/src/org/eclipse/compare/tests/

実際のASTではなく、行番号でのみ機能するようです。line#=>methodNameマッピングに興味があります。

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

python - Python のベスト プラクティス: 抽象構文ツリー

抽象構文ツリーの変更

astをビルドして変更し、オプションでPythonバイトコードとして書き出して、後でオーバーヘッドなしで実行できるようにしたいと考えています。

とのast ドキュメントをハッキングしてきましたが、このタイプのコードのベスト プラクティスに関する適切なソースが見つからないようです。python3.0python2.6

質問

Python で抽象構文ツリーを変更するためのベスト プラクティスとガイドラインは何ですか?

[編集]

Unknownは、byteplayがそのようなライブラリの良い例であると述べています。

また、ベンフォードは、抽象構文ツリーを使用して Python コードを SQL に変換するGeniuSQLを挙げています。

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

java - 抽象構文ツリーベースのインタープリターでクラスを表現する方法

関連する質問を読みましたが、質問に直接対処しているようには見えません。PHPスクリプトインタープリターの作成に取り組んでいます。クラス以外のすべてに対して適切なノードを生成する AST があります。クラスの処理は関数の処理とは少し異なるため、スタンドアロンのクラスや他のクラスを拡張するクラスを処理する方法を探しています。

ANTLR を見てきましたが、これは組み込みプラットフォーム用であるため、オーバーヘッドを許容できません。私が探しているのは、概念的に AST のクラスの背後にある理論であるため、インタープリターのエグゼキューター部分によって実行できます。この問題に対する特定の回答を含む適切なリンクは、間違いなく高く評価されます。

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

java - Eclipseの外部のプロジェクトでJavaEclipse抽象構文木を使用するにはどうすればよいですか?(つまり、日食プラグインではありません)

Eclipseの外部のプロジェクトでJavaEclipse抽象構文木を使用するにはどうすればよいですか?(つまり、日食プラグインではありません)

私が見たすべてのEclipseASTの例は、Eclipseプラグイン用です。非EclipseプロジェクトにEclipseASTを使用するプロジェクトの方法(つまり例)はありますか?

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

java - Eclipse抽象構文ツリーの差分

Eclipseで次のコードを考えます。

Eclipse Compare API(org.eclipse.compare)をどのように使用してASTの違いを見つけますか?(そして、これはプラグインの外で行うことができますか?)

私は次のAPIを見ています

http://kickjava.com/src/org/eclipse/compare/structuremergeviewer/Differencer.java.htm http://kickjava.com/src/org/eclipse/jdt/internal/ui/compare/JavaStructureCreator.java.htm http://kickjava.com/src/org/eclipse/compare/CompareUI.java.htm

誰でもサンプルコード(またはAPI-ただし、コードが推奨されます)を指すことができます。

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

c# - 行番号からのメソッド名

特定のクラス ソース コード (Java/C#) の行番号が与えられた場合、それが該当するメソッドの名前を取得する簡単な方法はありますか? (1つに収まる場合)(おそらく抽象構文木を使用)

(これは、checkstyle の出力を触れたメソッドだけに制限するのに役立ちます)。

Line#->MethodName を実行するには、抽象構文ツリーを使用する必要があると思います。