【问题标题】:How to use EOF in Xtext如何在 Xtext 中使用 EOF
【发布时间】:2012-06-13 23:31:48
【问题描述】:

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

【问题讨论】:

    标签: xtext


    【解决方案1】:

    我只能从语法 sn-ps 猜测你的最终语法应该是什么样子,但不会

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

    为你工作?

    【讨论】:

    • 感谢您的快速回复。不,它不起作用,我得到相同的“输入 '' 没有可行的替代方案”错误。
    • 请发布您的完整语法和您希望有效的完整示例文件。
    猜你喜欢
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多