tutorial part example descargar and parsing bison yacc flex-lexer lex

parsing - part - ¿Cuál es la diferencia entre Flex/Lex y Yacc/Bison?



yacc example (5)

Cuál es la diferencia entre Flex & Lex y Yacc & Bison. Busqué en Internet salvajemente y no encontré ninguna respuesta sólida.

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

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

    lex --version lex 2.5.35


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 en la actualidad.


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.


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


Hay algunas diferencias entre Lex y Flex, pero debes abusar de Lex para enfrentarte a los problemas con Flex. (Tengo un programa que abusa de Lex y no funciona en Flex, por lo tanto.) Esto se realiza principalmente en el área de entrada de entrada; en Lex, puede proporcionar su propio código de entrada y modificar el flujo 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, AT & T 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 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 SVRx de Unix: compañías como IBM (AIX), HP (HP-UX) y Sun (Solaris) tienen versiones modificadas 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 gratuitos. (AT & T) Lex y Yacc no lo son.


YACC está disponible bajo licencias de fuente abierta tanto de Plan 9 como de Open Solaris. Además, también hay 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.