如何在 xtext 中创建 goto 表达式?

How can I create a goto expression in xtext?

我想创建一个 goto 表达式如下

//label
 <bb 2> :

//goto
goto <bb 2>;

以下语法适用于简单的 ID。我不知道如何引用 <ID INT> 在 goto 表达式中。

Goto returns Goto:
    {Goto}
    'goto' goto+=[Label]  ';'
;

LabelDef returns LabelDef:
    {LabelDef}
    label+= Label ':'
    ;

Label returns Label:
    {Label}
    name= ID
    ;

知道怎么做吗?

我想你想要一个本质上是“ID INT”的终端,然后用它来交叉引用你的标签。 我认为这将需要大量工作才能在标签中允许“空格”。为什么不简单地依靠终端“ID”,用户可以根据需要将它们命名为“bb2”?

您正在查找的功能是数据类型规则

Goto returns Goto:
    {Goto}
    'goto' goto+=[Label|IDandINT]  ';'
;

LabelDef returns LabelDef:
    {LabelDef}
    label+= Label ':'
    ;

Label returns Label:
    {Label}
    name= IDandINT
    ;
IDandINT: ID INT;

您还可以为数据类型规则引入/自定义 DefaultTerminalConverters/IValueConverter 以标准化空白