Lexikální analýza: Porovnání verzí

Smazaný obsah Přidaný obsah
Řádek 55:
 
== Chyby vzniklé během lexikální analýzy ==
Během chodu [[konečný automat|DKA]] může dojít k chybě. Chyba vznikne, pokud pro znak pod čtecí hlavou [[konečný automat|DKA]] neexistuje žádná větev vedoucí ze stavu, ve kterém se [[procesor]] nad [[konečný automat|DKA]] nachází a zároveň tento stav není koncový.<br />
:Taková chyba vznikne jedním ze tří možných způsobů:<br />
:#ve vstupním textu je přidán znak navíc
:#ve vstupním textu je znak vynechán
:#Ve vstupním textu je zaměněn správný znak za chybný<br />
:Každý z těchto tří typů chyb by se měl ošetřit jiným způsobem:<br />
:#opakovat pokus o nalezení větve v původním stavu
:#pokusit se nalézt nějakým způsobem stav, kam měl automat přejít a kam pokračovat
:#vynechat zaměněný znak a pokračovat dále podle bodu 2.<br />
Nelze předem předpokládat, kterou z chyb na daném místě programátor udělá, proto se obvykle ošetřuje chyba vynecháním chybného znaku a na výstup lexikálního analyzátoru se odevzdá speciální symbol (NULSYM). Tím se zotavením po chybě odsune do fáze [[syntaktická analýza|syntaktické analýzy]].<br />
Existují i metody známé z teorie informace ([[Hammingova vzdálenost]]), které mohou sloužit k opravě některých lexikálních chyb.