From a7f89dc180846304e705a4ed7f4e10cf4052a862 Mon Sep 17 00:00:00 2001 From: chentianya Date: Wed, 26 Aug 2026 08:48:24 +0800 Subject: [PATCH] =?UTF-8?q?=E9=98=B6=E6=AE=B53=E6=96=87=E6=A1=A3=EF=BC=9AL?= =?UTF-8?q?2/L9/L3=20=E5=AE=9A=E6=A1=88=E2=80=94=E2=80=94=E5=8F=98?= =?UTF-8?q?=E9=87=8F=E7=A6=81=E9=9A=90=E5=BC=8F=E8=BD=AC=E6=8D=A2=E3=80=81?= =?UTF-8?q?=E6=95=B4=E6=95=B0/=E6=B5=AE=E7=82=B9=E5=AD=97=E9=9D=A2?= =?UTF-8?q?=E9=87=8F=E6=8C=89=E4=B8=8A=E4=B8=8B=E6=96=87=E9=80=82=E9=85=8D?= =?UTF-8?q?=EF=BC=88=E5=86=B2=E7=AA=81=E6=8A=A5=E9=94=99=EF=BC=89=E3=80=81?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E5=AD=97=E9=9D=A2=E9=87=8F=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E8=A6=81=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Doc/compiler/阶段3-语言层V2.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Doc/compiler/阶段3-语言层V2.md b/Doc/compiler/阶段3-语言层V2.md index 56ab3c9..a945ee6 100644 --- a/Doc/compiler/阶段3-语言层V2.md +++ b/Doc/compiler/阶段3-语言层V2.md @@ -19,9 +19,9 @@ | # | 问题 | 草案/结论 | 状态 | |---|---|---|---| | L1 | 内建 FB 类型名校验来源 | 查 machine.toml `[[fb]]` 表(15 条,替换 V1 硬编码 8 Tok);**用户 FB 类型来自用户源码**(FUNCTION_BLOCK 声明,不查 toml) | ✅ 已澄清 | -| ~~L2~~ | ~~禁隐式转换范围~~ | **已定案(用户)**:**禁止任何隐式类型转换**——赋值/算术/比较类型严格一致 → type error;**字面量也禁止上下文适配**,字面量自带类型前缀/后缀(见 L9) | ✅ | -| L9 | 字面量类型化语法 | **新增(用户提出)**:字面量带类型前缀/后缀(IEC 风格 `类型名#值`?)——裸字面量处理、前缀/后缀形式待定 | ⏳ | -| L3 | 字面量适配规则 | 整数字面量 → 任意目标(值域内);浮点字面量 → REAL/LREAL;进制字面量 + 值域检查 | ⏳ | +| ~~L2~~ | ~~禁隐式转换范围~~ | **已定案(用户)**:**变量间禁止任何隐式类型转换**(赋值/算术/比较严格同型 → type error);**整数字面量 / 浮点字面量按上下文适配**,上下文冲突直接报错(例:a 是 UINT,`a := -1` → 越域报错);**TIME/DATE 等字面量有格式要求**(见 L9) | ✅ | +| ~~L9~~ | ~~字面量类型化语法~~ | **已定案**:不强制类型前缀——整数字面量(含进制 `16#FF`)/ 浮点字面量(`1.5`)**无类型、按上下文适配 + 值域检查**(冲突即报错,不转换);TIME 字面量沿用 V1 格式(`5s`,单位后缀)并可类型化;DATE/TOD/DT 字面量 v1 不支持(A4) | ✅ | +| ~~L3~~ | ~~字面量适配规则~~ | **已定案(随 L2/L9)**:整数/浮点按上下文适配 + 值域检查(冲突报错);进制字面量同规则;无默认类型兜底 | ✅ | | L4 | 浮点字面量 AST | 新增 ExprKind::LitReal(double 值) | ⏳ | | L5 | codegen_test 断言范围 | Codec disasm 文本 / 槽表值段布局 / 常量表 8B / max_stack / 头字段 | ⏳ | | L6 | FB 类型名表示 | IDENT + 三层判定(toml fb 表 → 用户 FB 符号表 → toml type 表 → 报错),废除 8 个 FB Tok | ⏳ |