EBNF eksempler

Eksempel 1 - Medlemsliste

medlemsliste = medlem {medlem} | "tom".

medlem       = navn fødselsår [kategori] ";".

navn         = bogstav {bogstav}.

fødselsår    = ciffer ciffer ciffer ciffer.

kategori     = "junior" | "senior".

bogstav      = "a" | "b" | "c" |...... | "ø" | "å" | "A" | "B" | "C" |...... | "Ø" | "Å".

ciffer       = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9".

Eksempel 2 - Semantik eller ej....

medlem = navn (fødselsår70-88 ["junior"] | fødselsårFør70 ["senior"]) ";".

fødselsår70-88 = "19" ("7" ciffer | "8" ("0" | "1" | ... | "8")).

fødselsårFør70 = "1" ("8" ("6" ("8" | "9")) | "7" ciffer | "8" ciffer | "9" ciffer) | "9" ("0" ciffer | "1" ciffer | ... | "6" ciffer).

(Givet: År = 1988, juniorer er under 18 (født 1970 - 1988), seniorer er født før 1970, men tidligst 1868 (maksimal alder antages at være120))

Eksempel 3 - Omskrive fra regulære til rekursive EBNF-gramatikker

Regulær:  medlemsliste = medlem {medlem}.
Rekursiv: medlemsliste = medlem | medlem medlemsliste.

Regulær:  liste = hoved {krop} hale.
Rekursiv: liste = hoved hale | hoved hjælpeliste hale.
          hjælpeliste = krop | krop hjælpeliste.

Eksempel 4 - Omskrive fra rekursive til regulære EBNF-gramatikker

Rekursiv: medlemsliste = formand kasserer | formand menigliste kasserer.
          menigliste = medlem | medlem menigliste.

Regulær:  medlemsliste = formand {medlem} kasserer.

Eksempel 5 - Syntaks diagrammer

  bogstav ciffer
  foedselsaarnavn
  kategorimedlem
  medlemsliste