lex (813547), страница 8

Файл №813547 lex (Метода по лексу) 8 страницаlex (813547) страница 82020-11-07СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 8)

Например, следующая последовательность строк регулярных определений формируетмакрос IDENT, который обозначает регулярное выражение, необходимое для поискаидентификаторов в исходных текстах программ:ALPHA[a-zA-Z]DIGIT[0-9]IDENT{ALPHA}({ALPHA}|{DIGIT})*В итоговом регулярном выражении использованы регулярные определения ALPHA и DIGIT дляобозначения латинских букв и цифр, соответственно. Генератор LEX автоматическиподставляет,соответствующиеимрегулярныевыраженияврегулярноевыражение,обозначаемое макросом IDENT. В результате подстановки для макроса IDENT получаетсяследующее регулярное определение:IDENT[a-zA-Z]([a-zA-Z]|[0-9])*согласнокоторомуподидентификаторомпонимаетсялюбаяалфавитно-цифроваяпоследовательность символов, которая начинается с латинской буквы.

Аналогичным образом,регулярное определение, заданное макросом IDENT, может быть использовано в регулярныхвыражениях секции правил или других регулярных определениях секции описаний также какмакросы ALPHA и DIGIT.В частности, макрос DIGIT может быть применен для формирования следующего регулярногоопределения вещественных чисел:REAL[+-]?(({DIGIT}+”.”{DIGIT}*)|”.”{DIGIT}+)С учетом автоматической подстановки регулярного определения для макроса DIGIT оноэквивалентно следующей конструкции:REAL[+-]?(([0-9]+”.”[0-9]*)|”.”{DIGIT}+)Кроме декларации перечисленных внешних объектов для секций правил и подпрограмм файласпецификации лексем, в секции описаний могут быть заданы размеры некоторых внутреннихтаблиц программы проектируемого лексического анализатора, если их значения должныотличаться от величин, которые по умолчанию устанавливает генератор LEX. Дляспецификации внутренних таблиц в программе лексического анализатора используетсяструктура фиксированных массивов, которые имеют ограниченный предельный размер.Поэтому в некоторых случаях, например, когда в секции правил файла спецификации лексемиспользуются сложные регулярные выражения с большим числом операндов и операций,возможно переполнение внутренних таблиц лексического анализатора, размеры массивовкоторых приняты по умолчанию.Желаемые размеры внутренних таблиц программы лексического анализатора специфицируютсястроками секции описаний, которые имеют следующий формат:%XSIZEВ этой строке литера X после служебного символа % обозначает код внутренней таблицылексического анализатора, а параметр SIZE устанавливает ее требуемый размер.

Каждая изтаких деклараций должна начинаться с первой позиции новой строки секции описаний, а части,определяющие код и размер таблицы, могут разделять произвольное число символов пробелаили табуляции. При этом значение размера таблицы специфицируется неотрицательным целымдесятичным числом. Код таблицы задается одной из латинских букв E, P, N, A ,K или O,которые имеют следующий смысл:Eтаблица вершин синтаксического дерева регулярного выражения;Pтаблица позиций вершин синтаксического дерева регулярного выражения;Nтаблица состояний в конечном автомате лексического анализатора;Aтаблица переходов в конечном автомате лексического анализатора;Kтаблица классов символов в регулярных выражениях;Oтаблица выходных элементов.Например, следующая декларация секции описаний устанавливает допустимое число состоянийв таблице состояний конечного автомата лексического анализатора равным 500 вместозначения, принятого по умолчанию:%N500Следует отметить, что явная декларация размеров внутренних таблиц относительно редкоиспользуется на практике при построении программы лексического анализатора генераторомLEX в отличие от объявления меток предусловий и регулярных определений.

Она становитсянеобходимой, только когда при построении программы лексического анализатора можетпроизойти переполнение некоторых внутренних таблиц. Переполнение можно исключить,увеличивая размеры одних таблиц при соответствующем сокращении других таблиц, такимобразом, чтобы суммарный размер всех таблиц сохранялся постоянным. Хотя возможностьявного изменения размеров внутренних таблиц используется редко, разработчику лексическиханализаторов полезно знать, что она существует.СПЕЦИФИКАЦИЯ ПРАВИЛСекция правил – обязательная секция файла спецификации лексем. Она должна начинатьсяпосле первой разделительной пары знаков процента %%, и может продолжаться либо до секцииподпрограмм, либо до конца файла спецификации лексем, если секция подпрограммотсутствует.

Эта секция предназначена для спецификации набора правил распознавания иобработки лексем во входном потоке стандартного ввода символьной информации. Любыевходные символы, которые не соответствуют заданному набору правил, передаются в выходнойпоток стандартного вывода без изменений. Таким образом, лексический анализаторинтерпретирует входной поток в соответствии с заданным набором правил.Каждое правило должно начинаться с первой позиции новой строки секции правил и можетзанимать произвольное число строк. Между строками правил может произвольное числопустых строк и строк, содержащих комментарии или объявления глобальных переменных,которые оформляются в соответствии с синтаксисом языка программирования C. Аналогичносекции описаний, комментарии и объявления глобальных переменных могут начинаться слюбой позиции своих строк, кроме первой.Количество правил непосредственно не регламентировано, но в неявной форме ограниченопринятымиразмерамивнутреннихтаблицпрограммылексическогоанализатора.Вбольшинстве случаев, когда гарантирована однозначность интерпретации лексем, порядокперечисления правил не имеет значения.

В общем случае правило состоит из двух частей иимеет следующий формат:REGULARACTIONВ этой спецификации REGULAR обозначает регулярное выражение для распознавания лексемвходного потока, а ACTION – действие, которое предусмотрено для обработки лексем. Обечасти правила должен разделять, по крайней мере, один символ пробела или табуляции.В левой части правила может быть задано любое регулярное выражение.

При необходимости внем могут присутствовать макросы регулярных определений и метки предусловий из секцииописаний, указанные, соответственно, в фигурных и угловых скобках. В частном случае вправиле может отсутствовать регулярное выражение.В правой части действия правила могут быть специфицированы любые синтаксическикорректныеинструкцииязыкапрограммирования C,которыедолжнывыполнятьсялексическим анализатором, когда обнаружено соответствие символов входного потокарегулярному выражению правила. Если соответствие регулярным выражениям правил необнаружено, выполняется действие по умолчанию, которое обеспечивает автоматическоекопирование символов входного потока стандартного ввода в выходной поток стандартноговывода. Таким образом, можно сказать, что действие это набор инструкций, которыевыполняются вместо копирования входного потока в выходной.В действия правил могут быть включены комментарии, декларации локальных переменных,операторы, выражения и вызовы стандартных функций системы программирования C илифункций, специфицированных в секции подпрограмм, которые необходимы для реализациитребуемой обработки лексем входного потока.

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

При этом блок действий должен начинаться в той жестроке, где указано регулярное выражение правила.На практике в секцию правил могут быть включены правила, которые обладают различнымиспецифическими особенностями своей структуры. Типичными частными разновидностямиправил являются:правила с предусловием и правила без условия,правила с пустым действием и правила без регулярного выражения,правила с однострочным и многострочным действием,правила с альтернативными действиями.Перечисленные структурные особенности действий и регулярных выражений можнокомбинировать для построения правил, которые обеспечивают требуемую обработку входногопотока.

Различные варианты формирования правил рассмотрены ниже.ЭЛЕМЕНТАРНЫЕ ДЕЙСТВИЯ ПРАВИЛВ простейшем случае функциональную обработку лексемы, соответствующей заданномурегулярному выражению, обеспечивает единственная инструкция в действие правила, образуяправило с однострочным действием.

Конструкцию правила, где действие содержит только однуинструкцию, иллюстрирует следующий пример спецификаций программы лексическогоанализатора, которая должна копировать входной поток стандартного ввода в выходной потокстандартного вывода, игнорируя символы возврата каретки (Carriage Return, сокращенно, CR)перед символами перевода строки (Line Feed, сокращенно, LF) в конце каждой строки.

Характеристики

Тип файла
PDF-файл
Размер
656,32 Kb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6447
Авторов
на СтудИзбе
306
Средний доход
с одного платного файла
Обучение Подробнее