0

我在 xText 项目中编写了这个元模型:

Screen:
"Screen name: " name = ID
    "Level: " level = STRING
    "End: " end = INT
    background = [Background]
    character = [Character]
    (enemies+=Enemy)*
    (elements+=Element)*

Background:
"Background{
    Id: " id = ID
    "Image: " image = [Image]
"}";
...

您在那里看到的所有元类(背景、角色、敌人等)我在 ecore 中创建元模型没有任何问题,但是当我尝试定义这样的特定模型时(使用 Ctrl+Space):

Screen name: s1
Level: "easy"
End: 1000

我收到一个错误:预期 RULE_ID 的 INPUT 不匹配,我无法继续使用 Ctrl+Space 进行写入。任何想法为什么这不起作用?谢谢你。

4

1 回答 1

0

语法片段的问题是对交叉引用和包含引用的误解。您没有在示例文件中的某处定义背景,但语法需要对背景的引用。如果您将定义更改为以下内容,它将起作用:

Screen:
"Screen name: " name = ID
    "Level: " level = STRING
    "End: " end = INT
    background = Background
    character = Character
    (enemies+=Enemy)*
    (elements+=Element)*

Background:
"Background{
    Id: " id = ID
    "Image: " image = [Image]
"}";

但是,我希望您实际上想要在给定屏幕中使用交叉引用而不是包含背景。因此,在屏幕中使用它之前,您必须提供完整的语法或定义背景。

于 2012-11-25T19:04:46.163 回答