Das Hauptunterschied zwischen mehrdeutiger und eindeutiger grammatik ist, dass die Mehrdeutige Grammatik ist eine kontextfreie Grammatik, für die es eine Zeichenfolge gibt, die mehr als eine Ableitung ganz links haben kann, während eine eindeutige Grammatik eine kontextfreie Grammatik ist, für die jede gültige Zeichenfolge eine eindeutige Ableitung ganz links hat.
Grammatik bezieht sich auf die syntaktischen Regeln in natürlichen Sprachen. Im Jahr 1956 führten Informatiker ein mathematisches Grammatikmodell für das Schreiben von Computersprache ein. Wenn es möglich ist, alle Zeichenfolgen einer Sprache mit einer bestimmten Grammatik abzuleiten, heißt es, dass die Sprache aus dieser Grammatik generiert wird. Kontextfreie Grammatik ist eine Art von Grammatik. Diese Grammatik erzeugt eine kontextfreie Sprache. Die kontextfreie Grammatik kann mehrdeutig oder eindeutig sein. Wenn für eine bestimmte Zeichenfolge zwei oder mehr Ableitungen vorhanden sind, wird diese Grammatik als mehrdeutig bezeichnet. Wenn es für eine bestimmte Zeichenfolge eine einzige eindeutige Ableitung ganz links gibt, spricht man von einer eindeutigen Grammatik.
1. Was ist mehrdeutige Grammatik?
- Definition, Beispiel
2. Was ist eindeutige Grammatik
- Definition, Beispiel
3. Unterschied zwischen mehrdeutiger und eindeutiger Grammatik
- Vergleich der wichtigsten Unterschiede
Mehrdeutige Grammatik, Eindeutige Grammatik
Eine Grammatik gilt als mehrdeutig, wenn zwei oder mehr Ableitungen für eine Zeichenfolge existieren.
Abbildung 1: Mehrdeutige Grammatik
Angenommen, es gibt eine Grammatik, die wie folgt definiert ist.
G = (S, a + b, +, *, P, S. Die Produktionsregeln lauten wie folgt: S -> S + S | S * S | a | b. Nehmen Sie an, dass dies erforderlich ist generiere den String a + a * b.
Betrachten Sie, S -> S + S
Das Ersetzen von 'a' für das linke linke S ergibt Folgendes.
S-> a + S
Das Ersetzen von S * S für S ist wie folgt.
S-> a + S * S
Durch Ersetzen von 'a' für das am weitesten links stehende S wird die folgende Ausgabe erhalten.
S -> a + a * S
Durch Ersetzen von 'b' für S wird die folgende Ausgabe ausgegeben.
S -> a + a * b
Dies ist die zum Generieren erforderliche Zeichenfolge.
Bei Verwendung der anderen Produktionsregel wird es geben
S -> S * S
Wende S + S an der linken Seite an. S ergibt Folgendes.
S -> S + S * S
Ersetzen Sie 'a' durch die meisten linken S,
S -> a + S * S
Ersetze 'a' für das am weitesten links stehende S,
S -> a + a * S
Ersetzen von 'b' für S ergibt die folgende Ausgabe.
S -> a + a * b
Wieder wurde die erforderliche Zeichenfolge generiert. Daher gibt es mehr als eine Ableitung, um die Zeichenfolge zu generieren. Daher ist es eine mehrdeutige Grammatik.
In einer mehrdeutigen Grammatik hat eine bestimmte Zeichenfolge eine eindeutige Ableitung ganz links. Beachten Sie die folgenden Produktionsregeln.
S -> L | a, L -> LS | S
Betrachten Sie die S -> L-Regel. Ersetzen Sie LS anstelle von L.
S -> LS
Ersetzen Sie S als erstes L.
S -> S S
Durch Ersetzen von 'a' für das äußerste linke S wird die folgende Ausgabe erhalten.
S -> a S
Durch Ersetzen von 'a' wird Folgendes angezeigt.
S -> a a
Daher hat eine Zeichenfolge eine eindeutige Ableitung ganz links. Es ist also eine eindeutige Grammatik.
Eine mehrdeutige Grammatik ist eine kontextfreie Grammatik, für die es eine Zeichenfolge gibt, die mehr als einen ganz linken Ableitungs- oder Analysebaum haben kann. Die eindeutige Grammatik ist eine kontextfreie Grammatik, für die jede gültige Zeichenfolge eine eindeutige Ableitung oder einen Analysebaum ganz links hat.
Bei mehrdeutiger Grammatik kann eine Zeichenfolge zwei oder mehr Ableitungen ganz links haben, in eindeutiger Grammatik hat eine Zeichenfolge jedoch eine eindeutige Ableitung ganz links.
Die kontextfreie Grammatik kann mehrdeutig oder eindeutig sein. Der Unterschied zwischen mehrdeutiger und eindeutiger Grammatik ist, dass die mehrdeutige Grammatik eine kontextfreie Grammatik ist, für die eine Zeichenfolge existiert, die mehr als eine Ableitung ganz links haben kann, während eine eindeutige Grammatik eine kontextfreie Grammatik ist, für die jede gültige Abfolge eine eindeutige Ableitung ganz links hat.
1. „Mehrdeutige Grammatik“. Wikipedia, Wikimedia Foundation, 17. Juli 2018, hier verfügbar.
2. “Compiler-Design | Mehrdeutige Grammatik. “GeeksforGeeks, 10. Februar 2018, hier erhältlich.
3. “Ambiguous Grammar”, Neso Academy, 29. März 2017, erhältlich hier.
1. "Leftmostderivations jaredwf" Von Jaredwf in der Wikipedia auf Englisch - Über en.wikipedia an Commons übertragen von EdwardHades (Public Domain) über Commons Wikimedia