yacc

Z Wikipedie, otevřené encyklopedie
yacc
VývojářStephen C. Johnson
Vyvíjeno vC
Typ softwaruLALR parser generator
Některá data mohou pocházet z datové položky.

yacc je v informatice generátor syntaktických analyzátorů vyvinutý Stephenem C. Johnsonem z AT&T pro unixové operační systémy. Zkratka znamená Yet Another Compiler Compiler v překladu „Ještě další generátor parserů“. 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 zdrojový kód pro parser v programovacím jazyce C.

Charakteristika[editovat | editovat zdroj]

Yacc byl dostupný jako implicitní parser generátor na většině unixových systémů. Později však byl nahrazen 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 Microsystems. 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án pro další programovací jazyky jako je PHP, 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 na Yacc.

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

Související články[editovat | editovat zdroj]

  • 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
  • PACC (PHP YACC) – je alternativní implementace Lex a Yacc v jazyce PHP

Reference[editovat | editovat zdroj]

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

Externí odkazy[editovat | editovat zdroj]

  • Tutorial pro lex/yacc/compiler napsaný Arnabem Chakrobarty (anglicky)
  • Playground prostředí pro učení se a testování syntaxe