flowchart TD Start([ResolveCtx::resolve_root]) --> Resolve[ResolveContext::resolve] Resolve --> CheckType{检查表达式类型} CheckType -->|AttrSet| A_ResolveKeys[解析所有键] A_ResolveKeys --> A_ResolveValues[解析所有值] A_ResolveValues --> End A_ResolveKeys -.->|resolve| Resolve A_ResolveValues -.->|resolve| Resolve CheckType -->|List| L_ResolveElements[解析所有元素] L_ResolveElements --> End L_ResolveElements -.->|resolve| Resolve CheckType -->|HasAttr| HA_ResolveAttrSet[解析 AttrSet] HA_ResolveAttrSet --> HA_ResolveAttrPath[解析 AttrPath] HA_ResolveAttrPath --> End HA_ResolveAttrSet -.->|resolve| Resolve HA_ResolveAttrPath -.->|resolve| Resolve CheckType -->|BinOp| B_ResolveLeft[解析左操作数] B_ResolveLeft --> B_ResolveRight[解析右操作数] B_ResolveRight --> End B_ResolveLeft -.->|resolve| Resolve B_ResolveRight -.->|resolve| Resolve CheckType -->|UnOp| U_ResolveOperand[解析操作数] U_ResolveOperand --> End U_ResolveOperand -.->|resolve| Resolve CheckType -->|Select| S_ResolveAttrSet[解析 AttrSet] S_ResolveAttrSet --> S_ResolveAttrPath[解析 AttrPath] S_ResolveAttrPath --> End S_ResolveAttrSet -.->|resolve| Resolve S_ResolveAttrPath -.->|resolve| Resolve CheckType -->|If| I_ResolveCond[解析条件] I_ResolveCond --> I_ResolveConsq[解析 then 分支] I_ResolveConsq --> I_ResolveAlter[解析 else 分支] I_ResolveAlter --> End I_ResolveCond -.->|resolve| Resolve I_ResolveConsq -.->|resolve| Resolve I_ResolveAlter -.->|resolve| Resolve CheckType -->|Call| C_ResolveFunc[解析函数] C_ResolveFunc --> C_ResolveArg[解析参数] C_ResolveArg --> End C_ResolveFunc -.->|resolve| Resolve C_ResolveArg -.->|resolve| Resolve CheckType -->|Let| Le_EnterLet[进入 Let 环境] Le_EnterLet --> Le_ResolveValues[解析所有键] Le_ResolveValues --> Le_ResolveBody[解析表达式] Le_ResolveBody --> Le_ExitLet[退出 Let 环境] Le_ExitLet --> End Le_ResolveValues -.->|resolve| Resolve Le_ResolveBody -.->|resolve| Resolve CheckType -->|With| W_ResolveNameSpace[解析命名空间] W_ResolveNameSpace --> W_EnterWith[进入命名空间] W_EnterWith --> W_ResolveBody[解析表达式] W_ResolveBody --> W_ExitWith[退出命名空间] W_ExitWith --> End W_ResolveNameSpace -.->|resolve| Resolve W_ResolveBody -.->|resolve| Resolve CheckType -->|Assert| As_ResolveCond[解析断言] As_ResolveCond --> As_ResolveBody[解析表达式] As_ResolveBody --> End As_ResolveCond -.->|resolve| Resolve As_ResolveBody -.->|resolve| Resolve CheckType -->|ConcatStrings| CS_ResolveParts[解析所有字符串片段] CS_ResolveParts --> End CS_ResolveParts -.->|resolve| Resolve CheckType -->|Const| End CheckType -->|Str| End CheckType -->|Var| V_Lookup[查找变量] V_Lookup --> End CheckType -->|Arg| Ar_Lookup[查找参数] Ar_Lookup --> End CheckType -->|Func| F_EnterEnv[进入函数环境] F_EnterEnv --> F_ResolveBody[解析函数体] F_ResolveBody --> F_ExitEnv[退出函数环境] F_ExitEnv --> End End([返回结果])