Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sotarokashiuchi/C_Compiler_for_C
https://github.com/sotarokashiuchi/C_Compiler_for_C
Last synced: 4 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/sotarokashiuchi/C_Compiler_for_C
- Owner: sotarokashiuchi
- Created: 2023-06-10T03:48:03.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-02-21T12:37:58.000Z (about 1 year ago)
- Last Synced: 2024-08-01T17:38:42.309Z (7 months ago)
- Language: Python
- Size: 2.37 MB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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文