Lex (программное обеспечение)
-
Обзор Lex
- Lex — это программа для генерации лексических анализаторов.
- Используется с генератором синтаксических анализаторов yacc, является стандартным в Unix и Unix-подобных системах.
- Эквивалентен стандарту POSIX.
- Считывает входной поток и генерирует исходный код на Си.
-
История и распространение
- Создана Майком Леском и Эриком Шмидтом в 1975 году.
- Изначально была проприетарным ПО, но некоторые версии теперь имеют открытый исходный код.
- Распространена с открытыми ОС, такими как OpenSolaris и Plan 9.
- Популярная версия с открытым исходным кодом — flex, не связана с проприетарным кодом.
-
Структура файла Lex
- Структура файла аналогична yacc, разделена на три секции с определенными макросами и импортированными заголовочными файлами.
- Содержит правила регулярных выражений и код на Си, который копируется в сгенерированный файл.
- Инструкции на Си могут быть помещены в отдельный файл для удобства.
-
Пример файла Lex
- Пример файла Lex для распознавания целых чисел и их печати.
- Сгенерированный код преобразуется в файл C, который можно скомпилировать.
-
Использование Lex с другими инструментами
- Lex ограничен правилами, описываемыми регулярными выражениями, что позволяет его реализацию с помощью конечных автоматов.
- Часто используется с генераторами синтаксических анализаторов для анализа сложных языков.
- Генераторы синтаксических анализаторов принимают поток токенов, а не символов.
-
Взаимодействие с make
- make поддерживает программы, использующие Lex, предполагая наличие файлов с расширением .l.
- Внутренний макрос LFLAGS позволяет автоматически указывать параметры Lex.
-
Дополнительные ресурсы
- Ссылки на другие генераторы синтаксических анализаторов и руководства по использованию Lex.
Полный текст статьи: