| |
В целом подсистема LEX для систем UNIX включает следующие файлы:
/usr/ccs/bin/lex; lex.yy.c; /usr/ccs/lib/lex/ncform; /usr/lib/libl.a; /usr/lib/libl.so.В каталоге
/usr/ccs/lib/lex имеется файл-заготовка ncform, который
LEX используется для построения ЛА. Этот файл является уже готовой
программой лексического анализа. Но в нем не определены действия,
которые необходимо выполнять при распознавании лексем, отсутствуют
и сами лексемы, не сформированы рабочие массивы и т.д. С помощью команды
lex файл ncform достраивается. В результате мы получаем файл со стандартным
именем lex.yy.c. Если LEX-программа размещена в файле program.l, то
для получения ЛА с именем program необходимо выполнить следующий набор
команд:
lex program.l cc lex.yy.c -ll -o programЕсли имя входного файла для команды
lex не указано, то будет использоваться
файл стандартного ввода. Флаг -ll требуется для подключения
/usr/ccs/lib/libl.a - библиотеки LEX. Если необходимо получить самостоятельную
программу, как в данном случае, подключение библиотеки обязательно,
поскольку из нее подключается главная функция main. В противном
случае, если имеется необходимость включить ЛА в качестве функции
в другую программу (например, в программу синтаксического анализа),
эту библиотеку необходимо вызвать уже при сборке. Тогда, если main
определен в вызывающей ЛА программе, редактор связей не будет подключать
раздел main из библиотеки LEX.
Общий формат вызова команды lex:
lex [-ctvn -V -Q[y|n]] [file]Флаги:
-c - включает фазу генерации Си-файла (устанавливается по умолчанию);
-t - поместить результат в стандартный файл вывода, а не в файл lex.yy.c;
-v - вывести размеры внутренних таблиц;
-n - не выводить размеры таблиц (устанавливается по умолчанию);
-V - вывести информацию о версии LEX в стандартный файл ошибок;
-Q - вывести (Qy) либо не выводить (Qn, устанавливается по умолчанию)
информацию о версии в файл lex.yy.c.
|
Закладки на сайте Проследить за страницей |
Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |