特定领域语言(DSL)开发中的可变性支持与DjDSL系统
1. 可变性支持现状
1.1 目标与框架概述
在特定领域建模语言(DSL)的开发中,目标是实现外部和文本形式的DSL组合。主要动机是将数据建模与(特定领域)软件系统的架构(部署)描述符相结合。为实现这一目标,框架支持语言模型聚合、语言嵌入和语言继承等抽象语法层面的操作。抽象语法通过MontiCore语法(ANTLR的LL(k)语法变体)定义,并与UML类模型的变体作为领域模型(UML/P)相链接。
1.2 不同工具和框架介绍
1.2.1 Eco
Eco属于语法导向环境,旨在支持外部和文本DSL。其主要目标是在语言嵌入时支持增量解析。它基于LR解析器生成器,AST节点可延迟绑定到不同子树,每个子树代表另一个嵌套语言。Eco通过具体语法树提供通用语法树接口,每个语言框是一个包含语法、名称绑定规则和语法高亮规则的组合单元,支持扩展和统一。不过,它没有专门的可变性表示或管理,虽适合反应式DSL族开发,但作者强调主动式方法。
1.2.2 MetaDepth
MetaDepth支持基于元模型作为抽象语法模型的外部和文本DSL组合,涵盖抽象语法(AS)、具体语法(CS)和行为定义(PI)的范围。行为定义作为操作附加到元模型类,其主体以EOL程序实现。主要组合方式是基于Epsilon系列模型管理语言的模型模板和模型模板组合。模板实例化后,具体语法模型会转换为ANTLR语法和相关解析器。除模板配置外,未涉及可变性管理。
1.2.3 YAJCo
YAJCo将抽象语法和具体语法定义分开。抽象语法通过Java
超级会员免费看
订阅专栏 解锁全文
54

被折叠的 条评论
为什么被折叠?



