Yacc

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Yacc (Yet Another Compiler-Compiler) je nástroj pro generování syntaktických analyzátorů v programovacím jazyce C nebo C++. Používá se především při vývoji kompilátorů a interpretů, ale také při tvorbě překladačů pro formální jazyky, jako je například HTML. Yacc je součástí Unixových operačních systémů již od roku 1970 a stále se využívá i v současnosti. Cílem Yaccu je generování syntaktického analyzátoru (tzv. parseru), který pomocí gramatiky rozpoznává správnou syntaxi zadaného textu. V článku jsou popsány základní principy a vlastnosti Yaccu, včetně jeho použití a syntaxe.

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á 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, +more'>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. +more2 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 * [url=https://gitlab. +morecom/interitty/pacc]PACC (PHP YACC)[/url] - je alternativní implementace Lex a Yacc v jazyce PHP.

Reference

Externí odkazy

[url=http://www. angelfire. +morecom/dragon/letstry/tutorials/compiler/index. html]Tutorial[/url] pro lex/yacc/compiler napsaný Arnabem Chakrobarty * [url=https://pacc. interitty. org]Playground[/url] prostředí pro učení se a testování syntaxe.

Kategorie:Generátory syntaktických analyzátorů Kategorie:Programovací software Kategorie:Unixové programátorské nástroje

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top