Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bison Lex/Yacc:输入前打印消息_Bison_Yacc_Lex_Prompt_Flex Lexer - Fatal编程技术网

Bison Lex/Yacc:输入前打印消息

Bison Lex/Yacc:输入前打印消息,bison,yacc,lex,prompt,flex-lexer,Bison,Yacc,Lex,Prompt,Flex Lexer,我试图弄清楚在使用lex/yacc(flex/bison)时如何显示消息/提示 例如,main看起来是这样的: int main(int argc, char *argv[]) { yyparse(); } 它调用yacc,它调用yylex()。这将产生一个等待STDIN的空行。我怎样才能显示像…这样的消息 message $ _ 信息$_ 而不是 _ _ 其中下划线表示光标位置,正在等待来自STDIN的输入 忘了提一下,我想反复打印提示。。。所以在每次lex/yacc请求stdin的

我试图弄清楚在使用lex/yacc(flex/bison)时如何显示消息/提示

例如,main看起来是这样的:

int main(int argc, char *argv[])
{
    yyparse();
}
它调用yacc,它调用yylex()。这将产生一个等待STDIN的空行。我怎样才能显示像…这样的消息

message $ _ 信息$_ 而不是

_ _ 其中下划线表示光标位置,正在等待来自STDIN的输入


忘了提一下,我想反复打印提示。。。所以在每次lex/yacc请求stdin的输入之前..

都会解决这个问题。我必须将它作为一个动作集成到我的yacc文件中

我的看起来像:

int main(int argc, char *argv[])
{
    prompt();
    yyparse();
}
我的yacc文件(.y)看起来像

stmnt : /* empty */ | stmnt whatever { do_something(); prompt(); } ; stmnt :/*空*/ |stmnt whatever{do_something();prompt();} ;
因此,每次解析stmnt(顶层)时,它都会在之后显示提示。

另一种解决方案是添加默认规则:[\r\n]{prompt();}