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

Садржај обрисан Садржај додат
мНема описа измене
Ред 1:
'''Анализа навише''' ({{јез-ен|bottom-up parsing}}) је стратегија која се користи за анализирање односа између података. Прво се идентификују основне јединице, а затим се постепено, навише, изграђује структура која приказује однос између података. Ова стратегија се примењује како у анализи природних језика, тако и у анализи програмских језика. У рачунарству, уместо појма анализе навише, користи се и појам ''-{shift – reduce}-'' анализа.
 
 
Ред 43:
Интуитивно, [[анализатор наниже]] покушава да прошири нетерминале тако што их замењује њиховим десним странама, док анализатор навише покушава да редукује десне стране тако што их замењује одговарајућим нетерминалом.
 
Прва акција коју ће анализатор у овом случају применити је замена [[терминал|терминала]] '''a''' [[нетерминал|нетерминалом]] '''A'''. Затим се '''Ax''' замењује са '''S'''. Када се добије реченична форма која се састоји само од симбола '''S''', то значи да је анализатор успешно завршио рад.
 
Као и код [[анализа наниже|анализе наниже]] и овде се можемо послужити грубом силом. Односно, може се независно од предувидног симбола покушавати са свођењем симбола све док не понестане симбола који се могу свести или док не појави реченична форма која садржи само симбол '''S'''. Овај алгоритам је неефикасан, познат је као [[бектрекинг]]. Дакле, може се закључити да се укључивањем предувидног[[предувид]]ног симбола знатно смањује број неуспелих покушаја.
 
== Типови анализатора навише ==
Ред 60:
== Action таблице ==
Action таблице служе за одређивање наредног корака у раду анализатора. Акције које се налазе у таблици су:
*Пребацивање (енгл. {{јез-ен|ѕhift}}) - токен се поставља на стек
*Свођење (енгл. {{јез-ен|reduce}}) - ручка се уклања са стека, и замењује одговарајућим нетерминалом
*Прихватење (енгл. {{јез-ен|accept}}) – реченица је прихваћена, улазна линија је празна а на стеку се налази јединствени симбол
*Грешка (енгл. {{јез-ен|error}}) - до грешке долази уколико ништа од претходног није могуће урадити, односно улазна ниска тада није реченица језика
 
== Shift – Reduce ==
Током рада анализатора врше се акције пребацивања симбола са улаза на стек, као и акције свођења симбола на стеку. Уколико префикс симбола на врху стека одговара десној страни неког правила граматике, тада се врши акција свођења, односно десна страна правила граматике са врха стека се смењује одговарајућом левом страном. Поступци пребацивања и свођења симбола се понављају све док анализатор не заврши са радом. Могуће су 2две ситуације које означавају крај рада анализатора. У првом случају ниска је успешно прихваћена, а у другом случају анализатор је завршио са радом услед грешке која се појавила на улазу.
 
Уопштено, анализатор представља механизам који управља стеком, и који има неколико дискретних стања. У пракси се често на стеку чувају ознаке стања анализатора уместо симбола граматике.