Notacja EBNF
Jκzyk C#
<program> ::= class
<zmienna> { <cialo-klasy> }
<cialo-klasy>
::= {<deklaracja-zmiennej>} static void Main(string[]
<zmienna> ) { <cialo-funkcji> }
<cialo-funkcji>
::= {<instrukcja>}
<komentarz>
::= // <tekst>
<tekst> ::= \
{<litera> | <cyfra>}
\ // (\ ::= )
Komentarz moΏe wytapia w
dowolnym miejscu
<deklaracja-zmiennej> ::= (<typ> <zmienna>) |
(<typ> <zmienna> = <wartoζ>) | (<typ> <zmienna>
{, <zmienna>})
<typ> ::= int | double
<zmienna> ::= <litera> | {<litera> |
<cyfra> }
<litera> ::= a |
b | c |
| Z
<cyfra> ::= 0 | 1 |
|
9
<wartoζ> ::= <calkowita>
| <rzeczywista>
<calkowita> ::= {<cyfra>}
<rzeczywista> ::= {<cyfra>}
.{<cyfra>}
<instrukcja> ::= (<deklaracja-zmiennej> |
<operacja-przypisania> |operacja-arytmetyczna> |
<operacja-logiczna> | <instrukcja-warunkowa> | <instrukcja-petli> | <operacja-we/wy> | <operacja-inc> | <operacja-dec>)
;
<operacja-inc> ::= <zmienna> ++ //zmienna
calkowita
<operacja-dec>
::= <zmienna> -- //zmienna
calkowita
<operacja-przypisania> ::= <zmienna> = <wyraΏenie>
<wyraΏenie> ::= <zmienna> |
<operacja-arytmetyczna> | <wyraΏenie>
<operacja-arytmetyczna> ::= <operacja-add>
| <operacja-sub> | <operacja-mul> |
<operacja-div>
<operacja-add>
::= <wyrazenie> + <wyrazenie>
<operacja-sub>
::= <wyrazenie> - <wyrazenie>
<operacja-mul> ::= <wyrazenie>
* <wyrazenie>
<operacja-div> ::= <wyrazenie>
/ <wyrazenie>
<wyraΏenie> ::= <zmienna> |
<operacja-arytmetyczna>
<operacja-logiczna> ::= (<zmienna>
| <wartoζ>) <operator-logiczny> (<zmienna> | <wartoζ>)
<operator-logiczny> ::= == | != | <=
| >= | > | <
<instrukcja-warunkowa>
::= <instrukcja-if> | <instrukcja-if-else>
<instrukcja-if> ::= if ( <operacja-logiczna>
) { {<instrukcja>} }
<instrukcja-if-else> ::= <instrukcja-if> else
| { {<instrukcja>} }
<instrukcja-petli>
::= <instrukcja-while>
<instrukcja-while>
::= while ( <operacja-logiczna> ) (<instrukcja>
| { {<instrukcja>} })
<operacja-we/wy> ::= <operacja-we> | <operacja-wy>
<operacja-we> ::= <zmienna> = Console.Read()
<operacja-wy> ::= Console.Write
( <zmienna> | <tekst> )