Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
何かJavaScriptのソースコードを機械的にチェックするためのツールを作りたいという場合に、JavaScriptのASTというものを触る必要が出てくると思います。 この記事では、その取っ掛かりとなる案内を簡単にまとめたものです。 ASTとは AST(Abstract Syntax Tree)はコードをパースした抽象構文木のこと。 JavaScriptの場合はJavaScriptオブジェクト(JSON)として表現されます。 コード: { "range": [ 0, 10 ], "type": "Program", "body": [ { "range": [ 0, 10 ], "type": "VariableDeclaration", "declarations": [ { "range": [ 4, 9 ], "type": "VariableDeclarator", "id": {
ちょっと、ソースコードをパースして、とある関数(require)を呼び出して作った関数を使っている箇所のピックアップをやろうと思ったのですが、ASTを直接扱うのはいろいろめんどいです。 ソースコードをパースしてAST化するのはacornとかesprimaが有名。acornはプラグインでJSXにも対応できたりするらしい。 どのパーサを使っても、基本的にはここの定義に準拠するはず https://github.com/estree/estree/blob/master/es2015.md 子供をたどるのに、DOMのchildrenみたいな、「子供を取得するにはこれだ!」という決まった方法はない。 ノードごとに子供の名前が違うんだけど、全部のノードごとに分岐して探さないといけないの? var a = 10;だと変数定義(VariableDeclaration)扱いだけど、aがすでにある状態だとa
$ jscodeshift --help Usage: jscodeshift [OPTION]... PATH... or: jscodeshift [OPTION]... -t TRANSFORM_PATH PATH... or: jscodeshift [OPTION]... -t URL PATH... or: jscodeshift [OPTION]... --stdin < file_list.txt Apply transform logic in TRANSFORM_PATH (recursively) to every PATH. If --stdin is set, each line of the standard input is used as a path. Options: "..." behind an option means that it can be
以前書いた記事からのどんな感じの動きがあったのかまとめたものです。 最近気になったJavaScript AST周りの動き | Web Scratch 前回の記事 2015年の1月前後の内容が中心です。 前回のに比べ、JavaScriptのエコシステムの根幹でもあるパーサやASTの仕様まわりについての動きが最近活発なので、その辺を中心にまとめています。 RReverser RReverserさんはここ最近のJavaScript ASTに関係するところならどこでもみかけると思うので紹介。 主にacornのコミッターでもありますが、後ほど出てくるESTreeやBabelなど色々なところで活動しています。 またasterというASTの効率的に処理できるツールチェインを出したりしています。 AST周りでよく見る人やパーサをいかにまとめてあります。 JavaScript AST Links. esto
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く