【问题标题】:How to write a [1..1] and [1..*] relation in xText如何在 xText 中编写 [1..1] 和 [1..*] 关系
【发布时间】:2020-06-25 11:59:09
【问题描述】:

我想在 Xtext 中为状态机定义语法。我的规则是,一台状态机必须有 [1.. * ] 转换、[1..1] 初始状态、[1..1] 最终状态和 [0.. * ] 中间状态。

StateMachine:
    'InitialState' initialstate = InitialState
    'FinalState' finalstate = FinalState
    'States' '{' states+=State* '}' 
    'Transitions' '{' transitions+=Transitions ( "," transitions+=Transitions)* '}' 
    ;

这就是我编写规则的方式,但是当我生成 ecore 模型时,我注意到初始状态和最终状态与状态机的关系是 [0..1] 而不是 [1..1]如我所愿,转换和状态机之间的关系是 [0.. * ] 而不是 [1..*]。你能帮我找出我哪里出错了吗?

谢谢

【问题讨论】:

    标签: eclipse dsl state-machine xtext cardinality


    【解决方案1】:

    Xtext 对基于具体语法的ecore 文件没有任何限制。他们的约束已经被语法/具体语法验证/保证了。

    如果你想要一个更受约束的ecore,你需要从生成的元模型切换到导入的元模型。

    【讨论】:

    • 那么您的意思是规则编写正确,但它们只是没有显示在 ecore 元模型上?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多