Pregunta

Tengo una aplicación en la que ya tengo un programa de análisis para una clase de gramática y tengo que añadir una segunda gramática diferente para otro propósito.

¿Es posible tener más de una?

Y si es así, ¿cómo obtener otro punto de entrada?

Gracias

David Allan Finch

¿Fue útil?

Solución

Creo que se puede a esto usando la opción --name-prefix de bisonte, y la opción --prefix a Flex.

En ambos casos, podrá sustituir el prefijo predeterminado "yy" que se utiliza en las funciones generadas con un prefijo de su propia elección.

Otros consejos

Sí, es posible.

yacc debe tener una bandera -p, donde se puede especificar un prefijo diferente en lugar del predeterminado "aa".

El archivo generado por conatins lex sólo un símbolo que se utiliza fuera: yylex. Se puede compilar con -Dyylex = mySecondLex, por ejemplo.

No es una respuesta directa, pero es posible que desee considerar el uso de un enfoque más genérico, como GoldParser que le permite utilizar un motor genérico para procesar la LALR y DFA presentadas genera a partir de sus gramáticas.

Este revés, se puede utilizar cualquier número de diferentes gramáticas en la misma aplicación, y cambiando la gramática no crear nuevo código fuente, sino más bien sólo nuevos archivos de tabla (que podrían incluirse como recurso incrustado o similar).

lex y yacc estándar no tienen manera de hacer eso. Flex y Bison hacen, al igual que algunas otras implementaciones. Ya que dijo (en un comentario) que no está utilizando flex y bisontes, que las versiones de lex y yacc son usando?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top