Yacc
Tipus | LALR parser generator (en) |
---|---|
Versió inicial | 1970 |
Versió estable | |
Llicència | valor desconegut |
Epònim | yet another (en) |
Característiques tècniques | |
Escrit en | C |
Equip | |
Desenvolupador(s) | Stephen C. Johnson |
Fonts de codi | |
Més informació | |
Stack Exchange | Etiqueta |
| |
Yacc és un programa informàtic per a generar analitzadors sintàctics. Les sigles del nom signifiquen Yet Another Compiler-Compiler, és a dir, "Encara un altre generador de compiladors". Genera un analitzador sintàctic (la part d'un compilador que comprova que l'estructura del codi font s'ajusta a l'especificació sintàctica del llenguatge) basat en una gramàtica analítica escrita en una notació similar a la BNF. Yacc genera el codi per a l'analitzador sintàctic en el Llenguatge de programació C.
Va ser desenvolupat per Stephen C. Johnson en AT&T per al sistema operatiu Unix. Després es van escriure programes compatibles, per exemple Berkeley Yacc, GNU bison, MKS yacc i Abraxas yacc (una versió actualitzada de la versió original d'AT&T que també és programari lliure com a part del projecte d'OpenSolaris de Sun). Cadascun ofereix millores lleus i característiques addicionals sobre el Yacc original, però el concepte ha seguit sent igual. Yacc també s'ha reescrit per a altres llenguatges, incloent Ratfor, EFL, ML, Ada, Java, i Limbo.
Ja que l'analitzador sintàctic generat per Yacc requereix un analitzador lèxic, s'utilitza sovint conjuntament amb un generador d'analitzador lèxic, en la majoria dels casos lex o Flex, alternativa del programari lliure. L'estàndard de IEEE POSIX P1003.2 defineix la funcionalitat i els requisits a Lex i Yacc.
La versió Yacc d'AT&T es va convertir en programari lliure; el codi font està disponible amb les distribucions estàndards del Plan 9 i d'OpenSolaris.
Bibliografia
[modifica]- Stephen C. Johnson. YACC: Yet another compiler-compiler. Unix Programmer's Manual Vol 2b, 1979.
Enllaços externs
[modifica]- Essence, un generador d'analitzadors LR(1) per a Scheme (anglès)
- ML-Yacc, una versió de yacc per al llenguatge Standard ML (anglès)
- CL-Yacc, un generador d'analitzadors LALR(1) per a Common Lisp (anglès)