Opis języka

Opis podzbioru języka C++

  1. deklarowanie kilku typów zmiennych
  2. operacja przypisania
  3. operacja porownywania
  4. operacje arytmetyczne
  5. operacje wejścia – wyjścia
  6. warunek IF
  7. pętla WHILE
  8. jedno-poziomowa dynamiczna alokacja pamięci

Do opisu języka użyto rozszerzonej notacji Backusa-Naura (EBNF)

<litera> ::= 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|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

<cyfra> ::= 0|1|2|3|4|5|6|7|8|9

<slowo_kluczowe> ::= main|cout|cin|while|if|new|delete|*|return

<separator> ::= ;

<przecinek> ::= ,

<apostrof> ::= ‘

<znak_porownania> ::= ==

<oprator_przypisania> ::= =

<znak_dodawania> ::= +

<znak_odejmowania> ::= -

<znak_mnozenia> ::= *

<znak_dzielenia> ::= /

<znak_mniejszosc> ::= <

<znak_wiekszosc> ::= >

<nawias_lewy> ::= (

<nawias_prawy> ::= )

<lewy_kwadratowy> ::= [

<prawy_kwadratowy> ::= ]

<lewy_klamrowy> ::= {

<prawy_klamrowy> ::= }

<cudzyslow> ::= ”

<oprator_arytmetyczny> ::= <znak_dodawania>|<znak_odejmowania>|<znak_mnozenia>|<znak_dzielenia>

<oprator_porownania>::= <znak_porownania>|<znak_mniejszosc>|<znak_wiekszosc>

<liczba_calkowita > ::= {<cyfra>}

<liczba> ::=[<znak_odejmowania>]<liczba_calkowita>

<wartosc_char> ::= <apostrof><cyfra><apostrof> | <apostrof><litera><apostrof>

<wartosc_boolean> ::= true | false

<wartosc> ::= <liczba>|<wartosc_char>|<wartosc_boolean>

<nazwa_zmiennej> ::= {<litera>}{<cyfra>}*

<przypisanie> ::=<nazwa_zmiennej><oprator_przypisania><wartosc>

|<nazwa_zmiennej><oprator_przypisania><nazwa_zmiennej>

|<nazwa_zmiennej><oprator_przypisania><operacja_arytmetyczna>

<instrukcja_prosta> ::= <przypisanie><separator>

<operacja_arytmetyczna>::=<nazwa_zmiennej><oprator_arytmetyczny><nazwa_zmiennej>

|<wartosc><oprator_arytmetyczny><nazwa_zmiennej>

|<nazwa_zmiennej><oprator_arytmetyczny><wartosc>

|<wartosc><oprator_arytmetyczny><wartosc>

<operacja_porownania>::=<nazwa_zmiennej><oprator_porownania><nazwa_zmiennej>

|<wartosc><oprator_porownania><nazwa_zmiennej>

|<nazwa_zmiennej><oprator_porownania><wartosc>

|<wartosc><oprator_porownania><wartosc>

<instrukcje> ::= <instrukcja_prosta> | <deklaracja_zmiennych> | <petla_while> | <warunek_if> | <delete> | <operacja_wyjscia> | <operacja_wejscia>

<petla_while>::= while<nawias_lewy><operacja_porownania><nawias_prawy>

<lewy_klamrowy>{< instrukcje>}*<prawy_klamrowy><separator>

<warunek_if>::=if <nawias_lewy><operacja_porownania><nawias_prawy>

<lewy_klamrowy>{<instrukcje>}*<prawy_klamrowy><separator>

<typ> ::= int|char|bool|void

<delete> ::= delete <nazwa_zmiennej><separator>

<deklaracja_zmiennych>::= <typ><deklaracja_zmiennej><separator>

|<typ>{< deklaracja_zmiennej ><przecinek>}<separator>

<deklaracja_zmiennej>::= <nazwa_zmiennej>

|<przypisanie>

|<nazwa_zmiennej><lewy_kwadratowy><liczba_calkowita>

<prawy_kwadratowy>

|*<nazwa_zmiennej>[<oprator_przypisania >new

<typ>< lewy_kwadratowy ><liczba_calkowita><prawy_kwadratowy>]

<operacja_wyjscia>::= cout<znak_mniejszosc><znak_mniejszosc><string><separator>

<string>::= <cudzyslow><wartosc><cudzyslow>| <nazwa_zmiennej>

<operacja_wejscia>::= cin<znak_wiekszosc><znak_wiekszosc><nazwa_zmiennej><separator>

<funkcja>::=void main<nawias_lewy>{<typ><nazwa_zmiennej>}*<nawias_prawy> <lewy_klamrowy>{<instrukcje >}*<prawy_klamrowy>

Rozszerzona notacja Backusa-Naura używa następujących symboli:

  1. nawiasy [a] oznaczające co najwyżej jednokrotne wystąpienie napisu a;
  2. nawiasy {a} oznaczające, że napis a może wystąpić dowolnie wiele razy po sobie;
  3. a+ – plus po symbolu a (lub po nawiasach [], {}) oznacza, że symbol lub napis może wystąpić dowolną niepustą liczbę razy;
  4. a* – gwiazdka po symbolu a (lub po nawiasach [], {}) oznacza, że symbol lub napis można powtórzyć dowolną liczbę razy (w szczególności – zero).