feat(control_tree): add StepTreeContract and signature (dev-only)
This commit is contained in:
@ -33,6 +33,34 @@ AST を「構造ノード」に落とした木(または木+Block列)で
|
||||
- `Loop`: `cond` と body の `Block`
|
||||
- `Stmt`: 構造化していない文(Local/Assign/Return/Break/Continue/Expr などを tag 化)
|
||||
|
||||
## StepTreeContract(構造契約SSOT)
|
||||
|
||||
StepTreeContract は「この構造が何を含み、何を要求するか」を最小の契約として宣言する。
|
||||
lowering/PHI/CFG の判断にはまだ使わない(dev-only)だが、再解析の増殖を防ぐための SSOT になる。
|
||||
|
||||
最小フィールド案(P1):
|
||||
- `exits`: `return` / `break` / `continue` の存在(構造だけ)
|
||||
- `writes`: 変数への書き込み(最小は `Assignment target=Variable(name)` と `Local` 宣言の集合)
|
||||
- `required_caps`: capability 宣言(例: `NestedLoop`, `TryCatch`, `Throw`, `Lambda` など)
|
||||
- `cond_sig`: if/loop 条件式の要約(下記)
|
||||
|
||||
### cond_sig の方針(SSOT)
|
||||
|
||||
- cond_sig は **ASTNode 参照を保持しない**(巨大化・ライフタイム・clone コストの問題を避ける)。
|
||||
- cond_sig は **summary(要約)SSOT** とし、`AstSummary` 相当の安定表現に固定する。
|
||||
- 目的は「構造分類/契約の固定」であり、式同値(完全な等価判定)は非対象。
|
||||
|
||||
## StepTreeSignature(構造署名)
|
||||
|
||||
StepTreeSignature は StepTreeContract + node kinds の “安定な基底文字列” を hash した識別子。
|
||||
|
||||
用途:
|
||||
- dev-only ログの検索キー
|
||||
- “同型ループ/同型if” の増殖検知(再解析の増殖防止)
|
||||
|
||||
注意:
|
||||
- `Span` 等の位置情報は signature に含めない(入力差でブレるため)。
|
||||
|
||||
## Capability(段階投入のSSOT)
|
||||
|
||||
StepTree は capability を“宣言”し、未対応は **Fail-Fast(dev-only / strict)** で止める。
|
||||
|
||||
Reference in New Issue
Block a user