如何用XText创建方言



我正在做的项目有一个自定义的文件格式,具有预定义的结构。结构非常简单和通用(我不能改变它):它由(嵌套的)命令和类型属性组成。

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

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

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

我应该走哪条路?我认为后者是最好的,但是我如何创建一个描述这两层的语法呢?

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

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

最新更新