阶段3:A4 修订——V2 支持日期字面量(D#/TOD#/DT#,纪元 1970,无小数秒,年 1..9999)
This commit is contained in:
@@ -27,11 +27,12 @@
|
||||
| L6 | FB 类型名表示 | IDENT + 三层判定(toml fb 表 → 用户 FB 符号表 → toml type 表 → 报错),废除 8 个 FB Tok | ⏳ |
|
||||
| L7 | TypeKind 表示 | 统一存类型名字符串(小写,查 machine.toml)+ kind 简化(Scalar/FbBuiltin/FbUser) | ⏳ |
|
||||
| L8 | Linker FbField.type | 字符串类型名(与 L7 一致),替换 TypeKind 枚举 | ⏳ |
|
||||
| ~~L10~~ | ~~日期字面量(A4 修订)~~ | **已定案(用户)**:V2 支持 `D#2026-8-24`/`TOD#12:30:00`/`DT#2026-8-24-12:30:00`(IEC 格式,强类型字面量);纪元 1970-01-01=0 天(与 RTC 一致);TOD 不支持小数秒;年范围 1..9999;换算:历法→天数(闰年)、TOD=时×3600000+分×60000+秒×1000 | ✅ |
|
||||
|
||||
## 3. 执行步骤(决策点解决后按序)
|
||||
|
||||
1. **Lexer V2**:19 类型关键字 + 15 FB 名(IDENT 化)+ FLOAT_LIT + 进制前缀(2#/8#/16# → 十进制换算)
|
||||
2. **Parser V2**:TypeRef 字符串化 + LitReal + 类型解析(L6/L7 落地)
|
||||
1. **Lexer V2**:19 类型关键字 + 15 FB 名(IDENT 化)+ FLOAT_LIT + 进制前缀(2#/8#/16# → 十进制换算)+ 日期字面量(D#/TOD#/DT#,最长匹配,历法换算与值域检查)
|
||||
2. **Parser V2**:TypeRef 字符串化 + LitReal/LitDate/LitTod/LitDt + 类型解析(L6/L7 落地)
|
||||
3. **Typecheck V2**:禁隐式转换 / BOOL 0/1 强制 / 字面量上下文适配 / FB 校验三层判定(L1/L2/L3)
|
||||
4. **Linker 适配**:FbField.type 字符串化(L8)
|
||||
5. **Codegen 适配**:浮点字面量(LOADK func 8/9 位模式)、REAL 变量/运算路径
|
||||
|
||||
Reference in New Issue
Block a user