TypeScript 入門というか、とりあえず何か書いて慣れようと思って書いてみました。やっつけなので汚いです。TypeScript まだよく分からないけどなんか動いたのでヨシ、というレベルのものです。
移植元
<自作言語処理系(Ruby版)の説明用テンプレ>
自分がコンパイラ実装に入門するために作った素朴なトイ言語とその処理系です。
何ヶ月もかけてCコンパイラを作るのが「100 の労力で 100 の成果を得る」だとしたら、このプロジェクトは「まず 5 の労力で 20 の成果を得よう」みたいな方向性です。得られるものは 100 ではありませんが短期間で完成させることができます。
- コンパクト: コンパイラ部分は 1,000 行程度
- 無理して短く書くようなことはせず、読みやすさ優先で素直に書いてこのくらい
- pure Ruby / 標準ライブラリ以外のライブラリ不要
- 標準ライブラリ以外のライブラリ不要。すべてを掌握できるように。
- x86風の自作VM向けにコンパイルする
- ライフゲームのために必要な機能だけ
- 変数宣言、代入、反復、条件分岐、関数定義
- 演算子:
+
,*
,==
,!=
のみ(優先順位は(
)
で明示) - 型なし(値は符号付き整数のみ)
- 作ったときに書いた備忘記事
- 製作メモ
- 作ったときの全過程を書いています
- この通りにやれば誰でも同じものを作れる……のは確かだけど、いろいろ改善点が見えてきたので全体的に改訂したい
- 凝ったことはしていないので Ruby を知らない人でも雰囲気くらいは分かるんじゃないかと
- 本体には含めていない後付けの機能など
- 真偽値リテラル / break / if/else / 単項マイナス / パーサの別実装 / 静的型検査 / etc.
- これらは後から追加できます
- 他言語への移植
- セルフホスト版
- さらに育てていくとセルフホストまでできます(できました)
<説明用テンプレおわり>
ベースになっているバージョン: tag:45 のあたり
- 2021-03-06 追記: step 55 の修正まで適用しました。それに伴い、アセンブラ・VM 関連のコードを
old_version
ディレクトリに移動しました。全部修正すると大変なので。
- 2024-03-10 追記: step 61 の修正まで適用しました