LL(1)

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 3. července 2020; kontroly vyžadují 5 úprav .

LL(1)  - LL parser , algoritmus analýzy shora dolů . Číslo 1 říká, že k definování cesty analýzy je potřeba pouze jeden token .

Snadné ruční psaní bez použití automatických generátorů. Používá se k analýze kódu v řadě programovacích jazyků , jako je Pascal a Python (před 3.8 [1] ).

Je velmi rychlý v provádění a má charakteristickou chybovou hlášku jako "takový a takový znak se očekával."

Znaky průvodce pravidly

Pro každý neterminál A v gramatice se vygeneruje sada terminálů First(A), která je definována takto:

Pro každé pravidlo se vygeneruje sada vodících znaků definovaných takto:

Tyto definice je možné zobecnit pro případ, kdy existují pravidla formuláře A → null.

Je jasné, že First(A) je spojením sad vedoucích symbolů pro všechna pravidla s A na levé straně.

Gramatika je LL(1) parsovatelná , pokud se pro žádnou dvojici pravidel se stejnou levou stranou množina vodících znaků neprotíná.

Pro zjištění, zda je gramatika analyzována pomocí LL(1) nebo ne obecně, je vhodné použít kritérium LL(1)-gramatiky [2] .

Popis analyzátoru

Používá se zásobník, kde jsou umístěna čísla terminálů a neterminálů, vstupní (terminály) a výstupní (čísla pravidel) toky.

Nejprve se na hromádku vloží E, počáteční symbol gramatiky.

Poté pro každý nový znak ze vstupního proudu až do konce:

Jazyky

Viz také

Poznámky

  1. PEP 617 – Nový PEG parser pro CPython | peps.python.org . peps.python.org . Získáno 15. července 2022. Archivováno z originálu dne 15. července 2022.
  2. Kozlov Sergej Valerijevič, Světlakov Alexej Vladimirovič. O LL(1)-GRAMATIKÁCH, ALGORITECH NA NICH A METODÁCH JEJICH ANALÝZY V PROGRAMOVÁNÍ  // International Journal of Open Information Technologies. - 2022. - Svazek 10 , č. 3 . — S. 30–38 . — ISSN 2307-8162 . Archivováno z originálu 18. května 2022.

Literatura

Odkazy