我想创建如下的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";如果他们愿意?