SPECYFIKACJA BNF DO PROJEKTU RucPyc2000

 

 

<slowo_klucz_deklaracja_nazwy_programu> ::= program

<slowo_klucz_deklaracja_zmiennych> ::= var

<slowo_klucz_deklaracja_stalych> ::= const

<typ> = boolean | integer | real | string | ^boolean | ^integer |         ^real | ^string

<operator_ini_stalej> ::= =

<operator_przypisania> ::= :=

<operator_arytmetyczny> ::= + | - | * | /

 <operator_relacji> ::= = | <> | > | >= | < | <=

<dwukropek> ::= :

<srednik> ::= ;

<kropka> ::= .

<nawias_otwarty> ::= (

<nawias_zamkniety> ::= )

<poczatek_komentarza> ::= {

<koniec_komentarza> ::= }

<poczatek_bloku> ::= begin

<koniec_bloku> ::= end

<operator_pamieci> ::= new | dispose

<rodzaj_operacji_we> ::= read | readln

<rodzaj_operacji_wyj> ::= write | writeln

<jezeli> ::= if

<wtedy> ::= then

<albo> ::= else

<dla> ::= for

<do> ::= to

<dopoki> ::= while

<wykonuj> ::= do

<litera> ::= a | b | c | d | ... | z | A | B | C | D | ... | Z

<cyfra> ::= 0 | 1 | ... | 9

 <podkreslenie> ::= _

<wartosc_bool> ::= true | false

 

<identyfikator> ::= <litera> | <identyfikator><litera> | <identyfikator><cyfra> | <identyfikator><podkreslenie>

 

<operator_binarny> ::= <operator_arytmetyczny> | <operator_relacji>

 

<operator_unarny> ::= <operator_pamieci>

 

<operator> ::= <operator_binarny> | <operator_unarny>

 

<lancuch_znakow> ::= <znak> | <lancuch_znakow><znak>

 

<dodatnia_liczba_calkowita> ::= <cyfra> | <dodatnia_liczba_calkowita><cyfra>

 

<ujemna_liczba_calkowita> ::= <znak_minus><dodatnia_liczba_calkowita>

 

<liczba_calkowita> ::= <dodatnia_liczba_calkowita> | <ujemna_liczba_calkowita>

 

<liczba_rzeczywista> ::= <liczba_calkowita> | <liczba_calkowita><kropka><dodatnia_liczba_calkowita>

 

<stala_bezposrednia> ::= <liczba_calkowita> | <liczba_rzeczywista> | <wartosc_bool> | <lancuch_znakow>

 

<wartosc> ::= <identyfikator> | <stala_bezposrenia>

 

<znak> ::= <litera> | <cyfra> | <podkreslenie>

 

<deklaracja_zmiennej> ::= <identyfikator><dwukropek><typ><srednik>

 

<deklaracja_zmiennych> ::= <slowo_klucz_deklaracja_zmiennych><deklaracja_zmiennej> |

                           <deklaracja_zmiennych><deklaracja_zmiennej>

 

<deklaracja_stalej> ::= <identyfikator><operator_ini_stalej><wartosc><srednik> |                      <identyfikator><dwukropek><typ><operator_ini_stalej><wartosc><srednik>

 

<deklaracja_stalych> ::= <slowo_klucz_deklaracja_stalych><deklaracja_stalej> | <deklaracja_stalych><deklaracja_stalej>

 

<operacja_relacji> ::= <wartosc><operator_relacji><wartosc>

 

<operacja_arytmetyczna> ::= <wartosc><operator_arytmetyczny><wartosc>

 

<operacja_binarna> ::= <operacja_relacji> | <operacja_arytmetyczna>

 

<operacja_przypisania> ::= <identyfikator><operator_przypisania><wartosc> | <identyfikator><operator_przypisania><operacja_binarna>

 

<operacja_unarna> ::= <operator_unarny><nawias_otwarty><identyfikator><nawias_zamkniety><srednik>

 

<operacja> ::= <operacja_binarna> | <operacja_przypisania> | <operacja_unarna>

 

<operacja_wyj> ::= <rodzaj_operacji_wyj><nawias_otwarty><wartosc><nawias_zamkniety><srednik>

 

<operacja_we> ::= <rodzaj_operacji_we><nawias_otwarty><identyfikator><nawias_zamkniety><srednik>

 

<operacja_we_wyj> ::= <operacja_we > | <operacja_wyj>

 

<tresc_bloku> ::= <polecenie> | <tresc_bloku><polecenie>

 

 

<blok> ::= <poczatek_bloku><tresc_bloku><koniec_bloku>

 

<polecenie> ::= <operacja> | <instrukcja_warunkowa> | <petla_dopoki> | <petla_dla> | <operacja_we_wyj>

 

<instrucja_warunkowa> := <jezeli><operacja_relacji><wtedy><polecenie> |

          <jezeli><operacja_relacji><wtedy><blok> |

          <jezeli><operacja_relacji><wtedy><polecenie><albo><polecenie>

         <jezeli><operacja_relacji><wtedy><blok><albo><polecenie> |

         <jezeli><operacja_relacji><wtedy><polecenie><albo><blok> |

         <jezeli><operacja_relacji><wtedy><blok><albo><blok>

 

<petla_dopoki> ::= <dopoki><operacja_relacji><wykonuj><polecenie> | <dopoki><operacja_relacji><wykonuj><blok>

 

<petla_dla> ::= <dla><identyfikator><operator_przypisania><wartosc><do><wartosc><wykonuj><polecenie> |        <dla><identyfikator><operator_przypisania><wartosc><do><wartosc><wykonuj><blok>

 

 

Pobierz specyfikacje