BISON FLEX。提供输入文件后出现意外输出

时间:2019-04-20 15:22:25

标签: c bison flex-lexer lex lexical-analysis

我正在尝试创建一个带有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检查)

1 个答案:

答案 0 :(得分:0)

使用flex时,通常需要调用yyrestart(yyin);来切换到新的输入源,以重置所有缓冲源。就是说,如果您在fopen调用之前从未从yyin读取任何内容,那么这不会有任何区别,因为不应有任何要重置的缓存缓冲区内容。