習作インタプリタ言語myownlang
一月ほど前に試しに作った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になってしまいそう。四則演算とメモリ管理も自前で実装したい。