我有一个从yacc / lex生成的解析器。除了一个案例之外,它适用于我设定的所有规则。
如果file是空的,这个解析器正在解析它会产生错误。我想添加规则,以便在文件为空时不会出错。我没有在我的.l / .y文件中添加任何检查。
如何使用YACC / LEX完成此操作?
提前致谢!!
答案 0 :(得分:2)
词法分析器应该识别输入结束并相应地返回一个标记(即EOF
)。
你的语法启动规则可能如下所示:
%start program
...
program : EOF
| instructions EOF
;
正如伊拉巴克斯特指出的那样,一个简单的“空洞”规则也足够了。 GNU bison manual为此提供了一个示例:
input : /* empty */
| input line
;