## 目的 現在 `int` 一種類しかない整数型に、ビット幅と符号を明示した型を導入し、stdlib / C FFI / 添字計算で必要な精度・範囲を表現できるようにする。 ## 現状 - `rwc/lexer.py` の `KW_INT` 一つだけが整数キーワード - `len(b)` の戻り値、添字、ファイル size などが全て `int` (= 内部的に i64) に潰れている - C FFI (#23) を入れると `size_t` / `int32_t` / `uint64_t` 相当が必要 ## 提案する型 - 符号付き: `i8`, `i16`, `i32`, `i64` - 符号なし: `u8`, `u16`, `u32`, `u64` - ポインタ幅: `usize` (= u64 on 64-bit), `isize` - 既存の `int` は **`i64` のエイリアス** として後方互換 ## 検討事項 - リテラルの推論ルール(`42` は何型か? Rust 風に `42_i32` 接尾辞を許すか) - 暗黙の昇格 / 縮小を許すか(Rust: 禁止、C: 緩い) - 添字に使う型は何にするか(`usize` 固定 or どの整数型でも OK) - オーバーフロー方針 (#21) との関係 ## 受け入れ条件 - [ ] lexer / parser / sema / irgen で新規キーワードを通す - [ ] LLVM IR レベルで適切なビット幅を選択 - [ ] examples に i32 / u64 / usize の動作例を追加 - [ ] 既存 `int` コードが回帰しない(i64 alias) ## 関連 - ブロッカー候補: #23 (extern "c"), #21 (オーバーフロー), stdlib 系 #33〜#43
目的
現在
int一種類しかない整数型に、ビット幅と符号を明示した型を導入し、stdlib / C FFI / 添字計算で必要な精度・範囲を表現できるようにする。現状
rwc/lexer.pyのKW_INT一つだけが整数キーワードlen(b)の戻り値、添字、ファイル size などが全てint(= 内部的に i64) に潰れているsize_t/int32_t/uint64_t相当が必要提案する型
i8,i16,i32,i64u8,u16,u32,u64usize(= u64 on 64-bit),isizeintはi64のエイリアス として後方互換検討事項
42は何型か? Rust 風に42_i32接尾辞を許すか)usize固定 or どの整数型でも OK)受け入れ条件
intコードが回帰しない(i64 alias)関連