1

我正在处理的项目具有自定义文件格式,具有预定义的结构。该结构非常简单且通用(我无法更改):它由(嵌套)命令和类型化属性组成。

使用这种结构,已经创建了几种方言。方言是通用语法的“实例化”,并指定命令的名称和含义以及预期的属性。

我为其中一种方言创建了一个带有 EMF 的模型,我想重用 XText 来轻松创建一个专业的文本编辑器,并能够以正确的格式读取和写入我的模型。

现在我有一个选择。一方面,我可以直接针对方言,并将自定义文件结构中的概念和方言中的概念混合在相同的语法中。另一方面,我可以创建一个描述文件结构的语法,在此之上我可以描述我的方言。

我应该遵循哪种方式?我认为后者是最好的,但我怎样才能创建一个描述这两层的语法呢?

4

1 回答 1

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

您可以使用相同的方法:创建一种基础语言,然后为您的各种方言扩展它们。

于 2011-09-15T08:20:56.773 回答