Анализа навише — разлика између измена

Садржај обрисан Садржај додат
Нема описа измене
Ред 54:
**[[ЛР (n)]] , n је позитиван цео број - Могу се изградити језици који захтевају n предувидних симбола, уобичајено је да овакви језици захтевају велики број линија кода и простора за податке, па се из тих разлога у пракси ретко користе.
 
== Shift-reduce анализатори ==
== Shift–reduce analizatori ==
Уобичајени анализатори навише су shift-reduce анализатори. Њихов рад се заснива на испитивању улазног токена, акције које се затим могу предузети су shift, односно пребацивање токена на [[стек]], и reduce, односно свођене десне стране правила на одговарајућу леву.
Uobicajeni analizatori navise su {shift-reduce} analizatori. Njihov rad se zasniva na ispitivanju ulaznog tokena, akcije koje se zatim mogu preduzeti su {shift}, odnosno prebacivanje tokena na stek, i {reduce}, odnosno svodjene desne strane pravila na odgovarajucu levu.
 
 
== Action tabliceтаблице ==
Action таблице служе за одређивање наредног корака у раду анализатора. Акције које се налазе у таблици су:
{Action} tablice sluze za odredjivanje narednog koraka u radu analizatora. Akcije koje se nalaze u tablici su:
*{Shift} - tokenтокен seсе postavljaпоставља naна stekстек
*Reduce - ручка се уклања са стека, и замењује одговарајућим нетерминалом
*{Reduce}- rucka se uklanja sa steka, i zamenjuje odgovarajucim neterminalom
*Accept – реченица је прихваћена, улазна линија је празна а на стеку се налази јединствени симбол
*{Accept} – recenica je prihvacena, ulazna linija je prazna a na steku se nalazi jedinstveni simbol
*Error - до грешке долази уколико ништа од претходног није могуће урадити, односно улазна ниска тада није реченица језика
*{Error}- do greske dolazi ukoliko nista od prethodnog nije moguce uraditi, odnosno ulazna niska tada nije recenica jezika
 
 
== {Shift – Reduce} ==
Током рада анализатора врше се акције пребацивања симбола са улаза на стек, као и акције свођења симбола на стеку. Уколико префикс симбола на врху стека одговара десној страни неког правила граматике, тада се врши акција свођења, односно десна страна правила граматике са врха стека се смењује одговарајућом левом страном. Поступци пребацивања и свођења симбола се понављају све док анализатор не заврши са радом. Могуће су 2 ситуације које означавају крај рада анализатора. У првом случају ниска је успешно прихваћена, а у другом случају анализатор је завршио са радом услед грешке која се појавила на улазу.
Tokom rada analizatora vrse se akcije prebacivanja simbola sa ulaza na stek, kao i akcije svodjenja simbola na steku. Ukoliko prefiks simbola na vrhu steka odgovara desnoj strani nekog pravila gramatike, tada se vrsi akcija svodjenja, odnosno desna strana pravila gramatike sa vrha steka se smenjuje odgovarajucom levom stranom. Postupci prebacivanja i svodjenja simbola se ponavljaju sve dok analizator ne zavrsi sa radom. Moguce su 2 situacije koje oznacavaju kraj rada analizatora. U prvom slucaju niska je uspesno prihvacena, a u drugom slucaju analizator je zavrsio sa radom usled greske koja se pojavila na ulazu.
 
Uopsteno, analizator predstavlja mehanizam koji upravlja stekom, i koji ima nekoliko diskretnih stanja. U praksi se cesto na steku cuvaju oznake stanja analizatora umesto simbola gramatike.
 
Уопштено, анализатор представља механизам који управља стеком, и који има неколико дискретних стања. У пракси се често на стеку чувају ознаке стања анализатора уместо симбола граматике.
 
== Primer {shift-reduce} analize ==