Go で実装された Monkey プログラミング言語のインタプリタです。
go build -o monkey./monkeyこれにより、Monkey のコードを入力して、すぐに結果を確認できるインタラクティブな REPL が起動します。
ビルドせずに直接実行することもできます:
go run main.goMonkey は以下の機能をサポートしています:
- 整数とブール値: 基本的なスカラー型
- 文字列: 文字列リテラルと操作
- 配列: 配列リテラルとインデックスアクセス
- ハッシュマップ: キー・バリューデータ構造
- 演算子: 算術、比較、論理演算子
- 関数: ファーストクラスの関数とクロージャ
- 条件分岐:
if/else式 - return 文: 関数からの早期リターン
- 変数束縛:
letによる変数代入 - 組み込み関数:
len()、puts()、first()、last()、rest()、push()
let x = 5;
let y = 10;
x + y
let add = fn(a, b) { a + b };
add(5, 3)
let arr = [1, 2, 3, 4, 5];
arr[0]
len(arr)
let person = {"name": "Alice", "age": 30};
person["name"]# すべてのテストを実行
go test ./...
# 詳細出力でテストを実行
go test -v ./...
# 特定パッケージのテストを実行
go test -v ./evaluator
go test -v ./parser
go test -v ./lexerインタプリタは以下の 3 段階のパイプラインに従っています:
- Lexer: ソースコードをトークン化
- Parser: 抽象構文木(AST)を構築
- Evaluator: AST を実行するツリーウォーキングインタプリタ
詳細なアーキテクチャドキュメントは CLAUDE.md を参照してください。