- まずはレジスタ型でなくスタック型
- まずは型はintだけ
- nomの理解
- CLIにする
-
cargo run -- <input> --output <output>
-
- nomでASTにする
- LLVM IRを理解する
inkwell
を使う
- 変数機能
- parser
- node
- codegen
- 変数初期化
- assign
- 関数宣言
- parser
- node
- codegen
- main関数宣言
- main以外の関数宣言
- return文
- 関数呼び出し
- 引数付きで呼び出す
- 引数のallocaをまだやっていない
- 引数付きで呼び出す
- declare
- putchar
- getchar
- 構文追加
- if
- for
- 型を導入する
- i32, i64, bool
- astに型の情報を入れる
- i32, i64, bool
- 文字列型の導入
- ポインタ型の導入
- 配列型の導入
- include
- (error tracing)
- parser書き直す?
- row, columnの情報が欲しい
- REPL
- 入力
- コメント
- 構造体
- LSP
- hard
- syntax highlight
- formatter -> ASTを文字列化してそう
- web assembly
- 定数, 四則演算が出来る
- cmmを理解する
- pl0を理解する
- 定数をパースできる
- 四則演算をパースできる
- 変数を宣言, 使用できる
- main関数を宣言できる
- LLVM IRコード生成
- fizzbuzz
apt install libclang-common-12-dev llvm-12