yacc
Vývojář | Stephen C. Johnson |
---|---|
Vyvíjeno v | C |
Typ softwaru | LALR 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
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
- 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
V tomto článku byl použit překlad textu z článku yacc na anglické Wikipedii.
Externí odkazy
- Tutorial pro lex/yacc/compiler napsaný Arnabem Chakrobarty (anglicky)
- Playground prostředí pro učení se a testování syntaxe