2012-04-24 6 views
4

Mozillaはan API for parsing a Javascript moduleを配信してabstract syntax treeを生成しています。彼らはそれをReflect.parseと呼ぶ。エンジンに依存しないReflect.parseはありますか?

Javascriptでスタンドアロンモジュールとして書かれたReflect.parseなどがありますか?私は構文木を生成するためにES5エンジンで実行できる何か?それは私のためにこれを行うC + +でスタンドアロンのツールですか?またはサービスですか?


私は本当に簡単な自己評価匿名機能のためにdoctorjs.orgを試してみました。私はそれを間違っているのですか?

(function (scope) { 
    .... 
}(this)); 
+0

ところで、*これはスコープとは何も関係ありません。上記のコードスニペットでは、変数* scope *は、(匿名)関数を呼び出す実行コンテキストの* this *オブジェクトを参照します。オブジェクトはまったくオブジェクトでも、ES5 strictモードでは 'null'または' undefined'です。スコープはグローバルなコードのように見えるので、* scope *はグローバルオブジェクトを参照するため、* global *や* GLOBAL *などの名前を付けたほうがはるかに優れていますが、ブラウザーのような環境を想定しています適切ではない)。 – RobG

+0

私は知っています、Robに感謝します。 – Cheeso

答えて

2

JS.js(JavaScriptで書かれたJavaScriptインタープリタは)おそらく部品としてのJavascriptパーサーを持っているが、私はそれが外部からのアクセスまたは使用を取得することがいかに簡単であるかを知りません。

0

何かが構文木を生成するために? これは私のためにこれを行うC++のスタンドアロンツールですか?

あなたがソースを取得し、あなたは次のようになり、その小さなスクリプトは、SpiderMonkeyのの機能をラップすることができますので、Reflect.parseが内蔵されていますSpiderMonkeyのJavaScriptのスタンドアロンシェル(MozillaのFirefoxでJSエンジン)を、構築することができます

ツールとして使用できます。

4

私が数ヶ月前に始めたプロジェクトEsprima(esprima.org)を試してみてください。 ASTの出力はMozilla Reflect.parseと互換性があり、IE 6からNode.jsのほぼすべての場所で動作します。パーサーは非常に高速(競合他社の中でも最速)で、100%コードカバレッジ。

EsprimaはES5に準拠しています(厳密モードも含む)、WIP for ES6(およびHarmony)機能もサポートされています。 jQueryのような標準ライブラリから数百万行のWebアプリケーションコードまで、何の問題もなくJavaScriptを数多く解析することが知られています。

+0

私は今それを試みており、それはかなりうまくいっています。 – Cheeso

関連する問題