toyintelligence’s diary

コンピュータの基礎を遊んで学ぶ趣味ブログ

習作インタプリタ言語myownlang

github.com

一月ほど前に試しに作ったPython製のインタプリタ言語。何も勉強せず自前で(なので名前はmyownlang。つまらん名前だw)作った。ASTすら使ってないので大変非効率的だが、それなりに動く。メモリ管理はPythonの辞書に丸投げ。

普通のプログラミング言語と比べて欠けている機能は関数、配列、整数以外の変数型、ファイル入出力など。

FizzBuzzはこんな感じ。

DEFVAR x
ASSIGN x 1
DEFVAR xmax
INPUT xmax
WHILE (<= x xmax) {
    IF (== 0 (% x 3)) {
        IF (== 0 (% x 5)) {
            PRINT 333555
        }
        IF (!= 0 (% x 5)) {
            PRINT 333
        }
    }
    IF (!= 0 (% x 3)) {
        IF (== 0 (% x 5)) {
            PRINT 555
        }
        IF (!= 0 (% x 5)) {
            PRINT x
        }
    }
    ASSIGN x (+ x 1)
}
END

次はASTを使って実行する言語を作りたいが、これを作っている最中にLISPのシンプルさと実用性に感動してしまったので、ほぼLISPになってしまいそう。四則演算とメモリ管理も自前で実装したい。