Některé důležité pojmy ze státnicových otázek z EaI - předmět PJP (snad nikomu nebude vadit, že jsem to sem dal :), pokud by to vadilo, tak to smáznu )
napr. věta: a+a+a (pro tuto větu lze vyvořit 2 derivační stromy → tato gramatika je víceznačná) soubor: derivacnistrom.jpg
(deterministický) Konečný automat (DKA, DFA) je pětice A = (Q, T, δ, q0, F), kde
Regulární gramatika generuje věty regulárního jazyka, konečný automat tyto věty přijímá (rozpoznává) - je formálním modelem procedury, jejímž vstupem je posloupnost symbolů a výstupem je odpověď, zda je vstup větou daného jazyka.
Pozn:
Jazyk přijímaný DFA je množina všech slov, která po přečtení uvedou DFA z počátečního do nějakého koncového stavu. POZOR: Konečný automat skončí činnost po přečtení posledního vstupního symbolu a přijme tehdy, pokud se v tomto okamžiku nachází v koncovém stavu. Představa, že DFA skončí čtení po dosažení koncového stavu je NESPRÁVNÁ. Konečné automaty jsou schopné rozpoznat regulární jazyky.
Lexikální analyzátor je aplikací konečného automatu. Používá se jako první blok překladače, který čte vstupní text (program) a přemění jej na tok lexikálních elementů (tokens). Při tom vynechává nevýznamné mezery, konce řádků a komentáře. Jeho výstupem není boolská hodnota přijato/nepřijato, ale (většinou) hodnota typu integer nebo enum, která udává jaký lexikální element byl načten. Přikladem lexikálního elementu je číslo, identifikátor, if, =, := a pod. Základní rozdíly mezi konečným automatem (KA) a lexikálním analyzátorem (LA) jsou:
Podobně jako KA, i LA můžeme realizovat pomocí tabulky přechodů nebo řídící struktury.