我正在尝试使 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(无)识别为有效的结束语句?