KVPAC 编译系统采用分阶段架构,每个阶段可独立调试和优化。
编译阶段总览
源码 (.st) → Lex → Parse → Check → IR → Opt → CodeGen → Link → 可执行文件
各阶段说明
1. 词法分析 (Lex)
- 将源码拆分为 Token 序列
- 支持:关键字、标识符、字面量、操作符
- 输出:Token 流
2. 语法分析 (Parse)
- 根据 IEC 61131-3 语法规则构建 AST
- 支持:POU、表达式、语句、功能块调用
- 输出:抽象语法树
3. 语义检查 (Check)
- 类型检查:变量类型匹配验证
- 作用域分析:变量引用合法性
- 错误报告:精确定位源码位置
4. 中间表示 (IR)
- 生成平台无关的中间表示
- 便于跨平台目标代码生成
- 支持 IR 级别调试
5. 优化 (Opt)
| 优化项 | 说明 | 等级 |
|---|---|---|
| 常量折叠 | 编译期计算常量表达式 | O1 |
| 死代码消除 | 移除不可达代码 | O1 |
| 循环优化 | 循环展开、不变代码外提 | O2 |
| 内联扩展 | 减少函数调用开销 | O2 |
6. 代码生成 (CodeGen)
- 将 IR 转换目标平台机器码
- 支持多平台:STM32, 模拟器
- 平台相关优化
7. 链接 (Link)
- 链接标准库
- 地址重定位
- 生成最终可执行文件