2

我正在尝试使 Xtext 语法将文件的结尾识别为有效语句,但到目前为止我所做的一切都不起作用。

尝试直接使用 EOF 将在编辑器中向我显示“在输入 'EOF' 时没有可行的替代方案”消息:

Object :
    typ=('char'| 'any' | 'number' | 'space' | 'symbol') ( ' ' | ';' | EOF )
;

所以我尝试引入一个链接到EOF的终端:

terminal ETX: EOF;
...
Object :
    typ=('char'| 'any' | 'number' | 'space' | 'symbol') ( ' ' | ';' | ETX )
;

xtext 可以通过这种方式编译,但会在
“语言编辑器窗口”(将 xtext 作为 eclipse 应用程序运行时打开的窗口)中给出与上述相同
的错误。当我没有在后面键入空格或分号时会发生错误最后一个元素(字符):

symbol number char(!)

当我将所有三个允许的元素放入终端时,也会发生同样的事情:

terminal END: ( ' ' | ';' | EOF);
...
Object :
    typ=('char'| 'any' | 'number' | 'space' | 'symbol') END
;

该语法用于描述一种正则表达式语言,
它将用于解析已定义格式的字符串。例如:(
我将用下划线替换空格以使这一点更清楚)

char_symbol_number_
char_symbol_number;

被代码更正接受(不显示错误)。

然而

char_symbol_number

将在第二个 Eclipse 编辑器窗口中给我上述错误。
(对于我定义的语言,具有代码完成等功能。)

为了指出这一点,我想要完成的是纯粹的外观调整,
这样我就可以保留最后一个语句,而无需添加空格或分号。


所以问题是:如何让 Xtext 将 EOF(无)识别为有效的结束语句?

4

1 回答 1

0

我只能从语法片段中猜测你的最终语法应该是什么样子,但不会

Object: typ=('char'|'any') ';'? ;

为你工作?

于 2012-06-13T14:55:01.477 回答