Syntaktická analýza (nebo parsování , slangová parsování ← angličtina parsing ) v lingvistice a informatice je proces porovnávání lineární sekvence lexémů (slov, tokenů) přirozeného nebo formálního jazyka s jeho formální gramatikou . Výsledkem je obvykle strom syntaxe (strom syntaxe). Obvykle se používá ve spojení s lexikální analýzou .
Analyzátor ( slang parser ← anglicky parser ) je program nebo část programu, který provádí analýzu.
Během analýzy je zdrojový text převeden do datové struktury , obvykle stromu, která odráží syntaktickou strukturu vstupní sekvence a je vhodná pro další zpracování.
Výsledkem syntaktické analýzy je zpravidla syntaktická struktura věty, prezentovaná buď ve formě stromu závislostí , nebo ve formě stromu komponent , nebo ve formě nějaké kombinace první a druhé metody reprezentace. .
Cokoli, co má „ syntaxi “, se hodí k automatické analýze.
Nejjednodušší způsob, jak reagovat na neplatný vstupní řetězec tokenů, je ukončit analýzu a zobrazit chybovou zprávu. Často je však užitečné najít co nejvíce chyb při jednom pokusu o analýzu. Takto se chovají překladatelé nejběžnějších programovacích jazyků.
Obslužná rutina chyb analyzátoru má tedy následující úkoly:
Níže jsou popsány nejznámější strategie obnovy chyb.
Když dojde k chybě, analyzátor přeskočí vstupní tokeny jeden po druhém, dokud není nalezen jeden ze speciálně definované sady synchronizačních tokenů . Obvykle jsou takové tokeny oddělovače, například: ; , ) nebo } . Sadu synchronizačních tokenů musí určit vývojář analyzovaného jazyka. S touto strategií obnovy se může stát, že bude přeskočen významný počet znaků bez kontroly dalších chyb. Tato strategie obnovy je nejsnáze implementovatelná.
Někdy, když dojde k chybě, může analyzátor provést místní opravu vstupního toku, aby mohl pokračovat. Například před středníkem, který odděluje různé příkazy v programovacím jazyce, může analyzátor uzavřít závorky, které ještě nebyly uzavřeny. To je složitější na návrh a implementaci, ale v některých situacích může fungovat výrazně lépe než zotavení z paniky. Tato strategie je přirozeně bezmocná, pokud ke skutečné chybě došlo dříve, než ji analyzátor detekoval.
Znalost nejčastějších chyb umožňuje rozšířit gramatiku jazyka o produkce, které generují chybné konstrukce. Když se taková produkce spustí, zaprotokoluje se chyba, ale analyzátor běží normálně.
Jednotlivé fáze vývoje a konstrukce překladačů lze automatizovat a provádět pomocí počítače.
Zde jsou některé z nejznámějších nástrojů pro vývoj analyzátorů [2] :
Viz také srovnání generátorů parserů .