rust-chibicc
main
origin(Rui Ueyama) : https://github.com/rui314/chibicc
document: 低レイヤを知りたい人のためのCコンパイラ作成入門
subdocuments(という名の面白かったサイト):
chibicc: A Small C Compiler
レポジトリ名通り、Rui Ueyama(rui314)さんによるコード量が少ないCコンパイラの実装。
Requires and Do
-
Make sure you have installed the dependencies:
- Cargo 1.49.0 or later
-
Clone the source with git:
git clone https://github.com/smirror/rust-chibicc.git
-
-
Test for all cases passed now:
cd rust-chibicc bash test.sh
-
Check it given a test case:
cd rust-chibicc cargo run -- "(test cases)"
-
Implementation
電卓レベルの言語の作成
- Step 1: Print one number
- Step 2: Operetor '+' & '-'
- Step 3: replace space' '
- Step 4: Error messages
- Step 5: Add '*' & ',' & '/' & '()'
- Step 6: Add unary plus and minus
- Step 7: Add "==", "!=", "<=" and ">=" operators
分割コンパイルとリンク
- Step 8: ファイル分割とMakefileの変更
関数とローカル変数
- Step 9: 1文字のローカル変数
- Step 10: 複数文字のローカル変数
- Step 11: return文
- Step 12: 制御構文を足す
- Step 13: ブロック
- Step 14: 関数の呼び出しに対応する
- Step 15: 関数の定義に対応する
ポインタと文字列リテラル
- Step 16: 単項&と単項*
- Step 17: 暗黙の変数定義を廃止して、intというキーワードを導入する
- Step 18: ポインタ型を導入する
- Step 19: ポインタの加算と減算を実装する
- Step 20: sizeof演算子
- Step 21: 配列を実装する
- Step 22: 配列の添字を実装する
- Step 23: ステップ23: グローバル変数を実装する
- Step 24: 文字型を実装する
- Step 25: 文字列リテラルを実装する
- Step 26: 入力をファイルから読む
- Step 27: 行コメントとブロックコメント
- Step 28: テストをCで書き直す