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> „)”