Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung |
faecher:informatik:oberstufe:automaten:formale_sprachen:mailadressen:start [06.10.2020 13:21] – [Experimente mit JFlap] sbel | faecher:informatik:oberstufe:automaten:formale_sprachen:mailadressen:start [17.01.2025 07:52] (aktuell) – Marco Kuemmel |
---|
Das Anmeldeformular besitzt bereits eine Komponente zur Validierung von E-Mail-Adressen. Diese Komponente prüft, ob die eingegebene Zeichenkette überhaupt eine Mailadresse sein kann, manchmal auch, ob die E-Mail-Adresse tatsächlich vergeben ist. | Das Anmeldeformular besitzt bereits eine Komponente zur Validierung von E-Mail-Adressen. Diese Komponente prüft, ob die eingegebene Zeichenkette überhaupt eine Mailadresse sein kann, manchmal auch, ob die E-Mail-Adresse tatsächlich vergeben ist. |
| |
| ---- |
| {{:aufgabe.png?nolink |}} |
=== (A1) === | === (A1) === |
| |
**(a)** Führe selbst Experimente mit dem [[http://sphinx.mythic-beasts.com/~pdw/cgi-bin/emailvalidate|RFC822 email address validator]] aus. Versuche auf diese Weise herauszufinden, wie E-Mail-Adressen (nicht) aufgebaut werden dürfen. | **(a)** Führe selbst Experimente mit dem [[https://regexr.com/2rhq7|RFC822 email address validator]] aus. Versuche auf diese Weise herauszufinden, wie E-Mail-Adressen (nicht) aufgebaut werden dürfen. |
| |
**(b)** E-Mail-Adressen werden nach der RFC 822 überprüft. Recherchiere, was es mit der RFC 822 auf sich hat. | **(b)** E-Mail-Adressen werden nach der RFC 822 überprüft. Recherchiere, was es mit der RFC 822 auf sich hat. |
* Eine Subdomain und eine Topleveldomain besteht nur aus b´s. | * Eine Subdomain und eine Topleveldomain besteht nur aus b´s. |
| |
| ---- |
| {{:aufgabe.png?nolink |}} |
=== (A2) === | === (A2) === |
| |
Welche der folgenden Zeichenketten stellen vereinfachte E-Mail-Adressen dar? | Welche der folgenden Zeichenketten stellen vereinfachte E-Mail-Adressen dar? |
| |
b@b.bbb | bbbbb@bbbbb.bbb.bb |
@b.b.bb | @bbbbbbbb.b |
bbb@bbbb | bbb@bbbb.b.bbbb |
bb.b@b.bb | bb.b.bb.b@b.bb.bbbb.b |
| |
Warum ist es in einigen Fällen schwierig, das zu entscheiden? | Warum ist es in einigen Fällen schwierig, das zu entscheiden? |
{{:faecher:informatik:oberstufe:automaten:formale_sprachen:mailadressen:buchstabe.png|}} | {{:faecher:informatik:oberstufe:automaten:formale_sprachen:mailadressen:buchstabe.png|}} |
| |
| ---- |
| {{:aufgabe.png?nolink |}} |
=== (A3) === | === (A3) === |
| |
Gesucht ist eine Grammatik G=(V,Σ,P,S), die unsere Mailadressen als formale Sprache beschreibt. | Gesucht ist eine Grammatik G=(V,Σ,P,S), die unsere Mailadressen als formale Sprache beschreibt. |
| |
**(A4)** Gib das Alphabet ''Σ'' unserer Sprache an. | |
| ---- |
| {{:aufgabe.png?nolink |}} |
| === (A4) === |
| |
| Gib das Alphabet ''Σ'' unserer Sprache an. |
| |
==== Herleitung ==== | ==== Herleitung ==== |
| Domain: | {{:faecher:informatik:oberstufe:automaten:formale_sprachen:mailadressen:domain.png}} | ''(3) D -> KT'' | | | Domain: | {{:faecher:informatik:oberstufe:automaten:formale_sprachen:mailadressen:domain.png}} | ''(3) D -> KT'' | |
| Subdomains: | {{:faecher:informatik:oberstufe:automaten:formale_sprachen:mailadressen:subdomains.png}} | ''(4) K -> N.''\\ ''(5) K -> N.K'' | | | Subdomains: | {{:faecher:informatik:oberstufe:automaten:formale_sprachen:mailadressen:subdomains.png}} | ''(4) K -> N.''\\ ''(5) K -> N.K'' | |
| Topleveldomain: | {{:faecher:informatik:oberstufe:automaten:formale_sprachen:mailadressen:topleveldomain.png}} | ''(6) K -> N'' | | | Topleveldomain: | {{:faecher:informatik:oberstufe:automaten:formale_sprachen:mailadressen:topleveldomain.png}} | ''(6) T -> N'' | |
| Name: | {{:faecher:informatik:oberstufe:automaten:formale_sprachen:mailadressen:name.png}} | ''(7) N -> B''\\ ''(8) N -> BN'' | | | Name: | {{:faecher:informatik:oberstufe:automaten:formale_sprachen:mailadressen:name.png}} | ''(7) N -> B''\\ ''(8) N -> BN'' | |
| Buchstabe: | {{:faecher:informatik:oberstufe:automaten:formale_sprachen:mailadressen:buchstabe.png}} | ''(9) B -> b'' | | | Buchstabe: | {{:faecher:informatik:oberstufe:automaten:formale_sprachen:mailadressen:buchstabe.png}} | ''(9) B -> b'' | |
==== Anwendung: Ableiten von Worten anhand der Grammatik ==== | ==== Anwendung: Ableiten von Worten anhand der Grammatik ==== |
| |
Die Ableitung der E-Mail-Adresse ''bb@b.bbb.bb'' kann man nun wie folgt mit Ersetzungsvorgängen beschreiben((Leerzeichen zur übersichtlicheren Darstellung)): | Die Ableitung der E-Mail-Adresse ''bb@b.bbb.bb'' kann man nun wie folgt mit Ersetzungsvorgängen beschreiben((Leerzeichen zur übersichtlicheren Darstellung)). Diese Darstellung nennt man auch **Satzformliste**: |
<code> | <code> |
S -> # (1) | S -> # (1) |
</code> | </code> |
| |
| ---- |
| {{:aufgabe.png?nolink |}} |
=== (A5) === | === (A5) === |
| |
| |
* Leite die Mailadresse ''b@bb.b'' anhand unserer Grammatik ab. | * Leite die Mailadresse ''b@bb.b'' anhand unserer Grammatik ab. |
* Mache dir klar, dass man ''b.b@bbb.b''und ''b@bb'' nicht ableiten kann, weshalb das kein gültigen Worte unserer Sprache sind. | * Mache dir klar, dass man ''b.b@bbb.b''und ''b@bb'' nicht ableiten kann, weshalb das kein gültigen Worte unserer Sprache sind. |
| |
==== Experimente mit JFlap ==== | ==== Experimente mit FLACI oder JFLAP ==== |
| <tabs> |
| * [[#flaci|Flaci]] |
| * [[#jflap|JFLAP]] |
| |
Mit Hilfe von JFlap ([[http://www.jflap.org/jflaptmp/july27-18/JFLAP7.1.jar|Download]]) kann man auch Grammatiken experimentell testen. Am Beispiel unserer Grammatik für vereinfachte E-Mail-Adressen soll dies hier gezeigt werden. | <pane id="flaci"> |
| |
| |
| Man kann im Online-Tool FLACI (https://flaci.com/kfgedit) das Werkzeug für "Kontextfreie Grammatiken" verwenden, um unsere Mailgrammatik zu simulieren und Experimente damit durchführen zu können. |
| |
=== (A5) === | {{ :faecher:informatik:oberstufe:automaten:formale_sprachen:mailadressen:flaci_grammar.png?600 |}} |
| |
| |
| |
| </pane> |
| <pane id="jflap"> |
| Mit Hilfe von JFlap ([[https://www.jflap.org/jflaptmp/july27-18/JFLAP7.1.jar|Download]]) kann man auch Grammatiken experimentell testen. Am Beispiel unserer Grammatik für vereinfachte E-Mail-Adressen soll dies hier gezeigt werden. |
| |
| ---- |
| {{:aufgabe.png?nolink |}} |
| === (A6) === |
| |
Starte JFlap, wähle den Menupunkt ''[Grammar]'' aus und gib die Regeln unserer Grammatik im Grammatik-Editor ein.Variablen dürfen nur aus einem Buchstaben bestehen, Leerzeichen werden von JFLAP beachtet - wo keine sein sollen, dürfen auch keine sein. | Starte JFlap, wähle den Menupunkt ''[Grammar]'' aus und gib die Regeln unserer Grammatik im Grammatik-Editor ein.Variablen dürfen nur aus einem Buchstaben bestehen, Leerzeichen werden von JFLAP beachtet - wo keine sein sollen, dürfen auch keine sein. |
{{ :faecher:informatik:oberstufe:automaten:formale_sprachen:mailadressen:auswahl_172.png |}} | {{ :faecher:informatik:oberstufe:automaten:formale_sprachen:mailadressen:auswahl_172.png |}} |
| |
---- | Mit der Schaltfläche ''[Step]'' kann man die Ableitung Schritt für Schritt nachvollziehen. Es stehen zwei Darstellungen zur Auswahl - als Baum und als Ableitungstabelle, die Auswahl wird im Dropdown Menü vorgenommen. |
| |
| |{{:faecher:informatik:oberstufe:automaten:formale_sprachen:mailadressen:auswahl_174.png|}}|{{:faecher:informatik:oberstufe:automaten:formale_sprachen:mailadressen:auswahl_175.png|}}| |
| |
| * Teste die Ableitung weiterer Mailadressen. |
| * Die Topleveldomain soll nur aus den beiden Buchstaben ''bb'' bestehen dürfen. Ändere eine der Regeln entsprechend ab und teste. |
| </pane> |
| </tabs> |
| |
| |
| ---- |
| {{:aufgabe.png?nolink |}} |
| === (A7) === |
| |
| Entwerfe einen endlichen Automaten, der gültige Mailadressen akzeptiert und simuliere ihn in JFLAP. |
| |
| ---- |
| {{:aufgabe.png?nolink |}} |
| === (A8) === |
| |
| Die Mengen |
| |
| Σ = {x,y} |
| P = {S -> AB, A -> BA | y, B -> AB | x} |
| V = {S,A,B} // Startvariable S |
| |
| legen eine Grammatik G fest. Schreibe die Grammatik in ihrer "Kurzschreibweise" auf. |
| |
| Finde alle Wörter der Sprache, indem du die möglichen Ableitungen anhand der Regeln betrachtest. Überprüfe deine Vermutung mit JFLAP. |
| |
| ---- |
Dieser Abschnitt ist auf Basis der Seite https://www.inf-schule.de/sprachen/sprachenundautomaten/sprachbeschreibung/grammatiken/fallstudie_email in inf-schule.de entstanden. Lizenz: [[https://creativecommons.org/licenses/by-sa/4.0/|CC-BY-SA]] | Dieser Abschnitt ist auf Basis der Seite https://www.inf-schule.de/sprachen/sprachenundautomaten/sprachbeschreibung/grammatiken/fallstudie_email in inf-schule.de entstanden. Lizenz: [[https://creativecommons.org/licenses/by-sa/4.0/|CC-BY-SA]] |
| |