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, 模拟器
  • 平台相关优化
  • 链接标准库
  • 地址重定位
  • 生成最终可执行文件