Faça bison reduzir para iniciar o símbolo somente se EOF for encontrado
Eu estou usando o Bison com Flex. Eu tenho a seguinte regra no meu arquivo de entrada Yacc:
program : PROGRAM m2 declarations m0 block {cout << "Success\n"} ;
O problema é que, se eu tenho um programa que está parcialmente correto, mas depois há algum "lixo" antes do EOF, ele irá reduzir de acordo com a regra anterior, reportar "sucesso" e só então reportar um erro.
Eu quero incluir EOF no final da regra acima, mas, em seguida, Flex teria que retornar EOF quando lia<<EOF>>
e como Bison saberia quando encerrar o programa? Agora, eu tenho isso no Flex:
<<EOF>> {return 0;}