Анализа навише — разлика између измена
Садржај обрисан Садржај додат
Нема описа измене |
|||
Ред 54:
**[[ЛР (n)]] , n је позитиван цео број - Могу се изградити језици који захтевају n предувидних симбола, уобичајено је да овакви језици захтевају велики број линија кода и простора за податке, па се из тих разлога у пракси ретко користе.
== Shift-reduce анализатори ==
Уобичајени анализатори навише су shift-reduce анализатори. Њихов рад се заснива на испитивању улазног токена, акције које се затим могу предузети су shift, односно пребацивање токена на [[стек]], и reduce, односно свођене десне стране правила на одговарајућу леву.
== Action
Action таблице служе за одређивање наредног корака у раду анализатора. Акције које се налазе у таблици су:
*
*Reduce - ручка се уклања са стека, и замењује одговарајућим нетерминалом
*Accept – реченица је прихваћена, улазна линија је празна а на стеку се налази јединствени симбол
*Error - до грешке долази уколико ништа од претходног није могуће урадити, односно улазна ниска тада није реченица језика
==
Током рада анализатора врше се акције пребацивања симбола са улаза на стек, као и акције свођења симбола на стеку. Уколико префикс симбола на врху стека одговара десној страни неког правила граматике, тада се врши акција свођења, односно десна страна правила граматике са врха стека се смењује одговарајућом левом страном. Поступци пребацивања и свођења симбола се понављају све док анализатор не заврши са радом. Могуће су 2 ситуације које означавају крај рада анализатора. У првом случају ниска је успешно прихваћена, а у другом случају анализатор је завршио са радом услед грешке која се појавила на улазу.
Уопштено, анализатор представља механизам који управља стеком, и који има неколико дискретних стања. У пракси се често на стеку чувају ознаке стања анализатора уместо симбола граматике.
== Primer {shift-reduce} analize ==
|