Prinzipien der Zusammenstellung-Definition und Klassifikation der Grammatik


Vorwort

Sprache ist ein Werkzeug, das von einer bestimmten Gruppe für die Informationskommunikation verwendet wird. Die Grundlage der Informationskommunikation besteht darin, Sätze zu generieren und Sätze gemäß den allgemein vereinbarten Generierungsregeln und Verständnisregeln zu verstehen . Die Computersprache hat eine strenge Grammatik und Semantik und ist leicht zu formalisieren. Der folgende Inhalt kann nach formaler Extraktion der Programmiersprache erhalten werden:

Programmiersprache (Programmiersprache): Eine Sammlung aller Anweisungen, aus denen ein Programm besteht.
Programm: Eine Folge von Anweisungen, die den grammatikalischen Regeln entsprechen.
Satz: Eine Folge von Wörtern, die grammatikalischen Regeln entspricht.
Token: Eine Zeichenfolge, die den lexikalischen Regeln entspricht.

Die beschreibende Form von sprach- Grammatik , hat verschiedene Konzepte für Wörter und Sätze:

Lexikalische Wortzusammensetzungsregeln
von Wörtern
Beschreibungsmethode: BNF-Normalform, Normalform

Grammatik-Satz
Zusammensetzungsregeln von Sätzen
Beschreibungsmethode: BNF-Paradigma, Grammatik (Beschreibung) -Diagramm

1. Definition der Grammatik

Nehmen Sie am Beispiel der Zuweisungsanweisung zunächst die folgenden vier Definitionen:
Nicht-Terminal-Symbolsatz V =
{<Zuweisungsanweisung>, <linke Teilemenge>, <rechter Teileausdruck>, <einfache Variable>, <tiefgestellte Variable>, < Operator>}
Terminalsymbolsatz T =
{a, b, c, m [1], m [2], m [3], +, -}
Grammatikregelsatz P =
{<Zuweisungsanweisung> -> <links Mengen> = <Ausdruck des rechten Teils>, ……}
Startsymbol S = <Zuweisungsanweisung>

Nach der obigen Definition ist die formale Definition der Grammatik G eine Quaternion:

G = (V , T , P , S) G = (V , T , P , S) =( V , T , P , S )
V: nicht-terminales Symbol (Variable) gesetzt
Jedes nicht-terminale Symbol wird als grammatikalische Variable (Komponente) bezeichnet, die verschiedene Unterstrukturen einer Sprache darstellt.

T: Terminal eingestellt.
Zeichen, die in Sätzen der Sprache erscheinen, V∩T ​​= leere Menge

S: Startsymbol, S∈V
repräsentiert die durch die Grammatik definierte Sprache und erscheint mindestens einmal auf der linken Seite der Produktion.

P: Produktionsset.

Zweitens die Klassifizierung der Grammatik

Je nach Komplexität der Sprachstruktur (formale Sprache) (einschließlich der Komplexität der Grammatik, der Auswahl der Analysemethoden und der Fähigkeit, die Beschreibungssprache der Grammatik widerzuspiegeln) kann sie in die folgenden vier Sprachen unterteilt werden:
Grammatik Typ 0 (dh: Grammatik der Phrasenstruktur) Grammatik
Typ 1 (Dh: kontextsensitive Grammatik)
Typ 2-Grammatik (dh: kontextfreie Grammatik)
Typ 3-Grammatik (dh reguläre Grammatik)

0. Phrase Structure Language (PSL)

Wenn G die Anforderungen der Grammatikdefinition erfüllt, ist G eine Grammatik vom Typ 0 (PSG: Phrase Structure Grammar).

1. Kontextsensitive Grammatik (CSG)

Wenn für α -> β∈P alle ** | β | ≥ | α | ** gelten, wird G als Grammatik vom Typ 1 bezeichnet. Nämlich: Kontextsensitive Grammatik (CSG-Kontextsensitive Grammatik)

2. Kontextfreie Grammatik (CFG)

Wenn für α -> β∈P | β | ≥ | α | gilt und α∈V ​​gilt, wird G als Typ-2-Grammatik bezeichnet, nämlich: Context Free Grammar (CFG) (CFG kann beschreiben Die meisten grammatikalischen Elemente von Programmiersprachen).

3. Regelmäßige Grammatik (RG)

A, B ∈ V, a ∈ T +
rechte lineare Grammatik: A → aB oder A → a
linke lineare Grammatik: A → Ba oder A → a
sind alle Grammatiken vom Typ 3 (reguläre Grammatik) -RG)
Die linke lineare Grammatik und die rechte lineare Grammatik sind äquivalent, aber die Richtung des Erkennens von Sätzen ist unterschiedlich.
Die Konvertierung zwischen regulärer Grammatik und regulärem Ausdruck .

Drei, bestimmen Sie die Kategorie der folgenden Grammatik

G1: S -> 0 | 1 | 00 | 11 (reguläre Grammatik)
G2: S -> A | B | AA | BB, A -> 0, B -> 1 (kontextfreie Grammatik)
G3: S -> 0 | 1 | 0A | 1B, A -> 0, B -> 1 (reguläre Grammatik)
G4: S -> A | B | BC, A -> 0, B -> 1, C -> 21, C -> 11, C -> 2 (kontextfreie Grammatik)
G5: S -> 0 | 0S (reguläre Grammatik)
G6: S -> ε | 0S (Phrasenstrukturgrammatik)
G7: S -> ε | 00S111 (Phrasenstrukturgrammatik)
G8: A. -> aS | bS | cS | a | b | c (reguläre Grammatik)
G9: S -> 0A | 1B | 2C | 0SA | 1SB | 2SC
0A -> A0 1A -> A1
2A -> A2 0B -> B0
1B -> B1 2B -> B2
0C -> C0 1C -> C1
2C -> C2
(kontextsensitive Grammatik)
G10: S -> aT | bT | cT
T -> ε | a | b | c | 0 | 1 | 2 | 3 | aT | bT | cT | 0T | 1T | 2T | 3T (Grammatik der Phrasenstruktur)

um zusammenzufassen

G = (V, T, P, S) ist eine Grammatik, α → β ∈ P.

  • G ist Grammatik vom Typ 0, L (G) ist Sprache vom Typ 0;
  • | α | ≤ | β |: G ist eine Grammatik vom Typ 1 und L (G) ist eine Sprache vom Typ 1 (außer S → ε);
  • α∈V: G ist Grammatik vom Typ 2, L (G) ist Sprache vom Typ 2;
  • A → aB oder A → a: G ist eine rechte lineare Grammatik, L (G) ist eine Sprache vom Typ 3
    A → Ba oder A → a: G ist eine linke lineare Grammatik, L (G) ist eine Sprache vom Typ 3

Die Beziehung zwischen den vier Grammatiken wird durch eine weitere Einschränkung der Produktion definiert.

Die stufenweise "Containment" -Beziehung zwischen den vier Grammatiken ist wie folgt:
Fügen Sie hier eine Bildbeschreibung ein

Ich denke du magst

Origin blog.csdn.net/weixin_43824348/article/details/111486412
Empfohlen
Rangfolge