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]
- Codi font[Enllaç no actiu] del yacc d'AT&T usat en OpenSolaris.
- Berkeley Yacc Arxivat 2007-02-06 a Wayback Machine.: variant de yacc escrita per a evitar dependències d'algun compilador de C en particular.
- Essence, un generador d'analitzadors LR(1) per a Scheme.
- ML-Yacc, una versió de yacc per al llenguatge Standard ML.
- CL-Yacc, un generador d'analitzadors LALR(1) para Common Lisp.
- Yecc Arxivat 2006-05-14 a Wayback Machine., una versió de yacc para Erlang.
- Happy, un generador d'analitzadors similar a yacc per a Haskell.
- A Compact Guide to lex & yacc (Una guia compacta a lex & yacc).