Using the lex Program with the yacc Program
Sie können das Programm lex auch mit einem Parsergenerator wie dem Befehl yacc verwenden. Der Befehl yacc generiert ein Programm, das als Parserbezeichnet wird und die Konstruktion von mehr als einer Worteingabe analysiert.
Dieses Parserprogramm funktioniert gut mit den lexikalischen Analyseprogrammen, die der lex -Befehl generiert. Die Parser erkennen viele Grammatiktypen ohne Berücksichtigung des Kontexts. Diese Parser benötigen einen Vorprozessor, um Eingabetoken wie den Vorprozessor zu erkennen, den der Befehl lex erzeugt.
Das Programm lex erkennt nur erweiterte reguläre Ausdrücke und formatiert sie wie in der Eingabedatei angegeben in Zeichenpakete, die als Tokensbezeichnet werden. Wenn Sie das Programm lex verwenden, um eine lexikalische Analysefunktion für einen Parser zu erstellen, partitioniert die (mit dem Befehl lex erstellte) lexikalische Analysefunktion den Eingabedatenstrom. Der Parser (aus dem Befehl yacc ) ordnet den resultierenden Teilen eine Struktur zu. Sie können auch andere Programme zusammen mit den Programmen verwenden, die von den lex -oder yacc -Befehlen generiert wurden.
Ein Token ist die kleinste unabhängige Bedeutungseinheit, die entweder vom Parser oder vom lexikalischen Analyseprogramm definiert wird. Ein Token kann Daten, ein Sprachschlüsselwort, eine Kennung oder andere Teile einer Sprachsyntax enthalten.
return(token);%{
#include "y.tab.h"
%}#include "lex.yy.c"Die Bibliothek yacc sollte vor der Bibliothek lex geladen werden, um ein Hauptprogramm abzurufen, das den yacc -Parser aufruft. Sie können lex -und yacc -Programme in jeder Reihenfolge generieren.