B语言到高级语言翻译及列车控制形式验证技术解析
1. B语言到高级语言(HLL)的翻译原理
在软件开发中,将基于B0语言的具体形式化模型转换为高级语言(HLL)代码是一项重要工作。其目标是获得与B模块行为等价的HLL模型,用于后续的验证。然而,从B到HLL的语义保留翻译并非易事,主要问题在于两种范式之间存在语义不匹配。
例如,B机器的操作可能存在副作用,隐式地影响其他B机器的状态。在Main i机器中,为计算总和而对变量进行的更改是透明且不明确的。若翻译过程未遵循变量更改的正确顺序,生成的HLL模型可能会出错,进而隐藏安全相关问题。
翻译过程主要分为三个步骤,如下流程图所示:
graph LR
A[B Model] --> B[B Parsing]
B --> C[Preprocessing]
C --> D[HLL Generation]
D --> E[HLL Model]
F[Env] --> C
C --> G[Update Environment]
H[Translator] --> B
H --> C
H --> D
- B解析 :通过对输入代码进行语法和语义分析,生成中间树表示AST(抽象语法树)。B0接近命令式编程语言,处理确定性的B指令,包括具体数据(变量和常量)、SEES、USES和IMPORTS子句以及操作调用。
- 预处理 </