LL(1)

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 3 juli 2020; kontroller kräver 5 redigeringar .

LL(1)  - LL-parser , uppifrån-och-ned-analysalgoritm . Siffran 1 säger att endast en token behövs för att definiera analysvägen .

Lätt att skriva för hand utan användning av automatiska generatorer. Används för att analysera kod i ett antal programmeringsspråk som Pascal och Python (före 3.8 [1] ).

Det är mycket snabbt i utförande och har ett karakteristiskt felmeddelande som "en sådan och en sådan karaktär förväntades."

Regelguidetecken

För varje icke -terminal A i grammatiken genereras en uppsättning terminaler First(A), definierade enligt följande:

För varje regel genereras en uppsättning guidetecken , definierade enligt följande:

Det är möjligt att generalisera dessa definitioner för de fall då det finns regler av formen A → null.

Det är tydligt att First(A) är föreningen av uppsättningarna av ledande symboler för alla regler med A på vänster sida.

En grammatik är LL(1) parserbar om, för vilket regelpar som helst med samma vänstra sida, uppsättningen guidetecken inte skär varandra.

För att ta reda på om en grammatik tolkas av LL(1) eller inte i allmänhet är det lämpligt att använda kriteriet för LL(1)-grammatik [2] .

Beskrivning av analysatorn

Stacken används, där antalet terminaler och icke-terminaler, ingångs- (terminaler) och utgående (antal regler) flöden finns.

Först skjuts E, startsymbolen för grammatiken, på stapeln.

Sedan för varje nytt tecken från inmatningsströmmen tills den slutar:

Språk

Se även

Anteckningar

  1. PEP 617 - Ny PEG-parser för CPython | peps.python.org . peps.python.org . Hämtad 15 juli 2022. Arkiverad från originalet 15 juli 2022.
  2. Kozlov Sergey Valerievich, Svetlakov Alexey Vladimirovich. Om LL(1)-GRAMMATIK, ALGORITHMER PÅ DEM OCH METODER FÖR DERAS ANALYS I PROGRAMMERING  // International Journal of Open Information Technologies. - 2022. - Vol. 10 , nr. 3 . — S. 30–38 . — ISSN 2307-8162 . Arkiverad från originalet den 18 maj 2022.

Litteratur

Länkar