SLR(1) on alhaalta ylös -jäsennysalgoritmi.
Se on LR(0) -algoritmin laajennus . Joissakin tapauksissa se toimii, kun LR(0)-jäsennystaulukon rakentaminen tietylle kieliopille ei ole mahdollista shift-cast- tai cast-cast-ristiriitojen vuoksi. Siten SLR(1):n mukaan jäsennelty kielioppiluokka (vrt. "SLR(1)-kielioppi") on laajempi kuin LR(0)-kielioppien luokka.
Itse jäsennysalgoritmi (analysaattorin suorittaminen tulovirran mukaan) on sama sekä SLR(1) että LR(0) - ja laajemmin LALR(1) :lle . Ainoastaan algoritmit jäsennystaulukon muodostamiseksi kieliopin mukaan analysaattorin luontiprosessissa eroavat toisistaan.
Jokaiselle kieliopin ei-päätteelle A luodaan joukko päätteitä First(A), joka määritellään seuraavasti:
Samoja sarjoja käytetään LL(1)-analysaattorin rakentamiseen.
Lisäksi First(A)-joukkojen perusteella luodaan Follow(A)-joukot, jotka määritellään seuraavasti
(näitä ehtoja on mahdollista yleistää sääntöjen B -> tyhjälle olemassaololle)
Seuraavaksi luodaan jäsennystaulukko, kuten LR(0), erolla, kun cast-toiminnot syötetään. Tilan S ja syöttösymbolin C heitto on taulukoitu vain, jos S:ssä on merkkijono, joka vastaa säännön koko oikeaa puolta, ja säännön vasemman puolen ei-pääte N täyttää ehdon "C is in Follow( N)".
Tämä johtaa siihen, että SLR(1) yrittää harvemmin laittaa "cast" jäsennystaulukon soluun, mikä vähentää ristiriitojen riskiä heittojen kanssa, joskus päästä eroon niistä kokonaan ja tekee kieliopin, jota LR(0 ei jäsennä ) jäsenneltävä.
Siinä ei melkein ole (lukuun ottamatta opetuskäyttöä), koska jäsennetään kapea kielioppiluokka. Käytännön sovellus on LALR(1), joka on SLR(1) yleistys.
Aritmeettiset lausekkeet, joissa on yksi- ja binäärioperaattoreita ja sulkeita, jäsennetään SLR:llä(1)