24.02.2015 Views

zde - Univerzita Karlova

zde - Univerzita Karlova

zde - Univerzita Karlova

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

BNF obsahuje podobně jako BKG neterminály, které se uvádějí do<br />

úhlových závorek a přepisují skrze symbol := na řetězce terminálních a<br />

neterminálních symbolů. Jde tedy o pravidla tvaru:<br />

〈X〉 ::= α 1 | ...|α n<br />

Pro přehlednější zápis je však ještě lepší modifikace BNF zvaná EBNF<br />

(Extended BNF) – rozšířená BNF, která zjednodušuje zápis opakovaně<br />

používaných, příp. podmíněně vyskytujících se výrazů. Umožňuje následující<br />

zápisy:<br />

{α} – znamená, že výraz se vyskytuje v libovolném počtu (ekvivalent<br />

operace iterace)<br />

{α} n m – znamená, že výraz se vyskytuje v počtu nejméně n anejvýše<br />

m (ekvivalent operace mocniny od n do m)<br />

[α] – znamená, že výraz se může a nemusí na daném místě vyskytnout,<br />

je to ekvivalentní zápisu {α} 0<br />

1<br />

Příklad. Gramatika z předchozího příkladu by v BNF mohla být zapsána<br />

například takto:<br />

〈aritmetickyvyraz+〉 ::= 〈aritmetickyvyraz∗〉{+〈aritmetickyvyraz∗〉}<br />

〈aritmetickyvyraz∗〉 ::= 〈operand/podvyraz〉{∗〈operand/podvyraz〉}<br />

〈operand/podvyraz〉 ::= (〈aritmetickyvyraz+〉)|x<br />

BNF umožňuje přehledný zápis a navíc i jednoduchý přechod k některým<br />

typům SA. Pomocí BNF je zapsána například celá gramatika<br />

jazyka Pascal v učebnici [13]. Příkladem může být deklarace podmíněného<br />

příkazu:<br />

〈podminenyprikaz〉 ::= if 〈booleovskyvyraz〉then〈prikaz〉[else〈prikaz〉]<br />

2. Metoda rekurzivního sestupu pro syntaktickou analýzu<br />

Prvním důležitým úkolem při překladu z nějakého zdrojového jazyka do<br />

cílového je především syntaktická analýza – tedy kontrola, zda je text<br />

ve zdrojovém jazyce správně zapsán. V nejjednodušším případě pouhé<br />

kontroly typu ANO/NE (program je správně/není správně syntakticky<br />

zapsán) se jedná o takzvanou syntaktickou analýzu (dále budeme zkracovat<br />

SA). V anglicky psaných zdrojích se setkáte spíše s jednoslovným<br />

označením „parsing. O daném postupu, algoritmu, jak tuto SA provést,<br />

pak hovoříme jako o syntaktickém analyzátoru (anglicky „parser).<br />

108

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!