Как поместить итоговое сводное сообщение в программу yacc? - PullRequest
0 голосов
/ 06 декабря 2009

Когда я перенаправляю ввод в свою программу yacc из входного файла, после того, как он заканчивает синтаксический анализ файла, я хочу, чтобы парсер yacc напечатал сводку того, что он сделал. Я хочу, чтобы он делал то же самое, если вводил ввод с клавиатуры, а затем нажимал Ctrl + D . Есть ли способ сделать это?

Ответы [ 2 ]

0 голосов
/ 12 июня 2016

по грамматике вы можете вызвать функцию функция должна быть на третьей части

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);} 

ваша функция может напечатать любую вещь, которую вы хотите, и грамматику, потому что вы теперь откуда она вызывает функцию по заданному вами параметру

0 голосов
/ 06 декабря 2009

Я обнаружил, что решением моей проблемы является создание функции yywrap () в файле .y. Эта функция запускается, когда yacc встречает EOF, который является либо концом входного файла, либо пользователем, нажимающим Ctrl-D. Это решение.

...