解析空文件yacc / lex时没有错误

时间:2012-06-15 08:36:18

标签: parsing bison yacc lex

我有一个从yacc / lex生成的解析器。除了一个案例之外,它适用于我设定的所有规则。

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

如何使用YACC / LEX完成此操作?

提前致谢!!

1 个答案:

答案 0 :(得分:2)

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

你的语法启动规则可能如下所示:

%start program

...

program : EOF 
        | instructions EOF
        ;

正如伊拉巴克斯特指出的那样,一个简单的“空洞”规则也足够了。 GNU bison manual为此提供了一个示例:

input   : /* empty */
        | input line
        ;