EBNF opgave 01

Opgave 1

Angiv terminaler, non-terminaler, startsymbol og produktionsregel for:

 

udtryk = operand operator operand.
operand = ciffer {ciffer} ["." ciffer {ciffer}].
oparator = "+" | "-" | "*" | "/".
ciffer = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9".

 

 

Opgave 2

Overvej hvilke tilføjelser der skuule til nedenstående EBNF-grammatik for at inddrage semantisk krav som:

 

dato = dag ":" måned ":" år.
dag = ciffer ciffer.
måned = ciffer ciffer.
år = ciffer ciffer ciffer ciffer.
ciffer = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9".

 

 

Opgave 3

Omskriv følgende regulære EBNF-grammatik til rekursivt

  medlemsliste = formand {senior} {junior}.  

 

Opgave 4

Download EBNF Visualizer (fra http://dotnet.jku.at/applications/Visualizer/) og anvend det på nogle eksempler (f.eks. fra denne opgavetekst).

 

Opgave 5

Oversæt følgende 3 højresider fra en EBNF-grammatik til syntaks diagram:

 

Opgave 6

Udarbejd et C# program der fra en tekstfil læser alle linier og checker at de opfylder EBNF-grammatikken for en medlemsliste (se EBNFEksempler.mht).

Du skal blot udskrive listen eller give en fejlmeddelelse hvis file ikke opfylder EBNF-grammatikken.