yacc

Z Wikipedie, otevřené encyklopedie

Skočit na: Navigace, Hledání

Yacc je generátor syntaktických analyzátorů vyvinutý Stephenem C. Johnsonem z AT&T pro Unixové operační systémy. Tato zkratka znamená "Yet Another Compiler Compiler" v překladu "Ještě další parser generátor". Yacc generuje parser (část překladače, která má za úkol vygenerovat lexikální a syntaktický analyzátor jazyka) z gramatiky, která obsahuje popis lexikálních symbolů pomocí regulárních výrazů (podobně jako BNF). Yacc generuje kód pro parser v programovacím jazyce C.

Yacc bylo dostupné jako implicitní parser generátor na většině unixových systémů. Později však bylo nahrazeno novějšími a kompatibilnějšími programy jako je Berkeley Yacc, GNU bison, MKS yacc a Abraxas pcyacc. Aktualizovaná verze původní verze od AT&T je nyní obsažena v projektu OpenSolaris společnosti Sun. Každá verze nabízí oproti původnímu yacc drobná vylepšení a doplňkové vlastnosti, ale základní koncept zůstal stejný. Yacc bylo také přepsáno pro další programovací jazyky jako je Ratfor, EFL, ML, Ada, Java, a Limbo.

Parser vygenerovaný yacc vyžaduje ještě Lexikální analyzátor, jehož generátory jsou například Lex nebo Flex. Standard IEEE POSIX P1003.2 definuje funkci a požadavky jak na Lex tak i Yacc.

Některá verze AT&T yacc se postupem času staly open source aplikacemi. Otevřený zdrojový kód je dostupný například k různým implementacím distribucí Plan 9 a OpenSolaris.

[editovat] Související články

  • Lexikální analýza - Lexikální analyzátor rozdělí vstupní posloupnost znaků na lexémy, ty jsou poskytnuty ke zpracování syntaktickému analyzátoru
  • Syntaktická analýza - proces analýzy posloupnosti formálních prvků s cílem určit jejich gramatickou strukturu vůči předem dané formální gramatice
  • Flex - programovací nástroj k řešení úlohy lexikální analýzy, který generuje text v jazyce C.
  • BNF - metasyntaxe používaná k vyjádření bezkontextové gramatiky, která se používá pro popis formálních jazyků
  • GCC - sada kompilátorů vytvořených v rámci projektu GNU

[editovat] Externí odkazy

  • Tutorial pro lex/yacc/compiler napsaný Arnabem Chakrobarty. (v Angličtině)

V tomto článku je použit překlad textu z článku yacc na anglické Wikipedii.