10.02.2019 Views

opora

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

KAPITOLA 4. BEZKONTEXTOVÉ JAZYKY A ZÁSOBNÍKOVÉ AUTOMATY63<br />

Obrázek 4.10: Syntaktická analýza shora dolů<br />

je A nejlevějším nonterminálem, který má být přepsán. Dále předpokládejme, že<br />

gramatika obsahuje n pravidel s levou stranou A:<br />

A → α 1 | α 2 | . . . | α n<br />

Jak poznáme, kterým řetězcem α i je třeba nahradit nonterminál A? Podobně při<br />

Obrázek 4.11: Syntaktická analýza zdola nahoru<br />

analýze zdola nahoru, kdy je v každém kroku redukována l-fráze větné formy,<br />

spočívá hlavní problém v určení začátku a konce l-fráze.<br />

Jedním z řešení těchto problémů je náhodný výběr některé z možných alternativ.<br />

Ukáže-li se později, že zvolená alternativa nebyla správná, je třeba proces rozkladu<br />

„vrátit“ a uvažovat jinou alternativu. (Při syntaktické analýze shora dolů se<br />

například pokoušíme přepisovat A řetězci α 1 , α 2 . . . tak, aby se prefix získané levé<br />

derivace, který obsahuje pouze terminální symboly, shodoval s prefixem analyzované<br />

věty). Tento typ analýzy se nazývá syntaktická analýza s návratem (Syntax<br />

analysis with backup). I když počet návratů je omezený, je patrné, že analýza<br />

s návratem je časově náročná. Kromě toho jsou návraty zdrojem komplikací při<br />

sémantickém vyhodnocování překládaného programu.<br />

Praktickým řešením problémů syntaktické analýzy programovacích jazyků jsou<br />

tzv. deterministické gramatiky (kapitola 6.), které umožňují na základě kontextu

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!