<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Lex_%28Informatik%29</id>
	<title>Lex (Informatik) - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Lex_%28Informatik%29"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Lex_(Informatik)&amp;action=history"/>
	<updated>2026-05-28T17:43:37Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Lex_(Informatik)&amp;diff=249294&amp;oldid=prev</id>
		<title>imported&gt;Crazy1880: linkfix</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Lex_(Informatik)&amp;diff=249294&amp;oldid=prev"/>
		<updated>2025-10-13T05:35:37Z</updated>

		<summary type="html">&lt;p&gt;linkfix&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Das Programm &amp;#039;&amp;#039;&amp;#039;Lex&amp;#039;&amp;#039;&amp;#039; wird im [[Compilerbau]] benutzt, um [[Lexikalischer Scanner|Scanner]] für die [[Compiler#Lexikalische Analyse|lexikalische Analyse]] von [[Quelltext]]en zu erstellen. Ein lexikalischer Scanner ist Teil eines [[Compiler]].&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Lex&amp;#039;&amp;#039; wird oft genutzt in Kombination mit [[Yacc]], der für die [[Compiler#Syntaktische Analyse|syntaktische Analyse]] zuständig ist.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Lex&amp;#039;&amp;#039; wurde Mitte der 1970er Jahre an den [[Bell Laboratories|Bell Labs]] von [[Mike Lesk]] in [[C (Programmiersprache)|C]] programmiert; die [[Regulärer Ausdruck|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.&lt;br /&gt;
&lt;br /&gt;
== Arbeitsweise ==&lt;br /&gt;
Damit &amp;#039;&amp;#039;Lex&amp;#039;&amp;#039; ein Analyseprogramm generieren kann, muss eine Beschreibungsdatei erstellt werden. In dieser Datei werden sogenannte [[Token (Übersetzerbau)|Token]] mittels [[Regulärer Ausdruck|regulärer Ausdrücke]] definiert.&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel einer solchen Datei:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
%{&lt;br /&gt;
    #include &amp;quot;y.tab.h&amp;quot;&lt;br /&gt;
    extern int yylval;&lt;br /&gt;
%}&lt;br /&gt;
    %%&lt;br /&gt;
    &amp;quot;=&amp;quot;      { return EQ; }&lt;br /&gt;
    &amp;quot;!=&amp;quot;     { return NE; }&lt;br /&gt;
    &amp;quot;+&amp;quot;      { return PLUS; }&lt;br /&gt;
    &amp;quot;-&amp;quot;      { return MINUS; }&lt;br /&gt;
    &amp;quot;;&amp;quot;      { return SEMICOLON; }&lt;br /&gt;
    &amp;quot;print&amp;quot;  { return PRINT; }&lt;br /&gt;
    [0-9]+   { yylval = atoi(yytext); return NUMBER; }&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
Für einen Beispiel-Quelltext wie&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 print 15+5;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
sind die Token:&lt;br /&gt;
# &amp;#039;&amp;#039;(PRINT, )&amp;#039;&amp;#039;&lt;br /&gt;
# &amp;#039;&amp;#039;(NUMBER, 15)&amp;#039;&amp;#039;&lt;br /&gt;
# &amp;#039;&amp;#039;(PLUS, )&amp;#039;&amp;#039;&lt;br /&gt;
# &amp;#039;&amp;#039;(NUMBER, 5)&amp;#039;&amp;#039;&lt;br /&gt;
# &amp;#039;&amp;#039;(SEMICOLON, )&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Es ist zu beachten, dass Lex keine Kenntnis von erlaubter Syntax hat. Konkret bedeutet dies, dass der Beispielcode&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 15+ print; 5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ebenfalls in dieselben Token überführt würde (jedoch in anderer Reihenfolge).&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[JavaCC]]&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* Helmut Herold: &amp;#039;&amp;#039;lex &amp;amp; yacc. Die Profitools zur lexikalischen und syntaktischen Textanalyse.&amp;#039;&amp;#039; Addison-Wesley, 2003, ISBN 3-8273-2096-8.&lt;br /&gt;
* &amp;#039;&amp;#039;lex &amp;amp; yacc.&amp;#039;&amp;#039; O’Reilly. ISBN 1-56592-000-7.&lt;br /&gt;
* M. E. Lesk, E. Schmidt: &amp;#039;&amp;#039;Lex – A Lexical Analyzer Generator.&amp;#039;&amp;#039; Computing Science Technical Report No. 39, Bell Laboratories, Murray Hill NJ 1975.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* {{Webarchiv |url=http://dinosaur.compilertools.net/ |text=&amp;#039;&amp;#039;The Lex &amp;amp; Yacc Page.&amp;#039;&amp;#039; |wayback=20061205020319}} In: &amp;#039;&amp;#039;dinosaur.compilertools.net&amp;#039;&amp;#039;&lt;br /&gt;
* {{Internetquelle |autor=Tom Niemann |url=https://epaperpress.com/lexandyacc/index.html |titel=Lex &amp;amp; Yacc |werk=epaperpress.com |sprache=en |abruf=2023-11-10 |abruf-verborgen=1}}&lt;br /&gt;
* {{GitHub|westes/flex|Offizielle Homepage des flex}} (englisch)&lt;br /&gt;
* {{man||lex|posix|generate programs for lexical tasks}}&lt;br /&gt;
* {{man|1|flex|bsd|fast lexical analyzer generator}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmierwerkzeug]]&lt;br /&gt;
[[Kategorie:Compilerbau]]&lt;br /&gt;
[[Kategorie:Unix-Software]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Crazy1880</name></author>
	</entry>
</feed>