GoldParser:接受不以空行结尾的程序

时间:2014-05-19 10:52:46

标签: vbscript gold-parser

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

NewLine        = {All Newline}
               | ':'

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

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

这不起作用,因为{EOF}(文件结束)组不存在。

1 个答案:

答案 0 :(得分:1)

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

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