WikiDer > Lex (Computerprogramm)

Lex (computerprogramma)

Lex ist ein Computerprogramm zum Generieren lexikalische Analysatoren (oder: Scanner, lexer). Lex wird normalerweise in Verbindung mit dem verwendet Parser-GeneratorYacc.

Die erste Version von lex wurde entwickelt von Eric Schmidt und Mike Lesk. Lex wurde zum Standard-Scanner-Generator der UnixBetriebssystem und ist im Rahmen der POSIX-Standard.

Operation

Die Eingabe von lex ist eine Spezifikation des zu generierenden Scanners. Basierend auf dieser Spezifikation generiert lex einen Scanner geschrieben in C.

Eine Lex-Spezifikation für einen Scanner besteht aus 3 Teilen:

  • EIN Definition
Hier werden eventuell später benötigte Makros definiert und Überschriften importiert. Der gesamte Code in der Definition wird unverändert in das generierte C-Programm kopiert.
  • Das Regeln
Hier wird das tatsächliche Verhalten des Scanners definiert. Dies geschieht durch Reguläre Ausdrücke C-Code zu verlinken. Wenn der Scanner Text findet, der einem regulären Ausdruck entspricht, wird der entsprechende C-Code ausgeführt.
  • C-Code
Hier werden alle anderen vom Scanner verwendeten C-Codes platziert. Werden in den Regeln bestimmte Funktionen aufgerufen, können diese hier definiert werden.

Beispiel

Die folgende lex-Spezifikation generiert einen Scanner, der die Anzahl der Zeichen und die Anzahl der Zeilen seiner Eingabe zählt.[1]

intnum_lines=0,num_chars=0;%%neinnum_lines;num_chars;.num_chars;%%Main(){yylex();druckenf("Anzahl Zeilen = %d, Anzahl Zeichen = %d",num_lines,num_chars);}

Andere Versionen

Biegen (schneller lexikalischer Analysator) ist eine gängige Alternative zu lex. Flex wurde ursprünglich um 1987 von Vern Paxson geschrieben und ist rückwärtskompatibel mit lex.Flex generiert Scanner in C .

GPLEX ist eine weitere weit verbreitete Alternative zu lex. GPLEX generiert Scanner in C# Anstatt von C oder C .

Siehe auch

Externe Links