Lex (informatyka)
Lex – standardowy program w systemach uniksowych służący do tworzenia tzw. lekserów, czyli programów przekształcających wejściowy strumień znaków na symbole (jednostki leksykalne). Program lex wyodrębnia symbole, dopasowując ciąg wejściowy do wzorców określonych przez wyrażenia regularne. Z każdym ze wzorców można powiązać odpowiedni fragment programu napisany w języku C odpowiedzialny za wykonanie konkretnej akcji w przypadku odnalezienia symbolu.
Obok oryginalnego programu lex napisanego przez Erica Schmidta i Mike'a Leska popularnością cieszy się wersja o nazwie flex.
Struktura pliku lex
edytujProgram analizujący generowany jest na podstawie pliku zawierającego wzorce (wyrażenia regularne zgodne ze standardem IEEE Std 1003.1-2001) oraz fragmenty kodu w języku C. Zazwyczaj plik ten ma rozszerzenie .l (małe L) i składa się z trzech części oddzielonych od siebie znakami %%:
sekcja definicji %% sekcja reguł %% sekcja z kodem w języku C
Wynik działania programu
edytujWynikiem działania programu lex, jeżeli nie użyto opcji -t, jest plik tekstowy o nazwie lex.yy.c zawierający kod źródłowy (w języku C) wygenerowanego leksera. Po skompilowaniu tego pliku i połączeniu z biblioteką lex powstaje właściwy program analizujący.
Lex i Yacc
edytujBardzo często wynik działania programu lex jest przekazywany do analizatorów składniowych (Analizator składniowy), czyli programów sprawdzających zgodność strumienia wejściowego z określonymi regułami gramatycznymi. Najpopularniejszy taki tandem to programy lex i yacc szeroko stosowane w systemach uniksowych.
Zobacz też
edytujLinki zewnętrzne
edytuj- The Lex & Yacc Page (ang.) - przykłady i podręczniki