Go言語で作るインタプリタをベースに実装した monkey
言語です。
$ go run .
>> let x = 2; x
2
>> let x = 2; puts(x)
2
null
>> let [x] = [2]
[2]
>> let [x] = [2]; x
2
>> let {x} = {"x": "2"}; x
2
>> 2 | fn(x) { x }
2
>> [1, 2] | fn([x, y]) { x + y }
3
>> {"x": 1, "y": 2} | fn({x, y}) { x + y }
3
本に載っていない実装として以下を実装しています。
- runeを使ったlexer
- (tokenのみ) 小数点数
- ParserとInterpreterはサポートしていないのでエラーで落ちます
- エスケープ形式の文字列
- パイプラインオペレータ
- 配列やハッシュ形式のDestructuring
- let文におけるDestructuring
- 関数リテラルにおける引数のDestructuring