¿Cuál es la mejor manera de manejar múltiples analizadores Flex/Bison dentro de un proyecto?Analizadores múltiples de flex/bison
Escribí un analizador y ahora necesito un segundo en el mismo proyecto. Hasta ahora en la tercera sección de parser1.y
inserté el método main(..)
y llamé yyparse
desde allí.
Lo que quiero conseguir es tener dos analizadores diferentes (parser1.y
y parser2.y
) y ser capaz de utilizarlas de una función externa (vamos a suponer main
en main.cpp
).
¿Qué precauciones debo usar para exportar las funciones yyparse
fuera de los archivos .y
y cómo debo manejar dos analizadores?
PS. Estoy usando g ++ para compilar, pero no las versiones C++ de Flex y Bison, y me gustaría mantenerlo así (evitando así encapsular el analizador dentro de un objeto).
Cuando hago esto, mi lexer y analizador tienen muchas referencias a YYTYPE y YYSTYPE, etc. y la compilación falla. ¿Por qué no se están convirtiendo esos? ¿¿Qué estoy haciendo mal?? No quiero un analizador de reentrada, solo quiero un analizador de una sola vez que invoque a uno de los dos analizadores, luego el programa se cierra. – TimeHorse
@ TimeHorse: dada la cantidad de tiempo entre la respuesta a esta pregunta y su comentario/pregunta, creo que debería hacer una nueva pregunta, ilustrando el problema que tiene con dos pequeños ejemplos de lexer/gramática (un MCVE - [MCVE ]) y muestra el proceso de compilación que estás usando y los mensajes de error que recibes. Sin que aproveches la oportunidad para proporcionar esa información, que obtienes con una nueva pregunta, realmente no puedo dar una respuesta. De todos modos regrese y deje un comentario aquí pidiéndome que mire su nueva pregunta; considere incluir un enlace a esta pregunta en la suya también. –