BISON FLEX。提供输入文件时出现意外输出
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BISON FLEX。提供输入文件时出现意外输出相关的知识,希望对你有一定的参考价值。
我正在尝试使用flex和bison创建一个计算器,它获得一组操作(结果分配给变量)。计算器使用内存来存储这些变量。当我通过终端(stdin键盘)进行计算时,一切正常。但是,当我尝试使用文件时,内存中没有任何内容。
我有.y和.l
这就是我在.y中指定的内容。
extern FILE* yyin;
并在主要方法:
yyin = fopen(argv[1], "rt");
yyparse ();
listTofile(list, argv[2]); //method that backups memory into a file
fclose(yyin);
例如,当我输入A = 2 + 2时,该文件将存储名称变量和结果。当提示问我指示时,这完全有效。但是,当提供文件时,解析器会检测所有文件但不存储任何内容(使用flex -d检查)
答案
使用flex,通常需要调用yyrestart(yyin);
切换到新的输入源以重置所有缓冲源。也就是说,如果你在fopen调用之前从未从yyin读过任何东西,这应该没有任何区别,因为不应该有任何缓存的缓冲区内容要重置。
以上是关于BISON FLEX。提供输入文件时出现意外输出的主要内容,如果未能解决你的问题,请参考以下文章