Kann mir jemand bei dieser Informatik Aufgabe helfen?

1 Antwort

Das ist eine Fleißaufgabe, bei der es nur darum geht, den relevanten Teil des Aufgabentexts in BNF zu übertragen. Das Kann man Top-Down (von der Anschrift zu ihren Bestandteilen) oder Buttom-Up (von den kleinesten Bestantteilen der Anschrift bis zur vollständigen Anschrift) machen. Ich bevorzuge Top-Down.

Der erste Schritt ist dann:

<Postanschrift> ::=
   <Personenteil><Strasse><Stadt>

Diese Regel führt rechts von dem Zeichen "::=" drei neue Begriffe ein, die nacheinader derfiniert werden müssen. Dabei hilft der Aufgabentext:

<Personenteil> ::=
   <Titel><Namensteil> EOL
<Titel> := Prof. |  Dr.  |  <empty>
<Namensteil> ::=
   <Vorname><Nachname>
<Vorname > ::= <Name>
<Nachname> ::= <Name>
<Name>  ::=
        <Buchstabe> | <Name><Buchstabe>
<Buchstabe> ::= A | ... | Z | a | ... | z

Das ist viel klein-Klein - eben eine Fleißarbeit. Bei den Titeln ist ein bißchen Phantasie gefragt, da die Aufgabe keine Vorgabe macht. Zu beachten ist, dass die Aufgabe die Verwendung einer Anrede nicht vorsieht! Zu beachten ist, dass die Aufgabe vorschreibt, den Personenteil mit EOL abzuschließen! Bei den Namen können Großbuchstaben und Kleinbuchstaben durcheinander gehen; das passt für Namen wie "McGregor", aber nicht für "O'Neill" und auch nicht für "Edler von Eselsschrey". Es gibt eben einen Unterschied zwischen Theorie und Praxis. .

DerStraßenteil geht ganz ähnlich:

<Strasse> ::=
        <Strassenname> <Hausnummer>  EOL
<Strassenname> ::= <Name>
<Hausnummer> ::= <Zahl>
<Zahl> ::= <Ziffer> | <Ziffer><Zahl>
<Ziffer> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

Diese Grammatik hat den Schönheitsfehler, dass die Hausnummer mit führenden Nullen beginnen kann. Wenn die führende Ziffer einer Hausnummer keine Null sein soll, muss man hier noch eine Unterscheidung treffen; die Definition wird dadurch etwas umfangreicher.

Die Stadt ist ganz ähnlich zu defnieren wie die Hausnummer:

<Stadt> ::= <PLZ><Stadtname> EOL
<PLZ> ::= 
    <Ziffer><Ziffer><Ziffer><Ziffer><Ziffer><Ziffer>
<Stadtname>  ::= <Name>

Bei der Postleitzahl ist eine führende Null zulässig. Die Definition der Postleitzahl mag auf den ersten Blick überraschen; sie erzwingt sechsstellige Postleitzahlen. Beim Stadtnamen könnte man noch mehr leisten, um so schöne Ortsbezeichnungen wie "Bad Homburg vor der Höhe" oder "Frankfurt/Main" zuzulassen.

Nach dem Aufgabentext könnte man Personen- und Ortsnamen aber als Terminale ansehen, dann müsste <Name> garnicht definiert werden.

Bei der Definition von Programmiersprachen wird ein Begriff wie "Variablenname" aber selbstverständlich definiert, da ist dann oft die Regel zu definieren, dass das erste Zeichen eines Variablennamens keine ziffer sein darf oder das das Zeichen "Underscore" u.U. eine Sonderbehandlung verlangt.

Woher ich das weiß:Berufserfahrung – Softwareentwickler