Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/sotarokashiuchi/C_Compiler_for_C


https://github.com/sotarokashiuchi/C_Compiler_for_C

Last synced: about 2 months ago
JSON representation

Awesome Lists containing this project

README

        

# C_Compiler_for_C
## プログラム実行方法
```shell
// 全てのテストケースを実行
make debug

// 特定のテストケースを実行
make debug "FN="

// 2kmccをコンパイルし、2kmccでデフォルトのプログラムをコンパイル、実行
make 2kmcc

// 2kmccをコンパイルし、2kmccに指定のプログラムコードをコンパイルしてもらい、実行
make 2kmcc "CODE="
```
[sozysozbot/2kmcc](https://github.com/sozysozbot/2kmcc)とはセキュリティ・キャンプ講師のhsjoihsさんが作成したC言語で書かれた、自作Cコンパイラです。hsjoihsさんから許可をもらいテストケースとして使用させていただいています。ありがとうございます。そのため`./testcase/2kmcc_1.c`のライセンスは複製元である、[sozysozbot/2kmcc](https://github.com/sozysozbot/2kmcc)のリポジトリに従います。

### compilerbook:[低レイヤを知りたい人のためのCコンパイラ作成入門](https://www.sigbus.info/compilerbook)
- [x] (2023/06/22)1:整数1個をコンパイルする言語の作成
- [x] (2023/06/22)2:加減算のできるコンパイラの作成
- [x] (2023/06/24)3:トークナイザを導入
- [x] (2023/06/27)4:エラーメッセージを改良
- [x] (2023/06/28)5:四則演算のできる言語の作成
- [x] (2023/07/12)6:単項プラスと単項マイナス
- [x] (2023/07/17)7: 比較演算子
- [x] (2023/07/17)8: ファイル分割とMakefileの変更
- [x] (2023/07/20)9:1文字のローカル変数
- [x] (2023/07/21)10:複数文字のローカル変数
- [x] (2023/07/21)11:return文
- [x] (2023/07/29)12: 制御構文を足す
- [x] (2023/07/30)13: ブロック
- [x] (2023/08/01)14: 関数の呼び出しに対応する
- [x] (2023/08/05)15: 関数の定義に対応する
- [x] (2023/08/05)16: 単項&と単項*
- [x] (2023/08/08)17: 暗黙の変数定義を廃止して、intというキーワードを導入する
- [x] (2023/08/08)18: ポインタ型を導入する
- [x] (2023/08/09)19: ポインタの加算と減算を実装する
- [x] (2023/08/09)20: sizeof演算子
- [x] (2023/08/10)21: 配列を実装する
- [x] (2023/08/27)22: 配列の添字を実装する
- [x] (2023/09/19)23: グローバル変数を実装する
- [x] (2023/09/02)24: 文字型を実装する
- [x] (2023/09/22)25: 文字列リテラルを実装する
- [x] (2023/09/22)26: 入力をファイルから読む
- [x] (2023/09/22)27: 行コメントとブロックコメント
- [x] (2023/08/27)28: テストをCで書き直す

### compilerbook を補佐する資料 by hsjoihsさん
- [x] (2023/09/23)29: 複合代入演算子
- [x] (2023/10/03)30: インクリメント・デクリメント
- [x] (2023/10/07)31: 型名に対してのsizeof
- [x] (2023/10/10)32: ローカル変数の初期化式
- [x] (2023/10/07)33: for文 Part2
- [x] (2023/10/09)34: &&, ||, !
- [x] (2023/10/10)35: 型、レジスタ、汎整数拡張
- [x] (2023/10/11)36: 文字リテラル
- [x] (2023/10/11)37: ヌルポインタ定数

### 闇雲に進む
- [x] (2023/10/15)38: 簡易版structを実装
- [x] (2023/10/15)39: アロー演算子を実装
- [x] (2023/10/17)40: void型の実装
- [x] (2023/10/26)41: 文字定数の拡張表記の実装
- [x] (2023/10/28)42: struct実装(関数の引数、戻り値)
- [x] (2023/10/29)43: 空文
- [x] (2023/11/01)44: プロトタイプ宣言実装
- [x] (2023/11/07)45: 負の数実装
- [x] (2023/11/07)46: 2kmccコンパイル完了
- [x] (2024/02/21)47: switch文
- [ ] 48: break文
- [ ] 49: continue文