LL parser

Izvor: Hrvatska internetska enciklopedija
Inačica 789350 od 17. listopad 2026. u 23:50 koju je unio Bot1 (razgovor | doprinosi) (Automatski uvoz s hrwiki (zadnjih 720 sati))
(razl) ←Starija inačica | vidi trenutačnu inačicu (razl) | Novija inačica→ (razl)
Prijeđi na navigaciju Prijeđi na pretraživanje

U računalnoj znanosti, LL-parseri (engl. *LL parsers*) vrsta su sintaktičkih analizatora koji rade odozgo prema dolje (engl. *top-down*) za ograničeni skup kontekstno neovisnih jezika. Analizirju ulaz slijeva nadesno, provodeći najlijevo izvođenje rečenice.[1]

U slučaju da se pri analizi rečenice koristi *k* tokena unaprijednog čitanja (engl. *lookahead*), takav LL-parser se može definirati kao LL(k)-parser. Gramatika se definira kao LL(k)-gramatikom ako se na temelju nje može konstruirati LL(k)-parser. Formalni jezik je definiran kao LL(k)-jezik ako posjeduje LL(k)-gramatiku. Skup LL(k)-jezika pravi je podskup skupa LL(k+1)-jezika za svaki k ≥ 0.[1] Iz toga slijedi da se svi kontekstno neovisni jezici ne mogu prepoznati pomoću LL(k)-parsera.[1]

LL-parser je LL-regularan (LLR) ako analizira LL-regularni jezik.[2] Klasa LLR-gramatika obuhvaća svaku LL(k)-gramatiku za svaki k. Za svaku LLR-gramatiku postoji LLR-parser koji tu gramatiku analizira u linearnom vremenu.[1]

Dvije vrste parsera koje odstupaju od uobičajene nomenklature su LL(*) i LL(finite). Analizator se može definirati kao LL(*)- ili LL(finite)-parser ako koristi strategiju analize LL(*) ili LL(finite).[3] LL(*) i LL(finite) analizatori funkcionalno su bliži PEG-analizatorima. LL(finite)-analizator može optimalno analizirati proizvoljnu LL(k)-gramatiku s obzirom na broj tokena unaprijednog čitanja i broj usporedbi tih tokena. Zbog uporabe sintaktičkih i semantičkih predikata, klasa gramatika koje se mogu analizirati strategijom LL(*) također obuhvaća i neke kontekstno ovisne jezike, te nije u potpunosti definirana. Postoje mišljenja da je LL(*)-analizatore prikladnije promatrati kao TDPL-analizatore.[4] Suprotno uvriježenom mišljenju, LL(*)-analizatori općenito nisu LLR-analizatori; konstrukcijski je zajamčeno da u prosjeku rade sporije (superlinearno naspram linearnog vremena), a u najgorem slučaju znatno sporije (eksponencijalno naspram linearnog vremena). LL gramatike, a osobito LL(1) gramatike, od velikog su praktičnog interesa, poglavito jer je analizatore za te gramatike lako konstruirati, a mnogi su računalni jezici upravo iz tog razloga dizajnirani kao LL(1) jezici.[5] LL analizatori mogu se temeljiti na tablicama (tj. biti slični LR analizatorima), no LL gramatike mogu se analizirati i pomoću analizatora s rekurzivnim spustom. [6]

  1. ↑ 1,0 1,1 1,2
    • Nepoznat parametar: issue
    • Parametar type nije dopušten u klasi journal
    • Parametar date nije dopušten u klasi journal
    • Parametar url nije dopušten u klasi journal
  2. ↑
    • Nepoznat parametar: issue
    • Parametar type nije dopušten u klasi journal
    • Parametar date nije dopušten u klasi journal
    • Parametar url nije dopušten u klasi journal
  3. ↑ The LL(finite) strategy for optimal LL(k) parsing.
  4. ↑
    • Nepoznat parametar: issue
    • Nepoznat parametar: issn
    • Parametar type nije dopušten u klasi journal
    • Parametar date nije dopušten u klasi journal
    • Parametar url nije dopušten u klasi journal
  5. ↑ Terry, Patrick D.
    Terry, Patrick.
  6. ↑ Construction of LL(1) Parsing Table. GeeksforGeeks 0. 27. veljače 2019. Pristupljeno 2026-10-13.