Grundlagen der lexikalischen Analyse und Automaten

Eingeordnet in Elektronik

Geschrieben am in Deutsch mit einer Größe von 4,26 KB

Kontextsensitivität und Merkmale in LEX

  • (): Dient der Gruppierung.
  • {}: Gibt einen Wiederholungsbereich an.
  • $: Das vorangehende Muster wird nur erkannt, wenn es am Zeilenende steht.
  • ^: Außerhalb von Klammern zeigt dies an, dass das Muster nur am Zeilenanfang erkannt wird.

Funktionen und Variablen in PCLEX

  • yylex(): Führt die lexikalische Analyse aus.
  • yytext: Entspricht dem aktuellen Lexem.
  • yyleng: Die Länge des aktuellen Lexems.
  • yylval: Eine globale Variable für den semantischen Wert.
  • yyerror(): Eine Funktion, die für die Ausgabe und Bearbeitung von Fehlern verantwortlich ist.

Nutzung und Aufgabe endlicher Automaten

Wozu dienen endliche Automaten?

Um Sprachen zu erkennen, die durch reguläre Ausdrücke beschrieben werden.

Andere Bezeichnungen

Endliche Automaten werden auch als Erkenner oder Akzeptoren bezeichnet.

Aufgabe eines endlichen Automaten

Er prüft, ob eine Zeichenkette den Regeln folgt, die durch einen regulären Ausdruck definiert wurden.

Arten und Darstellung von Automaten

Deterministische endliche Automaten (DFA)

Ein Automat, bei dem jeder Übergang von einem Zustand E aus ein eindeutiges Symbol erfordert; es gibt keine zwei Übergänge vom selben Zustand, die mit dem gleichen Symbol gekennzeichnet sind.

Darstellung eines AFN (NFA)

Die Darstellung erfolgt explizit durch eine Grafik der Übergänge mit den Parametern: Eingang (Zustand, Symbol) und Ausgang (Folgezustand).

Lexikalische Analyse und Implementierung

Bestandteile der Analyse zur Auswertung

Dazu gehören vorzeichenlose Integer-Konstanten, relationale Operatoren und individuelle Variablen.

Lexikalische Komponenten und Analysator

Die Umsetzung erfolgt mithilfe einer Übergangstabelle (TT).

Vor- und Nachteile endlicher Automaten

  • Vorteile: Vielfältige Anwendungen, einfach zu programmieren (trivial).
  • Nachteile: Hoher Speicherverbrauch.

Methoden der Umsetzung

  • Erste Methode: Basiert auf Tabellen mit vielen identischen Spalten oder Zeilen.
  • Zweite Methode: Besonders nützlich, wenn die Übergangsmatrix sehr dünn besetzt (sparse) ist.

Fehlerbehandlung und Definitionen

Häufige lexikalische Fehler

  • Unerwartete Zeichen (meist zu Beginn eines Lexems).
  • Überlauf von Variablen oder Konstanten.
  • Zeilenende vor dem Schließen einer Zeichenfolge.
  • Probleme beim Öffnen oder Schließen von Kommentaren.

Was ist eine lexikalische Analyse?

Sie ist für die Suche nach Wörtern oder lexikalischen Komponenten verantwortlich, aus denen ein Programm besteht.

Funktionsweise der Analyse

Sie verarbeitet eine Folge von Zeichen mithilfe einer vorgegebenen Grammatik.

Hauptfunktionen der lexikalischen Analyse

  • Lesen der Eingabezeichen, um als Ausgabe eine Folge von Komponenten zu produzieren.
  • Entfernen von Kommentaren und Leerzeichen.
  • Erkennen von Benutzer-IDs.
  • Verfolgung der gelesenen Zeilen.

Trennung von Lexikon und Syntaxanalyse

Dies geschieht, um spezialisierte und leistungsfähigere Prozessoren für die jeweiligen Phasen aufbauen zu können.

Struktur und Begriffe

Struktur des lexikalischen Prozessors

  • (Regulärer Ausdruck 1) (Aktion 1)
  • (Regulärer Ausdruck 2) (Aktion 2)
  • (Regulärer Ausdruck 3) (Aktion 3)
  • (Regulärer Ausdruck n) (Aktion n)

Definitionen: Muster, Lexem und Token

  • Muster (Pattern): Ein regulärer Ausdruck.
  • Lexem: Eine spezielle Zeichenfolge, die einem Muster entspricht.
  • Token: Ein Terminalsymbol, das mit einem Muster verbunden ist.

Möglichkeiten zur Erstellung eines Lexers

Ad-hoc-Programmierung (manuell), Nutzung endlicher Automaten oder Verwendung eines Metacompilers.

Verwandte Einträge: