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

问题描述 投票:0回答:1

我正在尝试使用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检查)

c bison flex-lexer lex lexical-analysis
1个回答
0
投票

使用flex,通常需要调用yyrestart(yyin);切换到新的输入源以重置所有缓冲源。也就是说,如果你在fopen调用之前从未从yyin读过任何东西,这应该没有任何区别,因为不应该有任何缓存的缓冲区内容要重置。

© www.soinside.com 2019 - 2024. All rights reserved.