Использование UNIX для синтаксического и лексического анализа

       

Функции и переменные Lex


Lex создает несколько функций, которые являются доступными программисту. Кроме переменных yytext и yyleng существует переменная yyin. Это дескриптор файла, который используется для операций ввода.

Первой рассмотрим функцию yylex. Она не имеет аргументов и возвращает целое число. По достижении конца файла возвращается ноль, иначе возвращается считанная лексема (для использования с Yacc). Обращение к этой функции осуществляется для вызова лексического анализатора.

Функция yymore также не имеет аргументов и возвращает целое число. При вызове этой функции Lex конкатенирует следующее регулярное выражение к yytext.

Функция yyless принимает в качестве аргумента целое число и возвращает целое число. При ее вызове Lex сохраняет оканчивающуюся null-указателем строку из определенного количества символов. Эти символы игнорируются при анализе.

Функция ввода не имеет аргументов и возвращает целое число. Эта подпрограмма возвращает следующий символ из потока ввода. Символ удаляется из входного потока.

Функция unput принимает в качестве аргумента целое число и возвращает определенный символ в начало входного потока.

Две функции доступны только через библиотеку Lex, но можно разработать свои собственные функции и включить их в раздел подпрограмм.

Все программы С требуют наличия функции main. Функция yywrap не имеет аргументов и используется для обработки конца файла. Обычно она просто возвращает 1, чтобы сообщить Lex о окончании ввода. Чтобы переместиться в новый файл, необходимо связать yyin с новым файлом и заставить yywrap возвратить 0.



Содержание раздела