next up previous contents
Next: Структура файла lex.yy.c Up: Структура LEX-программы Previous: Секция правил LEX-программы   Contents

Секция пользовательских подпрограмм LEX-программы

Все, что размещено за вторым набором, относится к секции пользовательских подпрограмм. Содержимое этой секции копируется в выходной файл lex.yy.c без каких-либо изменений. В файле lex.yy.c строки этого раздела рассматриваются как функции Си. Эти функции могут вызываться в действиях правил и, как обычно, передавать и возвращать значения аргументов.

Комментарии можно вводить во всех разделах LEX-программы. Формат комментариев должен соответствовать формату комментариев хост-языка, т.е. языка Си. Однако в каждой секции LEX - программы комментарии вводятся по-разному:

  1. в секции определений комментарии должны начинаться не с первой позиции строки;
  2. в секции правил комментарии можно записывать только внутри блоков, принадлежащих действиям;
  3. в секции подпрограмм пользователя комментарии записываются как в Си.
Пример:

%Start КОММ /* * Программа записывает в стандартный файл вывода * комментарии Си-программы. Обратите внимание на то, * что здесь строки комментариев начинаются не с первой * позиции строки! */ КОММ_НАЧАЛО "/*" КОММ_КОНЕЦ "*/" %% {КОММ_НАЧАЛО} {ECHO; BEGIN КОММ;} [\t\n]* ; <КОММ>[^*]* ECHO; <КОММ>\*/[^/] ECHO; <КОММ>{КОММ_КОНЕЦ} {ECHO; printf("\n"); /* * Здесь приведен пример использования комментариев в * разделе правил LEX-программы. Обратите внимание на то, * что комментарий находится внутри блока, определяющего * действие правила. */ BEGIN 0;} %% /* * Здесь приведен пример комментариев в разделе * пользовательских подпрограмм. */



2004-06-22