ASTとは腐れ縁にある気がするeller86です。専攻とかは全然関係ないんですが、大抵の仕事でその姿を見ているような……。 さてJavaScriptのAST変換を使ってenchant.jsのassetsを変換できないか試してみました。以前は正規表現でなんとかしましたが、どうせやるならASTの方が残念なバグが少なく済むでしょう。使用するライブラリはburritoです。 Hello, world! コード: var burrito = require('burrito'); burrito('console.log("Hello, world!")', function (node) { console.log(node.name); }); 実行結果: stat call string すごく単純です。burritoえらい。PMDのVisitorを使ったAPIも好きですが、小粒な変換ならこれ
Refactoring your JavaScript code with Grasp | Grasp - JavaScript structural search, replace, and refactor という記事では、Grasp を使ったJavaScriptコードのリファクタリングについて書かれています。 この記事は Refactoring your JavaScript code with Grasp | Grasp - JavaScript structural search, replace, and refactor の簡単な紹介です Grasp は JavaScript ASTを元にgrepのような検索、sedのような置換などを行えるコマンドラインツールです。 GraspはNodeで(実際にはLiveScriptで)書かれているツールで npm 経由でインストールできま
es**シリーズの仕様意訳第三回。前回はestraverseでした。今回はescope。 escope escopeは、ASTを喰ってスコープを解析するためのモジュール。 estraverseと同じように、ASTをescope.analyzeに喰わせるだけで動く。 デモを見ると挙動がよく分かる。サンプルコードがモナドなあたりに玄人臭を感じますねw 使い方は前回、前々回同様、超カンタン。 escopeとASTを吐かせるためのesprimaをnpmで取ってくる。 npm install esprima npm install escope あとはこんな感じで実行。 var esprima = require('esprima'); var escope = require('escope'); var ast = esprima.parse('console.log("Hello, world
es**シリーズの仕様意訳第二回。前回はesprimaでした。今回はestraverse。 estraverse estraverseはASTの巡回コードをお手軽に書けるようにするモジュール。 ASTは子ノードのプロパティ名がまちまちなので、巡回させるコードを書くのが結構手間なんで重宝する。 基本的にesprimaの吐いたASTをestraverse.traverseに喰わせるだけでOK。 ここらへんも本当によくできていて、esprimaとestraverseは疎結合を保っている(AST仕様のみで結びついているといってもよい)。 ではいってみよう。estraverseと、ASTを吐かせるためのesprimaをnpmからとってくる。 npm install esprima npm install estraverse 以下のようにコードを作成。 var esprima = require('
今日の概要 実は使われてるJavaScript AST JavaScript AST(Abstract Syntax Tree)とは? JavaScript ASTを使ったツール紹介 使うだけじゃなくて書いてみよう browserify Node.jsで書かれたものをブラウザ向けに変換するツール Node環境で開発 -> browserifyでビルド -> ブラウザで動く JavaScriptのコードを 変換 する ≒ JavaScript ASTを見て変換 する 本体の色々な部分、transform pluginなどでASTを使ってる
Esprima is a high performance, standard-compliant ECMAScript parser written in ECMAScript (also popularly known as JavaScript). Features Full support for ECMAScript 2019 (ECMA-262 10th Edition) Sensible syntax tree format, with optional node location info Experimental support for JSX, a syntax extension for React Heavily tested (~1600 tests with full code coverage) API Esprima can be used to perfo
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く