Skip to content

wreulicke/monkey

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Monkey

Go言語で作るインタプリタをベースに実装した monkey 言語です。

Usage

$ 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

About

Toy Programing Language implemented in Go

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages