Zmniejsz żubra do symbolu startowego tylko wtedy, gdy znaleziono EOF

Używam Bison z Flex. W moim pliku wejściowym Yacc mam następującą regułę:

program     : PROGRAM m2 declarations m0 block {cout << "Success\n"} ;

Problem polega na tym, że jeśli mam program częściowo poprawny, ale przed EOF jest jakiś „śmieci”, to zmniejszy się on zgodnie z poprzednią regułą, zgłosi „sukces” i dopiero wtedy zgłosi błąd.

Chcę dołączyć EOF na końcu powyższej reguły, ale wtedy Flex musiałby zwrócić EOF, gdy przeczytał<<EOF>>i jak Bison wiedziałby, kiedy zakończyć program? Teraz mam to w Flex:

<<EOF>>    {return 0;}

questionAnswers(1)

yourAnswerToTheQuestion