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。提供输入文件时出现意外输出的主要内容,如果未能解决你的问题,请参考以下文章

在 vc6 中使用 bison 和 flex

使用jq选择对象时出现意外结果

windows下bison的安装与入门

执行 mochawesome-merge 时出现“JSON 输入意外结束”

在 Java 中创建列表列表时出现意外输出

直接打印到文本显存时出现意外输出