Abstract Syntax Tree .. GithubでSpiderMonkey ASTにコンパイルすることをいつも聞いていました。
それで、それはJS構文ツリーの実際の標準ですか? V8がありますが、V8は同じ種類のASTを使用していますか?
どうすればそれで遊ぶことができますか?
SpiderMonkeyは parser api を提供します。これはおそらく、構文オブジェクトを手に入れる最も簡単な方法です。
また、開いているjs-jsEsprima のようなパーサー(これはECMAScriptですが、まさに路地のすぐ上にあります)
1. AST Explorer をご覧ください。 10を超えるパーサーによって生成されたASTを探索するオンラインツール。 AST言語の木を学ぶには良いツールです。
Github.comのAST Explorerソース 。
2.また、jsコードを JavaScript AST Visualizer に貼り付け、[show ast]ボタンをクリックすると、AST =視覚的に。
デモjsコード:
function foo(d) {
d += 3;
return d+999
}
function bar(d) {
return d*100
}
Marijnh教授からacronパーサーを試してみたい場合 https://github.com/marijnh このリンクを試してください: https://astexplorer.net/
これは小さく、高速なJavaScriptパーサーであり、完全にJavaScriptで記述されています。
上記の JavaScript AST Visualizer はEsprimaエンジンを使用し、JavaScrptでも記述されています。
JavaScriptは、解析で優位になりますAST JavaScriptエンジンは今日最適化されているためです。 https://en.wikipedia.org/wiki/JavaScript_engine
SpiderMonkey AST JS構文ツリーの標準?V8は同じ種類のASTを使用していますか?
これらのWebブラウザーエンジンには、両方ともAST C++で記述された内部処理があります。これが、JavaScrptコードがeval
を除くほとんどの場合高速に実行される理由です。
私はJavascript ASTの仕様を1つだけ知っています: https://github.com/estree/estree
これは、MozillaからのDave Hermanの発行に由来し、それ以来コミュニティの標準として進化しました。したがって、SpiderMonkeyとある程度一致するはずですが、V8とJSCについてはわかりません。
誰かが問題に関する詳細情報を提供できれば幸いです。