Кіріспе

Стандартты UNIX құралы

Lex – лексикалық талдаушыларды ("сканерлер" немесе "лексерлер") құратын компьютерлік бағдарлама. Ол көбінесе yacc талдаушы генераторымен бірге қолданылады және көптеген Unix және Unix-қа ұқсас жүйелерде стандартты лексикалық талдаушы генераторы болып табылады. POSIX стандартында оған баламалы құрал қарастырылған. Lex лексикалық талдаушыны сипаттайтын кіріс ағынын оқиды және лексикалық талдаушыны C бағдарламалау тілінде іске асыратын бастапқы кодты жасайды. C-дан басқа, Lex-тің кейбір ескі нұсқалары Ratfor тілінде де лексер құра алады.

Тарих

Лексті алғаш Майк Леск пен Эрик Шмидт жазды және 1975 жылы сипаттады. Келесі жылдары Lex көптеген Unix және Unix-ке ұқсас жүйелерде стандартты лексикалық талдау генераторына айналды. 1983 жылы Lex, Белл зертханаларының лицензиясы бойынша Чарльз Ривер Дата Системінің UNOS операциялық жүйесі үшін қолжетімді бірнеше UNIX құралдарының бірі болды. Алғашында коммерциялық бағдарлама ретінде таратылғанымен, Lex-тің кейбір нұсқалары қазір ашық кодты бағдарлама болып табылады. Lex-тің бастапқы коммерциялық кодына негізделген ашық кодты нұсқалары қазір Bell Labs-тің OpenSolaris және Plan 9 сияқты ашық кодты операциялық жүйелерімен бірге таратылады. Lex-тің танымал ашық кодты нұсқасы, flex деп аталады, немесе «жылдам лексикалық талдаушы», коммерциялық кодтан туындамаған.

Lex-ті талдау генераторларымен пайдалану

Лекс, басқа лексикалық талдағыштар сияқты, ережелерді тек қана тұрақты өрнектермен сипатталатындарымен шектейді. Осы себепті, Лексті тілдердің Хомский иерархиясы көрсеткендей, шекті күйдегі автоматтар іске асыра алады. Күрделі тілдерді тану үшін Лекс көбінесе Yacc немесе Bison сияқты синтаксистік талдау генераторларымен бірге қолданылады. Синтаксистік талдау генераторлары кіріс ағынын талдау үшін формальды грамматиканы пайдаланады. Әдетте, синтаксистік талдаушы, мысалы, Yacc арқылы жасалған, кіріс ретінде таңбалар ағынын ("таңбалар ағыны") қабылдау, символдар ағынын ("символдар ағыны") тікелей өңдеуге қарағанда артықшылықты болып табылады. Лекс мұндай таңбалар ағынын жасау үшін жиі қолданылады. Сканерсіз синтаксистік талдау – кіріс таңбалар ағынын тікелей, бөлек лексикалық талдаушысыз талдау.

Лекс және

make – Lex қолданылатын бағдарламаларды күтіп ұстауға арналған құрал. Make, .l кеңейтімі бар файлды Lex бастапқы файлы деп қарастырады. Make ішкі макросы LFLAGS, Lex опцияларын make автоматты түрде шақыруы үшін пайдаланылуы мүмкін.