【问题标题】:Xtext serializer generates not valid DSLXtext 序列化程序生成无效的 DSL
【发布时间】:2015-05-07 22:26:48
【问题描述】:

我有 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 编辑器中导入文件时,它们无效,因此语法工作正常,但序列化程序不行。知道如何解决这个问题吗?

【问题讨论】:

    标签: serialization dsl xtext


    【解决方案1】:

    我假设您遇到问题的语法的完整版本使用了无序组,不是吗?无序组是由运算符“&”分隔的元素。

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

    【讨论】:

    • 是的,我有无序组。我看到了解释,并且有一个如何解决问题的建议,但是已经过时了。除了改变我的语法还有什么解决办法吗?
    • 成功了!我进一步查看了 Context PDA Provider 并设法设置了序列策略。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    • 1970-01-01
    • 1970-01-01
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多