我有一个从 yacc/lex 生成的解析器。除了一种情况外,我设置的所有规则都可以正常工作。
如果此解析器正在解析的文件为空,则会出错。我想添加规则,以便在文件为空时不会出错。我没有在任何一个 .l/.y 文件中添加任何检查。
如何使用 YACC/LEX 来做到这一点?
提前致谢 !!
词法分析器应该识别输入的结尾并相应地返回一个标记(即EOF
)。
您的语法的开始规则可能如下所示:
%start program
...
program : EOF
| instructions EOF
;
正如 Ira Baxter 指出的那样,一个简单的“空”规则也足够了。GNU bison 手册为此提供了一个示例:
input : /* empty */
| input line
;