我正在为VBScript重写GoldParser语法。在VBScript中,语句使用换行符或':'
终止。因此我使用以下终端:
NewLine = {All Newline}
| ':'
因为每个语句都必须以Newline
终端结束,所以只接受以空行结尾的程序。如何扩展换行符终端以接受不以空行结尾的程序?我尝试了以下方法:
NewLine = {All Newline}
| ':'
| {EOF}
这不起作用,因为{EOF}
(文件结束)组不存在。
答案 0 :(得分:1)
EOF是一种特殊标记,我不知道任何允许您在生产规则中使用它的语法。它在令牌器不再接收数据时发出,因此它不是您可以在终端定义中使用的控制字符。
话虽如此,您有不同的可能性来解析(严格说来无效)输入。最简单的可能是在字符串末尾或标记化的文本末尾添加换行符。虽然这不会使它在GOLD Builder测试窗口中正确解析,但它会使您的代码按预期处理数据,并且不会增加语法的复杂性。