如何在xtext中创建goto表达式



我想创建如下的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
;

你知道怎么做吗?

您要查找的功能是DataType规则

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,以规范空白

我认为您想要一个本质上是";ID INT";然后使用它来交叉引用您的标签。我认为这将是一项艰巨的工作,只是为了能够允许";空格";在您的标签中。为什么不简单地依靠"终端"呢;ID";并且用户可以将它们命名为";bb2";如果他们愿意?

最新更新