Rozvinutá Backusova–Naurova forma

Tento článek pojednává o EBNF. Možná hledáte: Rozšířená Backusova–Naurova forma (ABNF).

Rozvinutá Backusova–Naurova forma (anglicky Extended Backus–Naur Form), EBNF je v informatice rodina metasyntaktických notací využívaných pro zápis bezkontextových gramatik. EBNF se používá pro formální popis programovacích jazyků nebo jiných formálních jazyků. Různé formy EBFN jsou spíše modifikací než rozšířením Backusovy–Naurovy formy. EBNF navrhl Niklaus Wirth a později ji standardizovala Mezinárodní organizace pro normalizaci (ISO) jako standard ISO/IEC 14977.[1] Přestože je EBNF standardizovaná, existuje mnoho různých variací, které se mohou lišit v syntaktických konvencích. V příkladech v tomto článku je použita EBNF ISO specifikace.

Zápis pravidel

Slova formálního jazyka nebo zdrojový kód počítačového programu jsou tvořeny posloupností terminálů, což jsou tisknutelné znaky, čísla, interpunkční znaménka, bílé znaky (mezery tabelátory, konce řádků) atd.

EBNF definuje přepisovací pravidla, kde jsou sekvence symbolů přiřazeny neterminálům:

nenulová-číslice = "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;
číslice = "0" | nenulová-číslice ;

Každý řádek definuje jedno přepisovací pravidlo. Na levé straně (před rovnítkem) je uveden neterminál (číslice, nenulová-číslice). Na pravé straně jsou uvedeny různé varianty terminálních a neterminálních symbolů, které jsou vzájemně odděleny znakem svislá čára. Terminální symboly jsou uzavřeny do uvozovek, středník ukončuje pravidlo. Definice tedy říká, že číslice může být 0 nebo neterminál nenulová-číslice, přičemž nenulová-číslice může být libovolný terminál 1 nebo 2 nebo 3 nebo atd. nebo 9. V EBNF mohou být neterminály složené i z více slov (protože prvky posloupnosti se oddělují čarkami), takže místo nenulová-číslice lze psát nenulová číslice.

Přepisovací pravidla mohou též obsahovat sekvence terminálů a neterminálů oddělených čárkou:

dvanáct = "1" , "2" ;
dvě stě jedna = "2" , "0" , "1" ;
tři sta dvanáct = "3" , dvanáct ;
dvanáct tisíc dvě stě jedna = dvanáct , dvě stě jedna ;

Výraz, který může být vynechán nebo opakován, se uzavírá do složených závorek { ... }:

přirozené číslo = nenulová číslice , { číslice } ;

V tomto případě jsou řetězce 1, 2,... 10,... 12345,... správným výrazem. Ve výsledku může být vše, co je uvedeno ve složených závorkách, libovolně opakováno nebo to tam nemusí být vůbec.

V hranatých závorkách [ ... ] jsou uvedeny části, které mohou být použity pouze jednou nebo vůbec:

celé číslo = "0" | [ "-" ] , přirozené číslo ;

Podle tohoto pravidla je celé číslo nula (0) nebo přirozené číslo, před kterým může být znaménko minus.

EBNF také definuje syntaxi pro popis určitého počtu opakování, vynechání určitých částí nebo vložení komentářů do EBNF gramatiky.

Rozšířená BNF

Původní Backusova–Naurova forma neumožňuje vyjádřit volitelné a opakující se výrazy; místo toho je nutné využít mezipravidlo nebo alternativní definici pro vynechání či volitelnou existenci prvku, případně rekurzivně pro opakování. Tyto konstrukce je možné využít i v EBNF.

Volitelná část v EBNF:

číslo-se-znaménkem = [ znaménko ] , celé-číslo ;

v BNF vypadá definice takto:

<číslo-se-znaménkem> ::= <znaménko> <celé-číslo> | <celé-číslo> ;

nebo

<číslo-se-znaménkem> ::= <nepovinné znaménko> <číslo> ;
<nepovinné-znaménko> ::= ε | <znaménko> ; (* epsilon ("ε") se využívá pro vyjádření prázdných pravidel *)

Opakování v EBNF:

číslo = { číslice } ;

v BNF vypadá definice takto:

<číslo> ::= ε | <číslo> <číslice> ;

Poznámka: EBNF (ISO) využívá pro zřetězení čárku ','. BNF takovou možnost nemá.

Další dodatky a úpravy

EBNF odstraňuje některé další vady BNF:

  • BNF využívá symboly (<, >, |, ::=). Pokud jsou obsaženy v jazyce bez dalších úprav a vysvětlení, BNF je nedokáže využít.
  • Syntaxe BNF může mít pravidla zapsána pouze na jednom řádku.

EBNF řeší následující problémy:

  • Terminální symboly musí být uzavřeny do uvozovek ("..." nebo '...'). Špičaté závorky ("<...>") mohou být pro terminály a neterminály vynechány.
  • Ukončovací znak, středník, značí konec pravidla.

Kromě toho existují mechanismy pro vylepšení, definice počtu opakování, vynechání kromě některých možností (např. všechny znaky, kromě uvozovek), komentáře, atd.

I přes všechna tato vylepšení není EBNF silnější, než BNF a to ve smyslu toho, jak jazyk definovat. De fakto lze říci, že všechny formální gramatiky, které lze definovat v EBNF, mohou být vytvořeny i v BNF. Nicméně to ve výsledku vede k mnohem obsáhlejšímu množství definičních pravidel.

EBNF je standardizována ISO pod označením ISO/IEC 14977:1996(E).

Za určitých okolností je jakákoliv rozšířená BNF jen EBNF. Například W3C využívá one EBNF pro specifikování XML.[2]

Další příklad

Programovací jazyky podobné Pascalu umožňují pouze přiřazení, která jsou v EBNF definována následovně:

(* jednoduchý program v EBNF − Wikipedia *)
program = 'PROGRAM' , mezera , identifikátor , mezera ,
           'BEGIN' , mezera ,
           { přiřazení , ";" , mezera } ,
           'END.' ;
identifikátor = znak-abecedy , { znak-abecedy | číslice } ;
číslo = [ "-" ] , číslice , { číslice } ;
řetězec = '"' , { všechny-znaky - '"' } , '"' ;
přiřazení = identifikátor , ":=" , ( číslo | identifikátor | řetězec ) ;
znak-abecedy = "A" | "B" | "C" | "D" | "E" | "F" | "G"
             | "H" | "I" | "J" | "K" | "L" | "M" | "N"
             | "O" | "P" | "Q" | "R" | "S" | "T" | "U"
             | "V" | "W" | "X" | "Y" | "Z" ;
číslice = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;
mezera = ? znak prázdného místa ? ;
všechny-znaky = ? všechny tisknutelné znaky ? ;

Syntakticky správný program vypadá následovně:

PROGRAM DEMO1
BEGIN
  A0:=3;
  B:=45;
  H:=-100023;
  C:=A;
  D123:=B34A;
  BABOON:=GIRAFFE;
  TEXT:="Hello world!";
END.

Jazyk může byt jednoduše rozšířen o řídicí struktury, aritmetické výrazy a instrukce pro vstup/výstup.

Následující znaky jsou navrženy jako standard klasické prezentace:

Význam Zápis Alternativní zápis
definice =
zřetězení ,
ukončení ; .
oddělení | / nebo !
nepovinné [ ... ] (/ ... /)
opakování { ... } (: ... :)
seskupení ( ... )
dvojité uvozovky " ... "
jednoduché uvozovky ' ... '
komentář (* ... *)
speciální část ? ... ?
výjimka -

Vyjádření opakování

Následující syntaktická pravidla ukazují, jak lze v EBNF vyjádřit opakování:

aa = "A";
bb = 3 * aa, "B";
cc = 3 * [aa], "C";
dd = {aa}, "D";
ee = aa, {aa}, "E";
ff = 3 * aa, 3 * [aa], "F";
gg = {3 * aa}, "G";

Těmito pravidly jsou generovány tyto terminální řetězce:

  • aa: A
  • bb: AAAB
  • cc: C AC AAC AAAC
  • dd: D AD AAD AAAD AAAAD atd.
  • ee: AE AAE AAAE AAAAE AAAAAE atd.
  • ff: AAAF AAAAF AAAAAF AAAAAAF
  • gg: G AAAG AAAAAAG atd.

Konvence

1. EBNF používá následující konvence:

  • Každý meta-identifikátor EBNF se zapisuje jako jedno nebo několik slov spojených pomlčkami;
  • Meta-identifikátor zakončený „-symbol“, je název terminálního symbolu EBNF.

2. Operátory EBNF mají následující priority (od nejvyšší po nejnižší):

  • * pro opakování
  • - pro vynechání
  • , pro zřetězení
  • | pro oddělení jednotlivých definic
  • = pro definování neterminálu
  • ; konec pravidla
  • . konec pravidla

3. Toto pořadí může být změněno pomocí následujících závorek:

'  apostrof                                     apostrof  '
"  uvozovky                                     uvozovky  "
(* začátek-komentáře                     konec-komentáře *)
(  začátek-skupiny                         konec-skupiny  )
[  začátek-nepovinné části         konec-nepovinné-části  ]
{  začátek-opakující-se-části   konec-opakující-se-části  }
?  speciální-část                         speciální-část  ?

Apostrof definovaný v ASCII, tj. U+0027 ('), ale ve fontu použitém ve standardu ISO/IEC 14977:1996 (E) se velmi podobá znaku U+00B4 ('), takže může dojít k nedorozumění. Nicméně, ISO standard EBNF definuje ISO / IEC 646:1991, "ISO 7bitová kódovaná znaková sada pro výměnu informací" jako referenci a nezmiňuje žádné jiné znakové sady, takže by nemělo dojít k záměně s Unicode znaky mimo 7bitové ASCII.

Rozšiřitelnost EBNF

Standard ISO 14977 popisuje dva způsoby rozšiřování EBNF. Prvním, který je částí EBNF gramatiky, jsou speciální sekvence tvořené libovolným textem ohraničeným otazníky. Interpretace tohoto textu není ve standardním EBNF popsána. Například znak mezera lze definovat takto:

mezera = ? US-ASCII character 32 ?;

Druhý způsob rozšiřování využívá skutečnosti, že za neterminály nemohou bezprostředně následovat závorky (musí být odděleny čárkou). Proto

neco = foo ( bar );

není validní EBNF, ale je třeba psát:

neco = foo, ( bar );

Rozšíření EBNF mohou využívat tuto notaci. Například aplikace funkce by v gramatice programovacího jazyka Lisp mohla být definována takto:

aplikace funkce = seznam( symbol , { vyraz } );

Odkazy

Reference

V tomto článku byl použit překlad textu z článku Extended Backus–Naur Form na anglické Wikipedii.

  1. http://standards.iso.org/ittf/PubliclyAvailableStandards/s026153_ISO_IEC_14977_1996(E).zip ISO/IEC 14977
  2. Extensible Markup Language (XML) 1.0. Kapitola 6 Notation. www.w3.org [online]. [cit. 2024-06-05]. Dostupné online. (anglicky) 

Literatura

Související články

Externí odkazy

Read other articles:

Koordinat: 8°05′12″S 115°08′00″E / 8.086699°S 115.133276°E / -8.086699; 115.133276 SangsitDesaTentara kolonial Belanda di Sangsit pada masa Perang Bali gambar oleh G. Kepper (G.Kepper: Wapenfeiten van het Nederlandsch-Indisch leger)Negara IndonesiaProvinsiBaliKabupatenBulelengKecamatanSawanKode pos81171Kode Kemendagri51.08.07.2012Luas3,60 km²[1]Jumlah penduduk10.077 jiwa(2000) 7.726 jiwa (2010)[2]Kepadatan2.146 jiwa/km² (2010)Jumlah R...

 

Perdana Menteri ZanzibarBekas jabatan politikBendera NegaraPenggantiTidak adaPejabat pertamaSheikh Muhammad Shamte HamadiPejabat terakhirShamsi Vuai NahodhaPelantikSultan (1961–1964)Presiden (1964–2010)Jabatan dimulai5 Juni 1961Jabatan berakhir9 November 2010 Berikut merupakan daftar Perdana Menteri Zanzibar. Menteri Kepala Nama Mulai Menjabat Akhir Jabatan Partai Geoffrey Charles Lawrence (pejabat) 23 Februari 1961 5 Juni 1961 non-partai Sheikh Muhammad Shamte Hamadi 5 Juni 1961 24 Juni ...

 

NGC 69NGC 69 in near-infrared (2MASS)Data pengamatanRasi bintangAndromedaAsensio rekta 00j 18m 20.49dDeklinasi 30° 02′ 20.8″Pergeseran merah0.022285[1]Kecepatan radial helio6680[1][2]Jarak300 Mly[2]Kelompok dan gugusan galaksiGrup NGC 68Magnitudo semu (V)14.7[2] 14.8[3] 14.4[4] 12.55[5]Ciri-ciriJenisS0Ukuran80,000[2]Ukuran semu (V)0.9'x0.8'[4]Penamaan lainVV 166e, ARK 0...

Correctional facility in Castaic, California, USA This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: North County Correctional Facility – news · newspapers · books · scholar · JSTOR (January 2021) (Learn how and when to remove this template message) North County Correctional Facility, Los Angeles County aerial ...

 

Imaginary point directly above a particular location, on the imaginary celestial sphere For other uses, see Zenith (disambiguation). Zenith angle redirects here. For the novel, see The Zenith Angle. Diagram showing the relationship between the zenith, the nadir, and different types of horizon Look up zenith in Wiktionary, the free dictionary. The zenith (UK: /ˈzɛnɪθ/, US: /ˈziːnɪθ/)[1] is an imaginary point directly above a particular location, on the celestial sphere. Above m...

 

Pour les articles homonymes, voir Diouf. Abdou Diouf Abdou Diouf en 2008. Fonctions Secrétaire général de la Francophonie 1er janvier 2003 – 1er janvier 2015(12 ans) Élection 20 octobre 2002 Réélection 29 septembre 200624 octobre 2010 Prédécesseur Boutros Boutros-Ghali Successeur Michaëlle Jean Président de la république du Sénégal 1er janvier 1981 – 1er avril 2000(19 ans et 3 mois) Élection 27 février 1983 Réélection 28 février 198821 février 1993 Premi...

Affluent suburb of Dublin, Ireland Suburb in Leinster, IrelandChurchtown Baile an TeampaillSuburbShops in ChurchtownChurchtownLocation in DublinShow map of DublinChurchtownChurchtown (Ireland)Show map of IrelandCoordinates: 53°17′44″N 6°15′30″W / 53.29556°N 6.25833°W / 53.29556; -6.25833CountryIrelandProvinceLeinsterCountyDún Laoghaire–RathdownTime zoneUTC±0 (WET) • Summer (DST)UTC+1 (IST)Eircode routing keyD14Telephone area code+353(0)1 Chu...

 

Papa Costantino88º papa della Chiesa cattolicaElezione25 marzo 708 Fine pontificato9 aprile 715(7 anni e 15 giorni) Cardinali creativedi categoria Predecessorepapa Sisinnio Successorepapa Gregorio II  NascitaSiria, 664 MorteRoma, 9 aprile 715 SepolturaAntica basilica di San Pietro in Vaticano Manuale Costantino (Siria, 664 – Roma, 9 aprile 715) è stato l'88º papa della Chiesa cattolica dal 708 fino alla sua morte. Indice 1 Biografia 2 Note 3 Bibliografia 4 Altri progetti 5...

 

Kent TaylorTaylor dalam Washington Melodrama (1941)LahirLouis William Weiss(1907-05-11)11 Mei 1907Nashua, Iowa, Amerika SerikatMeninggal11 April 1987(1987-04-11) (umur 79)Woodland Hills, Los Angeles, California, Amerika SerikatTempat pemakamanWestwood Village Memorial Park Cemetery di Los AngelesTahun aktif1931–1974Suami/istriAugusta Kulek Taylor ​ ​(m. 1930)​Anak3 Kent Taylor (nama lahir Louis William Weiss; 11 Mei 1907 – 11...

David & GoliathSutradaraRajeev NathProduserSudeep KaratArun MCDitulis olehAnoop MenonPemeranJayasuryaAnoop MenonSoumyaPenata musikRatheesh VeghaSinematograferJithu DamodarPenyuntingXianPerusahaanproduksiSal Roza Motion PicturesLine of ColorsDistributorMurali FilmsTanggal rilis 22 Februari 2013 (2013-02-22) Durasi112 menitNegaraIndiaBahasaMalayalam David & Goliath adalah sebuah film drama Malayalam 2013 yang ditulis oleh Anoop Menon dan disutradarai oleh Rajeev Nath. Film te...

 

Indian filmmaker This biography of a living person needs additional citations for verification. Please help by adding reliable sources. Contentious material about living persons that is unsourced or poorly sourced must be removed immediately from the article and its talk page, especially if potentially libelous.Find sources: Vysakh – news · newspapers · books · scholar · JSTOR (November 2013) (Learn how and when to remove this message) VysakhVysakh in ...

 

Basketball team in Iași, RomaniaCS Politehnica IașiNicknameAlb-Albaștrii(The White and Blues)The StudsLeaguesLiga NaționalăFounded1967; 57 years ago (1967)HistoryCS Politehnica Iași (1967–present)ArenaPolyvalent HallCapacity1,500LocationIași, RomaniaTeam colorsWhite, Blue    PresidentGabriel Toma, Dorin ȘchiopuHead coachBranko JorovićWebsiteOfficial website Home Away Active departments of CS Politehnica Iași Football Basketball(Men's) Basketball(Women's...

Group of Canadian landscape painters (1920–1933) This article is about the group of Canadian artists. For the group of Asian-American artists sometimes called the Group of Seven, see Metcalf Chateau. Frederick Varley, A. Y. Jackson, Lawren Harris, Barker Fairley (not a member), Frank Johnston, Arthur Lismer, and J. E. H. MacDonald. Image ca. 1920, F 1066, Archives of Ontario, I0010313 The Group of Seven, once known as the Algonquin School, was a group of Canadian landscape painters from 192...

 

El Derecho a la vivienda aparece recogido en el artículo 25 de la Declaración Universal de los Derechos Humanos de 1948. Algunas constituciones nacionales también lo recogen. El derecho a una vivienda digna y adecuada es uno de los derechos económicos, sociales y culturales que afectan de manera decisiva a las condiciones de igualdad social.[1]​ El derecho universal a una vivienda, digna y adecuada, como uno de los derechos humanos, aparece recogido en la Declaración Universal de l...

 

Arthur Price (1678 or 1679 – 1752) was Church of Ireland Archbishop of Cashel from 1744 until his death. Previously he had been Church of Ireland Bishop of Clonfert (1724–1730), Ferns and Leighlin (1730–1734) and Meath (1734–1744). Childhood and patronage Arthur was the son of Samuel Price, vicar of Kildrought and Straffan in the diocese of Dublin and, from 1672, prebendary of Kildare. Arthur Price entered Trinity College Dublin, on 2 April 1696, aged seventeen, and was elected a sch...

Il premio Apuliacon è stato un riconoscimento della fantascienza in lingua italiana. Al premio, fondato nel 2003 e durato fino al 2007, si concorreva presentando racconti esclusivamente inediti. Indice 1 Caratteristiche 2 Elenco dei racconti vincitori 2.1 Edizione I - 2004 2.2 Edizione II – 2005 2.3 Edizione III - 2006 2.4 Edizione IV – 2007 3 Collegamenti esterni Caratteristiche La giuria del premio era formata da consiglieri appartenenti all'associazione culturale. Il suo nome deriva d...

 

Defunct railway line in Pingtung County, Taiwan Donggang lineA surviving headshunt on the Donggang LineOverviewNative name東港線OwnerTaiwan Railways AdministrationTerminiZhen'anDonggangStations3ServiceTypeHeavy railOperator(s)Taiwan Railways AdministrationHistoryOpened19 July 1940 (1940-07-19)[1]ClosedJuly 2002 (2002-07)[2]TechnicalLine length6.2 km (3.9 mi)[2]Track gauge3 ft 6 in (1,067 mm)ElectrificationNone T...

 

Abraham Setsuzō Kotsuji小辻 節三BornSetsuzō Kotsuji1899KyotoDied31 October 1973United StatesOther namesAbraham Abraham Setsuzō Kotsuji (小辻 節三, Kotsuji Setsuzō, 1899, Kyoto - 31 October 1973) was a Japanese Orientalist, and the son of a Shinto priest who descended from a long line of Shinto priests. During the Holocaust he helped Jewish refugees to escape the Nazis, arranging for them to stay first in Kobe and later in Japanese-occupied Shanghai. He also fought against Na...

Questa voce sull'argomento calciatori inglesi è solo un abbozzo. Contribuisci a migliorarla secondo le convenzioni di Wikipedia. Segui i suggerimenti del progetto di riferimento. Gary WalshNazionalità Inghilterra Altezza191 cm Peso99 kg Calcio RuoloPortiere CarrieraGiovanili 1984-1990 Manchester Utd Squadre di club1 1990-1993 Manchester Utd4 (-7)1993→  Oldham Athletic6 (-9)1994-1995 Manchester Utd13 (-13)1995-1997 Middlesbrough44 (-67)1997-2000 Bra...

 

この記事の主題はウィキペディアにおける音楽の特筆性の基準を満たしていないおそれがあります。 基準に適合することを証明するために、記事の主題についての信頼できる二次資料を求めています。なお、適合することが証明できない場合には、記事は統合されるか、リダイレクトに置き換えられるか、さもなくば削除される可能性があります。出典検索?: MELT MY ...