编程语言实现与特性分析
1. 实现细节
1.1 编辑器实现
BL 编辑器通过文本编辑框架(TEF)和 Eclipse 建模框架(EMF)实现。TEF 用于通过定义 BL 的具体语法来派生 BL 编辑器,而 EMF 用于定义 BL 的元模型,这是 TEF 所必需的,同时也用于对 BL 元模型进行扩展。
该编辑器的突出特点是能立即感知特定领域扩展的语法。这一特性可在运行时自动派生 DSL 编辑器,并提供语法高亮和内容辅助等成熟的编辑功能。其实现可行是因为 TEF 基于运行时解析器生成器 RunCC,它能在运行时处理语法的不同版本。对于每个扩展,扩展定义的语法规则会被添加到 BL 的语法中。当扩展定义被修改时,BL 语法中的相应规则也会更新。
1.2 模拟器实现
BL 模拟器通过映射到可执行的目标模拟语言来实现。模拟器通过编译和执行目标语言程序派生而来。
在映射描述中,需要考虑 BL 概念和模拟概念。在第一个原型中,定义了与 Java 和模拟库 DESMO - J 的映射,该映射用 Acceleo 描述,Acceleo 是一种实现 OMG MOF 模型到文本标准的模板语言。这个具体映射大小为 513 行代码(LOC),由模板语句和目标代码组成。
DSL 模拟器通过用 BL 概念替换所有扩展(根据其语义部分的定义)来派生。最终,得到的模型仅由 BL 概念组成,然后将该模型映射到用于执行的目标模拟语言。整个编译工作流程的概述可在线获取。
然而,整个转换过程存在一个主要问题,即所使用的元建模框架 EMF 具有相当静态的性质。简而言之,EMF 在运行时难以支持不断变化的元模型,这导致执行