当我将输入从输入文件重定向到我的 yacc 程序时,在它完成解析文件后,我希望 yacc 解析器打印它所做的摘要。如果我通过键盘输入输入然后按Ctrl+ ,我希望它做同样的事情D。有没有办法做到这一点?
问问题
310 次
2 回答
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);}
您的函数可以打印您想要的任何内容,也可以打印语法,因为您现在可以从它通过您提供的参数调用函数的位置
于 2016-06-11T21:03:22.943 回答
-4
我发现我的问题的解决方案是在 .y 文件中创建一个函数 yywrap() 。当 yacc 遇到 EOF(输入文件的结尾或用户按 Ctrl-D)时,该函数将运行。这就是解决方案。
于 2009-12-06T07:42:51.817 回答