Bisonte + reentrante a prueba de hilos + flex

Realmente preferiría un ejemplo de trabajo a cualquier explicación. Lo que he leído hasta ahora en el sitio de documentación de Bison contradice lo que dice Flex. Uno dice declararyylex como

int yylex (yyscan_t yyscanner);

otro quiere que sea:

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

Lo que realmente necesito es la información de ubicación. Todavía no estoy seguro si necesitoYYSTYPE (No tengo uso de esta información en este momento, pero tal vez en el futuro lo haga).

Sin relación con lo anterior, y como beneficio adicional, sería interesante saber por qué esta infraestructura es tan mala. Parece algo muy sencillo de hacer y, sin embargo, es muy malo. Nunca funciona con los valores predeterminados. Incluso escribir un ejemplo de calculadora de libro de texto más simple requiere muchos días para corregir los errores de configuración ... ¿por qué?

Respuestas a la pregunta(1)

Su respuesta a la pregunta