Berkeley Yacc ( byacc ) es un generador de analizador sintáctico Unix diseñado para ser compatible con Yacc . Fue escrito originalmente por Robert Corbett y lanzado en 1989. [2] Debido a su licencia liberal y porque era más rápido que AT&T Yacc, rápidamente se convirtió en la versión más popular de Yacc. [3] Tiene las ventajas de estar escrito en ANSI C89 y ser un software de dominio público .
Autor (es) original (es) | Robert Corbett |
---|---|
Desarrollador (es) | Thomas Dickey |
Versión inicial | 2 de septiembre de 1989 [1] |
Lanzamiento estable | 20200330/30 de marzo de 2020 |
Repositorio | |
Escrito en | ANSI C89 |
Sistema operativo | Tipo Unix |
Tipo | Generador de analizador |
Licencia | dominio publico |
Sitio web | isla invisible |
Contiene características que no están disponibles en Yacc, como la reentrada, que se implementa de una manera que es ampliamente compatible con GNU Bison . [4] [5]
Historia
En 1985, Robert Corbett desarrolló un generador de analizador sintáctico LALR original basado en un artículo de 1982 de DeRemer y Pennello. [6] Corbett lo escribió como parte de su investigación hacia el doctorado. recibió de la Universidad de California, Berkeley en junio de 1985. [7] [8] Originalmente se llamaba Byson y era incompatible con Yacc, pero posteriormente pasó a llamarse Bison y se convirtió en la base de GNU Bison .
Más tarde, en 1985, Corbett derivó otro generador de analizador sintáctico LALR compatible con Yacc originalmente llamado Zeus pero posteriormente rebautizado como Zoo. [9] Corbett publicó el código fuente de Zoo en un grupo de noticias de Usenet, pero pasó mayormente desapercibido hasta más tarde en septiembre de 1989 cuando Corbett publicó en el grupo de noticias comp.compilers acerca de poner el código fuente en un servidor FTP . [1] Hubo una discusión sobre el cambio de nombre y en octubre de 1989 se conoció como Berkeley Yacc (byacc). [10]
En 1995, Chris Dodd desarrollado BtYacc, un backtracking derivado de Berkeley Yacc para apoyar el análisis idiomas sensibles al contexto como C ++ , [11] [12] basado en un documento de 1993 por Merrill describir modificaciones similares a AT & T Yacc. [13] [14] Ofrece retroceso y desambiguación semántica para analizar gramática ambigua . Una regla analizada pero rechazada por información semántica se puede revertir, de modo que el analizador pueda probar otra regla. [15] [16] Sin embargo, también ha sido criticado por necesitar acciones de prueba sin efectos secundarios y su manejo inflexible de los conflictos de reducción de cambios. [17]
En 1997, Vadim Maslov se hizo cargo del mantenimiento de BtYacc para respaldar un analizador COBOL desarrollado por su empresa. [18] En 1999, la última versión 3.0, se había convertido en C ++ , ya no de apoyo de C . [19]
En 2000, Thomas E. Dickey, transfirió Berkeley Yacc a VMS para facilitar la transferencia de estaño a VMS. Después de no poder encontrar otro mantenedor, Dickey ha mantenido Berkeley Yacc desde febrero de 2002. [20] Una actualización significativa fue la conversión de K&R C a ANSI C89 . [20]
En 2014, Tom Shields integró el retroceso de BtYacc en Berkeley Yacc subsumiendo efectivamente BtYacc y nuevamente admitiendo C (en lugar de solo C ++) en las versiones de Dickey desde abril de 2014. [21]
Ver también
- GNU Bison : otro reemplazo de software gratuito para Yacc, que comparte el mismo autor que Berkeley Yacc.
Referencias
- ↑ a b Corbett, Robert (2 de septiembre de 1989). "Generador de analizador sintáctico PD LALR (1)" . Grupo de noticias : comp.compilers . Usenet: [email protected] . Consultado el 26 de agosto de 2017 .
- ^ Doug Brown; John Levine; Tony Mason (octubre de 1992), lex & yacc (2 ed.), O'Reilly Media
- ^ John Levine (agosto de 2009), flex & bison , O'Reilly Media
- ^ "Berkeley Yacc" . invisible-island.net . Archivado desde el original el 19 de octubre de 2020 . Consultado el 10 de noviembre de 2020 .
... soporte para código reentrante, que ha evolucionado en byacc hasta el punto en que se puede comparar y ajustar con bison.
- ^ "Berkeley Yacc Change log, ver entrada" 2010-06-07 Andres.Meji " " . 2010-06-07. Archivado desde el original el 10 de noviembre de 2020 . Consultado el 10 de noviembre de 2020 .
- ^ DeRemer, Frank; Pennello, Thomas (octubre de 1982). "Cálculo eficiente de LALR (1) Look-Ahead Sets" (PDF) . ACM Trans. Programa. Lang. Syst. ACM . 4 (4): 615–649. doi : 10.1145 / 69622.357187 . ISSN 0164-0925 . S2CID 52833742 . Consultado el 26 de agosto de 2017 .
- ^ Corbett, Robert (24 de septiembre de 1998). "Re: ¿Alguien ha extendido MAXTABLE en analizadores de yacc?" . Grupo de noticias : comp.compilers . Usenet: [email protected] . Consultado el 26 de agosto de 2017 .
- ^ Corbett, Robert Paul (junio de 1985). Semántica estática y recuperación de errores del compilador (Ph.D.). Universidad de California, Berkeley . DTIC ADA611756 .
- ^ Corbett, Robert (6 de septiembre de 1989). "Nombre ese generador de analizador de PD" . Grupo de noticias : comp.compilers . Usenet: [email protected] . Consultado el 26 de agosto de 2017 .
- ^ Corbett, Robert (3 de octubre de 1989). "Berkeley Yacc (nueva versión)" . Grupo de noticias : comp.compilers . Usenet: [email protected] . Consultado el 26 de agosto de 2017 .
- ^ Dodd, Chris (7 de marzo de 1995). "BTYACC - yacc con retroceso y atributos heredados" . Grupo de noticias : comp.compilers . Usenet: [email protected] . Consultado el 18 de mayo de 2020 .
- ^ "README.txt" . BtYacc: Seguimiento de Yacc. Siber Systems . Consultado el 14 de mayo de 2020 .
- ^ "README.BYACC" . Retrocediendo yacc. GitHub . Consultado el 14 de mayo de 2020 .
- ^ Merrill, Gary H. (1 de agosto de 1993). "Análisis de gramáticas no LR (k) con yacc" . Softw. Pract. Exp . 23 (8): 829–850. CiteSeerX 10.1.1.14.1958 . doi : 10.1002 / spe.4380230803 . ISSN 0038-0644 . S2CID 14695500 . Consultado el 14 de mayo de 2020 .
- ^ "btyacc (1)" . Debian stretch: páginas de manual de Debian .
- ^ Dodd, Chris (13 de febrero de 2019). "ChrisDodd / btyacc" . GitHub .
- ^ Thurston, Adrian D .; Cordy, James R. (2006). "Un algoritmo de retroceso LR para analizar lenguajes dependientes del contexto ambiguos" (PDF) . En Erdogmus, Hakan; Stroulia, Eleni; Stewart, Darlene A. (eds.). Actas de la conferencia de 2006 del Centro de Estudios Avanzados sobre Investigación Colaborativa, 16-19 de octubre de 2006, Toronto, Ontario, Canadá . CASCON 2006. págs. 39–53. CiteSeerX 10.1.1.518.7094 . doi : 10.1145 / 1188966.1188972 . Consultado el 14 de mayo de 2020 .
- ^ Maslov, Vadim (8 de octubre de 1997). "La versión 1.1 de BtYacc (Backtracking Yacc) está disponible" . Grupo de noticias : comp.compilers . Usenet: [email protected] . Consultado el 18 de mayo de 2020 .
- ^ "BtYacc: Generador de analizador de Yacc BackTracking" . Siber Systems . Consultado el 18 de mayo de 2020 .
- ^ a b "BYACC - BERKELEY YACC" . invisible-island.net . Archivado desde el original el 6 de abril de 2002 . Consultado el 10 de noviembre de 2020 .
- ^ "Suelte t20140407" . ThomasDickey / byacc-snapshots. GitHub . Consultado el 18 de mayo de 2020 .
enlaces externos
- Página web oficial