homeprojectcvssourceforge

Specification of accepted language in Backus-Naur Form

<program> ::= <typ_main> main() { <cialo_glowne> }
<typ_main> ::= | int | void
<cialo_glowne> ::= <deklaracje> | <deklaracje> <cialo_glowne> | <cialo>
<cialo> := | <instrukcja> | <instrukcja> <cialo>
<deklaracje> ::= | <deklaracja_typu> | <deklaracja_typu> <deklaracje>
<deklaracja_typu> ::= <typ><lista_deklaracyjna>;
<typ> ::= int | float
<lista_deklaracyjna> := <deklaracja_zmiennej> | <deklaracja_zmiennej>, <lista_deklaracyjna>
<deklaracja_zmiennej> ::= <identyfikator> | <identyfikator> = <liczba>
<identyfikator> ::= <litera><reszta_nazwy>
<reszta_nazwy> ::= | <litera> | <cyfra>
<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_bez_zera> ::= 1|2|3|4|5|6|7|8|9
<cyfra> ::= 0 | <cyfra_bez_zera>
<liczba> ::= <liczba_calkowita> | <liczba_rzeczywista>
<liczba_calkowita> ::= <cyfra> | <cyfra_bez_zera><reszta_liczby>
<reszta_liczby> ::= <cyfra> | <cyfra><reszta_liczby>
<liczba_rzeczywista> ::= <liczba_calkowita> | <liczba_calkowita><reszta_liczby_rzeczywistej> |
<reszta_liczby_rzeczywistej>
<reszta_liczby_rzeczywistej> ::= <kropka><reszta_liczby>
<kropka> ::= .
<instrukcja> ::= | <przypisanie>; | <instrukcja_wejscia>; | <instrukcja_wyjscia>; | <instrukcja_warunkowa>;
| <instrukcja_iteracyjna>; <przypisanie> ::= <identyfikator>++ | ++<identyfikator> | <identyfikator>-- | --<identyfikator> |
<przyrownanie>
<przyrownanie> ::= <identyfikator> <znak_przyrownania> <wyrazenie>
<znak_przyrownania> ::= = | += | -= | *= | /=
<wyrazenie> ::= <term> | <znak_minus><term> | <term> <operator_addytywny> <wyrazenie>
<term> ::= <czynnik> <operator_multiplikatywny> <term> | <czynnik>
<czynnik> ::= <identyfikator> | (<wyrazenie>)
<operator_multiplikatywny> ::= * | /
<operator_addytywny> ::= + | -
<znak_minus> ::= -
<instrukcja_wejscia> ::= scanf(&<identyfikator>);
<instrukcja_wyjscia> ::= printf(<wyrazenie>);
<instrukcja_warunkowa> ::= <if> | <ifelse>
<if> ::= if (<warunek>) <instrukcje>
<warunek> ::= <wyrazenie> <operator> <wyrazenie>
<operator> ::= <operator_relacji> | <operator_logiczny>
<operator_relacji> ::= < | > | <= | >= | == | !=
<operator_logiczny> ::= ! | && | ||
<ifelse> ::= <if> else <instrukcje>
<instrukcja_iteracyjna> ::= while (<warunek>) <instrukcje>
<intrukcje> ::= <instrukcja> | { <cialo> }