Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:automaten:formale_sprachen:einfuehrung:start [02.06.2022 06:52] – [Syntaxdiagramm] sbel | faecher:informatik:oberstufe:automaten:formale_sprachen:einfuehrung:start [26.02.2025 08:06] (aktuell) – [Definition Grammatik einer formalen Sprache] Marco Kuemmel | ||
---|---|---|---|
Zeile 2: | Zeile 2: | ||
- | Eine natürliche Sprache wie Deutsche, Englisch oder gar Chinesisch hat äußerst komplexe Regeln, die über Jahrhunderte gewachsen sind. Ob ein Satz in einer Sprache korrekt ist, entscheidet ein geübter Sprecher der Sprache meist intuitiv. | + | Eine natürliche Sprache wie Deutsch, Englisch oder gar Chinesisch hat äußerst komplexe Regeln, die über Jahrhunderte gewachsen sind. Ob ein Satz in einer Sprache korrekt ist, entscheidet ein geübter Sprecher der Sprache meist intuitiv. |
Jemand, der die Sprache erst lernt, müsste anhand von Regeln ableiten, ob ein Satz der " | Jemand, der die Sprache erst lernt, müsste anhand von Regeln ableiten, ob ein Satz der " | ||
- | Da natürliche Sprachen viel zu komplexen Regeln folgen, betrachten wir im Folgenden nur " | + | Da natürliche Sprachen viel zu komplexen Regeln folgen, betrachten wir im Folgenden nur " |
<WRAP center round tip 80%> | <WRAP center round tip 80%> | ||
Zeile 16: | Zeile 16: | ||
{{ : | {{ : | ||
- | Wir betrachten eine sehr einfache Sprache, diese besteht aus Subjekten und Objekten. Insgesamt kann man Sätze bilden aus den Bestandteilen '' | + | Wir betrachten eine sehr einfache Sprache, diese besteht aus Subjekten und Objekten. Insgesamt kann man Sätze bilden aus den Bestandteilen '' |
Zwei der Elemente sind Subjekte (Higgs und Emil), zwei sind Prädikate (bellen, rennen), man kann auf genau eine Weise einen Satz bilden: | Zwei der Elemente sind Subjekte (Higgs und Emil), zwei sind Prädikate (bellen, rennen), man kann auf genau eine Weise einen Satz bilden: | ||
Zeile 39: | Zeile 39: | ||
- | In unserem Beispiel besteht das Alphabet aus den Symbolen " | + | In unserem Beispiel besteht das Alphabet aus den Symbolen " |
- | **Σ={Higgs, | + | **Σ={Higgs, |
Vorsicht Falle: Im normalen Sprachgebrauch bezeichnet ein Alphabet eine Menge aus einzelnen Zeichen. Bei formalen Sprachen kann ein Alphabet auch Zeichenfolgen (= Symbole) enthalten. Die Zeichenfolge " | Vorsicht Falle: Im normalen Sprachgebrauch bezeichnet ein Alphabet eine Menge aus einzelnen Zeichen. Bei formalen Sprachen kann ein Alphabet auch Zeichenfolgen (= Symbole) enthalten. Die Zeichenfolge " | ||
Zeile 49: | Zeile 49: | ||
==== Regeln ==== | ==== Regeln ==== | ||
- | Außer dem Alphabet benötigt man eine Menge von Regeln, die festlegen, wie in der Sprache ein gültiger Satz gebildet wird. Man draf also nicht einfach Symbole des Alphabets beliebig aneinanderreihen, | + | Außer dem Alphabet benötigt man eine Menge von Regeln, die festlegen, wie in der Sprache ein gültiger Satz gebildet wird. Man darf also nicht einfach Symbole des Alphabets beliebig aneinanderreihen, |
<WRAP center round important 80%> | <WRAP center round important 80%> | ||
- | Die Menge an Regeln, nach der sie Sätze unserer Sprache entstehen, wird mit **P** bezeichnet((P steht für " | + | Die Menge an Regeln, nach der die Sätze unserer Sprache entstehen, wird mit **P** bezeichnet((P steht für " |
</ | </ | ||
Zeile 67: | Zeile 67: | ||
H -> Higgs // Im Platzehalter H kann Higgs stehen | H -> Higgs // Im Platzehalter H kann Higgs stehen | ||
H -> Emil // Im Platzhalter H kann Emil stehen | H -> Emil // Im Platzhalter H kann Emil stehen | ||
- | T -> bellt // Im Platzhalter T kann bellen | + | T -> bellt // Im Platzhalter T kann bellt stehen |
- | T -> rennt // Im Platzhalter T kann rennen | + | T -> rennt // Im Platzhalter T kann rennt stehen |
| | ||
- | Dabei haben wir die **Variablenmenge V** verwendet: **V={S, | + | Dabei haben wir die **Variablenmenge V** verwendet: **V={S, |
Da es - wie in diesem Beispiel - häufig vorkommt, dass eine Variable alternativ für mehrere unterschiedliche Ersetzungen stehen kann, kürzt man das häufig folgendermaßen ab: | Da es - wie in diesem Beispiel - häufig vorkommt, dass eine Variable alternativ für mehrere unterschiedliche Ersetzungen stehen kann, kürzt man das häufig folgendermaßen ab: | ||
Zeile 76: | Zeile 76: | ||
S -> H T // Start, ein Element aus H dann ein Element aus T | S -> H T // Start, ein Element aus H dann ein Element aus T | ||
H -> Higgs | Emil // In H kann Higgs oder Emil stehen (der senkrechte Strich steht also für " | H -> Higgs | Emil // In H kann Higgs oder Emil stehen (der senkrechte Strich steht also für " | ||
- | T -> bellt | rennt // In T kann bellen | + | T -> bellt | rennt // In T kann bellt oder rennt stehen |
Zeile 86: | Zeile 86: | ||
* Entwerfe einen endlichen Automaten, der nur korrekte Sätze der Sprache akzeptiert. | * Entwerfe einen endlichen Automaten, der nur korrekte Sätze der Sprache akzeptiert. | ||
* Was muss du alles anpassen, damit die Hunde auch beide fressen können? | * Was muss du alles anpassen, damit die Hunde auch beide fressen können? | ||
+ | |||
+ | |||
==== Definition Grammatik einer formalen Sprache ==== | ==== Definition Grammatik einer formalen Sprache ==== | ||
Zeile 97: | Zeile 99: | ||
S: Startvariable | S: Startvariable | ||
- | Bilden | + | bilden |
G=(V, | G=(V, | ||
| | ||
</ | </ | ||
- | |||
- | Die Sprache **L** ist die Menge aller **Wörter**, | ||
- | **Achtung:** Obwohl man "Higgs rennt" im normalen Sprachgebrauch als Satz bezeichnen würde, ist das im Sinne der formalen Sprachen ein Wort - das war oben wie ganze Zeit so, wir haben also die ganze Zeit " | + | ==== Wichtige Begrifflichkeiten ==== |
+ | |||
+ | Die Sprache | ||
+ | Wichtig: | ||
**Ableiten** bedeutet im Zusammenhang der formalen Sprachen, dass die linke Seite einer Regel durch die entsprechende rechte Seite ersetzt wird. | **Ableiten** bedeutet im Zusammenhang der formalen Sprachen, dass die linke Seite einer Regel durch die entsprechende rechte Seite ersetzt wird. | ||
+ | |||
+ | Die **Syntax** einer Sprache beschreibt die Regeln, nach denen die Sprachkonstrukte gebildet werden. | ||
+ | |||
+ | Die **Semantik** einer Sprache beschreibt die Bedeutung der Sprachkonstrukte. | ||
+ | |||
+ | Die **Pragmatik** einer Sprache beschäftigt sich mit der Verwendung und Bedeutung von Sprachkonstrukten in konkreten Situationen. | ||
---- | ---- | ||
Zeile 146: | Zeile 155: | ||
- | Mit dem Tool [[https://www.bottlecaps.de/rr/ui|"Bottlecaps"]] kann man eine Grammatik eingeben und erhält dann ein Syntaxdiagramm. Dabei gelten folgende Konventionen: | + | Mit dem Tool [[https://rr.red-dove.com/|"RR - Railroad Diagram Generator"]]((Source: https:// |
- | * Der Ersetzungspfeil '' | + | * Der Ersetzungspfeil '' |
- | * Terminalsymbole werden in einfachen | + | * Terminalsymbole werden in einfachen |
* Alternativen werden wie in unserer Schreibweise durch einen senkrechten Strich dargestellt: | * Alternativen werden wie in unserer Schreibweise durch einen senkrechten Strich dargestellt: | ||
Zeile 155: | Zeile 164: | ||
{{: | {{: | ||
=== (A4) === | === (A4) === | ||
- | Überführe die Grammatik aus Aufgabe 3 mit Bottlecaps | + | Überführe die Grammatik aus Aufgabe 3 mit RR in ein Syntaxdiagramm |
++++ Lösung | | ++++ Lösung | | ||
Zeile 171: | Zeile 180: | ||
++++ | ++++ | ||
+ | |||
+ | Wie kann man aus dem Syntaxdiagramm die Bestandteile der Grammatik ermitteln? Beschreibe das Vorgehen. | ||
==== Ein leeres Symbol ==== | ==== Ein leeres Symbol ==== |