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

Parsing 分析空文件yacc/lex时没有错误,parsing,bison,yacc,lex,Parsing,Bison,Yacc,Lex,我有一个从yacc/lex生成的解析器。除了一个案例外,它对我制定的所有规则都很有效 若此解析器正在解析的文件为空,则会给出错误。我想添加规则,这样当文件为空时它不会给出错误。我没有在.l/.y文件中添加任何检查 如何使用YACC/LEX实现这一点 提前谢谢 lexer应该识别输入的结束,并相应地返回一个令牌(即EOF) 语法的开始规则可能如下所示: %start program ... program : EOF | instructions EOF ;

我有一个从yacc/lex生成的解析器。除了一个案例外,它对我制定的所有规则都很有效

若此解析器正在解析的文件为空,则会给出错误。我想添加规则,这样当文件为空时它不会给出错误。我没有在.l/.y文件中添加任何检查

如何使用YACC/LEX实现这一点


提前谢谢

lexer应该识别输入的结束,并相应地返回一个令牌(即
EOF

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

%start program

...

program : EOF 
        | instructions EOF
        ;
正如Ira Baxter指出的,一个简单的“空”规则也就足够了。提供了一个示例:

input   : /* empty */
        | input line
        ;

正如你所说,我试图在lexer中识别EOF,我通过
实现了这一点。{if(yytext[0]==EOF){return tk|EOF;}}
但是通过调试我知道这个检查从来都不是真的,我在这里做错了什么吗?我想你最好使用一个。为什么他不能简单地写:“程序:|指令”?@LinusKleen谢谢!!你上次评论中的链接帮助很大。