Формална граматика — разлика између измена
Садржај обрисан Садржај додат
Нема описа измене |
Нема описа измене |
||
Ред 37:
'''Стартни симбол''' је нетерминал који представља читав језик генерисан граматиком. Од њега полази анализа. Ако нека реченица може да се редукује у овај нетерминал применом продукција граматике, онда се каже да граматика прихвата ову реченицу, да је написана правилно по датој граматици, или да припада језику којег твори граматика.
== Пример ==
Линија 56 ⟶ 55:
:(напомена: <math>L \Rightarrow_i R</math> читамо: "''L'' генерише ''R'' коришћењем правила под редним бројем ''i''" и генерисани део у међунисци је сваки пут подебљан.)
Ова [[граматика]] дефинише [[језик]] <math>L = \left \{ a^{n}b^{n}c^{n} | n \ge 1 \right \}</math> где <math>a^{n}</math> подразумева [[ниска|ниску]] која има ''n'' узастопних појављивања [[симбол | симбола]] <math>a</math>-ова. Дакле, језик ове граматике је скуп свих низова симбола који се састоје од једног или више симбола <math>a</math>, након којих следи исто толико појављивања симбола <math>b</math>, за којим следи толико појављивања симбола <math>c</math>.
Линија 62 ⟶ 61:
Када је [[Ноам Чомски]] изнео формализам [[формална граматика|фомалних граматика]] 1956.године, класификовао их је у '''типове''' данас знано као '''хијерархија Чомског'''. Постоје следећа подела:
* '''Десно линеарна (регуларна) граматика''' (језик описан овом граматиком је '''десно линеаран или регуларан језик''')
* '''Контексно слободна граматика''' (језик описан овом граматиком је '''контексно слободан језик''')
* '''Контексно осетљива граматика''' (језик описан овом граматиком је '''контексно осетљив језик''')
* '''Граматика без ограничења, општа''' (језик описан овом граматиком је
Разлика између ових типова јесте у томе што неки типови [[граматика]] имају строжија правила па могу изразити и манје формалне језике. Два важна типа су контексно слободне граматике (тип 2) и регуларне граматике (тип 3). [[Језик|Језици]] који се могу описати оваквим граматикама се зову контексно слободни језици и регуларни језици. Иако нешто мање моћне од граматика без ограничења (тип 0), које могу изразити било који језик који прихвата [[Тјурингова машина]], ова два ограничена типа граматика су најчешће кориштена јер се [[парсер]] за њих може врло успешно имплементирати. На пример, све регуларне језике може препознати [[коначни аутомат]], а за корисне подскупове контексно слободних граматика постоје добро познати алгоритми за генерисање учинковитих [[LL
== [[Контекстно слободна граматика]] ==
[[Контекстно слободна граматика]] је граматика у којој се лева страна правила састоји само од једног [[нетерминалан симбол|нетерминалног симбола]].
Језик дефинисан у претходном примеру ''није'' контексно слободан, и то се може строго доказати кориштењем [[леме о проширењу]] за контексно слободне језике, али, на пример језик <math>\left \{ a^{n}b^{n} | n \ge 1 \right \}</math> (тј. бар један знак <math>a</math> након кога следи исто толико знакова <math>b</math>) јесте контексно слободан, пошто га генерише граматика <math>G_2</math> са <math>N=\left \{S\right \}</math>, <math>\Sigma=\left \{a,b\right \}</math>, при чему је <math>S</math> почетни незавршни симбол, а правила су:
: 1. <math>S \rightarrow aSb</math>
: 2. <math>S \rightarrow ab</math>
Контексно слободан језик може бити препознат у времену <math>O(n^3)</math> користећи алгоритме као што је [[Ојлер|Ојлеров]] алгоритам. Другим речима, за сваки контексно слободан језик се може изградити
== Други облици генеративних граматика ==
У последње време су развијена многа проширења и варијације на изворну хијерархију [[Ноам Чомски | Ноама Чомског]] за [[формална граматика | формалне граматике]], како од стране лингвиста тако и од стране познаваоца рачунара, обично у сврху повећања експресивне моћи или у сврху лакше анализе или парсирања. Неки облици тако развијених граматика укључују:
* Граматике са '''придруженим дрветом''' су граматике које повећавају експресивност конвенционалних генеративних граматика дозвољавањем правилима преписивања да оперишу на стаблима парсирања уместо на обичним низовима знакова.
Линија 91 ⟶ 90:
== Аналитичка грматика ==
Иако су алгоритми парсирања јако дуго проучавани и њихова својства добро схваћена и документована у огромном писаном опусу,
Алтернативни приступ је формализација језика у облику аналитичке граматике, која пак знатно више одговара структури и семантици парсера за језик. Примери формализма аналитичких граматика укључују:
* ''The Language Machine'' - директно имплементира неограничене аналитичке граматике (аналитичке граматике неограничених правила). Правила супституције се користе за трансформисање улаза и генерисање излаза и понашања. Систем такође може генерисати [http://languagemachine.sourceforge.net/picturebook.html Им - дијаграм] који показује шта се дешава приликом примене правила аналитичке граматике неограничених правила.
* ''Top-down parsing language'' (TDPL): минималистички формализам аналитичких граматика развијен у раним 1970им у сврху проучавања [[парсер|парсера]] од врха према дну.
* ''Link grammar'': облик аналитичке граматике дизајниран за [[лингвистика | лингвистику]] који изводи синтаксну структуру проучавањем позицијских односа парова речи.
* ''Parsing expression grammar'' (PEG): уопштење TDPL-a дизајнирано да задовољи практичне потребе експресивности [[програмски језик | програмских језика]] и писаца компилатора.
==Практична примена==
|