Lex – Lekser w systemach uniksowych
Lex to standardowy program w systemach uniksowych, który służy do tworzenia lekserów, czyli programów przekształcających strumień znaków na symbole leksykalne. Lex wyodrębnia symbole, dopasowując ciąg wejściowy do wzorców określonych przez wyrażenia regularne. Każdemu wzorcowi można przypisać fragment kodu w języku C, który wykonuje konkretne akcje po zidentyfikowaniu symbolu. Alternatywną wersją programu jest flex, który również cieszy się dużą popularnością.
Struktura pliku lex
Program analizujący generowany jest z pliku zawierającego wzorce oraz fragmenty kodu w języku C. Plik ten, zazwyczaj z rozszerzeniem .l, składa się z trzech sekcji oddzielonych znakami %%:
- Sekcja definicji
- Sekcja reguł
- Sekcja z kodem w języku C
Wynik działania programu
Domyślnym wynikiem działania programu lex, przy braku opcji -t, jest plik tekstowy o nazwie lex.yy.c. Zawiera on kod źródłowy wygenerowanego leksera. Po skompilowaniu tego pliku i połączeniu z biblioteką lex, powstaje program analizujący.
Lex i Yacc
Wynik działania programu lex często jest przekazywany do analizatorów składniowych, które sprawdzają zgodność strumienia wejściowego z regułami gramatycznymi. Najpopularniejszym połączeniem jest tandem programów lex i yacc, powszechnie stosowanych w systemach uniksowych.