LL(1)

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 3 iulie 2020; verificările necesită 5 modificări .

LL(1)  - LL parser , algoritm de parsare de sus în jos . Numărul 1 spune că este nevoie de un singur simbol pentru a defini calea de analiză .

Ușor de scris de mână fără utilizarea generatoarelor automate. Folosit pentru a analiza codul într-un număr de limbaje de programare, cum ar fi Pascal și Python (înainte de 3.8 [1] ).

Este foarte rapid în execuție și are un mesaj de eroare caracteristic de genul „se aștepta un astfel de personaj”.

Caracterele ghidului de reguli

Pentru fiecare non -terminal A din gramatică , este generat un set de terminale First(A), definite după cum urmează:

Pentru fiecare regulă, este generat un set de caractere ghid , definite după cum urmează:

Este posibilă generalizarea acestor definiții pentru cazul în care există reguli de forma A → null.

Este clar că First(A) este uniunea setului de simboluri principale pentru toate regulile cu A în partea stângă.

O gramatică este analizabilă LL(1) dacă, pentru orice pereche de reguli cu aceeași parte stângă, setul de caractere ghid nu se intersectează.

Pentru a afla dacă o gramatică este analizată de LL(1) sau nu în general, este convenabil să folosiți criteriul LL(1)-gramatici [2] .

Descrierea analizorului

Se folosește stiva, unde se află numărul de terminale și non-terminale, fluxurile de intrare (terminale) și de ieșire (număr de reguli).

Mai întâi, E, simbolul de început al gramaticii, este împins pe stivă.

Apoi, pentru fiecare caracter nou din fluxul de intrare până la sfârșit:

Limbi

Vezi și

Note

  1. PEP 617 - Nou analizator PEG pentru CPython | peps.python.org . peps.python.org . Preluat la 15 iulie 2022. Arhivat din original la 15 iulie 2022.
  2. Kozlov Serghei Valerievici, Svetlakov Alexey Vladimirovici. Despre LL(1)-GRAMATE, ALGORITMI ASUPRA LOR ŞI METODE DE ANALIZA LOR ÎN PROGRAMARE  // International Journal of Open Information Technologies. - 2022. - Vol. 10 , nr. 3 . — S. 30–38 . — ISSN 2307-8162 . Arhivat din original pe 18 mai 2022.

Literatură

Link -uri