Unix Man (Справочное руководство)


FLEX(1) - часть 13


  • Любая строка, которая не является частью правила или действия lex, начинающегося с пробела или знака табуляции, копируется в программу, созданную lex. Подобный вход из источника, предшествующий первому ограничителю %%, будет внешним по отношению к любой функции в коде программы; если он появляется сразу после первого ограничителя %%, то он будет помещен в соответствующее место для определений в функции, написанной lex и содержащей действия. Этот материал должен выглядеть как фрагменты программ и должен предшествовать первому правилу lex.
  • Как побочный эффект сказанного выше, строки, начинающиеся с пробела или знака табуляции и содержащие комментарии, переходят в генерируемую программу. Это можно использовать в источнике lex или в генерируемом коде. Комментарии должны быть записаны по правилам языка СИ.

  • Все заключенное между строками, содержащими только %{ и %}, копируется аналогично тому, как описано выше.Ограничители отбрасываются. Этот формат допускает ввод текста типа операторов препроцессора, который должен начинаться в первом столбце, и копирование строк, не являющиеся строками програмн.
  • Все расположенное после третьего ограничителя %% копируется после вывода lex, невзирая на формат.
  • Определения, предназначенные для lex, задаются до первого ограничителя %%. Любая строка этой секции, не заключенная между %{ и %} начинающаяся в первом столбце, рассматривается как определение замещающих строк lex. Формат этих строк следующий:

    имя перевод

    Это вызывает сопоставление строки, заданной как "перевод", с соответствующим именем. Имя и перевод должны разделяться, по крайней мере, одним пробелом или знаком табуляции, причем имя должно начинаться с буквы. Перевод может быть указан в правиле в формате {name}. Например, использование {D} для цифр и {E} для порядка экспоненты может сократить правила распознавания чисел:

    D [0-9] E [DEde][-+]?{D}+ %% {D}+ printf("inreger"); {D}+"."{D}*({E})? | {D}*"."{D}+({E})? | {D}+{E} printf("real");




    Начало  Назад  Вперед