Backusova–Naurova forma: Porovnání verzí

Smazaný obsah Přidaný obsah
m Odkazy, formát, styl
Řádek 1:
{{Upravit - informatika}}
'''Backus-Naurova forma''' ('''BNF''') je [[metasyntaxe]] používaná k vyjádření [[bezkontextová gramatika|bezkontextové gramatiky]]: to znamená, žekterá se jedná o formálnípoužívá způsobpro popisupopis [[formální jazykyjazyk|formálních jazyků]]). [[John Backus]] a [[Peter Naur]] vytvořili bezkontextovou gramatiku, s jejíž pomocí definovali [[syntax|syntaxi]] [[programovací jazyk|programovacích jazyků]] využitím dvou typů pravidel: lexikálního pravidla a syntaktického pravidla.
 
BNF se často využívá k zápisu (notaci) gramatik počítačových programovacích jazyků, sad instrukcí a komunikačních protokolů, ale také jako notace zastupující části gramatik skutečných jazyků. Řada učebnic o teorii programovacích jazyků nebo [[sémantika|sémantiky]] popisuje programovací jazyky pomocí BNF. Existuje řada rozšíření a jiných variant BNF.
 
== Historie ==
John Backus vytvořil tuto notaci, aby vyjádřil gramatiku [[Algol|ALGOLu]]. Na prvním Světovém počítačovém kongresu konaném v Paříži v roce 1959 Backus přednesl příspěvek „Syntaxe''Syntaxe a sémantika navrhovaného mezinárodního algebraického jazyka z curyšské konference ACM-GAMM“GAMM'', v němž formálně popsal mezinárodní algebraický jazyk (IAL) později nazvaný ALGOL 58. Formální jazyk, který Backus představil, byl založen na produkčním systému [[Emil Post|Emila Posty]]. Generativní gramatiky se pak staly objektem intenzivních matematických studií, prováděných např. [[Noam Chomsky|Noamem Chomskym]], který je aplikoval na gramatiky skutečných jazyků.
 
Peter Naur označil Backusovu notaci za Backusovu normální formu (ALGOL 60, 1963) a zjednodušil ji, aby minimalizoval počet používaných znaků. Na návrh [[Donald Knuth|Donalda Knutha]] bylo Naurovo jméno přidáno do názvu jako uznání za jeho práci v oboru a nahradilo „N“ ve zkratce, neboť Knuth argumentoval tím, že BNF „není''není v žádném případě normální“normální''. Backus-Naurova forma, resp. gramatika BNF, je do značné míry podobná Paniniho pravidlům gramatiky, proto bývá někdy nazývána Panini-Backusova forma.
 
== Úvod ==
Řádek 32:
Přeloženo do češtiny:
 
Poštovní adresa se skládá z části ''Jméno'', ''Adresa'' (ulice) a ''PSČ'' (Poštovní směrovací číslo (PSČ).
*část ''Jméno'' se skládá z:
**buď z ''Osobní části'', po níž následuje příjmení a dále nepovinná tzv. ''Jr. část'' (obsahující zkratky typu Jr., Sr., nebo pořadové číslo v dynastii) a konec řádku,
**nebo z ''Osobní části'' následované částí ''Jméno'' (tato varianta ilustruje možnost [[rekurze]] v BNF, bude použita pro případy, kdy lidé používají mnohonásobná křestní nebo střední jména, resp. iniciály).
***''Osobní část'' se skládá buď z křestního jména, nebo z iniciály následované tečkou.
*''Adresa (ulice)'' sestává z nepovinné části specifikující byt, následované číslem domu, jménem ulice a koncem řádku.
*část ''PSČ'' se skládá z názvu města, následované čárkou, kódem státu a číslem, za nímž je opět konec řádku.
 
Berme v úvahu, že řada položek by mohla být dále specifikována na levé straně (např. formát jména, PSČ apod.) pomocí dalších pravidel BNF.
Řádek 54:
<literal> ::= '"' <text> '"' | "'" <text> "'"
 
kdeV příkladu se předpokládá, že pro správnou interpretaci pravidla BNF nemusí toto pravidlo obsahovat žádné mezery. <CODE><EOL></CODE> představuje konec řádku (v ASCII návrat válce tiskárny, resp. nový řádek ([[line- feed]]) v závislosti na operačním systému). <CODE><rule-name></CODE> a <CODE><text></CODE> lze nahradit za název a text deklarovaného pravidla.
 
== Varianty ==
Existuje řada variant a rozšíření BNF, které vznikly z důvodu dosažení větší jednoduchosti nebo stručnosti, popřípadě za účelem adaptace BNF pro specifické účely. Jedním společným znakem řady variant BNF je použití opakovacích operátorů z regulárních výrazů, např. <CODE>*</CODE> a <CODE>+</CODE>.
 
[[Rozvinutá Backus-Naurova forma]] (Extended Backus–Naur form, EBNF) je metasyntaktická notace používaná k vyjádření bezkontextové gramatiky. Původně byla vyvinuta [[Niklaus Wirth|Niklausem Wirthem]], dnes je však většina proměnných EBNF standardizována a definována normami, zejm. ISO-14977 pod kódovým označením ISO/IEC 14977:1996(E).
 
[[Rozšířená Backus-Naurova forma]] (Augmented Backus–Naur form, ABNF) vychází z BNF, má však svůj vlastní specifický syntax a pravidla odvozování. Základním principem tohoto meta-jazyka je popsat formální systém jazyka. ABNF je zanesen do RFC 4234 a je často používán jako definovací jazyk pro komunikační protokol [[IETF]].
 
*{{Překlad|en|Backus-Naur form}}
==Literatura==
 
*{{Překlad|en|Backus-Naur form}}
 
[[Kategorie:Informatika]]