gpt4 book ai didi

eclipse - 如何修复xtext上的简单错误?

转载 作者:行者123 更新时间:2023-12-02 10:54:40 25 4
gpt4 key购买 nike

这是我的示例,向您展示我需要调用两个规则的问题

generate umlDsl "http://www.xtext.org/example/umldsl/UmlDsl"

Model:
elements+=rule*
;
rule:
rul1 'and' rul2
;

rul1:
'rul1' action1=[uml::Action|FQN]
;

rul2:
'rul2' action2=[uml::Action|FQN]
;

FQN returns ecore::EString:
ID ("." ID)*
;

我有这个错误

此行有多个标记(rul1'和'rul2)
  • 当“当前”时,不允许进行未分配的规则调用
    已创建。
  • 无法在规则
  • 中两次更改类型

    我想知道为什么会有这个错误,以及如何解决

    最佳答案

    发生这些错误是由于规则rule的规则实现

    rule:
    rul1 'and' rul2
    ;

    据我了解, rule具有两个属性, rul1rul2。但是在您的实现中, rule没有任何属性。要将 rul1rul2定义为属性,您已将这些元素分配给属性。可能看起来像这样:
    rule:
    rul1=rul1 'and' rul2=rul2
    ;

    您是否查看过Xtext文档[1]以了解语法语言的语法和语义?

    您需要了解以下内容来理解错误:

    解析器规则的属性需要一个名称。您为此名称分配一个值,这是另一个解析器规则名称。类似于将值赋给Java中的字段:
    int i = 42;

    字段声明由字段类型(int)和字段名称(i)组成,通常后面是赋值运算符(=)和值(42)。解析器规则的属性定义遵循以下方案:
    RuleA: 'some syntax' attributeName=OtherRule 'more syntax';
    OtherRule: 'other syntax' attribute=NextRule ... ;
    ...

    Xtexts语法语言中的解析器规则就像Java类。 RuleName对应于 class ClassName。然后,您可以使用 'keyword'定义一些静态语法。如果任何其他规则应在任何其他规则内出现,则可以将其理解为字段声明。此规则是这样实现的属性:
    attributeName=AnyRule

    其中 attributeName对应于字段名称。但是,为属性分配了值的类型(AnyRule)。

    顺便说一句。我强烈建议规则名称应以大写字母开头,属性名称应以小写字母开头。

    [1] https://www.eclipse.org/Xtext/documentation/301_grammarlanguage.html

    关于eclipse - 如何修复xtext上的简单错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29008166/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com