Opis języka
Opis podzbioru języka C++
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: