Startowa O projekcie Download Kontakt Linki
 


 Notacja Backusa-Naura (BNF)

 Dla Analizatora leksykalnego

<Litera> ::= a|..|z|A|..|Z
<Cyfra> ::= 0|..|9
<Slowo_Kluczowe> ::=Program|Integer|Real|Boolean|Write|Read|For|If|                                   Then|True|False|Begin|End|Var|To|Do
<Separator> ::= ;
<Spacja> ::= ' '
<Przecinek> ::= ,
<Kropka> ::= .
<Dwukropek> ::= :
<Znak_Porownania> ::= =
<Operator_Przypisania> ::= :=
<Znak_Dodawania> ::= +
<Znak_Odejmowania> ::= -
<Znak_Mnozenia> ::= *
<Znak_Dzielenia> ::= /
<Znak_Mniejszosc> ::= <
<Znak_Wiekszosc> ::= >
<Nawias_Lewy> ::= (
<Nawias_Prawy> ::= )
<Lewy_Klamrowy> ::= {
<Prawy_Klamrowy> ::= }
<Cudzyslow> ::= ”
<Operator_Arytmetyczny>::=<Znak_Dodawania>|<Znak_Odejmowania>
                                           |<Znak_Mnozenia>|<Znak_Dzielenia>

<Operator_Porownania>::= <Znak_Porownania>|<Znak_Mniejszosc>
                                          |<Znak_Wiekszosc>|<Znak_Różności>

<Liczba_Calkowita > ::= [<Znak_Odejmowania>]<Cyfra>*

<Wartosc_Boolean> ::= True | False

<Wartosc> ::= <Liczba_Calkowita>|<Wartosc_Boolean>

<Nazwa_zmiennej > ::= {<Litera>}*|{ {<Litera>}* {<Cyfra>}* }*

<Przypisanie>::=<Nazwa_Zmiennej><Spacja><Operator_Przypisania><Spacja>
        <Wartosc>|<Nazwa_Zmiennej><Spacja><Operator_Przypisania><Spacja>
         <Nazwa_Zmiennej>|<Nazwa_Zmiennej><Spacja><Operator_Przypisania>
                                                     <Spacja><Operacja_Arytmetyczna>

<Instrukcja_Prosta> ::= <Przypisanie><Separator>

<Operacja_Arytmetyczna>::=<Nazwa_Zmiennej><Spacja>
                                    <Operator_Arytmetyczny><Spacja><Nazwa_Zmiennej>
     |<Wartosc><Spacja><Operator_Arytmetyczny><Spacja><Nazwa_Zmiennej>
     |<Nazwa_Zmiennej><Spacja><Operator_Arytmetyczny><Spacja><Wartosc>
                  |<Wartosc><Spacja><Operator_Arytmetyczny><Spacja><Wartosc>

<Operacja_Porownania>::=<Nazwa_Zmiennej><Spacja><Operator_Porownania>
         <Spacja><Nazwa_Zmiennej>|<Wartosc><Spacja><Operator_Porownania>
                               <Spacja><Nazwa_Zmiennej>|<Nazwa_Zmiennej><Spacja>
                     <Operator_Porownania><Spacja><Wartosc>|<Wartosc><Spacja>
                                      <Operator_Porownania><Spacja><Wartosc>

Dla Analizatora skladniowego

<Instrukcje>::=<Instrukcja_Prosta>|<Deklaracja_Zmiennych>|<Petla_For>
                       |<Warunek_If>|<Operacja_Wejscia>|<Operacja_Wyjscia>

<Petla_For>::=For <Przypisanie> To <Wartosc>|<Nazwa_Zmiennej>Do
                      Begin {<Instrukcje><Separator>}* End <Separator>

<Warunek_If>::=If<Operacja_Porownania>Then
                          Begin {<Instrukcje><Separator>}* End <Separator>

<Typ> ::= Integer|Real|Boolean

<Deklaracja_Zmiennej> ::= Var <Nazwa_Zmiennej><Dwukropek>
                                                 <Typ><Separator>

<Operacja_Wejscia> ::= Read <Nawias_Lewy><Nazwa_Zmiennej>
                                             <Nawias_Prawy> <Separator>

<Operacja_Wyjscia> ::= Write <Nawias_Lewy><String>
                                              <Nawias_Prawy><Separator>

<String>::=<Cudzyslow><Wartosc> <Cudzyslow>|<Nazwa_zmiennej>