mathiaspl20

Untitled

Mar 27th, 2020
379
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 2.1 LÖSUNGSIDEE
  2. Meine EBNF für die Aufgabe ist in Supergruppen aufgeteilt:
  3. *Name
  4. *Ort
  5. *Kontakt
  6. diese Supergruppen enthalten die zu den Gruppen passende Elemente (in der Anzahl 1, wenn nicht in Klammern anders angegeben):
  7. *Name
  8.     *Vorname
  9.     *Nachname (1-n)
  10. *Ort
  11.     *Land
  12.     *PLZ
  13.     *Stadt
  14.     *Straße
  15.     *Hausnummer
  16.     *Stiege (0-1)
  17.     *Tür (0-1)
  18. *Kontakt
  19.     *+Telefonnummer (0-2)
  20.     *Email (1-2)
  21. Die Grundbausteine der EBNF bilden Ziffern, Buchstaben und Umlaute. Hinzu kommen Symbole wie Plus oder Bindestrich, das Steuerzeichen für eine neue Zeile und Anwendungsspezifische Dinge wie Länderkennungen für Telefonnummern.
  22. Darauf baut die Nächste Ebene Der EBNF auf, aus den Elementen Tür, Stiege, Vorname, Email usw besteht. Bei Namen wurden auch doppel (bzw n-fach) Namen erlaubt, wobei die Namen mit einem Bindestrich verbunden sein müssen, wie für v.a. mehrfache Vornamen nicht unüblich. Tür hat mindestens 1 Ziffer, optional einen Buchstaben. Stiege kann entweder mit einem Buchstaben enden oder beginnen, Kann allerdings auch nur eine Ziffer enthalten. Hausnummern bestehen aus mindestens einer Ziffer, optional auch gefolgt von einem Buchstaben. Straßennamen dürfen mehrteilig sein, müssen sie aber nicht, sie dürfen von einem Leerzeichen gefolgt sein und neben Buchstaben auch Umlaute enthalten. Städte und Länder werden gleich gehandhabt wie Straßennamen. In PLZ sind neben n Ziffern auch Buchstaben Erlaubt, da manche Länder auch Buchstaben in Postleitzahlen verwenden. Telefonnummern bestehen aus einem Plus, der Länderkennung mit 1-3 Ziffern, gefolgt von n Ziffern. Email Adressen bestehen aus n Ziffern, Buchstaben und Punkten, gefolgt von einem AT, n Ziffern oder Buchstaben als Domain Namen, einem Punkt und am Ende eine TLD
  23. Auf der nächsten Ebene findet sich Name, Ort und Kontakt: Ein Name besteht aus Mindestens einem, aber 1-n nachnamen, wobei bei n>=2 ein Bindestrich auf den Nachnamen Folgen muss. Ort schließt alle entsprechenden Elemente ein mal ein, allerdings sind Stiege und Tür optional. Kontakt enthält optionalerweise n Telefonnummern, aber 1-n Email Adressen.
  24. Die Karteikarte verbindet alle drei ihr untergeordneten Elemente und bildet sie Zeilenweise ab.
  25.  
  26. 2.1 CODE
  27. EBNF
  28. Ziffer = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" .
  29. Buchstabe = "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z" .
  30. Umlaut = "Ä" | "Ü" | "Ö".
  31. Leerzeichen = " ".
  32. Plus = "+".
  33. AT =  "@".
  34. Punkt =  ".".
  35. Bindestrich =  "-".
  36. NEWLINE = "\n".
  37. Länderkennung = [Ziffer][Ziffer]Ziffer.
  38. TLD = {Ziffer |( Buchstabe | Umlaut)}.
  39. Nachname = {{Buchstabe | Umlaut}[Bindestrich]}.
  40. Vorname = {{Buchstabe | Umlaut}[Bindestrich]}.
  41. Tür = {Ziffer}[Buchstabe].
  42. Stiege = [Buchstabe]{[Ziffer]}[Buchstabe].
  43. Hausnummer = {Ziffer}[Buchstabe].
  44. Straße = {{Buchstabe | Umlaut }{[Leerzeichen]}}.
  45. Stadt = {{Buchstabe | Umlaut }{[Leerzeichen]}}.
  46. PLZ = {[Ziffer]}{[Buchstabe]}}.
  47. Land = {{Buchstabe | Umlaut }{[Leerzeichen]}}.
  48. Telefonnummer = Plus Länderkennung {Ziffer}.
  49. Email = {Ziffer | Buchstabe | Punkt}AT{Ziffer | Buchstabe} Punkt TLD.
  50. Name = Vorname {Leerzeichen}Nachname[Bindestrich{Nachname}].
  51. Ort = Land Leerzeichen PLZ Leerzeichen Stadt Leerzeichen Straße Leerzeichen Hausnummer Leerzeichen [Stiege Leerzeichen Tür Leerzeichen].
  52. Kontakt = {[Telefonnummer]}Email[Email]
  53. Karteikarte = Name NEWLINE Ort NEWLINE Kontakt NEWLINE.
RAW Paste Data