O formalnym definiowaniu rzeczy

Na potrzeby formalnego opisu gramatyk (zwłaszcza języków programowania) opracowano notację Backusa-Naura (BNF, Backus-Naur Form). Pozwala ona definiować w bardzo formalny (i rekurencyjny) sposób różne dziwne rzeczy. Podstawowe symbole używane w notacji to:

  • < lewy ogranicznik
  • > prawy ogranicznik
  • ::=oznaczający jest zdefioniowane jako
  • | lub
  • ? nieobowiązkowe

Teoretycznie zapis ten może pomóc w sprawdzaniu czy napis jest liczbą…

Liczbę ze znakiem można zdefiniować w sposób następujący:

<signed_integer> ::= <sign>? <integer>
<sign> ::= "+" | "-"
<integer> ::= <digit> | <integer> <digit>
<digit> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"

Liczba zmiennoprzecinkowa może być zdefiniowana jako

<float_number> ::= <sign> <integer_part> "." <fractional_part> <exponent_part>
<sign> ::= "+" | "-" | " "
<integer_part> ::= <digit> | <digit> {<digit>}
<fractional_part> ::= <digit> | <digit> {<digit>}
<exponent_part> ::= "e" <sign> <integer_part> | ""
<digit> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"

Można w ten sposób opisać gramatykę języka C.

Poprzedni
Następny