Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Lex (Informatik)
Lex (Informatik) 👆 Click Here!
aus Wikipedia, der freien Enzyklopädie

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

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

[Bearbeiten | Quelltext bearbeiten]

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

[Bearbeiten | Quelltext bearbeiten]

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

[Bearbeiten | Quelltext bearbeiten]
  • JavaCC

Literatur

[Bearbeiten | Quelltext bearbeiten]
  • 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

[Bearbeiten | Quelltext bearbeiten]
  • The Lex & Yacc Page. (Memento vom 5. Dezember 2006 im Internet Archive) In: dinosaur.compilertools.net
  • Tom Niemann: Lex & Yacc. In: epaperpress.com. Abgerufen am 10. November 2023 (englisch). 
  • Offizielle Homepage des flex auf GitHub (englisch)
  • lex: generate programs for lexical tasks – Open Group Base Specification
  • flex(1): fast lexical analyzer generator – OpenBSD General Commands Manual
Abgerufen von „https://de.wikipedia.org/w/index.php?title=Lex_(Informatik)&oldid=260545054“
Kategorien:
  • Programmierwerkzeug
  • Compilerbau
  • Unix-Software

  • indonesia
  • Polski
  • العربية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصرى
  • Nederlands
  • 日本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українська
  • Tiếng Việt
  • Winaray
  • 中文
  • Русский
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id