如何在 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 以标准化空白
我想创建一个 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 以标准化空白