phase: 20.49 COMPLETE; 20.50 Flow+String minimal reps; 20.51 selfhost v0/v1 minimal (Option A/B); hv1-inline binop/unop/copy; docs + run_all + CURRENT_TASK -> 21.0
This commit is contained in:
@ -24,24 +24,24 @@ apps/lib/json_native/
|
||||
├── ARCHITECTURE.md # この設計ドキュメント
|
||||
│
|
||||
├── core/ # 🌟 核心データ構造
|
||||
│ ├── node.nyash # JsonNode - JSON値表現
|
||||
│ ├── value.nyash # JsonValue - 型安全ラッパー
|
||||
│ └── error.nyash # JsonError - エラーハンドリング
|
||||
│ ├── node.hako # JsonNode - JSON値表現
|
||||
│ ├── value.hako # JsonValue - 型安全ラッパー
|
||||
│ └── error.hako # JsonError - エラーハンドリング
|
||||
│
|
||||
├── lexer/ # 🔍 字句解析層
|
||||
│ ├── tokenizer.nyash # トークナイザー本体
|
||||
│ ├── token.nyash # トークン定義
|
||||
│ └── scanner.nyash # 文字スキャナー
|
||||
│ ├── tokenizer.hako # トークナイザー本体
|
||||
│ ├── token.hako # トークン定義
|
||||
│ └── scanner.hako # 文字スキャナー
|
||||
│
|
||||
├── parser/ # 🏗️ 構文解析層
|
||||
│ ├── parser.nyash # メインパーサー
|
||||
│ ├── recursive.nyash # 再帰下降パーサー
|
||||
│ └── validator.nyash # JSON妥当性検証
|
||||
│ ├── parser.hako # メインパーサー
|
||||
│ ├── recursive.hako # 再帰下降パーサー
|
||||
│ └── validator.hako # JSON妥当性検証
|
||||
│
|
||||
├── utils/ # 🛠️ ユーティリティ
|
||||
│ ├── string.nyash # 文字列処理ヘルパー
|
||||
│ ├── escape.nyash # エスケープ処理
|
||||
│ └── pretty.nyash # 整形出力
|
||||
│ ├── string.hako # 文字列処理ヘルパー
|
||||
│ ├── escape.hako # エスケープ処理
|
||||
│ └── pretty.hako # 整形出力
|
||||
│
|
||||
├── tests/ # 🧪 テストスイート
|
||||
│ ├── unit/ # 単体テスト
|
||||
@ -49,29 +49,29 @@ apps/lib/json_native/
|
||||
│ └── performance/ # 性能テスト
|
||||
│
|
||||
└── examples/ # 📖 使用例
|
||||
├── basic.nyash # 基本的な使用例
|
||||
├── advanced.nyash # 高度な使用例
|
||||
└── benchmark.nyash # ベンチマーク例
|
||||
├── basic.hako # 基本的な使用例
|
||||
├── advanced.hako # 高度な使用例
|
||||
└── benchmark.hako # ベンチマーク例
|
||||
```
|
||||
|
||||
## 🎯 各モジュールの責務
|
||||
|
||||
### Core層 - データ構造の基盤
|
||||
```nyash
|
||||
// core/node.nyash - JSON値の抽象表現
|
||||
// core/node.hako - JSON値の抽象表現
|
||||
box JsonNode {
|
||||
kind: StringBox // "null"|"bool"|"int"|"string"|"array"|"object"
|
||||
value: Box // 実際の値
|
||||
meta: Box // メタデータ(位置情報等)
|
||||
}
|
||||
|
||||
// core/value.nyash - 型安全なアクセス
|
||||
// core/value.hako - 型安全なアクセス
|
||||
box JsonValue {
|
||||
node: JsonNode // 内部ノード
|
||||
// as_string(), as_int(), as_bool() 等の型安全メソッド
|
||||
}
|
||||
|
||||
// core/error.nyash - エラー情報
|
||||
// core/error.hako - エラー情報
|
||||
box JsonError {
|
||||
code: StringBox // エラーコード
|
||||
message: StringBox // エラーメッセージ
|
||||
@ -81,7 +81,7 @@ box JsonError {
|
||||
|
||||
### Lexer層 - 文字列をトークンに分解
|
||||
```nyash
|
||||
// lexer/token.nyash - トークン定義
|
||||
// lexer/token.hako - トークン定義
|
||||
box JsonToken {
|
||||
type: StringBox // "STRING"|"NUMBER"|"LBRACE"|"RBRACE"等
|
||||
value: StringBox // トークンの値
|
||||
@ -89,7 +89,7 @@ box JsonToken {
|
||||
end: IntegerBox // 終了位置
|
||||
}
|
||||
|
||||
// lexer/tokenizer.nyash - メイントークナイザー
|
||||
// lexer/tokenizer.hako - メイントークナイザー
|
||||
box JsonTokenizer {
|
||||
scanner: JsonScanner // 文字スキャナー
|
||||
tokens: ArrayBox // 生成されたトークン配列
|
||||
@ -98,14 +98,14 @@ box JsonTokenizer {
|
||||
|
||||
### Parser層 - トークンをASTに変換
|
||||
```nyash
|
||||
// parser/parser.nyash - メインパーサー
|
||||
// parser/parser.hako - メインパーサー
|
||||
box JsonParser {
|
||||
tokenizer: JsonTokenizer // 字句解析器
|
||||
current: IntegerBox // 現在のトークン位置
|
||||
// parse() -> JsonNode
|
||||
}
|
||||
|
||||
// parser/recursive.nyash - 再帰下降実装
|
||||
// parser/recursive.hako - 再帰下降実装
|
||||
static box RecursiveParser {
|
||||
parse_value(tokens, pos) // 値をパース
|
||||
parse_object(tokens, pos) // オブジェクトをパース
|
||||
@ -115,14 +115,14 @@ static box RecursiveParser {
|
||||
|
||||
### Utils層 - 共通ユーティリティ
|
||||
```nyash
|
||||
// utils/string.nyash - 文字列処理
|
||||
// utils/string.hako - 文字列処理
|
||||
static box StringUtils {
|
||||
trim(s) // 空白トリム
|
||||
is_whitespace(ch) // 空白文字判定
|
||||
is_digit(ch) // 数字判定
|
||||
}
|
||||
|
||||
// utils/escape.nyash - エスケープ処理
|
||||
// utils/escape.hako - エスケープ処理
|
||||
static box EscapeUtils {
|
||||
escape_string(s) // JSON文字列エスケープ
|
||||
unescape_string(s) // JSONエスケープ解除
|
||||
@ -202,7 +202,7 @@ Utils ────┴─────────┴─ (共通ユーティリテ
|
||||
### 命名規則
|
||||
- **Box名**: PascalCase (JsonNode, JsonParser)
|
||||
- **メソッド名**: snake_case (parse_value, as_string)
|
||||
- **ファイル名**: snake_case (tokenizer.nyash, recursive.nyash)
|
||||
- **ファイル名**: snake_case (tokenizer.hako, recursive.hako)
|
||||
|
||||
### コメント戦略
|
||||
- **なぜ**: 設計の意図を説明
|
||||
|
||||
Reference in New Issue
Block a user