# Node.js でつくる Node.js
[「RubyでつくるRuby ゼロから学びなおすプログラミング言語入門」](https://www.amazon.co.jp/dp/4908686017) に感銘を受けて、Node.jsでミニNode.js作りにチャンレンジしています
* [Step1:ソースのパース](https://qiita.com/massie_g/items/3f604413ca5ea4552b45) ... 初めての esprima
* [Step2:単純化](https://qiita.com/massie_g/items/6c852f96f7271e9e70bf) ... 抽象構文木(AST)を単純化
* [Step 3: +演算子を評価する](https://qiita.com/massie_g/items/ad6ae33ec1e46b67ad57) ... 足し算を実行
* [Step 4: 四則演算で電卓を作る](https://qiita.com/massie_g/items/40591822228d7e166b63) ... 電卓を作るところまでと、比較演算子の実装
* [Step 5: 変数を使う](https://qiita.com/massie_g/items/1e5bf8b3cca0ae08fd1c) ... 変数の宣言、代入、参照
* [Step 6: 条件分岐と繰り返し](https://qiita.com/massie_g/items/f801692fb9b07d007285) ... ifで条件分岐、 whileで繰り返し
* [Step 7: 組み込み関数](https://qiita.com/massie_g/items/22506a9dabbd13cee13f) ... 組み込み関数を呼び出す
* [Step 8: ユーザ定義関数](https://qiita.com/massie_g/items/e537f14300a6113a6237) ... 自分で関数を定義できるように
* [Step 9: 配列とハッシュ](https://qiita.com/massie_g/items/b2a94e98ff80868bedec) ... 配列とハッシュのサポートまで
* [Step 10: モジュール分割](https://qiita.com/massie_g/items/1b59efb5f891b3dda05b) ... モジュールを利用し、オブジェクトを回避
* [Step 11: 無理矢理ブートストラップ](https://qiita.com/massie_g/items/5d8d61cdbf54390d8709) ... return処理抜きでブートストラップ
* [Step 12: ひとまず完結](https://qiita.com/massie_g/items/35555286594e1cf780e1) ... return処理も実現してブートスラップ
## おまけ
* [Extra 1: ミニRubyの単純化Treeを実行する](https://qiita.com/massie_g/items/3a4888168bb288965393) ... ミニRubyの単純化Treeを読み込んで実行する
* [Extra 2: 演算子を追加する](https://qiita.com/massie_g/items/d1ef41bab2f8fd7343b5) ... 否定演算子や論理演算子を追加
## License / ライセンス
* This sample is under the MIT license
* このレポジトリはMITランセンスで提供されます