¿Cuál es la diferencia entre Flex & Lex y Yacc & Bison? Busqué en Internet y no encontré ninguna respuesta sólida.
¿Puedo instalar Lex y Yacc puros en Ubuntu, o puedo instalar solo flex y bison? Estoy confundido.
- ¿Lex o Yacc siguen siendo mantenidos por alguien?
- ¿Son todos gratis?
Si Lex no es gratuito, ¿por qué lo tengo instalado en mi distribución de Ubuntu?
lex --version lex 2.5.35
Respuestas:
Hay algunas diferencias entre Lex y Flex, pero debe abusar de Lex para encontrarse con los problemas con Flex. (Tengo un programa que abusa de Lex y, por lo tanto, no funciona bajo Flex.) Esto es principalmente en el área de búsqueda anticipada de entrada; en Lex, puede proporcionar su propio código de entrada y modificar la secuencia de caracteres; Flex no te dejará hacer eso.
Yacc y Bison son bastante compatibles, aunque Bison tiene algunos trucos adicionales que puede hacer.
Probablemente no pueda encontrar copias legítimas de (las versiones originales de AT&T de) Lex y Yacc para instalar en Ubuntu. No diría necesariamente que es imposible, pero no soy consciente de eso. Flex y Bison están fácilmente disponibles y son equivalentes para la mayoría de los propósitos. También puede encontrar varios programas alternativos y aproximadamente equivalentes del mundo BSD.
Lex y Yacc son mantenidos por los licenciatarios de Unix SVRx; compañías como IBM (AIX), HP (HP-UX) y Sun (Solaris) han modificado las versiones de Lex y Yacc a sus órdenes. MKS también proporciona MKS Lex y MKS Yacc; sin embargo, el Yacc al menos tiene algunas extensiones no estándar.
Flex y Bison son gratis. (AT&T) Lex y Yacc no lo son.
fuente
#include
). Mi libro de O'Reilly sobre lex y yacc (no disponible aquí, lo siento) decía que solo era posible en lex a través de trucos repugnantes.Bison es la implementación / extensión GNU de Yacc, Flex es el sucesor de Lex. En cualquier caso, está bien (y recomendado) usar bison / flex.
fuente
En la mayoría de los sistemas Linux (¿todos?), "Lex" es en realidad un enlace simbólico a flex. Básicamente, es solo un nombre diferente a la versión gratuita.
fuente
YACC está disponible bajo licencias de código abierto de Plan 9 y Open Solaris. Además, también existe Berkeley YACC, que es compatible con el YACC original, pero no comparte el código fuente. Berkeley YACC se puede encontrar en cualquiera de los sistemas operativos BSD de código abierto.
fuente
Bison en una parte del proyecto GNU. Y yacc se usa como una utilidad en Berkeley Software Distribution (BSD). Aunque es compatible con yacc, pero Lex y Yacc son cosa del pasado. Flex y bison son ampliamente utilizados hoy en día.
fuente