Dodatek Notacja Backusa-Naura (BNF)
Definiując język programowania należy określić zarówno jego składnię, tzn. zasady budowania słów i zdań jak również semantykę, tzn. zasady interpretacji tych konstrukcji. Przykładem takiego formalizmu jest notacja Backhusa-Naura. Dopuszcza ona następujące znaki (symbole metajęzykowe):
<,> - nawiasy ostre określają definiowane pojęcie,
::= - oznacza „jest zdefiniowane jako”
| - oznacza lub.
Notacja BNF opisuje formuły rekurencyjne.
Rozszerzona notacja Backusa-Naura (EBNF)
Do BNF dodano dwa symbole:
{,} - wielkość ujęta w nawiasy {,} może być powtórzone dowolną liczbę razy.
Notacja EBNF opisuje formuły iteracyjne.
Notacje BNF i EBNF są notacjami równoważnymi, tzn. definiują tę samą klasę języków (język opisywany w jednej klasie jest również zdefiniowany w drugiej klasie).
Przykładowo indentyfikator za pomocą BNF możemy zdefiniować następująco:
<identyfikator>::=<litera>|<litery_cyfry>
<litery_cyfry>::=<litera_cyfra>|<litery_cyfry><litera_cyfra>
<litera_cyfra>::=<litera>|<cyfra>
<litera>=”a”|”b”|”c”|...|”z”|”A”|...|”Z”|”_”
<cyfra>::=”0”|”1”|”2”|...|”9”
Te zależności są rekurencyjne.
Zapis identyfikatora za pomocą notacj EBNF
<identyfikator>::=<litera>{<litera_cyfra>}
<litera_cyfra>:=<litera>|<cyfra>
<litera>=”a”|”b”|”c”|...|”z”|”A”|...|”Z”|”_”
<cyfra>::=”0”|”1”|”2”|...|”9”
Te zależności są zależnościami iteracyjnymi.
Spotyka się jeszcze diagramy syntaktyczne, które są graficzną postacią pojęcia. Np. za pomocą diagramów syntaktycznych pojęcie identyfikatora można przedstawić nastepująco:
identyfikator
litera
cyfra
Zmienne - zmienne przechowują pewne informacje o stanie maszyny cyfrowej. Takimi informacjami, które niosą ze sobą zmienne są:
Nazwa zmiennej (określona przez identyfikator),
typ zmiennej (określa zbiór wartości jaki może przyjmować zmienna),
wartość zmiennej (typ określa dopuszczalne wartości),
położenie (alokacja) zmiennej w pamięci operacyjnej (tym zajmuje się najczęściej kompilator).
Ważną rolą zmiennej jest to, że może ona opisywać pewien stan maszyny cyfrowej (np. zawartość jednej lub kilku komórek pamięci operacyjnej).
Wykład Programowanie II - I semestr
2
litera
litera
cyfra
a
b
Z
_
....
9
8
1
0
....