Skip to content

Latest commit

 

History

History
83 lines (58 loc) · 1.9 KB

File metadata and controls

83 lines (58 loc) · 1.9 KB

Monkey プログラミング言語

Go で実装された Monkey プログラミング言語のインタプリタです。

はじめに

ビルド

go build -o monkey

実行

./monkey

これにより、Monkey のコードを入力して、すぐに結果を確認できるインタラクティブな REPL が起動します。

ビルドせずに直接実行することもできます:

go run main.go

言語機能

Monkey は以下の機能をサポートしています:

  • 整数とブール値: 基本的なスカラー型
  • 文字列: 文字列リテラルと操作
  • 配列: 配列リテラルとインデックスアクセス
  • ハッシュマップ: キー・バリューデータ構造
  • 演算子: 算術、比較、論理演算子
  • 関数: ファーストクラスの関数とクロージャ
  • 条件分岐: 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 段階のパイプラインに従っています:

  1. Lexer: ソースコードをトークン化
  2. Parser: 抽象構文木(AST)を構築
  3. Evaluator: AST を実行するツリーウォーキングインタプリタ

詳細なアーキテクチャドキュメントは CLAUDE.md を参照してください。