Bisonte com segurança / com reentrada + flex

Eu realmente preferiria um exemplo prático a qualquer explicação. Tudo o que eu li até agora no site de documentação de Bison contradiz o que o Flex diz. Diz-se declararyylex Como

int yylex (yyscan_t yyscanner);

outro quer que seja:

int yylex(YYSTYPE *lvalp, YYLTYPE *llocp);

O que eu realmente preciso é das informações de localização. Ainda não tenho certeza se precisoYYSTYPE (Eu não tenho um uso para essas informações no momento, mas talvez no futuro o faça).

Sem relação com o exposto acima, e como bônus, seria interessante saber por que essa infraestrutura é tão ruim. Parece uma coisa tão simples de fazer, e ainda assim é ruim demais. Nunca funciona com padrões. Mesmo escrever um exemplo mais simples de calculadora exige muitos dias para corrigir erros de configuração ... por que?

questionAnswers(1)

yourAnswerToTheQuestion