Yacc

Yacc es un programa para generar analizadores sintácticos. Las siglas del nombre significan Yet Another Compiler-Compiler, es decir, "Otro generador de compiladores más". Genera un analizador sintáctico (la parte de un compilador que comprueba que la estructura del código fuente se ajusta a la especificación sintáctica del lenguaje) basado en una gramática analítica escrita en una notación similar a la BNF. Yacc genera el código para el analizador sintáctico en el Lenguaje de programación C.

Fue desarrollado por Stephen C. Johnson en AT&T para el sistema operativo Unix. Después se escribieron programas compatibles, por ejemplo Berkeley Yacc, GNU bison, MKS yacc y Abraxas yacc (una versión actualizada de la versión original de AT&T que también es software libre como parte del proyecto de OpenSolaris de Sun). Cada una ofrece mejoras leves y características adicionales sobre el Yacc original, pero el concepto ha seguido siendo igual. Yacc también se ha reescrito para otros lenguajes, incluyendo Ratfor, EFL, ML, Ada, Java, y Limbo.

Puesto que el analizador sintáctico generado por Yacc requiere un analizador léxico, se utiliza a menudo conjuntamente con un generador de analizador léxico, en la mayoría de los casos lex o Flex, alternativa del software libre. El estándar de IEEE POSIX P1003.2 define la funcionalidad y los requisitos a Lex y Yacc.

La versión Yacc de AT&T se convirtió en software libre; el código fuente está disponible con las distribuciones estándares del Plan 9 y de OpenSolaris.

Véase también

  • Analizador sintáctico LALR: el algoritmo de análisis subyacente en Yacc.
  • GNU bison: generador de analizadores sintácticos compatible con Yacc.

Referencias

  • Stephen C. Johnson. YACC: Yet another compiler-compiler. Unix Programmer's Manual Vol 2b, 1979.

Enlaces externos

  • Código fuente (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última). del yacc de AT&T usado en OpenSolaris.
  • Berkeley Yacc Archivado el 6 de febrero de 2007 en Wayback Machine.: variante de yacc escrita para evitar dependencias de algún compilador de C en particular.
  • Essence, un generador de analizadores LR(1) para Scheme.
  • ML-Yacc, una versión de yacc para el lenguaje Standard ML.
  • CL-Yacc, un generador de analizadores LALR(1) para Common Lisp.
  • Yecc, una versión de yacc para Erlang.
  • Happy, un generador de analizadores similar a yacc para Haskell.
  • A Compact Guide to lex & yacc (Una guía compacta a lex & yacc).
Control de autoridades
  • Proyectos Wikimedia
  • Wd Datos: Q305932
  • Identificadores
  • BNF: 12472883s (data)
  • GND: 4293012-1
  • Informática
  • Gentoo: dev-util/yacc
  • Wd Datos: Q305932