Skip to content

i-pu/ipulang

Repository files navigation

ipulang

  • まずはレジスタ型でなくスタック型
  • まずは型はintだけ

やることリスト

Day1

  • 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

Day2

  • 構文追加
    • if
    • for
  • 型を導入する
    • i32, i64, bool
      • astに型の情報を入れる

Day3?

  • 文字列型の導入
  • ポインタ型の導入
  • 配列型の導入
  • include
  • (error tracing)
  • parser書き直す?
    • row, columnの情報が欲しい
  • REPL
  • 入力
  • コメント
  • 構造体

やらないこと

  • LSP
    • hard
    • syntax highlight
  • formatter -> ASTを文字列化してそう
  • web assembly

マイルストーン

  • 定数, 四則演算が出来る
    • cmmを理解する
    • pl0を理解する
    • 定数をパースできる
    • 四則演算をパースできる
    • 変数を宣言, 使用できる
    • main関数を宣言できる
  • LLVM IRコード生成
  • fizzbuzz

LLVM fix

apt install libclang-common-12-dev llvm-12

About

コンパイラ作りたいみたいな

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published