非専門的シンギュラリティー研究所

無限に動き続けるシステムを表す方法を AI なども使って考えていきます。

コンパイラ(3)

X68000 用に GCCインラインアセンブラに書くためのプログラムを作るのが一つの目的だったのですが、コンパイルした結果を使って(やり方は変ですが)変数の値をいったん別の領域に入れておくように変更すれば動くことがわかったのであまり必要性はなくなりました。GCC構文木を出力することができることがわかったのですが、これもあまり必要性はなくなりました。

この一連の記事では X68000 で動作するプログラミング言語を作ることを目標にいろいろ調べていきます。

明快入門 コンパイラ・インタプリタ開発 C処理系を作りながら学ぶ 林晴比古実用マスターシリーズ』という本を買ったのでこちらを参考にしたいと思います。C で書かれているのでこちらの方が参考になりそうです。『コンパイラ ―作りながら学ぶ―』も C で書かれているのでこちらも参考にしたいと思います。

まずこのブログの記事でプログラミング言語に関連しているものを見ていきます。

自由モノイドのイテレータ

「自由モノイドのイテレーター」の記事でプログラミング言語を作っているので、これを見ていきます。

(1) 自由モノイドのイテレーター(1) - 非専門的シンギュラリティー研究所

イテレーターが無限に実行される場合について調べています。ここではプログラミング言語は使っていません。

(2) 自由モノイドのイテレーター(2) - 非専門的シンギュラリティー研究所

イテレーターが無限に実行される場合を射影的極限で表しています。ChatGPT で調べています。

(4) 自由モノイドのイテレーター(4) - 非専門的シンギュラリティー研究所

自由モノイドを表すクラスを作成しています。

(6) 自由モノイドのイテレーター(6) - 非専門的シンギュラリティー研究所

ここから Python 版の「自由モノイドプログラミング言語」を作っています。前回のものを Python の lark モジュールを使って書き直しています。

(10) 自由モノイドのイテレーター(10) - 非専門的シンギュラリティー研究所

eval によってプログラムを実行しています。Python 版はここでいったん終わりです。