Comments (5)
必要とされる知識
- JavaScriptの文法
- ECMAScriptという認識
- Node.js(コマンドラインツールを書いたことがあるといい)
学べること
- ASTとは何か
- コードからASTの作り方(パース)
- ASTの変換とは何か
- ASTをコードにする方法(ジェネレータ)
- SourceMapについても
- ASTツールの作法
理論よりも実際にツールを作りながら学べる感じがいいと思う。
現実味があって小さめの良い題材が必要
ASTツール(モジュール)の作法
これが一番の課題でそんなものはちゃんと決まってない気がするけど、
ただ一点だけASTツールはASTを扱えるインターフェースを提供するという事についてだけ書いておきたい気がする。
今、ツールの入力として以下の3つがある気がする。
- ファイルパス
- ファイルのコンテンツ
- AST
これらをそれぞれモジュールレベルまで分けるのは面倒な事もありそうだけど、インターフェースレベルでは分けておくといいという話があると人類の役に立つと思う。
SourceMapが絡むと、一見関係ないパスとコンテンツが絡み合ってしまうケースがある気がするので、そこを上手く解くパターンの提供が必要そう。
from efcl.github.io.
- 真似したくなるような例題
from efcl.github.io.
草案
目的
- ASTを使ったツールがどのような仕組みで動いているのか知ること
- JavaScriptにおけるASTは身近な存在であることを知ること
- ASTを知ることで、そのライブラリ/ツールの設計が問題無いのかを描くことでき、判断の基準の一つと使えるようになること
パースをしてみよう
ASTをみてみよう
ASTチェッカーを書いてみよう
- ASTをread onlyで扱う
ASTを変更してみよう
- ASTを変更してみる
ASTからコードを生成してみよう
- escodegen
応用編
- ライブラリ?
- 仕様
- パーサ
from efcl.github.io.
console.log
を有無をチェックするツールconsole.log
を削除するツール
from efcl.github.io.
単純にconsole.log
を扱うだけだとイマイチな気がする。
if(is_debug){
console.log("");
}
とかみたいな構造でマッチした場合とか
from efcl.github.io.
Related Issues (20)
- 複数のURLをまとめてPocketに突っ込むアプリ HOT 1
- JekyllをCircle CIからデプロイ HOT 1
- Jekyll 2から3へのアップデート
- Edit リンクがリンク切れ
- セキュリティ寿司次は行きたい HOT 12
- Broken markdown
- HTTPSへ移行する HOT 1
- Use Travis CI
- ブラウザやNode.jsで動く軽量な非同期KeyValueストレージ @kvs HOT 1
- monorepo + TypeScript Project Reference HOT 2
- JavaScript-Plugin-Architectureのアップデート HOT 1
- スクショメモアプリ mumemo HOT 1
- eslint-plugin-typescript-compatのブログ
- semgrepを使ったマイグレーション
- JavaScriptをTypeScriptにマイグレーションする HOT 1
- 音声の文字起こしのアプリ
- [niconico] deflist API 廃止
- Maintainer Month: メンテナンスを続けるコツ HOT 2
- 新しい JavaScript ライブラリ HOT 1
- /page/2/ から "新しい記事へ" をクリックすると404になる
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from efcl.github.io.