如何在yacc程序中放入最终摘要消息?

时间:2009-12-06 02:57:08

标签: c yacc lexical-analysis

当我从输入文件将输入重定向到我的yacc程序时,在完成解析文件之后,我希望yacc解析器打印它的功能摘要。如果我通过键盘输入输入然后按 Ctrl + D ,我希望它能做同样的事情。有没有办法做到这一点?

2 个答案:

答案 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。这是解决方案。