# TL言語 トークン一覧
このドキュメントでは、TL言語(TinyLlama Compiler Language)で使用されるトークン(字句)の全リストを定義します。これらはコンパイラの `Lexer` によってソースコードから抽出されます。
## 1. キーワード (Keywords)
これらの語句は予約語であり、識別子(変数名や関数名など)として使用することはできません。
| `Fn` | `fn` | 関数定義の開始 |
| `Struct` | `struct` | 構造体定義の開始 |
| `Impl` | `impl` | 実装ブロックの開始 |
| `Let` | `let` | 変数宣言 |
| `Mut` | `mut` | 可変(mutable)修飾子 |
| `If` | `if` | 条件分岐 |
| `Else` | `else` | 条件分岐のelse節 |
| `Return` | `return` | 関数からの戻り値 |
| `For` | `for` | 繰り返し処理(forループ) |
| `In` | `in` | イテレータの指定 |
| `While` | `while` | 繰り返し処理(whileループ) |
| `Loop` | `loop` | 無限ループ |
| `Break` | `break` | ループの中断 |
| `Continue` | `continue` | 次の反復へスキップ |
| `Match` | `match` | パターンマッチング |
| `True` | `true` | 真理値リテラル (真) |
| `False` | `false` | 真理値リテラル (偽) |
| `Pub` | `pub` | 公開(public)修飾子 |
| `Use` | `use` | モジュールのインポート |
| `Mod` | `mod` | モジュール宣言 |
| `As` | `as` | 型キャスト |
| `Extern` | `extern` | 外部関数宣言 |
| `Enum` | `enum` | 列挙型定義 |
| `Self_` | `self` | メソッドのレシーバ (インスタンス自身) |
## 2. プリミティブ型 (Primitive Types)
これらは基本的なデータ型を表すキーワードです。
| `F32Type` | `f32` | 32ビット浮動小数点数 |
| `F64Type` | `f64` | 64ビット浮動小数点数 |
| `I32Type` | `i32` | 32ビット整数 |
| `I64Type` | `i64` | 64ビット整数 |
| `BoolType` | `bool` | 真理値型 |
| `UsizeType` | `usize` | ポインタサイズ符号なし整数 |
| `VoidType` | `void` | 値を持たない型 |
| `StringType` | `String` | 文字列型 |
| `CharType` | `Char` | 文字型 |
## 3. 識別子 (Identifiers)
ユーザー定義の名前です。
* **正規表現**: `[a-zA-Z][a-zA-Z0-9_]*` または `_[a-zA-Z0-9_]+`
* **例**: `count`, `my_variable`, `Type_Name`, `_unused`
## 4. リテラル (Literals)
直接記述される固定値です。
| `IntLiteral` | `42`, `-10` | 整数リテラル |
| `FloatLiteral` | `3.14`, `1.0e-5` | 浮動小数点リテラル |
| `StringLiteral` | `"hello"`, `"foo\nbar"` | 文字列リテラル |
| `CharLiteral` | `'a'`, `'\n'` | 文字リテラル |
## 5. 記号・デリミタ (Symbols & Delimiters)
構文構造を定義するための単一または複数の記号です。
| `LParen` | `(` | 左括弧 |
| `RParen` | `)` | 右括弧 |
| `LBrace` | `{` | 左波括弧(ブロック開始) |
| `RBrace` | `}` | 右波括弧(ブロック終了) |
| `LBracket` | `[` | 左角括弧(配列/インデックス) |
| `RBracket` | `]` | 右角括弧 |
| `Comma` | `,` | カンマ(区切り) |
| `Dot` | `.` | ドット(フィールドアクセス/メソッド呼び出し) |
| `Colon` | `:` | コロン(型注釈) |
| `SemiColon` | `;` | セミコロン(文末) |
| `Assign` | `=` | 代入 |
| `Arrow` | `->` | 関数の戻り値の型指定 |
| `FatArrow` | `=>` | マッチアームの区切り |
| `DoubleColon` | `::` | パス区切り |
| `Range` | `..` | 範囲指定 |
## 6. 演算子 (Operators)
算術、比較、論理演算に使用される演算子です。
| `Plus` | `+` | 加算 |
| `Minus` | `-` | 減算 |
| `Star` | `*` | 乗算 |
| `Slash` | `/` | 除算 |
| `Percent` | `%` | 常世 |
| `Eq` | `==` | 等価比較 |
| `Ne` | `!=` | 非等価比較 |
| `Lt` | `<` | 小なり |
| `Gt` | `>` | 大なり |
| `Le` | `<=` | 小なりイコール |
| `Ge` | `>=` | 大なりイコール |
| `And` | `&&` | 論理積 (AND) |
| `Or` | `||` | 論理和 (OR) |
| `Not` | `!` または `not` | 論理否定 (NOT) |
| `Pipe` | `|` | パイプ (ビットORまたはクロージャ引数) |
| `Ampersand` | `&` | アンパサンド (ビットAND) |
| `Caret` | `^` | キャレット (ビットXOR) |
### 代入演算子 (Assignment Operators)
| `PlusAssign` | `+=` | 加算代入 |
| `MinusAssign` | `-=` | 減算代入 |
| `StarAssign` | `*=` | 乗算代入 |
| `SlashAssign` | `/=` | 除算代入 |
| `PercentAssign` | `%=` | 剰余代入 |
## 7. 特殊記号 / 論理プログラミング用 (Logic Programming / Special)
TL言語の拡張機能(DatalogやTensor操作)などで使用される特殊な記号です。
| `LArrow` | `<-` | 左矢印 (ジェネレータなど) |
| `Entails` | `:-` | 含意 (Datalogルール) |
| `Underscore` | `_` | ワイルドカード |
| `Question` | `?` | 任意またはオプショナル |
| `Dollar` | `$` | 特殊変数またはマクロ |
## 8. 無視される要素 (Ignored)
以下の要素はトークン化の際にスキップされます。
* 空白文字 (` `, `\t`, `\n`, `\f`)
* 行コメント (`//` から行末まで)
* ブロックコメント (`/* ... */`)