2009-04-08 16 views

Respuesta

8

creo que pueda para esto utilizando la opción --name-prefix de bisonte, y la opción --prefix a Flex.

En ambos casos, le permiten reemplazar el prefijo "yy" predeterminado usado en las funciones generadas con un prefijo de su elección.

+0

Estoy usando lex y yacc, pero esto es bueno saber si cambiamos a las versiones de software gratuito. Gracias dave –

+0

ah, pero usted los mencionó en sus etiquetas ... – Alnitak

+0

Es cierto. Si solo la forma de hacerlo funcionar es usar flex y bisonte. Tendremos un cambio para usarlos. –

2

Sí, es posible.

yacc debería tener un indicador -p, donde puede especificar un prefijo diferente en lugar del "yy" predeterminado.

El archivo generado por lex contiene solo un símbolo utilizado fuera: yylex. Puede compilar con -Dyylex = mySecondLex, por ejemplo.

+0

Necesito comprobarlo pero eso es justo lo que necesito. Gracias Dave. –

+0

Espero que su versión de yacc tenga esta bandera. De lo contrario, puedes cambiar a bisonte, no es realmente diferente. – Ingo

+0

¿No son sus símbolos como yytext y demás (yywrap?) Que también se usan afuera? –

1

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 el LALR y el DFA generado a partir de sus gramáticas.

De esta forma, puede usar cualquier cantidad de gramáticas diferentes en la misma aplicación y cambiar la gramática no crea un nuevo código fuente, sino simplemente archivos de tabla nuevos (que podrían incluirse como recurso incrustado o similar).

+0

No estamos en posición de cambiar el sistema en el mo, pero puede que sea uno para mirar en el futuro. Gracias Dave. –

1

Standard lex y yacc no tienen forma de hacerlo. Flex y Bison do, al igual que otras implementaciones. Como dijo (en un comentario) que no está utilizando flex y bison, ¿qué versiones de lex y yacc están usando?

+0

POSIX requiere yacc para admitir cambios en el prefijo del símbolo con '-p prefijo' (en lugar de 'yy'). Curiosamente, no requiere eso para lex; Supongo que, en la práctica, mucha gente codifica manualmente el analizador léxico y, por lo tanto, no era tan crítico. –

Cuestiones relacionadas