Web Analytics
Privacy Policy Cookie Policy Terms and Conditions Формална граматика - Википедија

Формална граматика

Из пројекта Википедија

Формална граматика је граматика која се може записати и једнозначно тумачити.


Језик је скуп свих реченица које твори одређена граматика.

Граматику чине:

  • коначан скуп 'терминалних симбола'.
  • коначан скуп 'нетерминалних симбола'.
  • продукције за сваки нетерминални симбол.
  • 'стартни нетерминални симбол'.


Терминални симболи, краће терминали или токени су заправо оно што обично називамо речима. Зову се терминали, јер се анализа на њима завршава, тј. не растављају се за потребе анализе.

Нетерминални симболи, тзв. нетерминали, су апстрактне ознаке за граматичке конструкције. Они се могу раздвојити анализом у зависности од продукција граматике.

Продукције су усмерене релације између стрингова сачињених од терминалних и нетерминалних симбола. Разликује им се десна страна од леве. Лева страна може да се представи десном, тј. неки случај може да се сажме у оно на левој страни.

Стартни симбол је нетерминал који представља читав језик генерисан граматиком. Од њега полази анализа. Ако нека реченица може да се редукује у овај нетерминал применом продукција граматике, онда се каже да граматика прихвата ову реченицу, да је написана правилно по датој граматици, или да припада језику који твори граматика.


Постоје три врсте формалних граматика, а међу њима влада релација поретка:

  • Контекстно зависни језици су надскуп контекстно независних језика. Појам 'контекстно зависно' се употребљава да опише случајеве када нека реч у реченици има другачија значења у зависности од комбинације осталих речи и њене позиције у реченици. Ово је случај са језицима који користе људи за комуникацију.
  • Контекстно независни језици су генерисани контекстно слободним граматикама. У реченицама ове граматике значење неке речи не зависи од контекста у ком су употребљене.
  • Регуларни језици творени су регуларним граматикама. Они су подскуп контекстно независних језика.


Практична примена

У компјутерским језицима обично фигурише контекстно слободна граматика (engl. Context free grammar - CFG) која креира одговарајуће контекстно независне језике. Програмски језик Ц (енгл. 'C'), нетерминал који представља читав језик генерисан граматиком, је на пример контекстно завистан, али се представља као контекстно независтан с тим да се контекстна зависност решава у приступу изради скенера. Скенер је део преводиоца који програм написан у програмском језику разбије на токене, и саставни је део Front-end преводиоца. Скенер емитује токене парсеру као ток (енгл. 'stream') везујући за сваки семантичку вредност.

Семантичка вредност је придружена токену и служи да пренесе додатне информације битне за рад програма. На пример 2435 је број и токен за њега био би рецимо NUMBER. Међутим када би смо утврдили да је рецимо

а = 2435;

исправно тј. припада неком језику, било би нам потребно да баратамо са конкретном (семантичком) вредношћу која је представљена токеном. Пренос семантичке вредности се решава различито а мени је познат начин да се дефинише тип за ову вредност у облику уније (union за језик Ц) и једна глобална променљива овог типа. Онда скенер уписује у њу семантичку вредност, а парсер чита и ставља привремено на један ред док не прихвати тражени нетерминал. Приликом прихватања датог нетерминала извршава се акција која треба коначно да одради посао везан за препознавање одређеног нетерминала, и евентуална трајнија складиштења одређених семантичких вредности (нпр. листе). И наравно на самом крају генерише се семантичка вредност за дати нетерминал која ће бити враћена на место са кога је рекурзивно позвана текућа продукција.


Регуларне граматике се међутим најчешће користе. На пример када се користити неки шел ('shell'), нпр. у DOS-у стандардни COMMAND.COM и ако је потребно да се виде сви фајлови које је могуће извршити, онда се користи:

DIR *.EXE

Задати параметар *.EXE је заправо прихваћен као регуларни израз (енгл. Regular Expression - RE). Знакови звезда мењају било коју комбинацију састављену из карактера дозвољених за креирање имена...

THIS WEB:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2006:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu