1

我有一个从 yacc/lex 生成的解析器。除了一种情况外,我设置的所有规则都可以正常工作。

如果此解析器正在解析的文件为空,则会出错。我想添加规则,以便在文件为空时不会出错。我没有在任何一个 .l/.y 文件中添加任何检查。

如何使用 YACC/LEX 来做到这一点?

提前致谢 !!

4

1 回答 1

2

词法分析器应该识别输入的结尾并相应地返回一个标记(即EOF)。

您的语法的开始规则可能如下所示:

%start program

...

program : EOF 
        | instructions EOF
        ;

正如 Ira Baxter 指出的那样,一个简单的“空”规则也足够了。GNU bison 手册为此提供了一个示例:

input   : /* empty */
        | input line
        ;
于 2012-06-15T08:39:58.713 回答