Lex (Informatik) - LinkFang.de





Lex (Informatik)


Das Programm Lex wird im Übersetzerbau benutzt, um Scanner für die lexikalische Analyse von Quelltexten zu erstellen. Ein lexikalischer Scanner ist Teil eines Übersetzers.

Lex wird oft genutzt in Kombination mit Yacc, der für die syntaktische Analyse zuständig ist.

Lex wurde Mitte der 1970er Jahre an den Bell Labs von Mike Lesk in C programmiert; die Regex-Behandlung stammte von Alfred V. Aho und Ken Thompson. Im Sommer 1976 wurde das Programm von dem damaligen Bell-Labs-Praktikanten Eric Schmidt neu implementiert.

Arbeitsweise

Damit Lex ein Analyseprogramm generieren kann, muss eine Beschreibungsdatei erstellt werden. In dieser Datei werden sogenannte Token mittels regulärer Ausdrücke definiert.

Hier ein Beispiel einer solchen Datei:

%{
    #include "y.tab.h"
    extern int yylval;
%}
    %%
    "="      { return EQ; }
    "!="     { return NE; }
    "+"      { return PLUS; }
    "-"      { return MINUS; }
    ";"      { return SEMICOLON; }
    "print"  { return PRINT; }
    [0-9]+   { yylval = atoi(yytext); return NUMBER; }
    ...

Das resultierende Analyseprogramm liest den Quellcode des zu kompilierenden Programmes ein und teilt diesen in Token ein. Sollte dies nicht möglich sein, liegt ein lexikalischer Fehler vor. Die Token werden dann dem syntaktischen Analyseteil bzw. -programm eines Übersetzers übergeben.

Beispiel

Für einen Beispiel-Quelltext wie

print 15+5;

sind die Token:

  1. (PRINT, )
  2. (NUMBER, 15)
  3. (PLUS, )
  4. (NUMBER, 5)
  5. (SEMICOLON, )

Es ist zu beachten, dass Lex keine Kenntnis von erlaubter Syntax hat. Konkret bedeutet dies, dass der Beispielcode

15+ print; 5

ebenfalls in dieselben Token überführt würde (jedoch in anderer Reihenfolge).

Siehe auch

Literatur

  • Helmut Herold: lex & yacc. Die Profitools zur lexikalischen und syntaktischen Textanalyse. Addison-Wesley, 2003, ISBN 3-8273-2096-8.
  • lex & yacc, O’Reilly. ISBN 1-56592-000-7.
  • M. E. Lesk, E. Schmidt: Lex – A Lexical Analyzer Generator. Computing Science Technical Report No. 39, Bell Laboratories, Murray Hill NJ 1975.

Weblinks


Kategorien: Programmierwerkzeug | Compilerbau | Unix-Software

Quelle: Wikipedia - http://de.wikipedia.org/wiki/Lex (Informatik) (Vollständige Liste der Autoren des Textes [Versionsgeschichte])    Lizenz: CC-by-sa-3.0

Änderungen: Alle Bilder mit den meisten Bildunterschriften wurden entfernt. Ebenso alle zu nicht-existierenden Artikeln/Kategorien gehenden internen Wikipedia-Links (Bsp. Portal-Links, Redlinks, Bearbeiten-Links). Entfernung von Navigationsframes, Geo & Normdaten, Mediadateien, gesprochene Versionen, z.T. ID&Class-Namen, Style von Div-Containern, Metadaten, Vorlagen, wie lesenwerte Artikel. Ansonsten sind keine Inhaltsänderungen vorgenommen worden. Weiterhin kann es durch die maschinelle Bearbeitung des Inhalts zu Fehlern gerade in der Darstellung kommen. Darum würden wir jeden Besucher unserer Seite darum bitten uns diese Fehler über den Support mittels einer Nachricht mit Link zu melden. Vielen Dank!

Stand der Informationen: August 201& - Wichtiger Hinweis: Da die Inhalte maschinell von Wikipedia übernommen wurden, ist eine manuelle Überprüfung nicht möglich. Somit garantiert LinkFang.de nicht die Richtigkeit und Aktualität der übernommenen Inhalte. Sollten die Informationen mittlerweile fehlerhaft sein, bitten wir Sie darum uns per Support oder E-Mail zu kontaktieren. Wir werden uns dann innerhalb von spätestens 10 Tagen um Ihr Anliegen kümmern. Auch ohne Anliegen erfolgt mindestens alle drei Monate ein Update der gesamten Inhalte.