我正在开发的项目有一个自定义文件格式,具有预定义的结构。结构非常简单和通用(我无法改变它):它由(嵌套)命令和类型属性组成。
使用这种结构,已经创建了几种方言。方言是泛型语法的“实例化”,并指定命令的名称和含义以及预期的属性。
我为其中一种方言创建了一个带有EMF的模型,我想重用XText来轻松创建专业的文本编辑器,并能够以正确的格式读取和编写我的模型。
现在我有了选择。一方面,我可以直接定位方言,并在同一语法中混合自定义文件结构和方言中的概念。另一方面,我可以创建一个描述文件结构的语法,除此之外,我可以描述我的方言。
我应该遵循哪种方式?我认为后者是最好的,但我如何创建描述这两层的语法?
答案 0 :(得分:3)
Xtext允许扩展现有语言:在语法的头部,你可以指定一个继承的父语法。
有关示例,请参阅Xtext 2.0中的域模型示例,该示例扩展了XBase语言:
grammar org.eclipse.xtext.example.domainmodel.Domainmodel with org.eclipse.xtext.xbase.Xbase
每个语法元素都可以被新语法替换;可以添加新的验证等。有关更多想法,请参阅以下博客文章:http://koehnlein.blogspot.com/2011/07/extending-xbase.html
您可以使用相同的方法:创建基本语言,然后为各种方言扩展它们。