<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="hr">
	<id>https://enciklopedija.cc/index.php?action=history&amp;feed=atom&amp;title=Formalna_gramatika</id>
	<title>Formalna gramatika - Povijest promjena</title>
	<link rel="self" type="application/atom+xml" href="https://enciklopedija.cc/index.php?action=history&amp;feed=atom&amp;title=Formalna_gramatika"/>
	<link rel="alternate" type="text/html" href="https://enciklopedija.cc/index.php?title=Formalna_gramatika&amp;action=history"/>
	<updated>2026-08-09T22:37:53Z</updated>
	<subtitle>Povijest promjena ove stranice na wikiju</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://enciklopedija.cc/index.php?title=Formalna_gramatika&amp;diff=39261&amp;oldid=prev</id>
		<title>WikiSysop: Bot: Automatski unos stranica</title>
		<link rel="alternate" type="text/html" href="https://enciklopedija.cc/index.php?title=Formalna_gramatika&amp;diff=39261&amp;oldid=prev"/>
		<updated>2021-08-20T01:28:03Z</updated>

		<summary type="html">&lt;p&gt;Bot: Automatski unos stranica&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nova stranica&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;!--&amp;#039;&amp;#039;&amp;#039;Formalna gramatika&amp;#039;&amp;#039;&amp;#039;--&amp;gt;U [[računarstvo|računarstvu]] i [[lingvistika|lingvistici]], &amp;#039;&amp;#039;&amp;#039;formalna gramatika&amp;#039;&amp;#039;&amp;#039;, ili ponekad jednostavno &amp;#039;&amp;#039;&amp;#039;gramatika&amp;#039;&amp;#039;&amp;#039;, jest precizan opis [[formalni jezik|formalnog jezika]] - to jest, [[skup]]a nizova znakova (stringova). Dvije glavne kategorije formalnih gramatika su &amp;#039;&amp;#039;generativne gramatike&amp;#039;&amp;#039;, koje predstavljaju skup pravila za generiranje nizova znakova jezika, te &amp;#039;&amp;#039;analitičke gramatike&amp;#039;&amp;#039;, koje predstavljaju skup pravila za analizu pripadnosti niza znakova jeziku. Ukratko, analitička gramatika opisuje kako &amp;#039;&amp;#039;prepoznati&amp;#039;&amp;#039; kad je niz znakova u skupu, dok generativna gramatika opisuje kako &amp;#039;&amp;#039;pisati&amp;#039;&amp;#039; samo one nizove znakova u skupu.&lt;br /&gt;
&lt;br /&gt;
== Generativne gramatike ==&lt;br /&gt;
&lt;br /&gt;
Generativna gramatika se sastoji od skupa pravila za transformiranje nizova znakova koje zovemo &amp;#039;&amp;#039;produkcije&amp;#039;&amp;#039;. Prilikom generiranja niza znakova u jeziku započinjemo sa nizom znakova koji se sastoji od samo jednog &amp;#039;&amp;#039;početnog znaka&amp;#039;&amp;#039;, i potom uzastopno primjenjujemo pravila (bilo koji broj puta, u bilo kojem redoslijedu) u svrhu prepisivanja (engl. &amp;#039;&amp;#039;rewrite&amp;#039;&amp;#039;) niza znakova. Jezik se sastoji od svih nizova znakova koji mogu biti generirani na ovaj način.&lt;br /&gt;
Bilo koji pojedinačni slijed valjanih izbora pravila odabranih za vrijeme procesa prepisivanja daje neki pojedinačni niz znakova jezika, i ukoliko postoji više načina za generiranje jednog niza znakova, tada za gramatiku kažemo da je [[nejednoznačna gramatika|nejednoznačna]].&lt;br /&gt;
&lt;br /&gt;
Na primjer, pretpostavimo da se [[abeceda (računarstvo)|abeceda]] sastoji od znakova &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; i &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;, da je početni znak &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;, te da imamo sljedeće produkcije:&lt;br /&gt;
&lt;br /&gt;
: 1. &amp;lt;math&amp;gt;S \rightarrow aSb&amp;lt;/math&amp;gt;&lt;br /&gt;
: 2. &amp;lt;math&amp;gt;S \rightarrow ba&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
tada započinjemo sa početnim nezavršnim znakom &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; te odabiremo produkciju koju nad njim primjenjujemo. Ako odaberemo prvu produkciju, zamjenjujemo &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; sa &amp;lt;math&amp;gt;aSb&amp;lt;/math&amp;gt; te dobivamo međuniz &amp;lt;math&amp;gt;aSb&amp;lt;/math&amp;gt;. Ako opet odaberemo prvu produkciju, zamjenjujemo &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; sa &amp;lt;math&amp;gt;aSb&amp;lt;/math&amp;gt; te na taj način generiramo međuniz &amp;lt;math&amp;gt;aaSbb&amp;lt;/math&amp;gt;. Ovaj proces ponavljamo sve dok međuniz ne bude sadržavao samo znakove iz abecede (tj. &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; i &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;). Ako sad odaberemo drugu produkciju, zamjenjujemo &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; sa &amp;lt;math&amp;gt;ba&amp;lt;/math&amp;gt; pri čemu se generira niz znakova &amp;lt;math&amp;gt;aababb&amp;lt;/math&amp;gt; i generiranje je završeno. Ovaj slijed odabira produkcija možemo konciznije zapisati koristeći simbole: &amp;lt;math&amp;gt;S \Rightarrow aSb \Rightarrow aaSbb \Rightarrow aababb&amp;lt;/math&amp;gt;. Jezik ove gramatike je skup svih nizova znakova koji mogu biti generirani koristeći sljedeći proces: &amp;lt;math&amp;gt;\left \{ba, abab, aababb, aaababbb, ...\right \}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Formalna definicija ===&lt;br /&gt;
Klasičnu formalizaciju generativnih gramatika je prvi predložio [[Noam Chomsky]] 1950ih,&amp;lt;ref name=&amp;quot;Chomsky1956&amp;quot;&amp;gt;Chomsky, Noam, &amp;quot;Three Models for the Description of Language,&amp;quot; &amp;#039;&amp;#039;IRE Transactions on Information Theory&amp;#039;&amp;#039;, Vol. 2 No. 2, pp. 113-123, 1956.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;Chomsky1957&amp;quot;&amp;gt;Chomsky, Noam, &amp;#039;&amp;#039;Syntactic Structures&amp;#039;&amp;#039;, Mouton, The Hague, 1957.&amp;lt;/ref&amp;gt;, gramatiku &amp;#039;&amp;#039;G&amp;#039;&amp;#039; čine sljedeće komponente:&lt;br /&gt;
* Konačan skup &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; &amp;#039;&amp;#039;[[Završni i nezavršni znakovi|nezavršnih znakova]]&amp;#039;&amp;#039;&lt;br /&gt;
* Konačan skup &amp;lt;math&amp;gt;\Sigma&amp;lt;/math&amp;gt; &amp;#039;&amp;#039;[[Završni i nezavršni znakovi|završnih znakova]]&amp;#039;&amp;#039; disjunktan sa skupom &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt;&lt;br /&gt;
* Konačan skup &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; &amp;#039;&amp;#039;pravila produkcija&amp;#039;&amp;#039;, svako oblika&lt;br /&gt;
:: &amp;lt;math&amp;gt;(\Sigma \cup N)^{*} N (\Sigma \cup N)^{*} \rightarrow (\Sigma \cup N)^{*} &amp;lt;/math&amp;gt; &lt;br /&gt;
:gdje je &amp;lt;math&amp;gt;{}^{*}&amp;lt;/math&amp;gt; [[Kleeneov operator]] i &amp;lt;math&amp;gt;\cup&amp;lt;/math&amp;gt; označava uniju skupova. To jest, svaka produkcija preslikava jedan niz znakova u drugi, gdje prvi niz znakova sadrži barem jedan nezavršni znak. U slučaju da je drugi niz znakova [[prazni niz]] - tj. ne sadrži nijedan znak - simbol iz grčke abecede epsilon (&amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt;) se obično piše mjesto njega kako bi se izbjegla nejednoznačnost.&lt;br /&gt;
* Istaknuti znak &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt; je &amp;#039;&amp;#039;početni nezavršni znak&amp;#039;&amp;#039;.&lt;br /&gt;
Obično se takva formalna gramatika &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; konciznije zapiše kao uređena četvorka &amp;lt;math&amp;gt;(N, \Sigma, P, S)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Jezik &amp;#039;&amp;#039; formalne gramatike &amp;lt;math&amp;gt;G = (N, \Sigma, P, S)&amp;lt;/math&amp;gt;, označen sa &amp;lt;math&amp;gt;\boldsymbol{L}(G)&amp;lt;/math&amp;gt;, je definiran kao skup svih onih nizova znakova nad &amp;lt;math&amp;gt;\Sigma&amp;lt;/math&amp;gt; koji mogu biti generirani počevši od početnog nezavršnog znaka &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; i potom primjenjujući produkcije u &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; sve dok nijedan nezavršni znak nije prisutan u međunizu.&lt;br /&gt;
&lt;br /&gt;
=== Primjer ===&lt;br /&gt;
Promatrajmo gramatiku &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; gdje je &amp;lt;math&amp;gt;N = \left \{S, B\right \}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\Sigma = \left \{a, b, c\right \}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; je početni nezavršni znak, i &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; se sastoji od sljedećih produkcija:&lt;br /&gt;
&lt;br /&gt;
: 1. &amp;lt;math&amp;gt;S \rightarrow aBSc&amp;lt;/math&amp;gt;&lt;br /&gt;
: 2. &amp;lt;math&amp;gt;S \rightarrow abc&amp;lt;/math&amp;gt;&lt;br /&gt;
: 3. &amp;lt;math&amp;gt;Ba \rightarrow aB&amp;lt;/math&amp;gt;&lt;br /&gt;
: 4. &amp;lt;math&amp;gt;Bb \rightarrow bb &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Neki primjeri generiranih nizova znakova u &amp;lt;math&amp;gt;\boldsymbol{L}(G)&amp;lt;/math&amp;gt; su:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;\boldsymbol{S} \Rightarrow_2 \boldsymbol{abc}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\boldsymbol{S} \Rightarrow_1 aB\boldsymbol{S}c \Rightarrow_2 a\boldsymbol{Ba}bcc \Rightarrow_3 aa\boldsymbol{Bb}cc \Rightarrow_4 aa\boldsymbol{b}bcc&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\boldsymbol{S} \Rightarrow_1 aB\boldsymbol{S}c \Rightarrow_1 aBaB\boldsymbol{S}cc \Rightarrow_2 a\boldsymbol{Ba}Babccc \Rightarrow_3 aaB\boldsymbol{Ba}bccc\Rightarrow_3 aa\boldsymbol{Ba}Bbccc &amp;lt;/math&amp;gt;&amp;lt;math&amp;gt; \Rightarrow_3 aaaB\boldsymbol{Bb}ccc \Rightarrow_4 aaa\boldsymbol{Bb}bccc \Rightarrow_4 aaa\boldsymbol{b}bbccc&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:(Bilješka o korištenoj notaciji: &amp;lt;math&amp;gt;L \Rightarrow_i R&amp;lt;/math&amp;gt; čitaj kao &amp;quot;&amp;#039;&amp;#039;L&amp;#039;&amp;#039; generira &amp;#039;&amp;#039;R&amp;#039;&amp;#039; korištenjem produkcije &amp;#039;&amp;#039;i&amp;#039;&amp;#039;&amp;quot; i generirani dio međuniza je svaki put masno otisnut (podebljan).)&lt;br /&gt;
&lt;br /&gt;
Ova gramatika definira jezik &amp;lt;math&amp;gt;L = \left \{ a^{n}b^{n}c^{n} | n \ge 1 \right \}&amp;lt;/math&amp;gt; gdje &amp;lt;math&amp;gt;a^{n}&amp;lt;/math&amp;gt; označava niz znakova koji se sastoji od &amp;#039;&amp;#039;n&amp;#039;&amp;#039; uzastopnih znakova &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt;. Dakle, jezik ove gramatike je skup svih nizova znakova koji se sastoje od jednog ili više znakova &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt;, nakon kojih slijedi jednak broj znakova &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;, nakon kojih slijedi jednak broj znakova &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chomskyjeva hijerarhija ===&lt;br /&gt;
{{glavni|Chomskyjeva hijerarhija}}&lt;br /&gt;
&lt;br /&gt;
Kada je [[Noam Chomsky]] prvi iznio formalizam generativnih gramatika 1956.&amp;lt;ref name=&amp;quot;Chomsky1956&amp;quot;/&amp;gt;, klasificirao ih je u tipove danas poznate kao dio [[Chomskyjeva hijerarhija|Chomskyjeve hijerarhije]]. Razlika između ovih tipova jest što imaju povećavajuće stroga produkcijska pravila i stoga mogu izraziti sve manje formalnih jezika. Dva važna tipa su [[kontekstno neovisna gramatika|kontekstno neovisne gramatike]] (tip 2) i [[regularna gramatika|regularne gramatike]] (tip 3). Jezici koji se mogu opisati ovakvim gramatikama se respektivno zovu [[kontekstno neovisni jezik|kontekstno neovisni jezici]] i [[regularni jezik|regularni jezici]]. Premda nešto manje moćne od gramatike neograničenih produkcija (tip 0), koje mogu izraziti bilo koji jezik koji prihvaća [[Turingov stroj]], ova dva ograničena tipa gramatika su najčešće korištena jer se [[parsiranje|parser]] za njih može učinkovito implementirati.&amp;lt;ref name=&amp;quot;Grune&amp;amp;Jacobs1990&amp;quot;&amp;gt;Grune, Dick &amp;amp; Jacobs, Ceriel H., &amp;#039;&amp;#039;Parsing Techniques—A Practical Guide&amp;#039;&amp;#039;, Ellis Horwood, England, 1990.&amp;lt;/ref&amp;gt; Na primjer, sve regularne jezike može prepoznati [[konačni automat]], a za korisne podskupove kontekstno neovisnih gramatika postoje dobro poznati algoritmi za generiranje učinkovitih [[LL parser]]a i [[LR parser]]a koji prepoznaju odgovarajuće jezike koje gramatike generiraju.&lt;br /&gt;
&lt;br /&gt;
==== Kontekstno neovisne gramatike ====&lt;br /&gt;
&amp;#039;&amp;#039;[[Kontekstno neovisna gramatika]]&amp;#039;&amp;#039; je gramatika u kojoj se lijeva strana produkcije sastoji samo od jednog nezavršnog znaka. Ovo ograničenje je netrivijalno; kontekstno neovisna gramatika ne može generirati sve jezike. One koje može zovemo &amp;#039;&amp;#039;kontekstno neovisni jezici&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Jezik definiran u gornjem primjeru nije kontekstno neovisan i ovo se može strogo dokazati koristeći [[svojstvo napuhavanja za kontekstno neovisne jezike]], no npr. jezik &amp;lt;math&amp;gt;\left \{ a^{n}b^{n} | n \ge 1 \right \}&amp;lt;/math&amp;gt; (barem jedan znak &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; nakon kojeg slijedi jednak broj znakova &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;) jest kontekstno neovisan, pošto ga generira gramatika &amp;lt;math&amp;gt;G_2&amp;lt;/math&amp;gt; sa &amp;lt;math&amp;gt;N=\left \{S\right \}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\Sigma=\left \{a,b\right \}&amp;lt;/math&amp;gt;, pri čemu je &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; početni nezavršni znak, a produkcije su sljedeće:&lt;br /&gt;
&lt;br /&gt;
: 1. &amp;lt;math&amp;gt;S \rightarrow aSb&amp;lt;/math&amp;gt;&lt;br /&gt;
: 2. &amp;lt;math&amp;gt;S \rightarrow ab&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kontekstno neovisni jezik može biti prepoznat u vremenu &amp;lt;math&amp;gt;O(n^3)&amp;lt;/math&amp;gt; koristeći algoritme kao što je Earleyev algoritam. Drugim riječima, za svaki kontekstno neovisni jezik se može izgraditi stroj koji na ulazu prima neki niz znakova i određuje u &amp;lt;math&amp;gt;O(n^3)&amp;lt;/math&amp;gt; vremenu pripada li niz jeziku, pri čemu je &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; duljina niza znakova.&amp;lt;ref name=&amp;quot;Earley1970&amp;quot;&amp;gt;Earley, Jay, &amp;quot;An Efficient Context-Free Parsing Algorithm,&amp;quot; &amp;#039;&amp;#039;Communications of the ACM&amp;#039;&amp;#039;, Vol. 13 No. 2, pp. 94-102, February 1970.&amp;lt;/ref&amp;gt; Nadalje, neki važni podskupovi kontekstno neovisnih jezika mogu biti prepoznati u linearnom vremenu koristeći neke druge algoritme.&lt;br /&gt;
&lt;br /&gt;
==== Regularne gramatike ====&lt;br /&gt;
U [[regularna gramatika|regularnim gramatikama]], lijeva strana produkcije je također isključivo jedan nezavršni znak, ali sad se postavlja ograničenje i na desnu stranu produkcije, na kojoj ne mora biti nijedan znak (u slučaju &amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt;-produkcije), može biti jedan završni znak, ili jedan završni znak nakon kojeg slijedi jedan nezavršni znak, i nijedan drugi niz znakova. (Ponekad se koristi nešto šira definicija po kojoj su dozvoljeni dulji nizovi završnih znakova ili samo jedan nezavršni znak i ništa drugo, i na taj se način pojednostavi označavanje iste klase jezika.)&lt;br /&gt;
&lt;br /&gt;
Jezik prethodno definiran nije regularan, ali jezik &amp;lt;math&amp;gt;\left \{ a^{n}b^{m} | m,n \ge 1 \right \}&amp;lt;/math&amp;gt; (barem jedan znak &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; nakon kojeg slijed barem jedan znak &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;, iako ne nužno isti broj puta) jest, pošto ga generira gramatika &amp;lt;math&amp;gt;G_3&amp;lt;/math&amp;gt; sa &amp;lt;math&amp;gt;N=\left \{S, A,B\right \}&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\Sigma=\left \{a,b\right \}&amp;lt;/math&amp;gt;, pri čemu je &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; početni nezavršni znak, a skup produkcija je sljedeći:&lt;br /&gt;
&lt;br /&gt;
: 1. &amp;lt;math&amp;gt;S \rightarrow aA&amp;lt;/math&amp;gt;&lt;br /&gt;
: 2. &amp;lt;math&amp;gt;A \rightarrow aA&amp;lt;/math&amp;gt;&lt;br /&gt;
: 3. &amp;lt;math&amp;gt;A \rightarrow bB&amp;lt;/math&amp;gt;&lt;br /&gt;
: 4. &amp;lt;math&amp;gt;B \rightarrow bB&amp;lt;/math&amp;gt;&lt;br /&gt;
: 5. &amp;lt;math&amp;gt;B \rightarrow \epsilon&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sve jezike koje generira regularna gramatika može u linearnom vremenu prepoznati [[konačni automat]]. Iako su u praksi regularne gramatike obično opisane [[regularni izraz|regularnim izrazima]], neki oblici regularnih izraza korištenih u praksi ne generiraju strogo regularne jezike i zbog tih otklona ne mogu biti prepoznati u linearnom vremenu.&lt;br /&gt;
&lt;br /&gt;
=== Drugi oblici generativnih gramatika ===&lt;br /&gt;
U posljednje su vrijeme razvijena mnoga proširenja i varijacije na izvornu Chomskyjevu hijerarhiju formalnih gramatika, kako od strane lingvista tako i od strane računalnih znanstvenika, obično u svrhu povećanja ekspresivne moći ili u svrhu lakše analize ili [[parsiranje|parsiranja]]. Neki oblici tako razvijenih gramatika uključuju:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;Tree-adjoining&amp;#039;&amp;#039; gramatike povećavaju ekspresivnost konvencionalnih generativnih gramatika dozvoljavanjem pravilima prepisivanja da operiraju na [[stablo parsiranja|stablima parsiranja]] mjesto na običnim nizovima znakova. &amp;lt;ref name=&amp;quot;JoshiEtAl1975&amp;quot;&amp;gt;Joshi, Aravind K., &amp;#039;&amp;#039;et al.&amp;#039;&amp;#039;, &amp;quot;Tree Adjunct Grammars,&amp;quot; &amp;#039;&amp;#039;Journal of Computer Systems Science&amp;#039;&amp;#039;, Vol. 10 No. 1, pp. 136-163, 1975.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Afiksne gramatike&amp;lt;ref name=&amp;quot;Koster1971&amp;quot;&amp;gt;Koster , Cornelis H. A., &amp;quot;Affix Grammars,&amp;quot; in &amp;#039;&amp;#039;ALGOL 68 Implementation&amp;#039;&amp;#039;, North Holland Publishing Company, Amsterdam, p. 95-109, 1971.&amp;lt;/ref&amp;gt; i atributne gramatike&amp;lt;ref name=&amp;quot;Knuth1968&amp;quot;&amp;gt;Knuth, Donald E., &amp;quot;Semantics of Context-Free Languages,&amp;quot; &amp;#039;&amp;#039;Mathematical Systems Theory&amp;#039;&amp;#039;, Vol. 2 No. 2, pp. 127-145, 1968.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;Knuth1971&amp;quot;&amp;gt;Knuth, Donald E., &amp;quot;Semantics of Context-Free Languages (correction),&amp;quot; &amp;#039;&amp;#039;Mathematical Systems Theory&amp;#039;&amp;#039;, Vol. 5 No. 1, pp 95-96, 1971.&amp;lt;/ref&amp;gt; dozvoljavaju pravilima prepisivanja da budu obogaćena semantičkim atributima i operacijama, što se pak pokazalo korisno za povećanje ekspresivnosti gramatike, kao i za izgradnju praktičnih alata za prevođenje (translaciju) jezika.&lt;br /&gt;
&lt;br /&gt;
== Analitičke gramatike ==&lt;br /&gt;
Iako su algoritmi parsiranja jako dugo proučavani i njihova svojstva dobro shvaćena i dokumentirana u ogromnom literalnom korpusu, većina njih podrazumijeva da je jezik koji se parsira inicijalno &amp;#039;&amp;#039;opisan&amp;#039;&amp;#039; preko &amp;#039;&amp;#039;generativne&amp;#039;&amp;#039; formalne gramatike, te da je cilj generatora parsera transformirati tu generativnu gramatiku u parser. Strogo govoreći, generativna gramatika ni na koji način ne korespondira algoritmu korištenom za parsiranje jezika, i različiti algoritmi postavljaju različita ograničenja na oblik produkcija koje shvaćaju kao &amp;#039;&amp;#039;dobro oblikovane&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Alternativni pristup jest formalizacija jezika u obliku &amp;#039;&amp;#039;analitičke gramatike&amp;#039;&amp;#039;, koja pak puno izravnije korespondira strukturi i semantici parsera za jezik. Primjeri formalizama analitičkih gramatika uključuju:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;The Language Machine&amp;#039;&amp;#039; &amp;lt;ref name=&amp;quot;TheLanguageMachine&amp;quot;&amp;gt;http://languagemachine.sourceforge.net&amp;lt;/ref&amp;gt; izravno implementira neograničene analitičke gramatike (analitičke gramatike neograničenih produkcija). Supstitucijska pravila se koriste za transformiranje ulaza i generiranje izlaza i ponašanja. Sustav također može generirati [http://languagemachine.sourceforge.net/picturebook.html lm-dijagram] koji pokazuje što se događa prilikom primjene pravila analitičke gramatike neograničenih produkcija.&lt;br /&gt;
* &amp;#039;&amp;#039;Top-down parsing language&amp;#039;&amp;#039; (TDPL): minimalistički formalizam analitičkih gramatika razvijen u ranim 1970im u svrhu proučavanja parsera od vrha prema dnu.&amp;lt;ref name=&amp;quot;Birman1970&amp;quot;&amp;gt;Birman, Alexander, &amp;#039;&amp;#039;The TMG Recognition Schema&amp;#039;&amp;#039;, Doctoral thesis, Princeton University, Dept. of Electrical Engineering, February 1970.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;Link grammar&amp;#039;&amp;#039;: oblik analitičke gramatike dizajniran za [[lingvistika|lingvistiku]] koji izvodi sintaksnu strukturu proučavanjem pozicijskih odnosa parova riječi.&amp;lt;ref name=&amp;quot;Sleater&amp;amp;Temperly1991&amp;quot;&amp;gt;Sleator, Daniel D. &amp;amp; Temperly, Davy, &amp;quot;Parsing English with a Link Grammar,&amp;quot; Technical Report CMU-CS-91-196, Carnegie Mellon University Computer Science, 1991.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;Sleater&amp;amp;Temperly1993&amp;quot;&amp;gt;Sleator, Daniel D. &amp;amp; Temperly, Davy, &amp;quot;Parsing English with a Link Grammar,&amp;quot; &amp;#039;&amp;#039;Third International Workshop on Parsing Technologies&amp;#039;&amp;#039;, 1993. (Revizija prethodnog papira.)&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;Parsing expression grammar&amp;#039;&amp;#039; (PEG): poopćenje TDPL-a dizajnirano da zadovolji praktične potrebe ekspresivnosti [[programski jezik|programskih jezika]] i pisaca [[jezični procesor|jezičnih procesora]].&amp;lt;ref&amp;gt;Ford, Bryan, &amp;#039;&amp;#039;Packrat Parsing: a Practical Linear-Time Algorithm with Backtracking&amp;#039;&amp;#039;, Master’s thesis, Massachusetts Institute of Technology, Sept. 2002.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Izvori ==&lt;br /&gt;
&lt;br /&gt;
{{izvori}}&lt;br /&gt;
&lt;br /&gt;
== Vanjske poveznice ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.formalgrammar.tk/ Godišnja konferencija o formalnim gramatikama]&lt;br /&gt;
&lt;br /&gt;
{{Formalni jezici i gramatike}}&lt;br /&gt;
[[Kategorija:Formalni jezici]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
</feed>