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

       

Определения Lex


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

Кроме того, можно сгруппировать весь исходный код С в ограничители %{... %}. Тогда весь код, расположенный между этими символами, будет без изменении записан в выходный файл.

Эти определения не обязательны для работы Lex, но весьма полезны. Если один и тот же образец замены используется в различных правилах, то его не нужно повторять. Аналогично, если существует необходимость изменить определение, нужно откорректировать только один фрагмент, а не несколько. Например, можно определить как

DIGIT 0-9

Затем можно поставить в соответствие этому типу и целые, и десятичные числа:

/* порядковое число*/ {DIGIT}+ /* десятичное число*/ {DIGIT}+.{DIGIT}*

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



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