如何在Xtext中使用EOF

时间:2012-06-13 14:31:59

标签: xtext

我正在尝试将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应用程序时打开的窗口)
当我没有在最后一个元素(char)后面键入空格或分号时发生错误:

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(无)识别为有效的结束语句?

1 个答案:

答案 0 :(得分:0)

我只能从语法片段中猜出你的最终语法应该如何,但不会

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

为你工作?