追加機能など
main ブランチにはマージせずにブランチで個別に試しています。
- 真偽値リテラル
true
,false
- break
- while文の最後にジャンプ
- const
- 参照のみ可能(更新は不可)なローカル変数
- if/else
- lexer で case 文に書き換えるだけの簡易実装
- 単項演算子 -
- Ruby っぽい見た目に
func
をdef
にして、{ ... }
をやめてend
で閉じるようにしたもの- これだけでも結構 Ruby っぽい雰囲気になる
- 関数呼び出しを式として扱う
f1(f(2))
のように関数呼び出しを入れ子にしたり、while (f()) { ... }
のように while文や case文の条件式で関数呼び出しを使えるようにしたもの- call_set文が不要になる
- 型チェック
リファクタリング
- 関数コンテキストオブジェクトの導入
fn_arg_names
,lvar_names
を愚直に渡していたところを context オブジェクトとしてまとめて渡す形に書き直してみたもの。
セルフホスト
いくつか機能を追加するとセルフホストできるようになります。