Wie funktioniert ein lexikalischer Analysator?
Wie funktioniert ein lexikalischer Analysator?

Video: Wie funktioniert ein lexikalischer Analysator?

Video: Wie funktioniert ein lexikalischer Analysator?
Video: Vorlesung Compilerbau (2) - Lexikalische Analyse 2024, April
Anonim

Lexikalische Analyse ist die erste Phase eines Compilers. Die lexikalischer Analysator zerlegt diese Syntaxen in eine Reihe von Token, indem Leerzeichen oder Kommentare im Quellcode entfernt werden. Wenn die lexikalischer Analysator findet ein ungültiges Token, wird ein Fehler generiert. Die lexikalischer Analysator funktioniert eng mit der Syntax Analysator.

Was macht dementsprechend ein lexikalischer Analysator?

Der Lexer, auch lexikalischer Analysator oder Tokenizer genannt, ist ein Programm, das die Eingang Quellcode in eine Folge von Lexemen. Es liest die Eingang Quellcode Zeichen für Zeichen, erkennt die Lexeme und gibt eine Sequenz von Token aus, die die Lexeme beschreiben.

Was ist der Unterschied zwischen lexikalischem und Syntaxanalysator? Das Wichtigste Unterschied zwischen lexikalischer Analyse und Syntaxanalyse ist dass lexikalische Analyse liest den Quellcode zeichenweise und wandelt ihn in sinnvolle Lexeme (Token) um, während Syntaxanalyse nimmt diese Token und erzeugt einen Parse-Baum als Ausgabe.

Anschließend stellt sich die Frage, was ist die Ausgabe des lexikalischen Analysators?

(ich) Die Ausgang von a lexikalischer Analysator ist Token. (II) Gesamtzahl der Token in printf("i=%d, &i=%x", i, &i); sind 10. (III) Die Symboltabelle kann implementiert werden, indem ein Array, eine Hash-Tabelle, ein Baum und verknüpfte Listen verwendet werden.

Wie funktioniert ein Lexer?

Die lexer verwandelt die bedeutungslose Zeichenfolge einfach in eine flache Liste von Dingen wie "Zahlenliteral", "Zeichenfolgenliteral", "Bezeichner" oder "Operator" und kann tun Dinge wie das Erkennen von reservierten Bezeichnern ("Schlüsselwörtern") und das Verwerfen von Leerzeichen. Formal, a lexer erkennt eine Reihe von regulären Sprachen.

Empfohlen: