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

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

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

Поэтому целесообразно построить различные альтернативы для групп месяцевравной продолжительности и объединить их с помощью конструкции выбора.В частности, для распознавания дат месяцев январь, март, май, июль, август, октябрь идекабрь, с продолжительностью 31 день, может быть использована следующая альтернатива:(Jan|Mar|May|Jul|Aug|Oct|Dec)[ ](0?[1-9]|[12][0-9]|3[01])Соответствующая альтернатива для месяцев апрель, июнь, сентябрь и ноябрь, где только 30дней, имеет следующий вид:(Apr|Jun|Sep|Nov)[ ]([123]0|[012]?[1-9])Наконец, для февраля, где может быть либо 28, либо 29 дней, требуется составить следующуюотдельную альтернативу:Feb[ ](0?[1-9]|[12][0-9])Для более лаконичной записи этих трех альтернатив можно ввести регулярные определенияDATE31, DATE30 и FEBRUARY, соответственно.

Тогда их объединение с помощьюконструкции выбора образует следующее регулярное выражение, которое обеспечивает поискдат любого месяца года, независимо от продолжительности месяца:{DATE31}|{DATE30}|{FEBRUARY}В некоторых случаях необходимо обеспечить поиск дат, где кроме числа и месяца указан год. Вобщем случае год может представляться любыми натуральными числами. Регулярноевыражение для спецификации натуральных чисел было рассмотрено выше, для иллюстрацииприменения квантификатора итерации. Таким образом, составление регулярного выражениядля корректного распознавания даты в общем случае превращается в сложную проблему,особенно когда необходимо различать високосные и не високосные годы при анализефевральских дат.Еще один пример, где для конструирования регулярного выражения применяется структурныйподход, демонстрирует, каким образом может быть решена задача поиска во входном потокезаписей времени суток.

Допустим, во входном потоке требуется находить записи времени в12-ти часовом формате AM/PM, где часы, минуты и необязательные секунды, разделенысимволом двоеточия, например, 10:15:00, 8:30 или 08:30:00. Очевидно, что регулярноевыражение, которому соответствует указанный формат времени суток, должно состоять из трехчастей, которые специфицируют часы, минуты и необязательные секунды, соответственно.Наиболее просто составить регулярное выражение для распознавания записи минут и секунд.Запись минут или секунд должна состоять из двух десятичных цифр, причем первая цифраограничена диапазоном от 0 до 5, а вторая цифра может быть любой. Таким образом, дляраспознавания записи минут или секунд можно рекомендовать следующий регулярныйфрагмент, который образует конкатенация двух символьных классов:[0-5][0-9]Чтобы специфицировать регулярное выражение для распознавания часов, нужно рассмотретьдва отдельных случая, когда запись часов состоит из двух и из одной значащей цифры.

Приэтом необходимо учесть, что первая цифра записи часа из двух цифр может быть только 1, авторая цифра может представляться 0, 1 или 2. Когда запись часа состоит только из однойцифры, она может быть любой.Объединение этих двух альтернатив в конструкции выбора образует следующий фрагментрегулярного выражения для распознавания записи часов:1[012]|[1-9]Конкатенациярассмотренныхрегулярныхфрагментовдлязаписейчасов,минутинеобязательных секунд позволяет составить следующее регулярное выражение для поискавремени суток в 12-ти часовом формате AM/PM:(1[012]|[1-9]):[0-5][0-9](:[0-5][0-9])?[ ](am|pm)В этом регулярном выражении круглые скобки используются для ограничения областидействия конструкций выбора и группировки необязательных символьных классов, которыеобозначают секунды.Допустим теперь, что во входном потоке требуется находить записи времени в 24-часовомформате, где часы, минуты и необязательные секунды по-прежнему должны быть разделенысимволом двоеточия, например, 23:59:59, 8:30 или 08:30.

Очевидно, что регулярноевыражение, которому соответствует указанный формат времени суток, также должно состоятьиз трех частей, которые специфицируют часы, минуты и необязательные секунды,соответственно. Совершенно понятно, что фрагменты регулярных выражений для записи минути секунд должны быть идентичны в обеих шкалах измерения времени суток. Однакорегулярное выражение для записи часов должно строится на основе иных соображений. Чтобыспецифицировать регулярное выражение для записи часов, естественно разделить сутки на тригруппы часов: утро, от 0 до 9-ти часов, день, от 10-ти до 19-ти часов и вечер, от 20-ти до 23-хчасов. Очевидно, что объединение этих трех альтернатив в регулярном выражении покрываетсуточный диапазон в часах.

Наиболее простое решение, которое отражает предложеннуюдекомпозицию часов и спецификацию минут, реализует следующее регулярное выражение:(0?[0-9]|1[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?Аналогично рассмотренному выше регулярному выражению для поиска времени суток в 12-тичасовом формате AM/PM, в этом регулярном выражении символьные классы после двоеточияспецифицируют запись минут и необязательных секунд, а объединение альтернатив,ограниченное круглыми скобками, обеспечивает распознавание любого часа суток. Композицияпервых двух альтернатив в круглых скобках на основании дистрибутивного закона позволяетполучить следующее логически менее очевидное, но более компактное регулярное выражение,которое эквивалентно регулярному выражению, рассмотренному выше:([01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?Формальную эквивалентность обоих регулярных выражений для времени суток доказываетследующая цепочка тождественных преобразований первых двух альтернатив исходногорегулярного выражения:0?[0-9]|1[0-9] = 0[0-9]|[0-9]|1[0-9] = (0|1)?[0-9] = [01]?[0-9]Полученные регулярные выражения для распознавания даты месяца и времени суток могутбыть дополнены спецификацией года, который в общем случае может задаваться любымнатуральным числом, а затем объединены в следующую комплексную конструкцию:{DATE}[ ]{TIME}[ ]{YEAR}В этом регулярном выражении для сокращения записи используются регулярные определенияDATE, TIME и YEAR, которые обозначают рассмотренные выше регулярные фрагменты,специфицирующие дату, время и год, соответственно.

Оно позволяет обнаружить во входномпотоке, например, следующую запись: Jan 1 00:00:00 1970, которая обозначает базовуюточку отсчета, принятую в OS UNIX для измерения временных интервалов.Обобщаяполученныерезультаты,следуетотметить,чторассмотренныепримерыиллюстрируют применение принципа декомпозиции, который наиболее часто используется длясоставления регулярных выражений в сложных случаях, когда решение неочевидно инеобходим структурный анализ проблемы. Принцип декомпозиции состоит в том, чтобызаменитьрешениесложнойисходнойпроблемырассмотрениемразличныхчастныхальтернатив, которые затем объединяются в результирующее регулярное выражение спомощью конструкции выбора или конкатенации обязательных фрагментов.НЕРЕГУЛЯРНЫЕ МНОЖЕСТВАВ заключение обзора регулярных выражений следует отметить, что их возможности далеко небезграничныдажедлярасширенныхдиалектов,которыеиспользуютсовременныеинструментальные средства обработки символьной информации, в частности генератор LEX.Существуют формальные языки, множества слов которых не могут быть специфицированы спомощью аппарата регулярных выражений.Вчастности,регулярныесбалансированныхиливыражениявложенныхнемогутконструкций,бытьиспользованыкоторыехарактерныдлядляописанияязыковпрограммирования высокого уровня.

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

Начальный фрагмент такойпоследовательности для, например, пяти единичных элементов образует следующий бинарныйвектор, где символы 1 находятся, соответственно, в позициях с номерами 1, 4, 9, 16 и 25:1001000010000001000000001Перечень примеров бесконечных последовательностей, для описания которых не удаетсяпостроить регулярные выражения, можно легко расширить, включая в него любые бесконечныепоследовательности без повторяющихся фрагментов. Однако, несмотря на указанныеограничения области применения, формальный аппарат регулярных выражений предоставляетудобные инструментальные средства для обработки текстовых данных в подавляющембольшинстве других практически интересных случаев.КОНЕЧНЫЕ АВТОМАТЫ РЕГУЛЯРНЫХ ВЫРАЖЕНИЙСогласно теореме Клини любому регулярному выражению можно поставить в соответствиеконечный автомат, который является формальной моделью алгоритма распознавания лексем,обозначаемых данным регулярным выражением. В наиболее общих терминах конечныйавтомат-распознаватель определяется конечным множеством характерных для него состоянийвходного потока и переходов между ними.

Изменение состояния происходит при получениисимволов входного потока из заданного алфавита в соответствии с функцией переходов,которая определяет возможные последующие состояния по входному символу и текущемусостоянию. Среди возможных состояний выделяется исходное (начальное) и заключительные(допускающие) состояния в которых конечный автомат-распознаватель может находиться,соответственно, при начале и завершении обработки лексем входного потока. Если входнаяпоследовательность символов может порождать последовательность переходов, которая можетпереводить конечный автомат из начального состояния в одно из заключительных, то онасчитается допускающей и принадлежит распознаваемому им регулярному множеству.Конечныйавтомат-распознавательможетбытьреализованвдетерминированноминедетерминированном варианте.

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

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

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

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