Xtext序列化程序生成无效的DSL

时间:2015-05-07 13:57:11

标签: serialization dsl xtext

我有DSL实例,我正在尝试序列化它们。我有以下语法:

Database returns schema::Database:
    'database' name=EString  '{'
    (keys+=Key ( "," keys+=Key)*)? )
    ('structures''{' structureList+=(Group|Template)(','structureList+=(Group|Template))* '}')?
    '}'
;

Group returns schema::Group: 
    structureType=StructureType name=EString
    ('{'
        ('table' '{' tableFieldList=FieldList '}')?)
    '}')

首先,序列化程序忽略键的逗号,而不是“键”之间的逗号。第二个问题是“结构”这个关键字是为每个结构生成的。当我在DSL编辑器中导入文件时,它们无效,因此语法工作正常,但不是序列化程序。知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

我认为你遇到麻烦的完整版语法会使用无序组,不是吗?无序组是由运算符“&”分隔的元素。

如果我的假设是真的,那么 https://bugs.eclipse.org/bugs/show_bug.cgi?id=369175 会解释你所描述的行为。