当我从输入文件将输入重定向到我的yacc程序时,在完成解析文件之后,我希望yacc解析器打印它的功能摘要。如果我通过键盘输入输入然后按 Ctrl + D ,我希望它能做同样的事情。有没有办法做到这一点?
答案 0 :(得分:0)
关于语法,你可以调用一个函数 该功能应该在第三部分
FIRST PART
%%
second PART
GRAMMAR { CALL YOUR FUNCTION();}
GRAMMAR2 VAR1 VAR2 VAR3 {CALL YOUR FUNCTION2($1,$2,$3);}
%%
third PART
YOUR FUNCTION(){}
YOUR FUNCTION2(int c, char*y , int z){}
int main (void) {
}
void yyerror (char *s) {fprintf (stderr, "%s\n", s);}
你的函数可以打印任何你想要的语法,因为你现在可以通过你给出的参数来调用函数
答案 1 :(得分:-4)
我发现我的问题的解决方案是在.y文件中创建一个函数yywrap()。该函数将在yacc遇到EOF时运行,该EOF是输入文件的结尾或用户按下Ctrl-D。这是解决方案。