C++ Interpreter

 

 

 

Dokumentacja EBNF

Notacji Backusa-Naura (EBNF) dla projektu

 

cyfra::={0|1|2|3|4|5|6|7|8|9}

liczba_calk::=<cyfra>{<cyfra>}*

liczba_nat::={0|1|2|3|4|5|6|7|8|9}+

liczba_zmiennop::={<cyfra>}+< separator_dzies>{<cyfra>}*

liczba::={< liczba_calk>|< liczba_zmiennop>}

mala_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}

duza_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}

litera::={<mala_litera>|<duza_litera>}

symbol::={<cyfra>|<litera>|_}

nazwa::=<litera>{<symbol>}*

spacja::={" "}

cudzyslow::={"}

apostrof::={'}

symbol_inny::={~|!|@|#|$|%|^|&|*|(|)|-|+|=|[|]|{|}|;|:|<|>|,|.|/|?|\|"|"|<spacja>}

wszystkie::={<znak>|{<znak_inny>}*}

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

srednik ::= ;

przecinek ::= ,

znak_porownania ::= ==

oprator_przypisania ::= =

znak_dodawania ::= +

znak_odejmowania ::= -

znak_mnozenia ::= *

znak_dzielenia ::= /

znak_mniejszosc ::= <

znak_wiekszosc ::= >

nawias_o ::= (

nawias_z ::= )

kwadratowy_o ::= [

kwadratowy_z ::= ]

klamrowy_o ::= {

klamrowy_z ::= }

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>

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

boolean ::= true | false

wartosc ::= <liczba>|<char>|<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_o><operacja_porownania><nawias_p>

<klamrowy_l>{< instrukcje>}*<klamrowy_p><separator>

warunek_if::=if <nawias_o><operacja_porownania><nawias_p>

<klamrowy_l>{<instrukcje>}*<klamrowy_p><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><kwadratowy_l><liczba_calkowita> <kwadratowy_p>

|*<nazwa_zmiennej>[<oprator_przypisania >new<typ>

< kwadratowy_l><liczba_calkowita><kwadratowy_p>]

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

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

operacja_wejscia::=cin<znak_wiekszosc><znak_wiekszosc>

<nazwa_zmiennej><separator>

funkcja::=void main<nawias_o>{<typ><nazwa_zmiennej>}*<nawias_p>

<klamrowy_l>{<instrukcje >}*<klamrowy_p>

 

 

zajrzyj na sourceforge.net

strona Akademi Podlaskiej

strona Instytutu Informatyki Akademi Podlaskiej

Strona Javy