1

我正在为 VBScript 重写 GoldParser 语法。在 VBScript 中,语句使用换行符或':'. 因此我使用以下终端:

NewLine        = {All Newline}
               | ':'

因为每条语句都必须以Newline终端结尾,所以只接受以空行结尾的程序。如何扩展换行终端以接受不以空行结尾的程序?我尝试了以下方法:

NewLine        = {All Newline}
               | ':'
               | {EOF}

这不起作用,因为{EOF}(End of File) 组不存在。

4

1 回答 1

2

EOF 是一个特殊的标记,我不知道有任何语法允许您在生产规则中使用它。当标记器不再接收数据时发出它,因此它也不是您可以在终端定义中使用的控制字符。

话虽如此,您有不同的可能性来解析(严格来说是无效的)输入。最简单的可能是在要标记的字符串或文本的末尾附加一个换行符。虽然这不会使其在 GOLD Builder 测试窗口中正确解析,但它会使您的代码按预期处理数据,并且不会增加语法的复杂性。

于 2014-05-19T20:33:32.163 回答