Pregunta

¿Cuál es la diferencia entre Flex & amp; Lex y Yacc & amp; Bisonte. Busqué en Internet de forma desenfrenada y no encontré ninguna respuesta sólida.

¿Puedo instalar Pure Lex y Yacc en Ubuntu, o puedo instalar solo flex y bison? Estoy confundido.

  • ¿Lex o Yacc siguen siendo mantenidos por alguien?
  • ¿Todos ellos son gratuitos?
  • Si Lex no es gratis, ¿por qué lo tengo instalado en mi distribución de Ubuntu?

    lex --version
    lex 2.5.35
    
¿Fue útil?

Solución

Hay algunas diferencias entre Lex y Flex, pero tienes que estar abusando de Lex para enfrentar los problemas con Flex. (Tengo un programa que abusa de Lex y no funciona bajo Flex, por lo tanto). Esto es principalmente en el área de entrada de lookahead; 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 AT & amp; T originales de Lex y Yacc para instalar en Ubuntu). No necesariamente diría que es imposible, pero no estoy al tanto 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 las licencias de Unix SVRx; empresas como IBM (AIX), HP (HP-UX) y Sun (Solaris) han modificado las versiones de Lex y Yacc a su disposición. 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 & amp; T) Lex y Yacc no lo son.

Otros consejos

Bison es la implementación / extensión de GNU de Yacc, Flex es el sucesor de Lex. En cualquier caso, está bien (y recomendado) usar bison / flex.

En la mayoría de los sistemas Linux (¿todos?), " Lex " Es en realidad un enlace simbólico para flexionar. Básicamente, es solo un nombre diferente al de la versión gratuita.

YACC está disponible bajo licencias de código abierto tanto de Plan 9 como de 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 de código abierto BSD.

Bisonte en una parte del proyecto GNU. Y yacc se utiliza como una utilidad en Berkeley Software Distribution (BSD). Aunque es compatible con yacc, Lex y Yacc son cosa del pasado. Flex y bison son ampliamente utilizados hoy en día.

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