Syntaktická analýza: Porovnání verzí

Smazaný obsah Přidaný obsah
→‎Typy syntaktické analýzy: chybělo rozlišeni podle nedeterminismu; i diskuse
→‎Programovací jazyky: "deterministickymi"
Řádek 25:
Syntaktické analýzy se obvykle užívá při [[Kompilace (programování)|kompilaci]]. Kompilátor nejprve syntakticky analyzuje [[zdrojový kód]] programu, napsaný v určitém [[programovací jazyk|programovacím jazyku]], a převede jej do interní podoby, s níž poté dále pracuje.
 
Programovací jazyky bývají specifikovány deterministickými [[Bezkontextová gramatika|bezkontextovými gramatikami]], protože pro ty se dá vytvořit rychlý a efektivní syntaktický analyzátor. Ten však obvykle nebývá programován ručně, nýbrž generován zvláštním programem, tzv. [[parser generátor]]em, na základě předepsané gramatiky.
 
Bezkontextové gramatiky zpravidla nejsou schopny vyjádřit vše, co jazyk vyžaduje. Zjednodušeně se dá říci, že bezkontextově vyjádřený jazyk má omezenou paměť. Bezkontextová gramatika nemá prostředky k zapamatování předchozího výskytu konstruktu, pokud může být oddělen libovolně dlouhým jiným textem — nedokáže tedy třeba rozpoznat, zda byl identifikátor před použitím deklarován. Mocnější gramatiky, které toto dokáží, zase nemohou být efektivně syntakticky analyzovány. Proto se běžně vytváří bezkontextový parser, který rozpoznává nadmnožinu požadovaných jazykových konstruktů (tj. přijme i některé neplatné) s tím, že později budou tyto neplatné konstrukty vyřazeny.