【发布时间】:2020-11-10 06:15:15
【问题描述】:
这是词法分析的主要功能。
如果我使用yyin 从文件中获取数据,yyout 执行并写入文件,但是当我从终端提供代码时 yyout 不起作用。我该如何解决?
int main(int argc, char *argv[])
{
extern FILE *yyin, *yyout;
char *input;
printf("flexing there\n argc=%d\n argv[0]=%s argv[1]=%s \n",argc,argv[0],argv[1]);
if(argc > 1 && strstr(argv[1],".g++") != NULL){
printf("we will read your file = %s\n",argv[1]);
yyin = fopen(argv[1], "r");
}
else if(argc > 1){
printf("your file type is wrong ,must be .g++ type\n");
return 0;
}
else{
printf("enter your code please\n ");
}
yyout = fopen("outputlex.txt", "w");
yylex();
return 0;
}
我在这样的规则部分使用 yyout
%%
"(" fprintf(yyout,"OP_OP\n");
%%
【问题讨论】:
-
请提供一些“yyout 不起作用”的证据。你甚至在哪里使用
yyout?你如何测试?你得到了什么结果,你期望什么?请参阅How to Ask,尤其是如何创建minimal reproducible example -
“从终端提供代码”是什么意思?
-
新增信息,感谢评价
-
可能是您在完成后忘记发送 CTRL+D 吗?顺便说一句,您的代码在这里工作:我在启动后向 STDIN 键入一个
(字符,然后键入 CTRL+D,文件output.txt包含字符串OP_OP。 -
@airween ,感谢它正在使用该组合,但是为什么它不能与 enter 一起使用,而 enter 不写入文件,只是在终端上写入,
标签: c flex-lexer lex