Co je to Lexikální analýza?
Lexikální analýza je proces pořizování řetězců znaků - nebo jednodušeji textu - a jejich převádění do smysluplných skupin nazývaných tokeny. Tato metodika používá v široké škále aplikací, od tlumočení počítačových jazyků po analýzu knih. Lexikální analýza není synonymem pro analýzu; spíše je to první krok procesu úplného syntaktického analyzování a vytváří surovinu pro pozdější použití.
Stavební bloky tokenů, také nazývané lexémy, mohou být generovány mnoha způsoby v závislosti na gramatice potřebné pro lexikální analýzu. Běžným příkladem je dělení vět slovy; toto je často děláno rozdělením vět kolem mezer. Každý souvislý řetězec znaků generovaných bez mezer je lexémem. Textové řetězce lze rozdělit na jeden nebo více typů znaků a vytvářet tak různé verze lexémů s různou složitostí. Tokeny jsou generovány po vyhodnocení každého lexému a spárování s jeho odpovídající hodnotou; tokeny odkazují na toto párování, nejen na lexém.
Lexikální analýza, poněkud kontra intuitivně, odstraní textový řetězec svého kontextu. Jeho účelem je pouze vytvářet stavební bloky pro další studium, nikoliv k určení, zda jsou tyto kusy platné nebo neplatné. V případě interpretace počítačového jazyka se ověřování provádí pomocí syntaktické analýzy a ověřování textu lze provádět z hlediska kontextu nebo obsahu. Pokud je vstupní řetězec úplně rozdělen do příslušných lexémů a každý z těchto lexémů má odpovídající hodnotu, považuje se analýza za úspěšnou.
Bez kontextu nebo schopnosti provádět validaci nelze lexikální analýzu spolehlivě použít k nalezení chyb ve vstupu. Lexikální gramatika může mít přiřazené chybové hodnoty konkrétním lexémům a taková analýza může také detekovat nelegální nebo nesprávně tvarované tokeny. Přestože nalezení nelegálního nebo nesprávně tvarovaného tokenu signalizuje neplatný vstup, nemá to žádný vliv na to, zda jsou ostatní tokeny platné, a proto se nejedná pouze o typ validace.
Ačkoli lexikální analýza je nedílnou součástí mnoha algoritmů, musí být často použita ve spojení s jinými metodikami k vytvoření smysluplných výsledků. Například rozdělení textového řetězce na slova k určení kmitočtů využívá vytváření lexému, ale samotné vytváření lexemu nemůže monitorovat, kolikrát se konkrétní lexém objeví na vstupu. Lexikální analýza může být užitečná sama o sobě, pokud jsou samotné lexémy na vědomí, ale velké množství vstupů může z důvodu objemu dat ztížit analýzu surových lexémů.