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になってしまいそう。四則演算とメモリ管理も自前で実装したい。

『CPUの創り方』購入

名著と言われる『CPUの創り方』を購入。原理を理解して実装していくという書き方が読んでて心地よい。これに沿って創っていこうと思う。

とはいえ、こんなマニアックな本を買っておきながら実は電子工作は初めてなのでゆっくりやっていきます。まずはNAND回路とフリップフロップを自前で実装するところからかな。材料を買い出しに行きたいが、このご時世なので通販でポチる。