【问题标题】:How create dialects with XText如何使用 XText 创建方言
【发布时间】:2011-11-17 15:44:33
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: eclipse modeling xtext


    【解决方案1】:

    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

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

    【讨论】:

    • 谢谢你的链接,但它似乎不符合我的要求......如果我理解正确,这是一种用新元素扩展语法的方法(和/或替换现有的那些)。相反,我有一个定义文档结构的通用语法,并且我想对元素施加额外的语义约束。作为类比,考虑通用 XML(文档由网状元素组成,用尖括号括起来)和特定的 XML 模式(限制元素的名称和顺序)。
    • 在这种情况下,您可以做类似的事情:您创建一个扩展语法,从父级复制基本规则,并编写额外的验证检查。对于您的需求,这可能有点矫枉过正,但它应该可以工作。
    猜你喜欢
    • 1970-01-01
    • 2017-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多