我有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编辑器中导入文件时,它们无效,因此语法工作正常,但不是序列化程序。知道如何解决这个问题吗?
答案 0 :(得分:1)
我认为你遇到麻烦的完整版语法会使用无序组,不是吗?无序组是由运算符“&”分隔的元素。
如果我的假设是真的,那么 https://bugs.eclipse.org/bugs/show_bug.cgi?id=369175 会解释你所描述的行为。